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.contract.*; import com.java110.dto.importData.ImportOwnerRoomDto; import com.java110.dto.importData.Vtil; import com.java110.dto.system.ComponentValidateResult; import com.java110.utils.util.Assert; import com.java110.utils.util.DateUtil; import com.java110.utils.util.ImportExcelUtils; import org.apache.commons.lang.time.DateUtils; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.text.ParseException; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; /** * 房产数据导入处理类 * * 导入请求参数中必须包含 * param.append('importAdapt', "importRoomOwner"); */ @Service("importContractV2DataCleaning") public class ImportContractCleaningAdapt extends DefaultImportDataAdapt implements IImportDataCleaningAdapt { @Override public List analysisExcel(Workbook workbook, JSONObject paramIn, ComponentValidateResult result) throws Exception{ List ownerRooms = new ArrayList(); //封装对象 getConracts(workbook, ownerRooms, result); return ownerRooms; } int qbl = 0; /** * 获取业主车辆信息 * * @param workbook * @param contractDtos */ private void getConracts(Workbook workbook, List contractDtos, ComponentValidateResult result) throws ParseException { Sheet sheet = null; sheet = ImportExcelUtils.getSheet(workbook, "广告合同汇总表"); List oList = ImportExcelUtils.listFromSheet(sheet); ImportOwnerRoomDto importOwnerRoomDto = null; for (int osIndex = 0; osIndex < oList.size(); osIndex++) { if (osIndex < 5) { continue; } if (oList.get(osIndex)[0] == null) { break; } Object[] os = oList.get(osIndex); if (os == null) { // 新增空值判断 os = new Object[142]; // 空数组则直接创建长度为 142 的数组 } else if (os.length < 142) { os = Arrays.copyOf(os, 142); } ContractDto contractDto = new ContractDto(); contractDto.setContractId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_contractId)); contractDto.setPropertyCompany(defaultValue(os[qbl + 1])); contractDto.setCommunityName(defaultValue(os[qbl + 2])); contractDto.setState(defaultValue(os[qbl + 3])); contractDto.setStartTime(Vtil.defaultValueToDate(os[qbl + 4])); contractDto.setEndTime(Vtil.defaultValueToDate(os[qbl + 5])); contractDto.setSigningTime(Vtil.defaultValueToDate(os[qbl + 6])); contractDto.setContractTerm(defaultValue(os[qbl + 7])); contractDto.setContractCode(defaultValue(os[qbl + 8])); contractDto.setIsArchived(defaultValue(os[qbl + 9])); contractDto.setContractType(defaultValue(os[qbl + 11])); contractDto.setHasSupplementAgreement(defaultValue(os[qbl + 12])); contractDto.setContractReminderDate(Vtil.defaultValueToDate(os[qbl + 13])); contractDto.setPartyA(defaultValue(os[qbl + 14])); contractDto.setPartyB(defaultValue(os[qbl + 1])); contractDto.setSignatoryAddress(defaultValue(os[qbl + 15])); contractDto.setContractName(defaultValue(os[qbl + 14]) + defaultValue(os[qbl + 8])); contractDto.setaContacts(defaultValue(os[qbl + 16])); contractDto.setaLink(defaultValue(os[qbl + 17])); contractDto.setContactEmail(defaultValue(os[qbl + 18])); contractDto.setContactWechat(defaultValue(os[qbl + 19])); contractDto.setRemarks(defaultValue(os[qbl + 20])); setAci(contractDto, os); setCad(contractDto, os); setCms(contractDto, os); setCps(contractDto, os); setCcds(contractDto, os); contractDto.setStoreId(result.getStoreId()); contractDtos.add(contractDto); } } private void setCcds(ContractDto contractDto, Object[] os) { List contractCollectionDetailDtos = new ArrayList<>(); for (int j = 0; j < 10; j++) { try { int index = j * 10 + 53; // if (os[index] == null || os[index].equals("")) { // return; // } ContractCollectionDetailDto ccd = new ContractCollectionDetailDto(); ccd.setContractId(contractDto.getContractId()); ccd.setChargeType(Vtil.defaultValue(os[index])); ccd.setInvoiceReceiptNo(Vtil.defaultValue(os[index+1])); ccd.setWhiteListArchiveNo(Vtil.defaultValue(os[index+2])); ccd.setCollectionPeriodStart(Vtil.defaultValueToDate(os[qbl + index + 3])); ccd.setQueryCollectionPeriodEnd(Vtil.defaultValueToDate(os[qbl + index + 4])); ccd.setCollectionAmount(defaultValue(os[qbl + index + 5])); ccd.setCollectionDate(defaultValue(os[qbl + index + 6])); ccd.setCollectionAmount(defaultValue(os[qbl + index + 7])); ccd.setSpecialReduction(defaultValue(os[qbl + index + 8])); ccd.setUnpaidMoney(defaultValue(os[qbl + index + 9])); contractCollectionDetailDtos.add(ccd); } catch (Exception e){ continue; } } contractDto.setContractCollectionDetailDtos(contractCollectionDetailDtos); } private void setCps(ContractDto contractDto, Object[] os) { ContractPaymentStatusDto cps = new ContractPaymentStatusDto(); cps.setContractId(contractDto.getContractId()); cps.setPaymentStatus(defaultValue(os[qbl + 44])); cps.setReceivableAmount(defaultValue(os[qbl + 45])); cps.setReceivedAmount(defaultValue(os[qbl + 46])); cps.setUnpaidAmount(defaultValue(os[qbl + 47])); cps.setSpecialDiscount(defaultValue(os[qbl + 48])); cps.setCollectionProgress(defaultValue(os[qbl + 49])); cps.setFinalCollectionDeadline(defaultValue(os[qbl + 50])); cps.setCollectionReminderStatus(defaultValue(os[qbl + 51])); cps.setRemark(defaultValue(os[qbl + 52])); contractDto.setContractPaymentStatus(cps); } private void setCms(ContractDto contractDto, Object[] os) { ContractManagementShareDto cms = new ContractManagementShareDto(); cms.setContractId(contractDto.getContractId()); cms.setManagementRatio(defaultValue(os[qbl + 40])); cms.setOurCompanyAmount(defaultValue(os[qbl + 41])); cms.setOurCommitteeShare(defaultValue(os[qbl + 42])); cms.setOurCompanyReceivable(defaultValue(os[qbl + 43])); contractDto.setContractManagementShare(cms); } private void setCad(ContractDto contractDto, Object[] os) { ContractAmountDetailDto cad = new ContractAmountDetailDto(); cad.setContractId(contractDto.getContractId()); cad.setTotalContractAmount(defaultValue(os[qbl + 27])); cad.setUnitPrice(defaultValue(os[qbl + 28])); cad.setAnnualAmount(defaultValue(os[qbl + 29])); cad.setTotalAmount(defaultValue(os[qbl + 30])); cad.setSettlementMethod(defaultValue(os[qbl + 31])); cad.setAccountInfo(defaultValue(os[qbl + 32])); cad.setMainMeterNo(defaultValue(os[qbl + 33])); cad.setSubMeterNo(defaultValue(os[qbl + 34])); cad.setDeposit(defaultValue(os[qbl + 35])); cad.setSettlementCycle(defaultValue(os[qbl + 38])); cad.setPaymentRemark(defaultValue(os[qbl + 39])); // // cad.setSettlementAmount(defaultValue(os[qbl + 32])); // cad.setFeeType(defaultValue(os[qbl + 33])); // cad.setAccountInfo(defaultValue(os[qbl + 34])); // cad.setMainMeterNo(defaultValue(os[qbl + 35])); // cad.setSubMeterNo(defaultValue(os[qbl + 36])); // cad.setLastMonthReading(defaultValue(os[qbl + 37])); // cad.setCurrentMonthReading(defaultValue(os[qbl + 38])); // cad.setCurrentPeriodConsumption(defaultValue(os[qbl + 39])); // cad.setElectricityUnitPrice(defaultValue(os[qbl + 40])); // cad.setElectricityFee(defaultValue(os[qbl + 41])); // cad.setDeposit(defaultValue(os[qbl + 42])); // cad.setSettlementCycle(defaultValue(os[qbl + 43])); // cad.setPaymentRemark(defaultValue(os[qbl + 44])); contractDto.setContractAmountDetail(cad); } private void setAci(ContractDto contractDto,Object[] os) { AdContractInfoDto aci = new AdContractInfoDto(); aci.setContractId(contractDto.getContractId()); aci.setAdType(defaultValue(os[qbl + 21])); aci.setSubType(defaultValue(os[qbl + 22])); aci.setCooperationForm(defaultValue(os[qbl + 23])); aci.setBuildingElevatorCount(defaultValue(os[qbl + 24])); aci.setOnlineQuantity(defaultValue(os[qbl + 25])); aci.setFacilityLocation(defaultValue(os[qbl + 26])); contractDto.setAdContractInfo(aci); } private String defaultValueToDate(Object o) { return o == null ? null : o.toString(); } public String defaultValue(Object o) { return o == null ? "" : o.toString(); } public BigDecimal defaultNum(Object o) { return o == null ? new BigDecimal(0) : new BigDecimal(o.toString()); } }