package com.java110.job.importData.adapt;
|
|
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONObject;
|
import com.java110.core.factory.GenerateCodeFactory;
|
import com.java110.dto.importData.Vtil;
|
import com.java110.dto.log.AssetImportLogDetailDto;
|
import com.java110.dto.msg.MaintenancePaymentPo;
|
import com.java110.dto.msg.MpFifthPaymentRecordPo;
|
import com.java110.dto.msg.MpPaymentRecordPo;
|
import com.java110.fee.api.*;
|
import com.java110.job.dao.IMaintenancePaymentService;
|
import com.java110.job.dao.IMpFifthPaymentRecordService;
|
import com.java110.job.dao.IMpPaymentRecordService;
|
import com.java110.job.importData.DefaultImportData;
|
import com.java110.job.importData.IImportDataAdapt;
|
import com.java110.po.importFee.MaintenancePayment;
|
import com.java110.po.importFee.MpFifthPaymentRecord;
|
import com.java110.utils.util.BeanConvertUtil;
|
import com.java110.utils.util.DateUtil;
|
import com.java110.utils.util.NumberUtil;
|
import org.apache.commons.lang.StringUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.math.BigDecimal;
|
import java.text.ParseException;
|
import java.text.SimpleDateFormat;
|
import java.util.*;
|
|
/**
|
* 签报收支款数据导入适配器(适配"Z三、模版签报收支款情况-V5-20251127.xlsx"的"荣顺苑签报单"sheet)
|
* 前端请求需传入:param.append('importAdapt', "importReportMainV2QueueData")
|
*/
|
@Service("importReportMainV2QueueData")
|
public class ImportReportMainV2QueueDataAdapt extends DefaultImportData implements IImportDataAdapt {
|
|
|
@Autowired
|
MaintenancePaymentApi maintenancePaymentApi;
|
@Autowired
|
AnnouncementTimeRangeApi announcementTimeRangeApi;
|
@Autowired
|
OwnersCommitteeConventionApi ownersCommitteeConventionApi;
|
@Autowired
|
OwnerWithdrawalInfoApi ownerWithdrawalInfoApi;
|
@Autowired
|
OwnerQualityGuaranteeApi ownerQualityGuaranteeApi;
|
@Autowired
|
MpPaymentRecordApi mpPaymentRecordApi;
|
@Autowired
|
MpFifthPaymentRecordApi mpFifthPaymentRecordApi;
|
@Autowired
|
OwnerRemarkInfoApi ownerRemarkInfoApi;
|
|
// 注入数据库服务(SqlSessionTemplate版Service)
|
@Override
|
public void importData(List<AssetImportLogDetailDto> assetImportLogDetailDtos) {
|
for (AssetImportLogDetailDto logDetailDto : assetImportLogDetailDtos) {
|
try {
|
|
JSONArray cellArray = JSONObject.parseArray(logDetailDto.getContent());
|
|
|
|
String flowNumber = getCellValue(cellArray, 1); // 第2列:流转编号
|
String projectName = getCellValue(cellArray, 4); // 第5列:项目名称
|
String ownersCommitteeAmountStr = getCellValue(cellArray, 12); // 第13列:业委会金额
|
AnnouncementTimeRangePo announcementTimeRangePo = null;
|
OwnersCommitteeConventionPo ocoPo = null;
|
OwnerWithdrawalInfoPo owiPo = null;
|
OwnerQualityGuaranteePo oqgPo = null;
|
OwnerRemarkInfoPo ownerRemarkInfoPo = null;
|
|
// 3. 构建3张表的PO对象(字段映射+业务计算)
|
MaintenancePayment mainPo = buildMaintenancePaymentPoV2(cellArray);//主表
|
// if (!getCellValue(cellArray, 22).isEmpty() && !getCellValue(cellArray, 23).isEmpty()) {
|
announcementTimeRangePo = buildAnnouncementTimeRangePo(cellArray, mainPo.getId());//公共收益金
|
// }
|
// if (!getCellValue(cellArray, 26).isEmpty() && !getCellValue(cellArray, 27).isEmpty()) {
|
ocoPo = buildOwnersCommitteeConventionPo(cellArray, mainPo.getId());
|
// }
|
// if (!getCellValue(cellArray, 29).isEmpty()) {
|
owiPo = buildOwnerWithdrawalInfoPo(cellArray, mainPo.getId());
|
// }
|
// if (!getCellValue(cellArray, 39).isEmpty()) {
|
oqgPo = buildOwnerQualityGuaranteePo(cellArray, mainPo.getId());
|
// }
|
List<MpPaymentRecordPo> paymentRecordPos = buildMpPaymentRecordPos(cellArray, mainPo.getFlowNumber(), mainPo.getId());
|
List<MpFifthPaymentRecord> fifthPos = buildMpFifthPaymentRecordPos(cellArray, mainPo.getFlowNumber(), mainPo.getId());
|
// if (!getCellValue(cellArray, 137).isEmpty()) {
|
ownerRemarkInfoPo = buildOwnerRemarkInfoPo(cellArray, mainPo.getFlowNumber(), mainPo.getId());
|
// }
|
|
importData(mainPo, announcementTimeRangePo, ocoPo, owiPo, oqgPo, paymentRecordPos, fifthPos, ownerRemarkInfoPo);
|
|
// 5. 更新导入日志状态(成功)- 调用父类方法
|
updateImportLogDetailState(logDetailDto.getDetailId());
|
|
} catch (Exception e) {
|
e.printStackTrace();
|
updateImportLogDetailState(logDetailDto.getDetailId(), e);
|
}
|
}
|
}
|
|
private void importData(MaintenancePayment mainPo, AnnouncementTimeRangePo announcementTimeRangePo, OwnersCommitteeConventionPo ocoPo, OwnerWithdrawalInfoPo owiPo, OwnerQualityGuaranteePo oqgPo,
|
List<MpPaymentRecordPo> paymentRecordPos, List<MpFifthPaymentRecord> fifthPos, OwnerRemarkInfoPo ownerRemarkInfoPo) {
|
maintenancePaymentApi.saveMaintenancePayment(mainPo);
|
if (announcementTimeRangePo != null) {
|
announcementTimeRangeApi.saveAnnouncementTimeRangeInfo(announcementTimeRangePo);
|
}
|
if (ocoPo != null) {
|
ownersCommitteeConventionApi.saveOwnersCommitteeConvention(ocoPo);
|
}
|
if (owiPo != null) {
|
ownerWithdrawalInfoApi.saveOwnerWithdrawalInfo(owiPo);
|
}
|
if (oqgPo != null) {
|
ownerQualityGuaranteeApi.saveOwnerQualityGuarantee(oqgPo);
|
}
|
for (MpPaymentRecordPo paymentRecordPo : paymentRecordPos) {
|
mpPaymentRecordApi.saveMpPaymentRecord(paymentRecordPo);
|
}
|
for (MpFifthPaymentRecord fifthPo : fifthPos) {
|
mpFifthPaymentRecordApi.saveMpFifthPaymentRecord(fifthPo);
|
}
|
if (ownerRemarkInfoPo != null) {
|
ownerRemarkInfoApi.saveOwnerRemarkInfo(ownerRemarkInfoPo);
|
}
|
}
|
|
private OwnerRemarkInfoPo buildOwnerRemarkInfoPo(JSONArray cellArray, String flowNumber, String id) {
|
OwnerRemarkInfoPo po = new OwnerRemarkInfoPo();
|
long longId = UUID.randomUUID().getMostSignificantBits() & Long.MAX_VALUE; // 避免负数
|
po.setId(longId);
|
po.setMpId(id);
|
po.setRemarkPerson("导入内容");
|
// po.setRemarkContent(getCellValue(cellArray, 137));
|
return po;
|
}
|
|
private OwnerQualityGuaranteePo buildOwnerQualityGuaranteePo(JSONArray cellArray, String aLong) {
|
OwnerQualityGuaranteePo po = new OwnerQualityGuaranteePo();
|
long longId = UUID.randomUUID().getMostSignificantBits() & Long.MAX_VALUE; // 避免负数
|
po.setId(longId); // 主键ID
|
po.setMpId(aLong);
|
// po.setQualityGuaranteePeriod2Start(Vtil.defaultValueToDate(getCellValue(cellArray, 37)));
|
// po.setQualityGuaranteePeriod2End(Vtil.defaultValueToDate(getCellValue(cellArray, 38)));
|
// po.setAcceptanceDate(Vtil.defaultValueToDate(getCellValue(cellArray, 41)));
|
// po.setAvailableWithdrawalDate(Vtil.defaultValueToDate(getCellValue(cellArray, 43)));
|
// po.setQualityGuaranteeRatio(getCellNum(cellArray, 39));
|
// po.setQualityGuaranteeAmount(getCellNum(cellArray, 12) * po.getQualityGuaranteeRatio());
|
// po.setAuditStatus(getCellValue(cellArray, 42));
|
return po;
|
}
|
|
private OwnerWithdrawalInfoPo buildOwnerWithdrawalInfoPo(JSONArray cellArray, String aLong) {
|
OwnerWithdrawalInfoPo po = new OwnerWithdrawalInfoPo();
|
long longId = UUID.randomUUID().getMostSignificantBits() & Long.MAX_VALUE; // 避免负数
|
po.setId(longId); // 主键ID
|
po.setMpId(aLong);
|
// po.setWithdrawalEncounteredProblem(getCellValue(cellArray, 28));
|
// po.setShortageOrArrears(getCellNum(cellArray, 29));
|
// po.setRoadName(getCellValue(cellArray, 30));
|
// po.setLane(getCellValue(cellArray, 31));
|
// po.setDoor(getCellValue(cellArray, 32));
|
// po.setRoom(getCellValue(cellArray, 33));
|
// po.setDoorRoomNumber(getCellValue(cellArray, 34));
|
// po.setOwnerAddress(getCellValue(cellArray, 35));
|
return po;
|
}
|
|
private OwnersCommitteeConventionPo buildOwnersCommitteeConventionPo(JSONArray cellArray, String mpId) {
|
OwnersCommitteeConventionPo po = new OwnersCommitteeConventionPo();
|
|
long longId = UUID.randomUUID().getMostSignificantBits() & Long.MAX_VALUE; // 避免负数
|
po.setId(longId); // 主键ID
|
po.setMpId(mpId);
|
// po.setQuota(getCellNum(cellArray, 25));
|
// po.setOwnersCommitteeResolution(getCellValue(cellArray, 26));
|
// po.setOwnersCommitteeConsultation(getCellValue(cellArray, 27));
|
|
return po;
|
}
|
|
private AnnouncementTimeRangePo buildAnnouncementTimeRangePo(JSONArray cellArray, String mpId) {
|
AnnouncementTimeRangePo po = new AnnouncementTimeRangePo();
|
long longId = UUID.randomUUID().getMostSignificantBits() & Long.MAX_VALUE; // 避免负数
|
po.setId(longId); // 主键ID
|
po.setMpId(mpId);
|
// po.setPlannedAnnouncementStart(getCellValue(cellArray, 21));
|
// po.setPlannedAnnouncementEnd(getCellValue(cellArray, 22));
|
// po.setPublishedAnnouncementStart(getCellValue(cellArray, 23));
|
// po.setPublishedAnnouncementEnd(getCellValue(cellArray, 24));
|
|
return po;
|
}
|
|
private MaintenancePayment buildMaintenancePaymentPoV2(JSONArray cellArray) throws ParseException {
|
MaintenancePayment po = new MaintenancePayment();
|
try {
|
po.setId(GenerateCodeFactory.getGeneratorId("10")); // 主键ID
|
po.setAuxiliaryColumn(getCellValue(cellArray, 0)); // 第1列:辅助列
|
po.setFlowNumber(getCellValue(cellArray, 1)); // 第2列:流转编号
|
po.setSerialNumber(getCellValue(cellArray, 2)); // 第3列:序号
|
po.setProjectCode(getCellValue(cellArray, 3)); // 第4列:项目编码
|
po.setProjectName(getCellValue(cellArray, 4)); // 第5列:项目名称
|
po.setYear(getCellValue(cellArray, 5)); // 第6列:年份
|
po.setMonth(getCellValue(cellArray, 6)); // 第7列:月份
|
po.setDay(getCellValue(cellArray, 7)); // 第8列:日
|
po.setDate(Vtil.defaultValueToDate(getCellValue(cellArray, 8))); // 第9列:日期
|
po.setProjectContent(getCellValue(cellArray, 9)); // 第10列:工程内容
|
po.setManagementOfficeAmount(getCellValue(cellArray, 10)); // 第11列:管理处金额
|
po.setManagementOfficeSeal(getCellValue(cellArray, 11)); // 第12列:管理处是否已盖章(√转"是",否则"否")
|
po.setOwnersCommitteeAmount(getCellValue(cellArray, 12)); // 第13列:业委会金额
|
po.setAuditAmount(getCellValue(cellArray, 13)); // 第14列:审价金额
|
po.setOwnersCommitteeSeal(getCellValue(cellArray, 14)); // 第15列:业委会是否已盖章
|
po.setReportDepartment(getCellValue(cellArray, 15)); // 第16列:签报部门
|
po.setFundTypeLevel1(getCellValue(cellArray, 16)); // 第17列:基金类型-一级分类
|
po.setFundTypeLevel2(getCellValue(cellArray, 17)); // 第18列:基金类型-二级分类
|
po.setMaintenanceType(getCellValue(cellArray, 18)); // 第19列:幢/全体
|
po.setBuildingOrAll(getCellValue(cellArray, 19)); // 第20列:维修类型
|
po.setSpecificAnnouncementStatus(getCellValue(cellArray, 20));//具体公布情况 TODO 添加sql字段
|
po.setQuota(getCellValue(cellArray, 21)); // 22:额度
|
po.setOwnersCommitteeResolution(getCellValue(cellArray, 22)); // 23:业委会大会决议(是/否)
|
po.setOwnersCommitteeConsultation(getCellValue(cellArray, 23)); // 24:业委会征询表(是否)
|
po.setWithdrawalEncounteredProblem(getCellValue(cellArray, 24)); // 25:支取遇到的问题
|
po.setShortageOrArrears(getCellValue(cellArray, 25)); // 26:缺支/欠款(元)
|
po.setRoadName(getCellValue(cellArray, 26)); // 路名
|
po.setLane(getCellValue(cellArray, 27)); // 弄
|
po.setDoor(getCellValue(cellArray, 28)); // 门
|
po.setRoom(getCellValue(cellArray, 29)); // 室
|
po.setDoorRoomNumber(getCellValue(cellArray, 30)); // 门室号
|
po.setOwnerAddress(getCellValue(cellArray, 31)); // 业主地址
|
po.setQualityGuaranteePeriod2(getCellValue(cellArray, 32)); // 33:质保期(第二个)
|
po.setQualityGuaranteeRatio(getCellValue(cellArray, 33)); // 34:质保金占比
|
po.setQualityGuaranteeAmount(getCellValue(cellArray, 34)); // 35:质保金金额(元)
|
po.setAcceptanceDate(getCellValue(cellArray, 35)); // 验收日期
|
po.setAuditDate(getCellValue(cellArray, 36)); // 审计情况:年/月
|
po.setAvailableWithdrawalDate(getCellValue(cellArray, 37)); // 第40列:可启动支取日期(年月日)
|
|
po.setManagementFeeRatio(getCellValue(cellArray, 164)); // 管理费
|
po.setPaymentTarget(getCellValue(cellArray, 168)); // 支付对象
|
po.setPayeeName(getCellValue(cellArray, 239)); // 支付公司名称/个人名字
|
po.setIdCardNumber(getCellValue(cellArray, 240)); // 个人身份证号码
|
po.setBankName(getCellValue(cellArray, 241)); // 开户银行
|
po.setBankAccount(getCellValue(cellArray, 242)); // 开户账号
|
po.setAuditDate(getCellValue(cellArray, 252)); // 审计情况:年/月
|
po.setAdvancedPayment(getCellValue(cellArray, 246));//垫付金额
|
po.setPayableAmountD(getCellValue(cellArray, 251));//应付金额D(特殊付款)_John
|
return po;
|
} catch (ArrayIndexOutOfBoundsException e) {
|
return po;
|
}
|
}
|
|
/**
|
* 构建 MaintenancePaymentPo(维修资金支取信息表)
|
* 字段映射对应"荣顺苑签报单"表头顺序,包含17个自动计算字段
|
*/
|
// private MaintenancePaymentPo buildMaintenancePaymentPo(JSONArray cellArray) throws ParseException {
|
// MaintenancePaymentPo po = new MaintenancePaymentPo();
|
// // 基础字段(直接映射Excel单元格)
|
// long longId = UUID.randomUUID().getMostSignificantBits() & Long.MAX_VALUE; // 避免负数
|
// po.setId(longId+""); // 主键ID
|
// po.setAuxiliaryColumn(getCellValue(cellArray, 0)); // 第1列:辅助列
|
// po.setFlowNumber(getCellValue(cellArray, 1)); // 第2列:流转编号
|
// po.setSerialNumber(parseInteger(getCellValue(cellArray, 2))); // 第3列:序号
|
// po.setProjectCode(getCellValue(cellArray, 3)); // 第4列:项目编码
|
// po.setProjectName(getCellValue(cellArray, 4)); // 第5列:项目名称
|
// po.setYear(parseInteger(getCellValue(cellArray, 5))); // 第6列:年份
|
// po.setMonth(parseInteger(getCellValue(cellArray, 6))); // 第7列:月份
|
// po.setDay(parseInteger(getCellValue(cellArray, 7))); // 第8列:日
|
// po.setDate(parseDate(getCellValue(cellArray, 8))); // 第9列:日期
|
// po.setProjectContent(getCellValue(cellArray, 9)); // 第10列:工程内容
|
// po.setManagementOfficeAmount(parseBigDecimal(getCellValue(cellArray, 10))); // 第11列:管理处金额
|
// po.setManagementOfficeSeal(convertSealStatus(getCellValue(cellArray, 11))); // 第12列:管理处是否已盖章(√转"是",否则"否")
|
// po.setOwnersCommitteeAmount(parseBigDecimal(getCellValue(cellArray, 12))); // 第13列:业委会金额
|
// po.setAuditAmount(parseBigDecimal(getCellValue(cellArray, 13))); // 第14列:审价金额
|
// po.setOwnersCommitteeSeal(convertSealStatus(getCellValue(cellArray, 14))); // 第15列:业委会是否已盖章
|
// po.setReportDepartment(getCellValue(cellArray, 15)); // 第16列:签报部门
|
// po.setFundTypeLevel1(getCellValue(cellArray, 16)); // 第17列:基金类型-一级分类
|
// po.setFundTypeLevel2(getCellValue(cellArray, 17)); // 第18列:基金类型-二级分类
|
// po.setBuildingOrAll(getCellValue(cellArray, 18)); // 第19列:幢/全体
|
// po.setMaintenanceType(getCellValue(cellArray, 19)); // 第20列:维修类型
|
// po.setQualityGuaranteePeriod1(getCellValue(cellArray, 20)); // 第21列:质保期(第一个)
|
//// po.setPublicIncomeAnnouncement(getCellValue(cellArray, 21)); // 第22列:公共收益金公布情况
|
// // 公共收益金公布子字段(第23-26列)
|
// po.setPlannedAnnouncementStart(getCellValue(cellArray, 21)); // 拟公布-起始(年月)
|
// po.setPlannedAnnouncementEnd(getCellValue(cellArray, 22)); // 拟公布-止(年月)
|
// po.setPublishedAnnouncementStart(getCellValue(cellArray, 23)); // 已公布-起始(年月)
|
// po.setPublishedAnnouncementEnd(getCellValue(cellArray, 24)); // 已公布-止(年月)
|
// po.setQuota(parseBigDecimal(getCellValue(cellArray, 25))); // 第27列:额度
|
// po.setOwnersCommitteeResolution(convertYesNo(getCellValue(cellArray, 26))); // 第28列:业委会大会决议(是/否)
|
// po.setOwnersCommitteeConsultation(convertYesNo(getCellValue(cellArray, 27))); // 第29列:业委会征询表(是否)
|
// po.setWithdrawalEncounteredProblem(getCellValue(cellArray, 28)); // 第30列:支取遇到的问题
|
// po.setShortageOrArrears(parseBigDecimal(getCellValue(cellArray, 29))); // 第31列:缺支/欠款(元)
|
// // 业主地址子字段(第32-37列)
|
// po.setRoadName(getCellValue(cellArray, 30)); // 路名
|
// po.setLane(getCellValue(cellArray, 31)); // 弄
|
// po.setDoor(getCellValue(cellArray, 32)); // 门
|
// po.setRoom(getCellValue(cellArray, 33)); // 室
|
// po.setDoorRoomNumber(getCellValue(cellArray, 34)); // 门室号
|
// po.setOwnerAddress(getCellValue(cellArray, 35)); // 业主地址
|
//// po.setWithdrawalProblem(getCellValue(cellArray, 36)); // 第38列:支取存在问题
|
// po.setProblemDifficulty(getCellValue(cellArray, 36)); // 第36列:问题难度
|
// po.setAvailableWithdrawalDate(parseDate(getCellValue(cellArray, 43))); // 第40列:可启动支取日期(年月日)
|
// po.setQualityGuaranteePeriod2(getCellValue(cellArray, 37) + "~" + getCellValue(cellArray, 38)); // 第41列:质保期(第二个)
|
// po.setQualityGuaranteeRatio(parseBigDecimal(getCellValue(cellArray, 39))); // 第42列:质保金占比
|
// po.setQualityGuaranteeAmount(parseBigDecimal(getCellValue(cellArray, 40))); // 第43列:质保金金额(元)
|
// po.setReceivedQualityGuarantee(parseBigDecimal(getCellValue(cellArray, 44))); // 第44列:已到账质保金
|
//// po.setStartDate(parseDate(getCellValue(cellArray, 44))); // 第45列:起始(年月日)
|
//// po.setEndDate(parseDate(getCellValue(cellArray, 45))); // 第46列:终止(年月日)
|
//
|
//
|
// // 支付信息(第111-116列)
|
// po.setPayeeName(getCellValue(cellArray, 143)); // 支付公司名称/个人名字
|
// po.setIdCardNumber(getCellValue(cellArray, 144)); // 个人身份证号码
|
// po.setBankName(getCellValue(cellArray, 145)); // 开户银行
|
// po.setBankAccount(getCellValue(cellArray, 146)); // 开户账号
|
// po.setRemarks(getCellValue(cellArray, 155)); // 备注
|
// po.setAcceptanceDate(parseDate(getCellValue(cellArray, 156))); // 验收日期
|
// po.setAuditDate(getCellValue(cellArray, 157)); // 审计情况:年/月
|
//
|
// return po;
|
// }
|
|
/**
|
* 构建 MpPaymentRecordPo 列表(5次打印数据)
|
*/
|
private List<MpPaymentRecordPo> buildMpPaymentRecordPos(JSONArray cellArray, String flowNumber,String mainPo) throws ParseException {
|
List<MpPaymentRecordPo> pos = new ArrayList<>();
|
// 第一次打印数据(第47-53列)
|
buildSinglePaymentRecord(mainPo, cellArray, flowNumber, 1, 38, pos);
|
// 第二次打印数据(第54-60列)
|
buildSinglePaymentRecord(mainPo, cellArray, flowNumber, 2, 50, pos);
|
// 第三次打印数据(第61-67列)
|
buildSinglePaymentRecord(mainPo, cellArray, flowNumber, 3, 62, pos);
|
// 第四次打印数据(第68-74列)
|
buildSinglePaymentRecord(mainPo, cellArray, flowNumber, 4, 74, pos);
|
// 第五次打印数据(第75-81列)
|
buildSinglePaymentRecord(mainPo, cellArray, flowNumber, 5, 86, pos);
|
buildSinglePaymentRecord(mainPo, cellArray, flowNumber, 6, 98, pos);
|
buildSinglePaymentRecord(mainPo, cellArray, flowNumber, 7, 110, pos);
|
buildSinglePaymentRecord(mainPo, cellArray, flowNumber, 8, 122, pos);
|
buildSinglePaymentRecord(mainPo, cellArray, flowNumber, 9, 134, pos);
|
buildSinglePaymentRecord(mainPo, cellArray, flowNumber, 10, 146, pos);
|
return pos;
|
}
|
|
/**
|
* 构建单次打印的 MpPaymentRecordPo
|
*/
|
private void buildSinglePaymentRecord(String mpId, JSONArray cellArray, String flowNumber, int printTimes,
|
int index, List<MpPaymentRecordPo> pos) throws ParseException {
|
|
// if (getCellValue(cellArray, index).isEmpty()) {
|
// return;
|
// }
|
|
MpPaymentRecordPo po = new MpPaymentRecordPo();
|
|
try {
|
po.setId(GenerateCodeFactory.getGeneratorId("33"));
|
po.setMpId(mpId); // mp_id = 流转编号_打印次数(确保唯一)
|
po.setPrintCount(printTimes);
|
po.setFirstPrintDate(getCellValue(cellArray, index));
|
po.setResolutionNumber(getCellValue(cellArray, index + 1));
|
po.setPrintAmount(getCellValue(cellArray, index + 2));
|
po.setArrivalDate(getCellValue(cellArray, index + 3));
|
po.setArrivalAmount(getCellValue(cellArray, index + 4));
|
po.setWithdrawer(getCellValue(cellArray, index + 5));
|
po.setShortageOrArrears(getCellValue(cellArray, index + 6));
|
// 业主地址信息(复用main表的地址)
|
po.setRoadName(getCellValue(cellArray, index + 7));
|
po.setLane(getCellValue(cellArray, index + 8));
|
po.setDoor(getCellValue(cellArray, index + 9));
|
po.setRoom(getCellValue(cellArray, index + 10));
|
po.setOwnerAddress(getCellValue(cellArray, index + 11));
|
po.setSnakeCase(getCellValue(cellArray, 158));
|
} catch (ArrayIndexOutOfBoundsException e) {
|
|
}
|
pos.add(po);
|
}
|
|
/**
|
* 构建 MpFifthPaymentRecordPo(第五次拟付实付)
|
*/
|
private List<MpFifthPaymentRecord> buildMpFifthPaymentRecordPos(JSONArray cellArray, String flowNumber,String mainPo) throws ParseException {
|
List<MpFifthPaymentRecord> pos = new ArrayList<>();
|
|
buildMpFifthPaymentRecordPo(pos, cellArray, flowNumber, mainPo, 169,1);
|
|
buildMpFifthPaymentRecordPo(pos, cellArray, flowNumber, mainPo, 176,2);
|
|
buildMpFifthPaymentRecordPo(pos, cellArray, flowNumber, mainPo, 183,3);
|
|
buildMpFifthPaymentRecordPo(pos, cellArray, flowNumber, mainPo, 190,4);
|
|
buildMpFifthPaymentRecordPo(pos, cellArray, flowNumber, mainPo, 197,5);
|
buildMpFifthPaymentRecordPo(pos, cellArray, flowNumber, mainPo, 204,6);
|
buildMpFifthPaymentRecordPo(pos, cellArray, flowNumber, mainPo, 211,7);
|
buildMpFifthPaymentRecordPo(pos, cellArray, flowNumber, mainPo, 218,8);
|
buildMpFifthPaymentRecordPo(pos, cellArray, flowNumber, mainPo, 225,9);
|
buildMpFifthPaymentRecordPo(pos, cellArray, flowNumber, mainPo, 232,10);
|
|
return pos;
|
}
|
|
private void buildMpFifthPaymentRecordPo(List<MpFifthPaymentRecord> pos, JSONArray cellArray, String flowNumber, String mainPo, int index, int printTimes) throws ParseException {
|
|
// if (getCellValue(cellArray, index).isEmpty()) {
|
// return;
|
// }
|
|
MpFifthPaymentRecord po = new MpFifthPaymentRecord();
|
|
try {
|
long longId = UUID.randomUUID().getMostSignificantBits() & Long.MAX_VALUE; // 避免负数
|
po.setId(longId+"");
|
po.setMpId(mainPo);
|
po.setPaymentCount(printTimes);
|
po.setFifthPlannedPaymentAmount(getCellValue(cellArray, index));
|
po.setPlannedPaymentDate(getCellValue(cellArray, index + 1));
|
po.setCategory(getCellValue(cellArray, index + 2));
|
po.setReimburser(getCellValue(cellArray, index + 3));
|
po.setPaymentTarget(getCellValue(cellArray, index + 4));
|
po.setActualPaymentAmount(getCellValue(cellArray, index + 5));
|
po.setActualPaymentDate(getCellValue(cellArray, index + 6));
|
} catch (ArrayIndexOutOfBoundsException e) {
|
|
}
|
pos.add(po);
|
}
|
private String getCellValue(JSONArray cellArray, int index) {
|
try {
|
if (index < 0 || index >= cellArray.size()) {
|
return "";
|
}
|
Object value = cellArray.get(index);
|
return value == null ? "" : value.toString().trim();
|
} catch (ArrayIndexOutOfBoundsException e) {
|
return null;
|
}
|
}
|
}
|