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.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.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("importPropertyWhiteListFlowDataCleaning")
|
public class ImportPropertyWhiteListfFlowAdapt extends DefaultImportDataAdapt implements IImportDataCleaningAdapt {
|
|
|
@Autowired
|
private IPayFeeBatchV1InnerServiceSMO payFeeBatchV1InnerServiceSMOImpl;
|
|
@Autowired
|
private IUserInnerServiceSMO userInnerServiceSMOImpl;
|
|
@Autowired
|
private ICommunityInnerServiceSMO communityInnerServiceSMOImpl;
|
|
|
@Override
|
public List analysisExcel(Workbook workbook, JSONObject paramIn, ComponentValidateResult result) throws Exception {
|
|
generatorBatch(paramIn);
|
List<PropertyWhiteListFlowDto> whiteLists = new ArrayList<PropertyWhiteListFlowDto>();
|
//获取车辆信息
|
getPropertyWhiteListFlowDtos(workbook, whiteLists);
|
|
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;
|
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 (os == null || os.length < 4 || StringUtil.isNullOrNone(os[3])) {
|
continue;
|
}
|
Assert.hasValue(os[3], (osIndex + 1) + "行收费日期不能为空");
|
|
|
white = new PropertyWhiteListFlowDto();
|
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[24] != null){
|
inputTime = Vtil.defaultValueToDate(os[24]);
|
}
|
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);
|
whiteLists.add(white);
|
}
|
}
|
|
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);
|
// }
|
// }
|
}
|