| | |
| | | import com.java110.api.importData.DefaultImportDataAdapt; |
| | | import com.java110.api.importData.IImportDataCleaningAdapt; |
| | | import com.java110.dto.PropertyWhiteListFlowDto; |
| | | import com.java110.dto.community.CommunityDto; |
| | | import com.java110.dto.importData.ImportRoomFee; |
| | | import com.java110.dto.importData.Vtil; |
| | | import com.java110.dto.system.ComponentValidateResult; |
| | | import com.java110.intf.community.ICommunityInnerServiceSMO; |
| | | import com.java110.intf.fee.IPayFeeBatchV1InnerServiceSMO; |
| | | import com.java110.intf.user.IUserInnerServiceSMO; |
| | | import com.java110.utils.util.Assert; |
| | | import com.java110.utils.util.DateUtil; |
| | | import com.java110.utils.util.ImportExcelUtils; |
| | | import com.java110.utils.util.StringUtil; |
| | | import com.java110.po.meter.MeterWaterPo; |
| | | import com.java110.utils.util.*; |
| | | import org.apache.commons.lang.time.DateUtils; |
| | | 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.text.SimpleDateFormat; |
| | | import java.time.LocalDate; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.time.format.DateTimeParseException; |
| | | import java.time.temporal.TemporalAdjusters; |
| | | import java.util.ArrayList; |
| | | import java.util.Calendar; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | @Service("importPropertyWhiteListfFlowDataCleaning") |
| | | @Service("importPropertyWhiteListFlowDataCleaning") |
| | | public class ImportPropertyWhiteListfFlowAdapt extends DefaultImportDataAdapt implements IImportDataCleaningAdapt { |
| | | |
| | | |
| | |
| | | |
| | | @Autowired |
| | | private IUserInnerServiceSMO userInnerServiceSMOImpl; |
| | | |
| | | @Autowired |
| | | private ICommunityInnerServiceSMO communityInnerServiceSMOImpl; |
| | | |
| | | |
| | | @Override |
| | |
| | | //获取车辆信息 |
| | | getPropertyWhiteListFlowDtos(workbook, whiteLists); |
| | | |
| | | for (PropertyWhiteListFlowDto whiteList : whiteLists){ |
| | | whiteList.setCommunityId(paramIn.getString("communityId")); |
| | | } |
| | | return whiteLists; |
| | | } |
| | | |
| | | |
| | | |
| | | public void setCommunityId(PropertyWhiteListFlowDto po, Object[] os, List<Map<String, Object>> maps) { |
| | | for (Map<String, Object> map : maps) { |
| | | if (Vtil.defaultValue(os[1]) == null && Vtil.defaultValue(os[2]) == null){ |
| | | throw new IllegalArgumentException("小区名称和小区编号均为空"); |
| | | } |
| | | if (Vtil.defaultValue(os[1]) == null) { |
| | | if (Vtil.defaultValue(map.get("name")).contains(Vtil.defaultValue(os[2]))) { |
| | | po.setCommunityId(map.get("communityId").toString()); |
| | | return; |
| | | } |
| | | } else if (Vtil.defaultValue(os[2]) == null){ |
| | | if (Vtil.defaultValue(map.get("communityCode")).equals(Vtil.defaultValue(os[1]))) { |
| | | po.setCommunityId(map.get("communityId").toString()); |
| | | return; |
| | | } |
| | | } else { |
| | | if (Vtil.defaultValue(map.get("communityCode")).equals(Vtil.defaultValue(os[1])) && Vtil.defaultValue(map.get("name")).contains(Vtil.defaultValue(os[2]))) { |
| | | po.setCommunityId(map.get("communityId").toString()); |
| | | return; |
| | | } |
| | | } |
| | | } |
| | | throw new IllegalArgumentException("未查询到小区:" + Vtil.appendHyphenToRight(Vtil.defaultValue(os[1])) + Vtil.defaultValue(os[2])); |
| | | } |
| | | |
| | | |
| | | public String defaultValue(Object o) { |
| | | return o == null ? "" : o.toString(); |
| | | } |
| | | |
| | | private void getPropertyWhiteListFlowDtos(Workbook workbook, List<PropertyWhiteListFlowDto> whiteLists) { |
| | | Sheet sheet = null; |
| | | sheet = ImportExcelUtils.getSheet(workbook, "白单流水(归档数据)"); |
| | | List<Object[]> oList = ImportExcelUtils.listFromSheet(sheet); |
| | | List<Object[]> oList; |
| | | try { |
| | | sheet = ImportExcelUtils.getSheet(workbook, "白单流水 导入新模板"); |
| | | oList = ImportExcelUtils.listFromSheet(sheet); |
| | | } catch (IllegalArgumentException e) { |
| | | sheet = ImportExcelUtils.getSheet(workbook, "Sheet1"); |
| | | oList = ImportExcelUtils.listFromSheet(sheet); |
| | | } |
| | | PropertyWhiteListFlowDto white = null; |
| | | List<Map<String, Object>> maps = BeanConvertUtil.beanCovertMapListC(communityInnerServiceSMOImpl.queryCommunitys(new CommunityDto())); |
| | | for (int osIndex = 0; osIndex < oList.size(); osIndex++) { |
| | | Object[] os = oList.get(osIndex); |
| | | if (osIndex == 0) { // 第一行是 头部信息 直接跳过 |
| | | continue; |
| | | } |
| | | if (StringUtil.isNullOrNone(os[0])) { |
| | | if (os == null || os.length < 4 || StringUtil.isNullOrNone(os[3])) { |
| | | continue; |
| | | } |
| | | Assert.hasValue(os[0], (osIndex + 1) + "行收费日期不能为空"); |
| | | Assert.hasValue(os[3], (osIndex + 1) + "行收费日期不能为空"); |
| | | |
| | | |
| | | white = new PropertyWhiteListFlowDto(); |
| | | String chargeTime = excelDoubleToDate(os[0].toString()); |
| | | String changeStart = os[21] == null ? null : excelDoubleToDate(os[21].toString()); |
| | | String changeEnd = os[22] == null ? null : excelDoubleToDate(os[22].toString()); |
| | | String bankDepositDate = os[8] == null ? null : excelDoubleToDate(os[8].toString()); |
| | | String chargeTime = excelDoubleToDate(os[3].toString()); |
| | | String changeStart = Vtil.defaultValueToDate(os[11],"start"); |
| | | String changeEnd = Vtil.defaultValueToDate(os[12],"end"); |
| | | String bankDepositDate = Vtil.defaultValueToDate(os[16]); |
| | | String inputTime = null; |
| | | if(os[16] != null){ |
| | | inputTime = excelDoubleToDate(os[16].toString().split("\\.")[0]); |
| | | if(os[24] != null){ |
| | | inputTime = Vtil.defaultValueToDate(os[24]); |
| | | } |
| | | white.setChargeTime(chargeTime); |
| | | white.setInvoiceReceiptNo(os[1] == null ? null : os[1].toString()); |
| | | white.setRoomId(os[2] == null ? null : os[2].toString()); |
| | | white.setPropertyAddress(os[3] == null ? null : os[3].toString()); |
| | | white.setDoorRoomNum(os[4] == null ? null : os[4].toString()); |
| | | white.setSecondaryFeeTypeCd(os[5] == null ? null : os[5].toString()); |
| | | white.setChargeAmount(os[6] == null ? null : os[6].toString()); |
| | | white.setCharger(os[7] == null ? null : os[7].toString()); |
| | | white.setBankDepositDate(bankDepositDate); |
| | | white.setBankDepositor(os[9] == null ? null : os[9].toString()); |
| | | white.setSplitBankDepositAmount(os[10] == null ? null : os[10].toString()); |
| | | white.setBankDepositAmount(os[11] == null ? null : os[11].toString()); |
| | | white.setCheckAmount(os[12] == null ? null : os[12].toString()); |
| | | white.setWhiteListArchiveNo(os[13] == null ? null : os[13].toString()); |
| | | white.setSheetCount(os[14] == null ? null : os[14].toString()); |
| | | white.setFinancialReceiver(os[15] == null ? null : os[15].toString()); |
| | | white.setInputTime(inputTime); |
| | | white.setInputPerson(os[17] == null ? null : os[17].toString()); |
| | | white.setOrderNo(os[18] == null ? null : os[18].toString()); |
| | | white.setLicensePlate(os[19] == null ? null : os[19].toString()); |
| | | white.setCategory22(os[20] == null ? null : os[20].toString()); |
| | | if (os.length > 21){ |
| | | white.setFrequency(os[21] == null ? "1" : os[21].toString()); |
| | | }else{ |
| | | white.setFrequency("1"); |
| | | } |
| | | white.setChargeTime(chargeTime);//收费时间 |
| | | white.setInvoiceReceiptNo(Vtil.defaultValue(os[4]));//发票 |
| | | white.setRoomId(os[5] == null ? null : os[5].toString());//房号 |
| | | white.setPropertyAddress(os[5] == null ? null : os[5].toString());//业主地址 |
| | | white.setDoorRoomNum((os[6] == null ? "" : os[6].toString() + "-") + (os[7] == null ? "" : os[7].toString() + "-") + (os[8] == null ? "" : os[8].toString()) );//门市号 |
| | | setCommunityId(white, os, maps); |
| | | white.setSecondaryFeeTypeCd(os[13] == null ? null : os[13].toString());//收费内容 |
| | | white.setChargeAmount(os[14] == null ? null : os[14].toString());//收费金额 |
| | | white.setCharger(os[15] == null ? null : os[15].toString());//收费人 |
| | | white.setBankDepositDate(bankDepositDate);//银行解款日期 |
| | | white.setBankDepositor(os[17] == null ? null : os[17].toString());//银行解款人 |
| | | white.setSplitBankDepositAmount(os[18] == null ? null : os[18].toString());//拆分后银行解款金额 |
| | | white.setBankDepositAmount(os[19] == null ? null : os[19].toString());//银行解款金额 |
| | | white.setCheckAmount(os[20] == null ? null : os[20].toString());//核对金额 |
| | | white.setWhiteListArchiveNo(os[21] == null ? null : os[21].toString());//白单存档编号 |
| | | white.setSheetCount(os[22] == null ? null : os[22].toString());//张数 |
| | | white.setFinancialReceiver(os[23] == null ? null : os[23].toString());//财务收账人 |
| | | white.setInputTime(inputTime);//输入时间 |
| | | white.setInputPerson(os[25] == null ? null : os[25].toString());//输入人员 |
| | | white.setOrderNo(os[28] == null ? null : os[28].toString());//单号 |
| | | white.setLicensePlate(os[29] == null ? null : os[29].toString());//车牌号 |
| | | white.setCategory22(os[31] == null ? null : os[31].toString());//25项收费分类 |
| | | white.setRoomNumber(os[9] == null ? null : os[9].toString()); |
| | | white.setReceiptYear(os[27] == null ? null : os[27].toString()); |
| | | white.setReceiptYearMonth(Vtil.defaultValueToDate(os[26])); |
| | | white.setPendingProblem(os[30] == null ? null : os[30].toString()); |
| | | // if (os.length > 23){ |
| | | // white.setFrequency(os[23] == null ? null : os[23].toString()); |
| | | // } |
| | | white.setChargeStart(changeStart); |
| | | white.setChargeEnd(changeEnd); |
| | | white.setRow(osIndex + 1); |
| | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 生成批次号 |
| | | * |
| | | * @param reqJson |
| | | */ |
| | | public static Object[] removeElement(Object[] original, int index) { |
| | | // 校验原数组是否为空或索引越界 |
| | | if (original == null || index < 0 || index >= original.length) { |
| | | return original; // 或抛出异常,根据需求处理 |
| | | } |
| | | |
| | | // 创建新数组(长度 = 原数组长度 - 1) |
| | | Object[] newArray = new Object[original.length - 1]; |
| | | |
| | | // 复制索引4之前的元素(0~3) |
| | | System.arraycopy(original, 0, newArray, 0, index); |
| | | |
| | | // 复制索引4之后的元素(5~末尾),从新数组的index位置开始 |
| | | System.arraycopy(original, index + 1, newArray, index, original.length - index - 1); |
| | | |
| | | return newArray; |
| | | } |
| | | // |
| | | // private void getPropertyWhiteListFlowDtosV1(Workbook workbook, List<PropertyWhiteListFlowDto> whiteLists) { |
| | | // Sheet sheet = null; |
| | | // sheet = ImportExcelUtils.getSheet(workbook, "白单流水(归档数据)"); |
| | | // List<Object[]> oList = ImportExcelUtils.listFromSheet(sheet); |
| | | // PropertyWhiteListFlowDto white = null; |
| | | // for (int osIndex = 0; osIndex < oList.size(); osIndex++) { |
| | | // Object[] os = oList.get(osIndex); |
| | | // if (osIndex == 0) { // 第一行是 头部信息 直接跳过 |
| | | // continue; |
| | | // } |
| | | // if (StringUtil.isNullOrNone(os[0])) { |
| | | // continue; |
| | | // } |
| | | // Assert.hasValue(os[0], (osIndex + 1) + "行收费日期不能为空"); |
| | | // |
| | | // white = new PropertyWhiteListFlowDto(); |
| | | // String chargeTime = excelDoubleToDate(os[0].toString()); |
| | | // String changeStart = os[21] == null ? null : excelDoubleToDate(os[21].toString()); |
| | | // String changeEnd = os[22] == null ? null : excelDoubleToDate(os[22].toString()); |
| | | // String bankDepositDate = os[8] == null ? null : excelDoubleToDate(os[8].toString()); |
| | | // String inputTime = null; |
| | | // if(os[16] != null){ |
| | | // inputTime = excelDoubleToDate(os[16].toString().split("\\.")[0]); |
| | | // } |
| | | // white.setChargeTime(chargeTime); |
| | | // white.setInvoiceReceiptNo(os[1] == null ? null : os[1].toString()); |
| | | // white.setRoomId(os[2] == null ? null : os[2].toString()); |
| | | // white.setPropertyAddress(os[3] == null ? null : os[3].toString()); |
| | | // white.setDoorRoomNum(defaultValueToDate(os[4])); |
| | | // white.setSecondaryFeeTypeCd(os[5] == null ? null : os[5].toString()); |
| | | // white.setChargeAmount(os[6] == null ? null : os[6].toString()); |
| | | // white.setCharger(os[7] == null ? null : os[7].toString()); |
| | | // white.setBankDepositDate(bankDepositDate); |
| | | // white.setBankDepositor(os[9] == null ? null : os[9].toString()); |
| | | // white.setSplitBankDepositAmount(os[10] == null ? null : os[10].toString()); |
| | | // white.setBankDepositAmount(os[11] == null ? null : os[11].toString()); |
| | | // white.setCheckAmount(os[12] == null ? null : os[12].toString()); |
| | | // white.setWhiteListArchiveNo(os[13] == null ? null : os[13].toString()); |
| | | // white.setSheetCount(os[14] == null ? null : os[14].toString()); |
| | | // white.setFinancialReceiver(os[15] == null ? null : os[15].toString()); |
| | | // white.setInputTime(inputTime); |
| | | // white.setInputPerson(os[17] == null ? null : os[17].toString()); |
| | | // white.setOrderNo(os[18] == null ? null : os[18].toString()); |
| | | // white.setLicensePlate(os[19] == null ? null : os[19].toString()); |
| | | // white.setCategory22(os[20] == null ? null : os[20].toString()); |
| | | // if (os.length > 23){ |
| | | // white.setFrequency(os[23] == null ? null : os[23].toString()); |
| | | // } |
| | | // white.setChargeStart(changeStart); |
| | | // white.setChargeEnd(changeEnd); |
| | | // white.setRow(osIndex + 1); |
| | | // whiteLists.add(white); |
| | | // } |
| | | // } |
| | | } |