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.PropertyWhiteListFlowDto; import com.java110.dto.community.CommunityDto; import com.java110.dto.importData.Vtil; import com.java110.dto.meter.MeterTypeDto; 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.utils.util.BeanConvertUtil; import com.java110.utils.util.DateUtil; import com.java110.utils.util.ImportExcelUtils; 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.util.*; /** * 水电抄表 * 方式1 */ @Service("importElectricityFeeV2DataCleaning") public class ImportElectricityFeeV2DataCleaningAdapt 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 meterWaterPoList = new ArrayList(); List> maps = BeanConvertUtil.beanCovertMapListC(communityInnerServiceSMOImpl.queryCommunitys(new CommunityDto())); Sheet sheet = null; sheet = ImportExcelUtils.getSheet(workbook, "电费流水"); List oList = ImportExcelUtils.listFromSheet(sheet); Map waterType = new HashMap(); for (int osIndex = 0; osIndex < oList.size(); osIndex++) { if (osIndex < 8) { continue; } Object[] os = oList.get(osIndex); if (os[0] == null && os[1] == null) { continue; } // if (Vtil.defaultValue(os[22]).equals("") || Vtil.defaultValue(os[23]).equals("")) { // throw new IllegalArgumentException((osIndex + 1) + "行请填写本期度数和上期度数"); // } MeterWaterPo po = new MeterWaterPo(); setCommunityId(po, os, maps); po.setConfigId(Vtil.defaultValue(paramIn.getString("configId"),"922026011955390006")); po.setFeeTypeCd(Vtil.defaultValue(paramIn.getString("feeTypeCd"),"630000007")); po.setbId("-1"); // po.setMeterType(Vtil.defaultValue(os[3])); po.setObjType("3333"); setRoomDto(po, os); po.setPreDegrees(Vtil.defaultValue(os[22], null)); // po.setMeterType("102025090794960328"); setMeterType(os, po, waterType); 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(paramIn.getString("userId")); po.setRemark(Vtil.defaultValue(os[28])); po.setCommunityCode(Vtil.appendHyphenToRight(Vtil.defaultValue(os[0]))); po.setCommunityName(Vtil.defaultValue(os[1])); try { po.setPrice(Vtil.defaultDouble(os[26])); } catch (Exception e) { po.setRemark(po.getRemark() + ";双电费:" + Vtil.defaultValue(os[26])); } try { po.setPowerSupplyBureau(Vtil.defaultValue(os[4])); po.setHouseholdName(Vtil.defaultValue(os[5])); po.setHouseholdNumber(Vtil.defaultValue(os[6])); po.setElectricMeterId(Vtil.defaultValue(os[7])); po.setHandler(Vtil.defaultValue(os[8])); po.setIsTransferred(Vtil.defaultValue(os[9])); po.setCompanyNameAfterTransfer(Vtil.defaultValue(os[10])); po.setTransferDate(Vtil.defaultValue(os[11])); po.setCorrespondingHouseholdCount(Vtil.defaultValue(os[17])); po.setLastPaymentDate(Vtil.defaultValue(os[20])); po.setReadingType(Vtil.defaultValue(os[21])); po.setMultiplyingFactor(Vtil.defaultValue(os[24])); po.setUnitPrice(Vtil.defaultValue(os[27])); po.setInvoiceAmount(Vtil.defaultValue(os[29])); po.setAmountDifference(Vtil.defaultValue(os[31])); po.setAutoDeduction(Vtil.defaultValue(os[32])); po.setRemark2(Vtil.defaultValue(os[34])); po.setAddress(Vtil.defaultValue(os[16])); po.setWriter(Vtil.defaultValue(os[35])); po.setWriteTime(Vtil.defaultValue(os[36])); po.setPayDate(Vtil.defaultValue(os[33])); po.setAuditUserName(Vtil.defaultValue(os[37])); } catch (ArrayIndexOutOfBoundsException e) { //防止下标溢出 } try { po.setCreateTime(DateUtil.getDateFromStringB(Vtil.defaultValue(os[38]))); } catch (Exception e) { } meterWaterPoList.add(po); } return meterWaterPoList; } private void setMeterType(Object[] os, MeterWaterPo po, Map waterType) { MeterTypeDto meterTypeDto = new MeterTypeDto(); meterTypeDto.setTypeName(Vtil.defaultValue(os[3],"导入电费")); meterTypeDto.setCommunityId(po.getCommunityId()); Object orDefault = waterType.getOrDefault(meterTypeDto.getTypeName(), "无数据"); if (!orDefault.equals("无数据")){ po.setMeterType(orDefault.toString()); } else { List 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[12])); po.setFloorNum(Vtil.defaultValue(os[13])); po.setUnitNum(Vtil.defaultValue(os[14])); po.setRoomNum(Vtil.defaultValue(os[15])); po.setObjName(po.getRoadName() + "-" + po.getFloorNum() + "-" + po.getUnitNum() + "-" + po.getRoomNum()); } public void setCommunityId(MeterWaterPo po, Object[] os, List> maps) { for (Map map : maps) { if (Vtil.defaultValue(os[0])== null && Vtil.defaultValue(os[1])== null){ throw new IllegalArgumentException("小区名称和小区编号均为空"); } if (Vtil.defaultValue(os[0])== null) { if (Vtil.defaultValue(map.get("name")).contains(Vtil.defaultValue(os[1]))) { po.setCommunityId(map.get("communityId").toString()); return; } } else if (Vtil.defaultValue(os[1])== null){ if (Vtil.defaultValue(map.get("communityCode")).equals(Vtil.defaultValue(os[0]))) { po.setCommunityId(map.get("communityId").toString()); return; } } else { if (Vtil.defaultValue(map.get("communityCode")).equals(Vtil.defaultValue(os[0])) && Vtil.defaultValue(map.get("name")).contains(Vtil.defaultValue(os[1]))) { po.setCommunityId(map.get("communityId").toString()); return; } } } po.setCommunityId(null); po.setCommunityCode(Vtil.defaultValue(os[0])); po.setCommunityName(Vtil.defaultValue(os[1])); } }