Browse Source

还款模块代码

master
fanzongzhe 1 year ago
parent
commit
d886cfef03
  1. 7
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/voucher/GeneralVoucher.java
  2. 2
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/voucher/Voucher.java
  3. 8
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/FinKingDeeFeignRest.java
  4. 1
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/voucher/VoucherService.java
  5. 15
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/LoanRepaymentHistoryFeign.java
  6. 16
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/LoanRepaymentHistoryFeignFallback.java
  7. 71
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/RepaymentDetailsListQuery.java
  8. 60
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/RepaymentDetailsListVo.java
  9. 62
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/RepaymentStatisticsExportVo.java
  10. 56
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/RepaymentStatisticsQuery.java
  11. 61
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/RepaymentStatisticsVo.java
  12. 2
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/AppTransferPaymentDetailsVo.java
  13. 6
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/LoanTransferPaymentApply.java
  14. 8
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryMapper.java
  15. 180
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryMapper.xml
  16. 35
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryRest.java
  17. 506
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryService.java
  18. 6
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentapply/LoanTransferPaymentApplyService.java
  19. 2
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/transferpayment/TransferPaymentDetailsVo.java

7
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<GeneralVoucher.GeneralVoucherDetail> 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;

2
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("贷方金额")

8
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");
}
}

1
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);

15
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<PagerVo<TransferPaymentVo>> transferPaymentList(@RequestBody PagerQuery<TransferPaymentQuery> pq);
@ApiOperation("客户还款情况统计表")
@PostMapping("/repaymentStatistics")
public ResultBean<PagerVo<RepaymentStatisticsVo>> repaymentStatistics(@RequestBody PagerQuery<RepaymentStatisticsQuery> pq);
@ApiOperation("客户还款明细查询")
@PostMapping("/repaymentDetailsList")
public ResultBean<PagerVo<RepaymentDetailsListVo>> repaymentDetailsList(@RequestBody PagerQuery<RepaymentDetailsListQuery> pq);
@PostMapping("/exportExcel")
@ApiOperation(value = "导出当月应还记录")
@ResponseBody
public void exportExcel(@RequestBody RepaymentStatisticsQuery repaymentStatisticsQuery);
}

16
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<PagerVo<TransferPaymentVo>> transferPaymentList(PagerQuery<TransferPaymentQuery> pq) {
return null;
}
@Override
public ResultBean<PagerVo<RepaymentStatisticsVo>> repaymentStatistics(PagerQuery<RepaymentStatisticsQuery> pq) {
return null;
}
@Override
public ResultBean<PagerVo<RepaymentDetailsListVo>> repaymentDetailsList(PagerQuery<RepaymentDetailsListQuery> pq) {
return null;
}
@Override
public void exportExcel(RepaymentStatisticsQuery repaymentStatisticsQuery) {
}
}

71
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;
}

60
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;
}

62
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;
}

56
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;
}

61
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;
}

2
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<String> files = new ArrayList<>();
private String taskId;
private String procInsId;
private String cwfkxs; //财务罚款形式
private String dkbz; //打款备注
private List<AppTransferRecordVo> records = new ArrayList<>();
}

6
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;
}

8
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<LoanRepaymentHist
List<LoanRepaymentHistoryVo> selbuckleNewInitList(@Param(Constants.WRAPPER) QueryWrapper<LoanRepaymentHistory> qw);
IPage<TransferPaymentVo> transferPaymentList(IPage<LoanRepaymentHistory> page, @Param(Constants.WRAPPER) QueryWrapper<LoanRepaymentHistory> qw);
IPage<RepaymentStatisticsVo> repaymentStatistics(IPage<LoanRepaymentHistory> page, @Param(Constants.WRAPPER) QueryWrapper<LoanRepaymentHistory> qw);
List<String> selnewUpdateTimeByPlanSid(@Param("sid") String sid);
IPage<RepaymentDetailsListVo> repaymentDetailsList(IPage<LoanRepaymentHistory> page, @Param(Constants.WRAPPER) QueryWrapper<LoanRepaymentHistory> qw);
List<RepaymentStatisticsExportVo> repaymentStatisticsExport(@Param(Constants.WRAPPER) QueryWrapper<LoanRepaymentHistory> qw);
}

180
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryMapper.xml

