From d886cfef03bc69a6ae01bad642f02419b787dedf Mon Sep 17 00:00:00 2001 From: fanzongzhe <285169773@qq.com> Date: Mon, 25 Dec 2023 18:01:29 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=98=E6=AC=BE=E6=A8=A1=E5=9D=97=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/kingdee/voucher/GeneralVoucher.java | 7 + .../fin/api/kingdee/voucher/Voucher.java | 2 + .../fin/biz/kingdee/FinKingDeeFeignRest.java | 8 +- .../biz/kingdee/voucher/VoucherService.java | 1 + .../LoanRepaymentHistoryFeign.java | 15 + .../LoanRepaymentHistoryFeignFallback.java | 16 + .../RepaymentDetailsListQuery.java | 71 +++ .../RepaymentDetailsListVo.java | 60 +++ .../RepaymentStatisticsExportVo.java | 62 +++ .../RepaymentStatisticsQuery.java | 56 ++ .../RepaymentStatisticsVo.java | 61 +++ .../AppTransferPaymentDetailsVo.java | 2 + .../LoanTransferPaymentApply.java | 6 + .../LoanRepaymentHistoryMapper.java | 8 + .../LoanRepaymentHistoryMapper.xml | 180 +++++++ .../LoanRepaymentHistoryRest.java | 35 ++ .../LoanRepaymentHistoryService.java | 506 ++++++++++++++++++ .../LoanTransferPaymentApplyService.java | 6 + .../TransferPaymentDetailsVo.java | 2 + 19 files changed, 1102 insertions(+), 2 deletions(-) create mode 100644 anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/RepaymentDetailsListQuery.java create mode 100644 anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/RepaymentDetailsListVo.java create mode 100644 anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/RepaymentStatisticsExportVo.java create mode 100644 anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/RepaymentStatisticsQuery.java create mode 100644 anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/RepaymentStatisticsVo.java diff --git a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/voucher/GeneralVoucher.java b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/voucher/GeneralVoucher.java index d4ed393173..07246d33d5 100644 --- a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/voucher/GeneralVoucher.java +++ b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/voucher/GeneralVoucher.java @@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotBlank; import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -16,7 +17,9 @@ import java.util.List; @Data @ApiModel(value = "一般凭证 数据传输对象", description = "一般凭证 数据传输对象") public class GeneralVoucher { + @ApiModelProperty("分公司编码") + @NotBlank(message = "分公司编码不能为空") public String useOrgCode; @ApiModelProperty("凭证明细") public List voucherDetails; @@ -27,18 +30,22 @@ public class GeneralVoucher { @ApiModelProperty("场景编码") public String sceneCode; @ApiModelProperty("资方简称") + @NotBlank(message = "资方简称不能为空") public String bankName; @ApiModelProperty("数据日期") public Date dataTime; @ApiModelProperty("部门编码") + @NotBlank(message = "部门编码不能为空") public String deptCode; @ApiModelProperty("部门名称") public String deptName; @ApiModelProperty("客户编码") + @NotBlank(message = "客户编码不能为空") public String customerCode; @ApiModelProperty("客户名称") public String customerName; @ApiModelProperty("金额") + @NotBlank(message = "金额不能为空") public BigDecimal amount; @ApiModelProperty("备注") public String remarks; diff --git a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/voucher/Voucher.java b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/voucher/Voucher.java index 3d472eee0b..2e5238bcbd 100644 --- a/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/voucher/Voucher.java +++ b/anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/voucher/Voucher.java @@ -37,6 +37,8 @@ public class Voucher { public String dimensionDept; @ApiModelProperty("核算维度客户") public String dimensionCustom; + @ApiModelProperty("核算维度银行账号") + public String bankAccount; @ApiModelProperty("借方金额") public String debit; @ApiModelProperty("贷方金额") diff --git a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/FinKingDeeFeignRest.java b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/FinKingDeeFeignRest.java index 64840c415e..406e32d6c1 100644 --- a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/FinKingDeeFeignRest.java +++ b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/FinKingDeeFeignRest.java @@ -53,6 +53,7 @@ import com.yxt.anrui.fin.biz.kingdee.saloutstock.SalOutStockService; import com.yxt.anrui.fin.biz.kingdee.stkinstock.STKInStockService; import com.yxt.anrui.fin.biz.kingdee.stktransferdirect.StkTransferDirectService; import com.yxt.anrui.fin.biz.kingdee.voucher.VoucherService; +import com.yxt.anrui.portal.api.dictcommon.DictCommonFeign; import com.yxt.common.base.utils.StringUtils; import com.yxt.common.core.result.ResultBean; import io.swagger.annotations.Api; @@ -196,6 +197,9 @@ public class FinKingDeeFeignRest implements FinKingDeeFeign { private VoucherService voucherService; + @Autowired + private DictCommonFeign dictCommonFeign; + @ApiOperation("入账暂存应付单的接口") @PostMapping("/draftEntryBill") @ResponseBody @@ -246,10 +250,10 @@ public class FinKingDeeFeignRest implements FinKingDeeFeign { for (GeneralVoucher.GeneralVoucherDetail voucherDetail : voucherDetails) { Voucher.VoucherResultDetailDto dto1 = new Voucher.VoucherResultDetailDto(); //借方 Voucher.VoucherResultDetailDto dto2 = new Voucher.VoucherResultDetailDto(); //贷方 - if (StringUtils.isNotBlank(voucherDetail.getBankName())) { dto1.setSummary(voucherDetail.getBankName() + "贷款"); dto2.setSummary(voucherDetail.getBankName() + "贷款"); - } + dto1.setSubjectNo("1201.01.00"); + } } diff --git a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/voucher/VoucherService.java b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/voucher/VoucherService.java index 8a09817955..52591e6154 100644 --- a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/voucher/VoucherService.java +++ b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/voucher/VoucherService.java @@ -88,6 +88,7 @@ public class VoucherService extends FinKingDeeService { m.put("FACCOUNTID", c.getSubjectNo()); m.put("FFLEX5", c.getDimensionDept()); m.put("FFLEX6", c.getDimensionCustom()); + m.put("FF100002", c.getBankAccount()); m.put("FDEBIT", c.getDebit()); m.put("FCREDIT", c.getCredit()); voucherDetailMap.add(m); diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/LoanRepaymentHistoryFeign.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/LoanRepaymentHistoryFeign.java index 03f017dcc3..4471fb4374 100644 --- a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/LoanRepaymentHistoryFeign.java +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/LoanRepaymentHistoryFeign.java @@ -93,5 +93,20 @@ public interface LoanRepaymentHistoryFeign { @PostMapping("/transferPaymentList") public ResultBean> transferPaymentList(@RequestBody PagerQuery pq); + @ApiOperation("客户还款情况统计表") + @PostMapping("/repaymentStatistics") + public ResultBean> repaymentStatistics(@RequestBody PagerQuery pq); + + @ApiOperation("客户还款明细查询") + @PostMapping("/repaymentDetailsList") + public ResultBean> repaymentDetailsList(@RequestBody PagerQuery pq); + + @PostMapping("/exportExcel") + @ApiOperation(value = "导出当月应还记录") + @ResponseBody + public void exportExcel(@RequestBody RepaymentStatisticsQuery repaymentStatisticsQuery); + + + } diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/LoanRepaymentHistoryFeignFallback.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/LoanRepaymentHistoryFeignFallback.java index ca14e7fcbf..a68f5eec80 100644 --- a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/LoanRepaymentHistoryFeignFallback.java +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/LoanRepaymentHistoryFeignFallback.java @@ -86,4 +86,20 @@ public class LoanRepaymentHistoryFeignFallback implements LoanRepaymentHistoryFe public ResultBean> transferPaymentList(PagerQuery pq) { return null; } + + @Override + public ResultBean> repaymentStatistics(PagerQuery pq) { + return null; + } + + @Override + public ResultBean> repaymentDetailsList(PagerQuery pq) { + return null; + } + + @Override + public void exportExcel(RepaymentStatisticsQuery repaymentStatisticsQuery) { + + } + } diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/RepaymentDetailsListQuery.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/RepaymentDetailsListQuery.java new file mode 100644 index 0000000000..32a708d0e9 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/RepaymentDetailsListQuery.java @@ -0,0 +1,71 @@ +package com.yxt.anrui.riskcenter.api.loanrepaymenthistory; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author Fan + * @description + * @date 2023/12/25 16:29 + */ +@Data +public class RepaymentDetailsListQuery implements Query { + + @ApiModelProperty("分公司") + private String useOrgName; + @ApiModelProperty("销售部门") + private String dept; + @ApiModelProperty("销售专员") + private String staffName; + @ApiModelProperty("贷款合同号") + private String loanContractNo; + @ApiModelProperty("车架号") + private String vinNo; + @ApiModelProperty("资方") + private String bankName; + @ApiModelProperty("资方合同号") + private String bankContractNo; + @ApiModelProperty("客户名") + private String customer; + @ApiModelProperty("贷款人") + private String borrowerName; + @ApiModelProperty("期数") + private String period; + @ApiModelProperty("应还开始日期") + private String dueStartDate; + @ApiModelProperty("应还结束日期") + private String dueEndDate; + @ApiModelProperty("实还开始日期") + private String actualStartDate; + @ApiModelProperty("实还结束日期") + private String actualEndDate; + @ApiModelProperty("数据开始日期") + private String dataStartTime; + @ApiModelProperty("数据结束日期") + private String dataEndTime; + @ApiModelProperty("还款方式key") + private String returnWayKey; + @ApiModelProperty("更新开始日期") + private String updateStartTime; + @ApiModelProperty("更新结束日期") + private String updateEndTime; + @ApiModelProperty("更新状态") + private String updateState; + @ApiModelProperty("财务收款单据编号") + private String billNo; + @ApiModelProperty("划扣通过开始日期") + private String closingStartDate; + @ApiModelProperty("划扣通过结束日期") + private String closingEndDate; + @ApiModelProperty("划扣状态key") + private String buckleKey; + @ApiModelProperty("组织全路径") + private String orgPath; + @ApiModelProperty("菜单sid") + private String menuSid; + @ApiModelProperty("菜单url") + private String menuUrl; + @ApiModelProperty("用户sid") + private String userSid; +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/RepaymentDetailsListVo.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/RepaymentDetailsListVo.java new file mode 100644 index 0000000000..fe5801574f --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/RepaymentDetailsListVo.java @@ -0,0 +1,60 @@ +package com.yxt.anrui.riskcenter.api.loanrepaymenthistory; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @author Fan + * @description + * @date 2023/12/25 16:29 + */ +@Data +public class RepaymentDetailsListVo implements Vo { + + @ApiModelProperty("分公司") + private String useOrgName; + @ApiModelProperty("销售部门") + private String dept; + @ApiModelProperty("销售专员") + private String staffName; + @ApiModelProperty("贷款合同号") + private String loanContractNo; + @ApiModelProperty("车架号") + private String vinNo; + @ApiModelProperty("资方") + private String bankName; + @ApiModelProperty("资方合同号") + private String bankContractNo; + @ApiModelProperty("客户名") + private String customer; + @ApiModelProperty("贷款人") + private String borrowerName; + @ApiModelProperty("期数") + private String period; + @ApiModelProperty("应还日期") + private String dueDate; + @ApiModelProperty("应还金额") + private String dueMoney; + @ApiModelProperty("实还日期") + private String actualDate; + @ApiModelProperty("数据日期") + private String dataTime; + @ApiModelProperty("实还金额") + private String actualMoney; + @ApiModelProperty("还款方式") + private String returnWay; + @ApiModelProperty("更新日期") + private String updateTime; + @ApiModelProperty("更新状态") + private String updateState; + @ApiModelProperty("财务收款单据编号") + private String billNo; + @ApiModelProperty("划扣通过日期") + private String closingDate; + @ApiModelProperty("划扣状态") + private String buckle; +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/RepaymentStatisticsExportVo.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/RepaymentStatisticsExportVo.java new file mode 100644 index 0000000000..44756b7e20 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/RepaymentStatisticsExportVo.java @@ -0,0 +1,62 @@ +package com.yxt.anrui.riskcenter.api.loanrepaymenthistory; + +import com.yxt.common.core.utils.ExportEntityMap; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author Fan + * @description + * @date 2023/12/25 17:18 + */ +@Data +public class RepaymentStatisticsExportVo { + + private String sid; + @ExportEntityMap(CnName = "序号", EnName = "rankNo") + private Integer rankNo; + @ExportEntityMap(CnName = "分公司", EnName = "useOrgName") + private String useOrgName; + @ExportEntityMap(CnName = "销售部门", EnName = "dept") + private String dept; + @ExportEntityMap(CnName = "销售专员", EnName = "staffName") + private String staffName; + @ExportEntityMap(CnName = "贷款合同号", EnName = "loanContractNo") + private String loanContractNo; + @ExportEntityMap(CnName = "车架号", EnName = "vinNo") + private String vinNo; + @ExportEntityMap(CnName = "资方", EnName = "bankName") + private String bankName; + @ExportEntityMap(CnName = "资方合同号", EnName = "bankContractNo") + private String bankContractNo; + @ExportEntityMap(CnName = "客户名", EnName = "customer") + private String customer; + @ExportEntityMap(CnName = "贷款人", EnName = "borrowerName") + private String borrowerName; + @ExportEntityMap(CnName = "期数", EnName = "period") + private String period; + @ExportEntityMap(CnName = "应还日期", EnName = "dueDate") + private String dueDate; + @ExportEntityMap(CnName = "应还金额", EnName = "dueMoney") + private String dueMoney; + @ExportEntityMap(CnName = "已还金额", EnName = "repaidMoney") + private String repaidMoney; + @ExportEntityMap(CnName = "未还金额", EnName = "outstandingMoney") + private String outstandingMoney; + @ExportEntityMap(CnName = "还款状态", EnName = "returnState") + private String returnState; //01未还 02部分还款 03已还款 + @ExportEntityMap(CnName = "公司垫款", EnName = "paymentMoney") + private String paymentMoney; + @ExportEntityMap(CnName = "资金占用费", EnName = "fund") + private String fund; + @ExportEntityMap(CnName = "垫资方逾期利息", EnName = "bankBeInter") + private String bankBeInter; + @ExportEntityMap(CnName = "当前是否逾期", EnName = "nowOverdue") + private String nowOverdue; // 0是1否 + @ExportEntityMap(CnName = "本期是否曾逾期", EnName = "dueOverdue") + private String dueOverdue; // 0是1否 + @ApiModelProperty("更新日期") + @ExportEntityMap(CnName = "更新日期", EnName = "updateDate") + private String updateDate; + +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/RepaymentStatisticsQuery.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/RepaymentStatisticsQuery.java new file mode 100644 index 0000000000..1e9e4cbe50 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/RepaymentStatisticsQuery.java @@ -0,0 +1,56 @@ +package com.yxt.anrui.riskcenter.api.loanrepaymenthistory; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author Fan + * @description + * @date 2023/12/25 9:14 + */ +@Data +public class RepaymentStatisticsQuery implements Query { + @ApiModelProperty("分公司") + private String useOrgName; + @ApiModelProperty("销售部门") + private String dept; + @ApiModelProperty("销售专员") + private String staffName; + @ApiModelProperty("贷款合同号") + private String loanContractNo; + @ApiModelProperty("车架号") + private String vinNo; + @ApiModelProperty("资方") + private String bankName; + @ApiModelProperty("资方合同号") + private String bankContractNo; + @ApiModelProperty("客户名") + private String customer; + @ApiModelProperty("贷款人") + private String borrowerName; + @ApiModelProperty("期数") + private String period; + @ApiModelProperty("应还开始日期") + private String dueStartDate; + @ApiModelProperty("应还结束日期") + private String dueEndDate; + @ApiModelProperty("还款状态") + private String returnState; //01未还 02部分还款 03已还款 + @ApiModelProperty("当前是否逾期") + private String nowOverdue; // 0是1否 + @ApiModelProperty("本期是否曾逾期") + private String dueOverdue; // 0是1否 + @ApiModelProperty("更新开始日期") + private String updateStartDate; + @ApiModelProperty("更新日期") + private String updateEndDate; + @ApiModelProperty("组织全路径") + private String orgPath; + @ApiModelProperty("菜单sid") + private String menuSid; + @ApiModelProperty("菜单url") + private String menuUrl; + @ApiModelProperty("用户sid") + private String userSid; +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/RepaymentStatisticsVo.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/RepaymentStatisticsVo.java new file mode 100644 index 0000000000..ec8ecfd376 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/RepaymentStatisticsVo.java @@ -0,0 +1,61 @@ +package com.yxt.anrui.riskcenter.api.loanrepaymenthistory; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @author Fan + * @description + * @date 2023/12/25 9:10 + */ + +@Data +public class RepaymentStatisticsVo implements Vo { + private String sid; + @ApiModelProperty("分公司") + private String useOrgName; + @ApiModelProperty("销售部门") + private String dept; + @ApiModelProperty("销售专员") + private String staffName; + @ApiModelProperty("贷款合同号") + private String loanContractNo; + @ApiModelProperty("车架号") + private String vinNo; + @ApiModelProperty("资方") + private String bankName; + @ApiModelProperty("资方合同号") + private String bankContractNo; + @ApiModelProperty("客户名") + private String customer; + @ApiModelProperty("贷款人") + private String borrowerName; + @ApiModelProperty("期数") + private String period; + @ApiModelProperty("应还日期") + private String dueDate; + @ApiModelProperty("应还金额") + private String dueMoney; + @ApiModelProperty("已还金额") + private String repaidMoney; + @ApiModelProperty("未还金额") + private String outstandingMoney; + @ApiModelProperty("还款状态") + private String returnState; //01未还 02部分还款 03已还款 + @ApiModelProperty("公司垫款") + private String paymentMoney; + @ApiModelProperty("资金占用费") + private String fund; + @ApiModelProperty("垫资方逾期利息") + private String bankBeInter; + @ApiModelProperty("当前是否逾期") + private String nowOverdue; // 0是1否 + @ApiModelProperty("本期是否曾逾期") + private String dueOverdue; // 0是1否 + @ApiModelProperty("更新日期") + private String updateDate; +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/AppTransferPaymentDetailsVo.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/AppTransferPaymentDetailsVo.java index 8e6ce77532..2ca347ff57 100644 --- a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/AppTransferPaymentDetailsVo.java +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/AppTransferPaymentDetailsVo.java @@ -20,5 +20,7 @@ public class AppTransferPaymentDetailsVo { private List files = new ArrayList<>(); private String taskId; private String procInsId; + private String cwfkxs; //财务罚款形式 + private String dkbz; //打款备注 private List records = new ArrayList<>(); } diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/LoanTransferPaymentApply.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/LoanTransferPaymentApply.java index 6ded06623e..ea2ba3e997 100644 --- a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/LoanTransferPaymentApply.java +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/LoanTransferPaymentApply.java @@ -45,5 +45,11 @@ public class LoanTransferPaymentApply extends BaseEntity { private String taskId; // taskId @ApiModelProperty("申请人组织路径") private String orgSidPath; // 申请人组织路径 + @ApiModelProperty("财务付款形式") + private String payForm; + @ApiModelProperty("01按资方合同编号单笔付款/02按收款账号合并付款") + private String payFormKey; + @ApiModelProperty("打款时需要备注内容") + private String payRemarks; } diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryMapper.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryMapper.java index 19c5fbfaac..fd0d8434f9 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryMapper.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryMapper.java @@ -41,4 +41,12 @@ public interface LoanRepaymentHistoryMapper extends BaseMapper selbuckleNewInitList(@Param(Constants.WRAPPER) QueryWrapper qw); IPage transferPaymentList(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + IPage repaymentStatistics(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + List selnewUpdateTimeByPlanSid(@Param("sid") String sid); + + IPage repaymentDetailsList(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + List repaymentStatisticsExport(@Param(Constants.WRAPPER) QueryWrapper qw); } diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryMapper.xml b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryMapper.xml index f90e41fe03..994eba7d6e 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryMapper.xml +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryMapper.xml @@ -170,5 +170,185 @@ ${ew.sqlSegment} + + + + \ No newline at end of file diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryRest.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryRest.java index a76281c22c..ca99cb4c06 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryRest.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryRest.java @@ -1,11 +1,13 @@ package com.yxt.anrui.riskcenter.biz.loanrepaymenthistory; +import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempExportVo; import com.yxt.anrui.riskcenter.api.loanbuckleapply.LoanBuckleApplyInit; import com.yxt.anrui.riskcenter.api.loanparameter.LoanParameterVo; import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.*; import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetailsDto; import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetailsFeign; +import com.yxt.common.base.utils.ExportExcelUtils; import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.vo.PagerVo; @@ -20,6 +22,7 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.text.ParseException; import java.util.List; @@ -130,4 +133,36 @@ public class LoanRepaymentHistoryRest implements LoanRepaymentHistoryFeign { PagerVo pv = loanRepaymentHistoryService.transferPaymentList(pq); return rb.success().setData(pv); } + + @Override + public ResultBean> repaymentStatistics(PagerQuery pq) { + ResultBean> rb = ResultBean.fireFail(); + PagerVo pv = loanRepaymentHistoryService.repaymentStatistics(pq); + return rb.success().setData(pv); + } + + @Override + public ResultBean> repaymentDetailsList(PagerQuery pq) { + ResultBean> rb = ResultBean.fireFail(); + PagerVo pv = loanRepaymentHistoryService.repaymentDetailsList(pq); + return rb.success().setData(pv); + } + + @Override + public void exportExcel(RepaymentStatisticsQuery repaymentStatisticsQuery) { + //得到所有要导出的数据 + List repaymentStatisticsExportVos = loanRepaymentHistoryService.exportExcel(repaymentStatisticsQuery); + //定义导出的excel名字 + String excelName = "月还记录列表"; + String fileNameURL = ""; + try { + fileNameURL = URLEncoder.encode(excelName, "UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + //导出列表 + ExportExcelUtils.export(fileNameURL, repaymentStatisticsExportVos, RepaymentStatisticsExportVo.class, response); + } + + } diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryService.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryService.java index d41cb3f322..25a64ef394 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryService.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryService.java @@ -6,10 +6,15 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.yxt.anrui.base.api.basemodelmodprice.BaseModelModpriceImportReturn; import com.yxt.anrui.base.api.basemodelmodprice.BaseModelModpriceImportVo; +import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTemp; +import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempExportVo; +import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo; +import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgVo; import com.yxt.anrui.portal.api.sysuser.PrivilegeQuery; import com.yxt.anrui.portal.api.sysuser.SysUserFeign; import com.yxt.anrui.riskcenter.api.loanbuckleapply.LoanBuckleApplyInit; import com.yxt.anrui.riskcenter.api.loanbuckleapply.LoanBuckleHistoryRecord; +import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.LoanMonthlyAccrualApply; import com.yxt.anrui.riskcenter.api.loanparameter.LoanParameter; import com.yxt.anrui.riskcenter.api.loanparameter.LoanParameterQuery; import com.yxt.anrui.riskcenter.api.loanparameter.LoanParameterVo; @@ -22,6 +27,7 @@ import com.yxt.common.base.utils.PagerUtil; import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.vo.PagerVo; +import com.yxt.messagecenter.api.messageurgeList.MessageUrgeListVo; import org.apache.commons.lang3.StringUtils; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; @@ -43,8 +49,10 @@ import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; +import java.util.function.Predicate; import java.util.regex.Matcher; import java.util.regex.Pattern; +import java.util.stream.Collectors; /** @@ -861,4 +869,502 @@ public class LoanRepaymentHistoryService extends MybatisBaseService p = PagerUtil.pageToVo(pagging, null); return p; } + + public PagerVo repaymentStatistics(PagerQuery pq) { + IPage page = PagerUtil.queryToPage(pq); + RepaymentStatisticsQuery pagerQuery = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + //======================= + PrivilegeQuery privilegeQuery = new PrivilegeQuery(); + privilegeQuery.setOrgPath(pagerQuery.getOrgPath()); + privilegeQuery.setMenuSid(pagerQuery.getMenuSid()); + privilegeQuery.setMenuUrl(pagerQuery.getMenuUrl()); + privilegeQuery.setUserSid(pagerQuery.getUserSid()); + ResultBean defaultIdReltBean = sysUserFeign.selectPrivilegeLevel(privilegeQuery); + if (StringUtils.isNotBlank(defaultIdReltBean.getData())) { + //数据权限ID(1集团、2事业部、3分公司、4部门、5个人) + String orgSidPath = pagerQuery.getOrgPath(); + orgSidPath = orgSidPath + "/"; + int i1 = orgSidPath.indexOf("/"); + int i2 = orgSidPath.indexOf("/", i1 + 1); + int i3 = orgSidPath.indexOf("/", i2 + 1); + int i4 = orgSidPath.indexOf("/", i3 + 1); + String orgLevelKey = defaultIdReltBean.getData(); + if ("1".equals(orgLevelKey)) { + orgSidPath = orgSidPath.substring(0, i1); + qw.like("a.orgSidPath", orgSidPath); + } else if ("2".equals(orgLevelKey)) { + orgSidPath = orgSidPath.substring(0, i2); + qw.like("a.orgSidPath", orgSidPath); + } else if ("3".equals(orgLevelKey)) { + orgSidPath = orgSidPath.substring(0, i3); + qw.like("a.orgSidPath", orgSidPath); + } else if ("4".equals(orgLevelKey)) { + orgSidPath = orgSidPath.substring(0, i4); + qw.like("a.orgSidPath", orgSidPath); + } else if ("5".equals(orgLevelKey)) { + qw.eq("a.createBySid", pagerQuery.getUserSid()); + } else { + PagerVo p = new PagerVo<>(); + return p; + } + } else { + PagerVo p = new PagerVo<>(); + return p; + } + //======================= + if (StringUtils.isNotBlank(pagerQuery.getVinNo())) { + qw.like("a.vinNo", pagerQuery.getVinNo()); + } + if (StringUtils.isNotBlank(pagerQuery.getDept())) { + qw.like("a.dept", pagerQuery.getDept()); + } + if (StringUtils.isNotBlank(pagerQuery.getStaffName())) { + qw.like("a.staffName", pagerQuery.getStaffName()); + } + if (StringUtils.isNotBlank(pagerQuery.getLoanContractNo())) { + qw.like("a.loanContractNo", pagerQuery.getLoanContractNo()); + } + if (StringUtils.isNotBlank(pagerQuery.getPeriod())) { + qw.eq("a.period", pagerQuery.getPeriod()); + } + if (StringUtils.isNotBlank(pagerQuery.getBankName())) { + qw.like("a.bankName", pagerQuery.getBankName()); + } + if (StringUtils.isNotBlank(pagerQuery.getBankContractNo())) { + qw.like("a.bankContractNo", pagerQuery.getBankContractNo()); + } + if (StringUtils.isNotBlank(pagerQuery.getCustomer())) { + qw.like("a.customer", pagerQuery.getCustomer()); + } + if (StringUtils.isNotBlank(pagerQuery.getBorrowerName())) { + qw.like("a.borrowerName", pagerQuery.getBorrowerName()); + } + String dueStartDate = pagerQuery.getDueStartDate(); + String dueEndDate = pagerQuery.getDueEndDate(); + qw.apply(StringUtils.isNotEmpty(dueStartDate), "date_format (a.dueDate,'%Y-%m-%d') >= date_format('" + dueStartDate + "','%Y-%m-%d')"). + apply(StringUtils.isNotEmpty(dueEndDate), "date_format (a.dueDate,'%Y-%m-%d') <= date_format('" + dueEndDate + "','%Y-%m-%d')" + ); + qw.eq("1", "1"); + qw.orderBy(true, true, "a.useOrgName") + .orderBy(true, true, "a.vinNo") + .orderBy(true, true, "a.period") + .orderBy(true, true, "a.loanContractNo") + ; + IPage pagging = baseMapper.repaymentStatistics(page, qw); + List records = pagging.getRecords(); + records.removeAll(Collections.singleton(null)); + if (!records.isEmpty()) { + for (RepaymentStatisticsVo record : records) { + String sid = record.getSid(); + List updateTimes = baseMapper.selnewUpdateTimeByPlanSid(sid); + updateTimes.removeAll(Collections.singleton(null)); + if (!updateTimes.isEmpty()) { + String updateTime = updateTimes.get(0); + try { + Date updateTimeParse = sdf.parse(updateTime); + Date dueDateParse = sdf.parse(record.getDueDate()); + String format = sdf.format(new Date()); + Date parseNewDate = sdf.parse(format); + if (updateTimeParse.compareTo(dueDateParse) > 0) { + record.setNowOverdue("0"); + } else { + record.setNowOverdue("1"); + } + if (updateTimeParse.compareTo(parseNewDate) == 0) { + Calendar cal_1 = Calendar.getInstance();// 使用默认时区和语言环境获得一个日历 + cal_1.add(Calendar.DAY_OF_MONTH, -1); + record.setUpdateDate(sdf.format(cal_1.getTime())); + } else { + record.setUpdateDate(updateTime); + } + for (String time : updateTimes) { + Date parseTime = sdf.parse(time); + if (parseTime.compareTo(dueDateParse) > 0) { + record.setDueOverdue("0"); + } + } + if (StringUtils.isBlank(record.getDueOverdue())) { + record.setDueOverdue("1"); + } + } catch (ParseException e) { + e.printStackTrace(); + } + } else { + String format = sdf.format(new Date()); + try { + Date parseNewDate = sdf.parse(format); + Date dueDateParse = sdf.parse(record.getDueDate()); + if (parseNewDate.compareTo(dueDateParse) > 0) { + record.setNowOverdue("0"); + record.setDueOverdue("0"); + } else { + record.setNowOverdue("1"); + record.setDueOverdue("1"); + } + } catch (ParseException e) { + e.printStackTrace(); + } + } + } + } + if (StringUtils.isNotBlank(pagerQuery.getNowOverdue())) { + records = records.stream().filter(r -> r.getNowOverdue().equals(pagerQuery.getNowOverdue())) + .collect(Collectors.toList()); + } + if (StringUtils.isNotBlank(pagerQuery.getDueOverdue())) { + records = records.stream().filter(r -> r.getDueOverdue().equals(pagerQuery.getDueOverdue())) + .collect(Collectors.toList()); + } + if (StringUtils.isNotBlank(pagerQuery.getUpdateStartDate()) || StringUtils.isNotBlank(pagerQuery.getUpdateEndDate())) { + records = records.stream().filter(new Predicate() { + @Override + public boolean test(RepaymentStatisticsVo v) { + if (StringUtils.isNotBlank(pagerQuery.getUpdateStartDate()) && StringUtils.isBlank(pagerQuery.getUpdateEndDate())) { + String updateStartDate = pagerQuery.getUpdateStartDate(); + try { + Date parseUpdateTime = sdf.parse(v.getUpdateDate()); + Date startTime = sdf.parse(updateStartDate); + if (parseUpdateTime.compareTo(startTime) >= 0) { + return true; + } + } catch (ParseException e) { + e.printStackTrace(); + } + } else if (StringUtils.isBlank(pagerQuery.getUpdateStartDate()) && StringUtils.isNotBlank(pagerQuery.getUpdateEndDate())) { + String updateEndDate = pagerQuery.getUpdateEndDate(); + try { + Date parseUpdateTime = sdf.parse(v.getUpdateDate()); + Date endTime = sdf.parse(updateEndDate); + if (parseUpdateTime.compareTo(endTime) <= 0) { + return true; + } + } catch (ParseException e) { + e.printStackTrace(); + } + } else { + String updateStartDate = pagerQuery.getUpdateStartDate(); + String updateEndDate = pagerQuery.getUpdateEndDate(); + try { + Date parseUpdateTime = sdf.parse(v.getUpdateDate()); + Date endTime = sdf.parse(updateEndDate); + Date startTime = sdf.parse(updateStartDate); + if (parseUpdateTime.compareTo(endTime) <= 0 && parseUpdateTime.compareTo(startTime) >= 0) { + return true; + } + } catch (ParseException e) { + e.printStackTrace(); + } + } + return false; + } + }).collect(Collectors.toList()); + } + pagging.setRecords(records); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public PagerVo repaymentDetailsList(PagerQuery pq) { + IPage page = PagerUtil.queryToPage(pq); + RepaymentDetailsListQuery pagerQuery = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + //======================= + PrivilegeQuery privilegeQuery = new PrivilegeQuery(); + privilegeQuery.setOrgPath(pagerQuery.getOrgPath()); + privilegeQuery.setMenuSid(pagerQuery.getMenuSid()); + privilegeQuery.setMenuUrl(pagerQuery.getMenuUrl()); + privilegeQuery.setUserSid(pagerQuery.getUserSid()); + ResultBean defaultIdReltBean = sysUserFeign.selectPrivilegeLevel(privilegeQuery); + if (StringUtils.isNotBlank(defaultIdReltBean.getData())) { + //数据权限ID(1集团、2事业部、3分公司、4部门、5个人) + String orgSidPath = pagerQuery.getOrgPath(); + orgSidPath = orgSidPath + "/"; + int i1 = orgSidPath.indexOf("/"); + int i2 = orgSidPath.indexOf("/", i1 + 1); + int i3 = orgSidPath.indexOf("/", i2 + 1); + int i4 = orgSidPath.indexOf("/", i3 + 1); + String orgLevelKey = defaultIdReltBean.getData(); + if ("1".equals(orgLevelKey)) { + orgSidPath = orgSidPath.substring(0, i1); + qw.like("p.orgSidPath", orgSidPath); + } else if ("2".equals(orgLevelKey)) { + orgSidPath = orgSidPath.substring(0, i2); + qw.like("p.orgSidPath", orgSidPath); + } else if ("3".equals(orgLevelKey)) { + orgSidPath = orgSidPath.substring(0, i3); + qw.like("p.orgSidPath", orgSidPath); + } else if ("4".equals(orgLevelKey)) { + orgSidPath = orgSidPath.substring(0, i4); + qw.like("p.orgSidPath", orgSidPath); + } else if ("5".equals(orgLevelKey)) { + qw.eq("p.salesUserSid", pagerQuery.getUserSid()); + } else { + PagerVo p = new PagerVo<>(); + return p; + } + } else { + PagerVo p = new PagerVo<>(); + return p; + } + //======================= + if (StringUtils.isNotBlank(pagerQuery.getVinNo())) { + qw.like("p.vinNo", pagerQuery.getVinNo()); + } + if (StringUtils.isNotBlank(pagerQuery.getDept())) { + qw.like("p.dept", pagerQuery.getDept()); + } + if (StringUtils.isNotBlank(pagerQuery.getStaffName())) { + qw.like("p.staffName", pagerQuery.getStaffName()); + } + if (StringUtils.isNotBlank(pagerQuery.getLoanContractNo())) { + qw.like("p.loanContractNo", pagerQuery.getLoanContractNo()); + } + if (StringUtils.isNotBlank(pagerQuery.getPeriod())) { + qw.eq("p.period", pagerQuery.getPeriod()); + } + if (StringUtils.isNotBlank(pagerQuery.getBankName())) { + qw.like("p.bankName", pagerQuery.getBankName()); + } + if (StringUtils.isNotBlank(pagerQuery.getBankContractNo())) { + qw.like("p.bankContractNo", pagerQuery.getBankContractNo()); + } + if (StringUtils.isNotBlank(pagerQuery.getCustomer())) { + qw.like("p.customer", pagerQuery.getCustomer()); + } + if (StringUtils.isNotBlank(pagerQuery.getBorrowerName())) { + qw.like("p.borrowerName", pagerQuery.getBorrowerName()); + } + String dueStartDate = pagerQuery.getDueStartDate(); + String dueEndDate = pagerQuery.getDueEndDate(); + qw.apply(StringUtils.isNotEmpty(dueStartDate), "date_format (p.dueDate,'%Y-%m-%d') >= date_format('" + dueStartDate + "','%Y-%m-%d')"). + apply(StringUtils.isNotEmpty(dueEndDate), "date_format (p.dueDate,'%Y-%m-%d') <= date_format('" + dueEndDate + "','%Y-%m-%d')" + ); + String actualStartDate = pagerQuery.getActualStartDate(); + String actualEndDate = pagerQuery.getActualEndDate(); + qw.apply(StringUtils.isNotEmpty(actualStartDate), "date_format (h.actualDate,'%Y-%m-%d') >= date_format('" + actualStartDate + "','%Y-%m-%d')"). + apply(StringUtils.isNotEmpty(actualEndDate), "date_format (h.actualDate,'%Y-%m-%d') <= date_format('" + actualEndDate + "','%Y-%m-%d')" + ); + String dataStartTime = pagerQuery.getDataStartTime(); + String dataEndTime = pagerQuery.getDataEndTime(); + qw.apply(StringUtils.isNotEmpty(dataStartTime), "date_format (h.dataTime,'%Y-%m-%d') >= date_format('" + dataStartTime + "','%Y-%m-%d')"). + apply(StringUtils.isNotEmpty(dataEndTime), "date_format (h.dataTime,'%Y-%m-%d') <= date_format('" + dataEndTime + "','%Y-%m-%d')" + ); + String closingStartDate = pagerQuery.getClosingStartDate(); + String closingEndDate = pagerQuery.getClosingEndDate(); + qw.apply(StringUtils.isNotEmpty(closingStartDate), "date_format (h.closingDate,'%Y-%m-%d') >= date_format('" + closingStartDate + "','%Y-%m-%d')"). + apply(StringUtils.isNotEmpty(closingEndDate), "date_format (h.closingDate,'%Y-%m-%d') <= date_format('" + closingEndDate + "','%Y-%m-%d')" + ); + String updateStartTime = pagerQuery.getUpdateStartTime(); + String updateEndTime = pagerQuery.getUpdateEndTime(); + qw.apply(StringUtils.isNotEmpty(updateStartTime), "date_format (h.updateTime,'%Y-%m-%d') >= date_format('" + updateStartTime + "','%Y-%m-%d')"). + apply(StringUtils.isNotEmpty(updateEndTime), "date_format (h.updateTime,'%Y-%m-%d') <= date_format('" + updateEndTime + "','%Y-%m-%d')" + ); + qw.eq("1", "1"); + qw.orderBy(true, true, "p.useOrgName") + .orderBy(true, true, "p.vinNo") + .orderBy(true, true, "p.period") + .orderBy(true, true, "p.loanContractNo") + ; + IPage pagging = baseMapper.repaymentDetailsList(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public List exportExcel(RepaymentStatisticsQuery pagerQuery) { + QueryWrapper qw = new QueryWrapper<>(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + //根据用户的组织机构查询分公司 + //======================= + PrivilegeQuery privilegeQuery = new PrivilegeQuery(); + privilegeQuery.setOrgPath(pagerQuery.getOrgPath()); + privilegeQuery.setMenuSid(pagerQuery.getMenuSid()); + privilegeQuery.setMenuUrl(pagerQuery.getMenuUrl()); + privilegeQuery.setUserSid(pagerQuery.getUserSid()); + ResultBean defaultIdReltBean = sysUserFeign.selectPrivilegeLevel(privilegeQuery); +// if (StringUtils.isNotBlank(defaultIdReltBean.getData())) { +// //数据权限ID(1集团、2事业部、3分公司、4部门、5个人) +// String orgSidPath = pagerQuery.getOrgPath(); +// orgSidPath = orgSidPath + "/"; +// int i1 = orgSidPath.indexOf("/"); +// int i2 = orgSidPath.indexOf("/", i1 + 1); +// int i3 = orgSidPath.indexOf("/", i2 + 1); +// int i4 = orgSidPath.indexOf("/", i3 + 1); +// String orgLevelKey = defaultIdReltBean.getData(); +// if ("1".equals(orgLevelKey)) { +// orgSidPath = orgSidPath.substring(0, i1); +// qw.like("a.orgSidPath", orgSidPath); +// } else if ("2".equals(orgLevelKey)) { +// orgSidPath = orgSidPath.substring(0, i2); +// qw.like("a.orgSidPath", orgSidPath); +// } else if ("3".equals(orgLevelKey)) { +// orgSidPath = orgSidPath.substring(0, i3); +// qw.like("a.orgSidPath", orgSidPath); +// } else if ("4".equals(orgLevelKey)) { +// orgSidPath = orgSidPath.substring(0, i4); +// qw.like("a.orgSidPath", orgSidPath); +// } else if ("5".equals(orgLevelKey)) { +// qw.eq("a.createBySid", pagerQuery.getUserSid()); +// } else { +// List p = new ArrayList<>(); +// return p; +// } +// } else { +// List p = new ArrayList<>(); +// return p; +// } + if (StringUtils.isNotBlank(pagerQuery.getVinNo())) { + qw.like("a.vinNo", pagerQuery.getVinNo()); + } + if (StringUtils.isNotBlank(pagerQuery.getDept())) { + qw.like("a.dept", pagerQuery.getDept()); + } + if (StringUtils.isNotBlank(pagerQuery.getStaffName())) { + qw.like("a.staffName", pagerQuery.getStaffName()); + } + if (StringUtils.isNotBlank(pagerQuery.getLoanContractNo())) { + qw.like("a.loanContractNo", pagerQuery.getLoanContractNo()); + } + if (StringUtils.isNotBlank(pagerQuery.getPeriod())) { + qw.eq("a.period", pagerQuery.getPeriod()); + } + if (StringUtils.isNotBlank(pagerQuery.getBankName())) { + qw.like("a.bankName", pagerQuery.getBankName()); + } + if (StringUtils.isNotBlank(pagerQuery.getBankContractNo())) { + qw.like("a.bankContractNo", pagerQuery.getBankContractNo()); + } + if (StringUtils.isNotBlank(pagerQuery.getCustomer())) { + qw.like("a.customer", pagerQuery.getCustomer()); + } + if (StringUtils.isNotBlank(pagerQuery.getBorrowerName())) { + qw.like("a.borrowerName", pagerQuery.getBorrowerName()); + } + List headAndLast = getMonthHeadAndLast(new Date()); + String head = headAndLast.get(0); + String last = headAndLast.get(1); + qw.apply(StringUtils.isNotEmpty(head), "date_format (a.dueDate,'%Y-%m-%d') >= date_format('" + head + "','%Y-%m-%d')"). + apply(StringUtils.isNotEmpty(last), "date_format (a.dueDate,'%Y-%m-%d') <= date_format('" + last + "','%Y-%m-%d')" + ); + qw.eq("1", "1"); + qw.orderBy(true, true, "a.useOrgName") + .orderBy(true, true, "a.vinNo") + .orderBy(true, true, "a.period") + .orderBy(true, true, "a.loanContractNo") + ; + List records = baseMapper.repaymentStatisticsExport(qw); + records.removeAll(Collections.singleton(null)); + int id = 1; + if (!records.isEmpty()) { + for (RepaymentStatisticsExportVo record : records) { + String sid = record.getSid(); + List updateTimes = baseMapper.selnewUpdateTimeByPlanSid(sid); + updateTimes.removeAll(Collections.singleton(null)); + if (!updateTimes.isEmpty()) { + String updateTime = updateTimes.get(0); + try { + Date updateTimeParse = sdf.parse(updateTime); + Date dueDateParse = sdf.parse(record.getDueDate()); + String format = sdf.format(new Date()); + Date parseNewDate = sdf.parse(format); + if (updateTimeParse.compareTo(dueDateParse) > 0) { + record.setNowOverdue("是"); + } else { + record.setNowOverdue("否"); + } + if (updateTimeParse.compareTo(parseNewDate) == 0) { + Calendar cal_1 = Calendar.getInstance();// 使用默认时区和语言环境获得一个日历 + cal_1.add(Calendar.DAY_OF_MONTH, -1); + record.setUpdateDate(sdf.format(cal_1.getTime())); + } else { + record.setUpdateDate(updateTime); + } + for (String time : updateTimes) { + Date parseTime = sdf.parse(time); + if (parseTime.compareTo(dueDateParse) > 0) { + record.setDueOverdue("否"); + } + } + if (StringUtils.isBlank(record.getDueOverdue())) { + record.setDueOverdue("是"); + } + } catch (ParseException e) { + e.printStackTrace(); + } + } else { + String format = sdf.format(new Date()); + try { + Date parseNewDate = sdf.parse(format); + Date dueDateParse = sdf.parse(record.getDueDate()); + if (parseNewDate.compareTo(dueDateParse) > 0) { + record.setNowOverdue("是"); + record.setDueOverdue("是"); + } else { + record.setNowOverdue("否"); + record.setDueOverdue("否"); + } + } catch (ParseException e) { + e.printStackTrace(); + } + } + record.setRankNo(id); + id = id + 1; + } + } + if (StringUtils.isNotBlank(pagerQuery.getNowOverdue())) { + records = records.stream().filter(r -> r.getNowOverdue().equals(pagerQuery.getNowOverdue())) + .collect(Collectors.toList()); + } + if (StringUtils.isNotBlank(pagerQuery.getDueOverdue())) { + records = records.stream().filter(r -> r.getDueOverdue().equals(pagerQuery.getDueOverdue())) + .collect(Collectors.toList()); + } + if (StringUtils.isNotBlank(pagerQuery.getUpdateStartDate()) || StringUtils.isNotBlank(pagerQuery.getUpdateEndDate())) { + records = records.stream().filter(new Predicate() { + @Override + public boolean test(RepaymentStatisticsExportVo v) { + if (StringUtils.isNotBlank(pagerQuery.getUpdateStartDate()) && StringUtils.isBlank(pagerQuery.getUpdateEndDate())) { + String updateStartDate = pagerQuery.getUpdateStartDate(); + try { + Date parseUpdateTime = sdf.parse(v.getUpdateDate()); + Date startTime = sdf.parse(updateStartDate); + if (parseUpdateTime.compareTo(startTime) >= 0) { + return true; + } + } catch (ParseException e) { + e.printStackTrace(); + } + } else if (StringUtils.isBlank(pagerQuery.getUpdateStartDate()) && StringUtils.isNotBlank(pagerQuery.getUpdateEndDate())) { + String updateEndDate = pagerQuery.getUpdateEndDate(); + try { + Date parseUpdateTime = sdf.parse(v.getUpdateDate()); + Date endTime = sdf.parse(updateEndDate); + if (parseUpdateTime.compareTo(endTime) <= 0) { + return true; + } + } catch (ParseException e) { + e.printStackTrace(); + } + } else { + String updateStartDate = pagerQuery.getUpdateStartDate(); + String updateEndDate = pagerQuery.getUpdateEndDate(); + try { + Date parseUpdateTime = sdf.parse(v.getUpdateDate()); + Date endTime = sdf.parse(updateEndDate); + Date startTime = sdf.parse(updateStartDate); + if (parseUpdateTime.compareTo(endTime) <= 0 && parseUpdateTime.compareTo(startTime) >= 0) { + return true; + } + } catch (ParseException e) { + e.printStackTrace(); + } + } + return false; + } + }).collect(Collectors.toList()); + } + return records; + } } diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentapply/LoanTransferPaymentApplyService.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentapply/LoanTransferPaymentApplyService.java index 519901172a..976afa6691 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentapply/LoanTransferPaymentApplyService.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentapply/LoanTransferPaymentApplyService.java @@ -843,6 +843,12 @@ public class LoanTransferPaymentApplyService extends MybatisBaseService files = new ArrayList<>(); private String taskId; private String procInsId; + private String cwfkxs; //财务罚款形式 + private String dkbz; //打款备注 private List records = new ArrayList<>(); }