package com.java110.api.importData.adapt;
|
|
import com.alibaba.fastjson.JSONObject;
|
import com.java110.api.importData.DefaultImportDataAdapt;
|
import com.java110.api.importData.IImportDataCleaningAdapt;
|
import com.java110.core.factory.GenerateCodeFactory;
|
import com.java110.dto.community.CommunityDto;
|
import com.java110.dto.importData.Vtil;
|
import com.java110.dto.meter.ImportExportMeterWaterDto;
|
import com.java110.dto.meter.MeterTypeDto;
|
import com.java110.dto.room.RoomDto;
|
import com.java110.dto.system.ComponentValidateResult;
|
import com.java110.intf.community.ICommunityInnerServiceSMO;
|
import com.java110.intf.fee.IMeterTypeV1InnerServiceSMO;
|
import com.java110.intf.fee.IPayFeeBatchV1InnerServiceSMO;
|
import com.java110.intf.user.IUserInnerServiceSMO;
|
import com.java110.po.meter.MeterWaterPo;
|
import com.java110.po.payFee.PayFeeAuditPo;
|
import com.java110.utils.util.*;
|
import org.apache.poi.ss.usermodel.Sheet;
|
import org.apache.poi.ss.usermodel.Workbook;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.time.LocalDate;
|
import java.util.*;
|
|
/**
|
* 水电抄表
|
* 方式1
|
*/
|
@Service("importMeterWaterFeeV2DataCleaning")
|
public class ImportMeterWaterFeeV2DataCleaningAdapt extends DefaultImportDataAdapt implements IImportDataCleaningAdapt {
|
|
@Autowired
|
private IPayFeeBatchV1InnerServiceSMO payFeeBatchV1InnerServiceSMOImpl;
|
|
@Autowired
|
private IMeterTypeV1InnerServiceSMO meterTypeV1InnerServiceSMOImpl;
|
|
@Autowired
|
private IUserInnerServiceSMO userInnerServiceSMOImpl;
|
|
@Autowired
|
private ICommunityInnerServiceSMO communityInnerServiceSMOImpl;
|
|
@Override
|
public List analysisExcel(Workbook workbook, JSONObject paramIn, ComponentValidateResult result) throws Exception {
|
List<MeterWaterPo> meterWaterPoList = new ArrayList<MeterWaterPo>();
|
List<Map<String, Object>> maps = BeanConvertUtil.beanCovertMapListC(communityInnerServiceSMOImpl.queryCommunitys(new CommunityDto()));
|
|
|
Sheet sheet = null;
|
sheet = ImportExcelUtils.getSheet(workbook, "水费流水模板");
|
List<Object[]> oList = ImportExcelUtils.listFromSheet(sheet);
|
Map waterType = new HashMap();
|
for (int osIndex = 0; osIndex < oList.size(); osIndex++) {
|
if (osIndex < 10) {
|
continue;
|
}
|
Object[] os = oList.get(osIndex);
|
if (os[0] == null && os[1] == null) {
|
continue;
|
}
|
|
MeterWaterPo po = new MeterWaterPo();
|
setCommunityId(po, os, maps);
|
po.setbId("-1");
|
setMeterType(os, po, waterType);
|
po.setObjType("3333");
|
setRoomDto(po, os);
|
po.setPreDegrees(Vtil.defaultValue(os[22],null));
|
po.setCurDegrees(Vtil.defaultValue(os[23],null));
|
Date date = new Date();
|
date.setYear(defaultInteger(os[18]) - 1900);
|
date.setMonth(defaultInteger(os[19]));
|
po.setPreReadingTime(defaultInteger(os[18]) + "-" + defaultInteger(os[19]) + "-01 00:00:00");
|
po.setCurReadingTime(Vtil.processDateEnhanced(DateUtil.getDateFromStringA(po.getPreReadingTime()), "end", DateUtil.DATE_FORMATE_STRING_A, null ,null));
|
po.setStatusCd("0");
|
po.setUserId(Vtil.defaultValue(paramIn.getString("userId")));
|
po.setConfigId(Vtil.defaultValue(paramIn.getString("configId"),"9220260120546511533"));
|
po.setFeeTypeCd(Vtil.defaultValue(paramIn.getString("feeTypeCd"),"630000017"));
|
po.setRemark(Vtil.defaultValue(os[29]));
|
po.setPrice(defaultDouble(os[25]));
|
po.setHandler(Vtil.defaultValue(os[9]));
|
po.setIsTransferred(Vtil.defaultValue(os[10]));
|
po.setCompanyNameAfterTransfer(Vtil.defaultValue(os[11]));
|
po.setTransferDate(Vtil.defaultValue(os[12]));
|
po.setLastPaymentDate(Vtil.defaultValue(os[21]));
|
po.setUnitPrice(Vtil.defaultValue(os[28]));
|
po.setInvoiceAmount(Vtil.defaultValue(os[30]));
|
po.setAmountDifference(Vtil.defaultValue(os[32]));
|
po.setHouseholdName(Vtil.defaultValue(os[8]));
|
po.setRemark2(Vtil.defaultValue(os[41]));
|
po.setAddress(Vtil.defaultValue(os[17]));
|
po.setWriteTime(Vtil.defaultValueToDate(os[43]));
|
po.setWriter(Vtil.defaultValue(os[42]));
|
po.setAuditUserName(Vtil.defaultValueToDate(os[44]));
|
// try {
|
// po.setCreateTime(DateUtil.getDateFromStringB(Vtil.defaultValueToDate(os[45])));
|
// } catch (Exception e) {
|
//
|
// }
|
po.setPayDate(Vtil.defaultValueToDate(os[40]));
|
po.setCheckApplyCompanyName(Vtil.defaultValue(os[2]));
|
po.setCheckApplyDeptProject(Vtil.defaultValue(os[3]));
|
po.setWaterFeePayer(Vtil.defaultValue(os[4]));
|
po.setAccountNumber(Vtil.defaultValue(os[5]));
|
po.setMeterReadBookNo(Vtil.defaultValue(os[6]));;
|
po.setWaterConsumption(Vtil.defaultValue(os[24]));
|
po.setSewageTreatmentWater(Vtil.defaultValue(os[26]));
|
po.setCollectionStandard(Vtil.defaultValue(os[27]));
|
po.setArrearsUnpaid(Vtil.defaultValue(os[33]));
|
po.setLatePaymentFine(Vtil.defaultValue(os[34]));
|
po.setLatePaymentSurcharge(Vtil.defaultValue(os[35]));
|
po.setFeePaymentStatus(Vtil.defaultValue(os[36]));
|
po.setCarryOverBalance(Vtil.defaultValue(os[37]));
|
po.setTotalPayableAmount(Vtil.defaultValue(os[38]));
|
meterWaterPoList.add(po);
|
}
|
return meterWaterPoList;
|
}
|
|
|
private void setMeterType(Object[] os, MeterWaterPo po, Map waterType) {
|
MeterTypeDto meterTypeDto = new MeterTypeDto();
|
meterTypeDto.setTypeName(Vtil.defaultValue(os[7],"导入水费"));
|
meterTypeDto.setCommunityId(po.getCommunityId());
|
Object orDefault = waterType.getOrDefault(meterTypeDto.getTypeName(), "无数据");
|
if (!orDefault.equals("无数据")){
|
po.setMeterType(orDefault.toString());
|
}
|
else {
|
List<MeterTypeDto> meterTypeDtos = meterTypeV1InnerServiceSMOImpl.queryMeterTypes(meterTypeDto);
|
if (meterTypeDtos == null || meterTypeDtos.isEmpty()) {
|
meterTypeDto.setRemark(meterTypeDto.getTypeName());
|
meterTypeDto.setStatusCd("0");
|
meterTypeDto.setTypeId(GenerateCodeFactory.getGeneratorId("10"));
|
po.setMeterType(meterTypeDto.getTypeId());
|
int i = meterTypeV1InnerServiceSMOImpl.saveMeterTypeToDto(meterTypeDto);
|
if (i == 0) {
|
throw new IllegalArgumentException("导入失败");
|
}
|
} else {
|
po.setMeterType(meterTypeDtos.get(0).getTypeId());
|
}
|
}
|
waterType.put(meterTypeDto.getTypeName(), po.getMeterType());
|
|
}
|
|
private int defaultInteger(Object o) {
|
return o == null ? 0 : Integer.parseInt(o.toString());
|
}
|
private Double defaultDouble(Object o) {
|
return o == null ? 0 : Double.parseDouble(o.toString());
|
}
|
|
private void setRoomDto(MeterWaterPo po, Object[] os) {
|
po.setRoadName(Vtil.defaultValue(os[13]));
|
po.setFloorNum(Vtil.defaultValue(os[14]));
|
po.setUnitNum(Vtil.defaultValue(os[15]));
|
po.setRoomNum(Vtil.defaultValue(os[16]));
|
po.setObjName(po.getRoadName() + "-" + po.getFloorNum() + "-" + po.getUnitNum() + "-" + po.getRoomNum());
|
}
|
|
public void setCommunityId(MeterWaterPo po, Object[] os, List<Map<String, Object>> maps) {
|
for (Map<String, Object> map : maps) {
|
if (Vtil.defaultValue(os[0]) == null) {
|
if (Vtil.defaultValue(os[1]).equals(map.get("name"))) {
|
po.setCommunityId(map.get("communityId").toString());
|
return;
|
}
|
} else if (Vtil.defaultValue(os[1]) == null){
|
if (Vtil.defaultValue(os[0]).equals(map.get("communityCode"))) {
|
po.setCommunityId(map.get("communityId").toString());
|
return;
|
}
|
} else {
|
if (Vtil.defaultValue(os[0]).equals(map.get("communityCode")) && Vtil.defaultValue(os[1]).equals(map.get("name"))) {
|
po.setCommunityId(map.get("communityId").toString());
|
return;
|
}
|
}
|
}
|
po.setCommunityCode(Vtil.defaultValue(os[0]));
|
po.setCommunityName(Vtil.defaultValue(os[1]));
|
po.setCommunityId(null);
|
}
|
}
|