@ -170,5 +170,185 @@
${ew.sqlSegment}
</where>
</select>
<select id="repaymentStatistics"
resultType="com.yxt.anrui.riskcenter.api.loanrepaymenthistory.RepaymentStatisticsVo">
SELECT DISTINCT
a.*
FROM
(
SELECT
pd.dueDate,
s.createBySid,
s.orgSidPath,
pd.sid,
pd.useOrgName,
pd.dept,
pd.bankName,
pd.staffName,
pd.loanContractNo,
pd.vinNo,
pd.bankContractNo,
pd.customer,
pd.borrowerName,
pd.period,
pd.paymentMoney,
pd.fund,
pd.dueMoney,
t.repaidMoney,
t.outstandingMoney,
v.bankBeInter,
CASE
WHEN t.repaidMoney = 0 THEN
'01'
WHEN t.repaidMoney &gt; 0
AND t.repaidMoney &lt; pd.dueMoney THEN '02' WHEN t.repaidMoney &gt; 0
AND t.repaidMoney &gt;= pd.dueMoney THEN
'03'
END AS returnState
FROM
loan_repayment_plan_details AS pd
LEFT JOIN anrui_buscenter.bus_sales_order AS s ON s.sid = pd.salesOrderSid
LEFT JOIN loan_be_padsincere_veh AS v ON v.saleVehSid = pd.busVinSid
LEFT JOIN (
SELECT
p.sid,
IFNULL((SELECT
SUM(
IFNULL( h.actualMoney, 0 ))
FROM
loan_repayment_history AS h
WHERE
h.planDetailSid = p.sid
AND h.updateState = '1'),0) as repaidMoney
,
IFNULL(
p.dueMoney - (
SELECT
SUM(
IFNULL( h.actualMoney, 0 ))
FROM
loan_repayment_history AS h
WHERE
h.planDetailSid = p.sid
AND h.updateState = '1'
),
0
) AS outstandingMoney
FROM
loan_repayment_plan_details AS p
) AS t ON pd.sid = t.sid
) AS a
<where>
${ew.sqlSegment}
</where>
</select>
<select id="selnewUpdateTimeByPlanSid" resultType="java.lang.String">
SELECT updateTime
FROM loan_repayment_history
WHERE planDetailSid = #{sid}
AND updateState = '1'
ORDER BY updateTime DESC
</select>
<select id="repaymentDetailsList"
resultType="com.yxt.anrui.riskcenter.api.loanrepaymenthistory.RepaymentDetailsListVo">
SELECT
p.useOrgName,
p.dept,
p.staffName,
p.loanContractNo,
p.vinNo,
p.bankName,
p.bankContractNo,
p.customer,
p.borrowerName,
p.period,
p.dueDate,
p.dueMoney,
h.actualDate,
h.actualMoney,
h.returnWay,
h.dataTime,
h.updateTime,
h.updateState,
h.buckle,
h.closingDate
FROM loan_repayment_history as h
LEFT JOIN loan_repayment_plan_details as p ON h.planDetailSid = p.sid
<where>
${ew.sqlSegment}
</where>
</select>
<select id="repaymentStatisticsExport"
resultType="com.yxt.anrui.riskcenter.api.loanrepaymenthistory.RepaymentStatisticsExportVo">
SELECT DISTINCT
a.*
FROM
(
SELECT
pd.dueDate,
s.createBySid,
s.orgSidPath,
pd.sid,
pd.useOrgName,
pd.dept,
pd.staffName,
pd.loanContractNo,
pd.vinNo,
pd.bankName,
pd.bankContractNo,
pd.customer,
pd.borrowerName,
pd.period,
pd.paymentMoney,
pd.fund,
pd.dueMoney,
t.repaidMoney,
t.outstandingMoney,
v.bankBeInter,
CASE
WHEN t.repaidMoney = 0 THEN
'未还'
WHEN t.repaidMoney &gt; 0
AND t.repaidMoney &lt; pd.dueMoney THEN '部分还款' WHEN t.repaidMoney &gt; 0
AND t.repaidMoney &gt;= pd.dueMoney THEN
'已还款'
END AS returnState
FROM
loan_repayment_plan_details AS pd
LEFT JOIN anrui_buscenter.bus_sales_order AS s ON s.sid = pd.salesOrderSid
LEFT JOIN loan_be_padsincere_veh AS v ON v.saleVehSid = pd.busVinSid
LEFT JOIN (
SELECT
p.sid,
IFNULL((SELECT
SUM(
IFNULL( h.actualMoney, 0 ))
FROM
loan_repayment_history AS h
WHERE
h.planDetailSid = p.sid
AND h.updateState = '1'),0) as repaidMoney
,
IFNULL(
p.dueMoney - (
SELECT
SUM(
IFNULL( h.actualMoney, 0 ))
FROM
loan_repayment_history AS h
WHERE
h.planDetailSid = p.sid
AND h.updateState = '1'
),
0
) AS outstandingMoney
FROM
loan_repayment_plan_details AS p
) AS t ON pd.sid = t.sid
) AS a
<where>
${ew.sqlSegment}
</where>
</select>
</mapper>

35
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<TransferPaymentVo> pv = loanRepaymentHistoryService.transferPaymentList(pq);
return rb.success().setData(pv);
}
@Override
public ResultBean<PagerVo<RepaymentStatisticsVo>> repaymentStatistics(PagerQuery<RepaymentStatisticsQuery> pq) {
ResultBean<PagerVo<RepaymentStatisticsVo>> rb = ResultBean.fireFail();
PagerVo<RepaymentStatisticsVo> pv = loanRepaymentHistoryService.repaymentStatistics(pq);
return rb.success().setData(pv);
}
@Override
public ResultBean<PagerVo<RepaymentDetailsListVo>> repaymentDetailsList(PagerQuery<RepaymentDetailsListQuery> pq) {
ResultBean<PagerVo<RepaymentDetailsListVo>> rb = ResultBean.fireFail();
PagerVo<RepaymentDetailsListVo> pv = loanRepaymentHistoryService.repaymentDetailsList(pq);
return rb.success().setData(pv);
}
@Override
public void exportExcel(RepaymentStatisticsQuery repaymentStatisticsQuery) {
//得到所有要导出的数据
List<RepaymentStatisticsExportVo> 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);
}
}

506
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<LoanRepaymen
PagerVo<TransferPaymentVo> p = PagerUtil.pageToVo(pagging, null);
return p;
}
public PagerVo<RepaymentStatisticsVo> repaymentStatistics(PagerQuery<RepaymentStatisticsQuery> pq) {
IPage<LoanRepaymentHistory> page = PagerUtil.queryToPage(pq);
RepaymentStatisticsQuery pagerQuery = pq.getParams();
QueryWrapper<LoanRepaymentHistory> 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<String> 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<RepaymentStatisticsVo> p = new PagerVo<>();
return p;
}
} else {
PagerVo<RepaymentStatisticsVo> 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<RepaymentStatisticsVo> pagging = baseMapper.repaymentStatistics(page, qw);
List<RepaymentStatisticsVo> records = pagging.getRecords();
records.removeAll(Collections.singleton(null));
if (!records.isEmpty()) {
for (RepaymentStatisticsVo record : records) {
String sid = record.getSid();
List<String> 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<RepaymentStatisticsVo>() {
@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<RepaymentStatisticsVo> p = PagerUtil.pageToVo(pagging, null);
return p;
}
public PagerVo<RepaymentDetailsListVo> repaymentDetailsList(PagerQuery<RepaymentDetailsListQuery> pq) {
IPage<LoanRepaymentHistory> page = PagerUtil.queryToPage(pq);
RepaymentDetailsListQuery pagerQuery = pq.getParams();
QueryWrapper<LoanRepaymentHistory> 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<String> 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<RepaymentDetailsListVo> p = new PagerVo<>();
return p;
}
} else {
PagerVo<RepaymentDetailsListVo> 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<RepaymentDetailsListVo> pagging = baseMapper.repaymentDetailsList(page, qw);
PagerVo<RepaymentDetailsListVo> p = PagerUtil.pageToVo(pagging, null);
return p;
}
public List<RepaymentStatisticsExportVo> exportExcel(RepaymentStatisticsQuery pagerQuery) {
QueryWrapper<LoanRepaymentHistory> 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<String> 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<RepaymentStatisticsExportVo> p = new ArrayList<>();
// return p;
// }
// } else {
// List<RepaymentStatisticsExportVo> 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<String> 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<RepaymentStatisticsExportVo> records = baseMapper.repaymentStatisticsExport(qw);
records.removeAll(Collections.singleton(null));
int id = 1;
if (!records.isEmpty()) {
for (RepaymentStatisticsExportVo record : records) {
String sid = record.getSid();
List<String> 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<RepaymentStatisticsExportVo>() {
@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;
}
}

6
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<LoanTran
if (StringUtils.isNotBlank(apply.getProcInstId())) {
vo.setProcInsId(apply.getProcInstId());
}
if (StringUtils.isNotBlank(apply.getPayForm())) {
vo.setCwfkxs(apply.getPayForm());
}
if (StringUtils.isNotBlank(apply.getPayRemarks())) {
vo.setDkbz(apply.getPayRemarks());
}
if (StringUtils.isNotBlank(apply.getTaskId())) {
vo.setTaskId(apply.getTaskId());
}

2
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/transferpayment/TransferPaymentDetailsVo.java

@ -20,5 +20,7 @@ public class TransferPaymentDetailsVo implements Vo {
private List<String> files = new ArrayList<>();
private String taskId;
private String procInsId;
private String cwfkxs; //财务罚款形式
private String dkbz; //打款备注
private List<PaymentRecordVo> records = new ArrayList<>();
}

Loading…
Cancel
Save