Browse Source

Merge remote-tracking branch 'origin/master'

master
God 1 year ago
parent
commit
6f240fb7bc
  1. 2
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/common/enums/BillTypeEnum.java
  2. 3
      anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorder/SolutionsDetailsssVo.java
  3. 16
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorder/BusSalesOrderService.java
  4. 28
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorderloancontract/BusSalesOrderLoancontractService.java
  5. 4
      anrui-buscenter/anrui-buscenter-ui/src/components/publicPage/financialscheme.vue
  6. 40
      anrui-buscenter/anrui-buscenter-ui/src/components/publicPage/financialschemeEdit.vue
  7. 39
      anrui-buscenter/anrui-buscenter-ui/src/components/publicPage/financialschemeInfo.vue
  8. 4
      anrui-buscenter/anrui-buscenter-ui/src/views/workflow/publicPage/financialscheme.vue
  9. 39
      anrui-buscenter/anrui-buscenter-ui/src/views/workflow/publicPage/financialschemeEdit.vue
  10. 40
      anrui-buscenter/anrui-buscenter-ui/src/views/workflow/publicPage/financialschemeInfo.vue
  11. 11
      anrui-buscenter/anrui-finmanage-ui/src/api/anruifinmanagement/paymentConfirmation.js
  12. 38
      anrui-buscenter/anrui-finmanage-ui/src/components/publicPage/financialschemeInfo.vue
  13. 99
      anrui-buscenter/anrui-finmanage-ui/src/views/anruifinmanagement/paymentConfirmation/cashierConfirmation.vue
  14. 38
      anrui-buscenter/anrui-finmanage-ui/src/views/workFlow/publicPage/financialschemeInfo.vue
  15. 5
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincollectionconfirmation/FinCollectionConfirmationFeign.java
  16. 5
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincollectionconfirmation/FinCollectionConfirmationFeignFallback.java
  17. 32
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincollectionconfirmation/rsk/FinRskPdfVehVo.java
  18. 5
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincollectionconfirmation/FinCollectionConfirmationRest.java
  19. 113
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincollectionconfirmation/FinCollectionConfirmationService.java
  20. 2126
      anrui-fin/anrui-fin-biz/src/main/resources/ftl/rskjiguang.ftl
  21. 3056
      anrui-fin/anrui-fin-biz/src/main/resources/ftl/rskzhenshi.ftl
  22. 7
      anrui-riskcenter-ui/src/api/advancerequest/advancerequest.js
  23. 7
      anrui-riskcenter-ui/src/api/agentbusiness/agentbusiness.js
  24. 7
      anrui-riskcenter-ui/src/api/deduct/deduct.js
  25. 7
      anrui-riskcenter-ui/src/api/monthlyallowance/monthlyallowance.js
  26. 7
      anrui-riskcenter-ui/src/api/overduereconciliationfinancing/overduereconciliationfinancing.js
  27. 9
      anrui-riskcenter-ui/src/api/repaymentschedule/repaymentschedule.js
  28. 4
      anrui-riskcenter-ui/src/components/publicPage/financialscheme.vue
  29. 40
      anrui-riskcenter-ui/src/components/publicPage/financialschemeEdit.vue
  30. 38
      anrui-riskcenter-ui/src/components/publicPage/financialschemeInfo.vue
  31. 28
      anrui-riskcenter-ui/src/views/advancerequest/advancerequestInfo.vue
  32. 28
      anrui-riskcenter-ui/src/views/agentbusiness/agentbusinessInfo.vue
  33. 28
      anrui-riskcenter-ui/src/views/deduct/deductInfo.vue
  34. 28
      anrui-riskcenter-ui/src/views/monthlyallowance/monthlyallowanceInfo.vue
  35. 28
      anrui-riskcenter-ui/src/views/overduereconciliationfinancing/overduereconciliationfinancingInfo.vue
  36. 41
      anrui-riskcenter-ui/src/views/repaymentschedule/repaymentschedule.vue
  37. 4
      anrui-riskcenter-ui/src/views/workFlow/publicPage/financialscheme.vue
  38. 40
      anrui-riskcenter-ui/src/views/workFlow/publicPage/financialschemeEdit.vue
  39. 38
      anrui-riskcenter-ui/src/views/workFlow/publicPage/financialschemeInfo.vue
  40. 4
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbepadsincereapply/LoanBePadsincereApplyFeign.java
  41. 5
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbepadsincereapply/LoanBePadsincereApplyFeignFallback.java
  42. 5
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleApplyFeign.java
  43. 5
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleApplyFeignFallback.java
  44. 5
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyFallback.java
  45. 4
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyFeign.java
  46. 20
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanmonthlyaccrualapply/MonthlyAccrualSourceLCVo.java
  47. 2
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanoverduebank/LoanOverdueBank.java
  48. 2
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanoverduefin/LoanOverdueFin.java
  49. 4
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanoverduefin/LoanOverdueFinFeign.java
  50. 3
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutions/SolutionDetailsDto.java
  51. 3
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutions/app/SolutionsDetailsVo.java
  52. 3
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutions/app/SolutionssDto.java
  53. 3
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutions/app/SolutionssVo.java
  54. 2
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutions/calculate/CalculateQuery.java
  55. 3
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutions/calculate/CalculateVo.java
  56. 3
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutionsdetail/LoanSolutionsDetail.java
  57. 4
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/LoanTransferPaymentApplyFeign.java
  58. 5
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/LoanTransferPaymentApplyFeignFallback.java
  59. 1
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/LoanTransferPaymentRecordVo.java
  60. 5
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbepadsincereapply/LoanBePadsincereApplyRest.java
  61. 191
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbepadsincereapply/LoanBePadsincereApplyService.java
  62. 5
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapply/LoanBuckleApplyRest.java
  63. 176
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapply/LoanBuckleApplyService.java
  64. 5
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyRest.java
  65. 178
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyService.java
  66. 2
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanoverduebank/LoanOverdueBankMapper.java
  67. 8
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanoverduebank/LoanOverdueBankMapper.xml
  68. 26
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanoverduebank/LoanOverdueBankService.java
  69. 2
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanoverduefin/LoanOverdueFinMapper.java
  70. 8
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanoverduefin/LoanOverdueFinMapper.xml
  71. 5
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanoverduefin/LoanOverdueFinRest.java
  72. 195
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanoverduefin/LoanOverdueFinService.java
  73. 4
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryService.java
  74. 2
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentplandetails/LoanRepaymentPlanDetailsMapper.java
  75. 4
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentplandetails/LoanRepaymentPlanDetailsMapper.xml
  76. 4
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentplandetails/LoanRepaymentPlanDetailsService.java
  77. 2
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentschedule/LoanRepaymentScheduleService.java
  78. 103
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansolutions/LoanSolutionsService.java
  79. 3
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentapply/LoanTransferPaymentApplyMapper.xml
  80. 5
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentapply/LoanTransferPaymentApplyRest.java
  81. 195
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentapply/LoanTransferPaymentApplyService.java
  82. 2831
      anrui-riskcenter/anrui-riskcenter-biz/src/main/resources/ftl/vouchers/monthApply2.ftl
  83. 2527
      anrui-riskcenter/anrui-riskcenter-biz/src/main/resources/ftl/vouchers/monthBuckle.ftl
  84. 3455
      anrui-riskcenter/anrui-riskcenter-biz/src/main/resources/ftl/vouchers/monthapply.ftl
  85. 2543
      anrui-riskcenter/anrui-riskcenter-biz/src/main/resources/ftl/vouchers/overDue.ftl
  86. 3317
      anrui-riskcenter/anrui-riskcenter-biz/src/main/resources/ftl/vouchers/padsincere.ftl
  87. 3127
      anrui-riskcenter/anrui-riskcenter-biz/src/main/resources/ftl/vouchers/transferPay.ftl
  88. 3
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/solutions/AppSolutionVo.java
  89. 3
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/solutions/AppSolutionsDetailsVo.java
  90. 3
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/solutions/AppSolutionssDto.java
  91. 3
      工作内容需要的文档/单据模板/财务凭证打印模板/代付审批/transferPay.ftl
  92. 48
      工作内容需要的文档/单据模板/财务凭证打印模板/代付审批/代收代付.docx
  93. 2523
      工作内容需要的文档/单据模板/财务凭证打印模板/划扣/monthBuckle.ftl
  94. 37
      工作内容需要的文档/单据模板/财务凭证打印模板/划扣/月还划扣.docx
  95. 3455
      工作内容需要的文档/单据模板/财务凭证打印模板/月还计提/monthapply.ftl
  96. 38
      工作内容需要的文档/单据模板/财务凭证打印模板/月还计提/月还计提.docx
  97. 3958
      工作内容需要的文档/单据模板/财务凭证打印模板/还款计划/repayment1.ftl
  98. 6512
      工作内容需要的文档/单据模板/财务凭证打印模板/还款计划/repayment2.ftl
  99. 9047
      工作内容需要的文档/单据模板/财务凭证打印模板/还款计划/repayment3.ftl
  100. 78
      工作内容需要的文档/单据模板/财务凭证打印模板/还款计划/还款计划1.docx

2
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/common/enums/BillTypeEnum.java

@ -39,6 +39,8 @@ public enum BillTypeEnum {
DSDFSQ("DSDFSQ", "代收代付申请单据编号"),
YHJT("YHJT", "月还计提单据编号"),
FKCEQRSQ("FKCEQRSQ", "放款差额确认申请"),
YQZF("YQZF", "逾期对账申请资方"),
YQCW("YQCW", "逾期对账申请财务"),
AJBH("AJBH", "案件进程编号");

3
anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorder/SolutionsDetailsssVo.java

@ -175,4 +175,7 @@ public class SolutionsDetailsssVo {
private String bondTypeKey;
@ApiModelProperty("抵顶配件项")
private String offsetAccessories;
}

16
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorder/BusSalesOrderService.java

@ -1876,7 +1876,7 @@ public class BusSalesOrderService extends MybatisBaseService<BusSalesOrderMapper
} else {
vo.setMain(true);
}
}else{
} else {
vo.setMain(true);
}
}
@ -3284,6 +3284,20 @@ public class BusSalesOrderService extends MybatisBaseService<BusSalesOrderMapper
if (new BigDecimal(solutionsDetailsVo.getRealTotal()).compareTo(busSalesOrderDeposit.getDeposit()) < 0) {
return rb.setMsg("金融方案中实收金额小于单台订金");
}
BigDecimal AmountAll = BigDecimal.ZERO;
if (StringUtils.isNotBlank(solutionsDetailsVo.getMainVehicleAmount())) {
//主车发票价
AmountAll = AmountAll.add(new BigDecimal(solutionsDetailsVo.getMainVehicleAmount()));
}
if (solutionsDetailsVo.isAccessoriesAmountCb()) {//包含配件
if (StringUtils.isNotBlank(solutionsDetailsVo.getAccessoriesAmount())) {
AmountAll = AmountAll.add(new BigDecimal(solutionsDetailsVo.getAccessoriesAmount()));
}
}
//判断成交价与主车发票价和配件之和
if (AmountAll.compareTo(new BigDecimal(busSalesOrderPriceDetailsVo.getSingleFinalPrice())) < 0) {
return rb.setMsg("主车发票价与配件之和不能小于订单成交价");
}
} else {
if (StringUtils.isNotBlank(solutionsDetailsVo.getTypeKey())) {
if (!"02".equals(solutionsDetailsVo.getTypeKey())) {

28
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorderloancontract/BusSalesOrderLoancontractService.java

@ -332,7 +332,12 @@ public class BusSalesOrderLoancontractService extends MybatisBaseService<BusSale
//根据销售订单的贷款人sid查询车辆表中的数据
List<BusSalesOrderVehicle> busSalesOrderVehicleList = busSalesOrderVehicleService.selectByBorrowSid2(borrowSid, saleOrderSid);
//这是生成业务系统融资放款应收的逻辑:
// 融资放款=融资项目总额-融资首付-[贷款保证金]-[厂家贴息],根据选择的产品政策来判断,若贷款保证金为固定的,需要减去,若为敞口的,不需要减;差额放款需要减厂家贴息,全额放款不需要。差额放款的厂家贴息金额存入“其他应收”字段中,
//生成业务系统融资放款
//应收由原来的融资项目总额-融资首付-[固定贷款保证金]-[厂家贴
//息]-[其他融厂家贴息]调整为融资项目总额-融资首付。
//差额放款的
//主产品实际贴息金额+其他融实际贴息金额+固定类型贷款保证金+意
//外险之和存入业务系统融资放款的其他应收字段中。
//计算融资放款的金额以及厂家贴息金额
ResultBean<PushVo> resultBean = loanSolutionsFeign.selectMoney(saleOrderSid);
if (resultBean.getData() != null) {
@ -457,7 +462,12 @@ public class BusSalesOrderLoancontractService extends MybatisBaseService<BusSale
SysOrganizationVo sysOrganizationVo2 = sysOrganizationFeign.fetchBySid(salesOrder.getOrgSid()).getData();
SolutionsDetailsVo solutions = loanSolutionsFeign.selectDetails(saleOrderSid).getData();
//这是生成业务系统融资放款应收的逻辑:
// 融资放款=融资项目总额-融资首付-[贷款保证金]-[厂家贴息],根据选择的产品政策来判断,若贷款保证金为固定的,需要减去,若为敞口的,不需要减;差额放款需要减厂家贴息,全额放款不需要。差额放款的厂家贴息金额存入“其他应收”字段中,
//生成业务系统融资放款
//应收由原来的融资项目总额-融资首付-[固定贷款保证金]-[厂家贴
//息]-[其他融厂家贴息]调整为融资项目总额-融资首付。
//差额放款的
//主产品实际贴息金额+其他融实际贴息金额+固定类型贷款保证金+意
//外险之和存入业务系统融资放款的其他应收字段中。
//计算融资放款的金额以及厂家贴息金额
ResultBean<PushVo> resultBean = loanSolutionsFeign.selectMoney(saleOrderSid);
if (null != resultBean.getData()) {
@ -678,7 +688,12 @@ public class BusSalesOrderLoancontractService extends MybatisBaseService<BusSale
SysOrganizationVo sysOrganizationVo2 = sysOrganizationFeign.fetchBySid(salesOrder.getOrgSid()).getData();
SolutionsDetailsVo solutions = loanSolutionsFeign.selectDetails(saleOrderSid).getData();
//这是生成业务系统融资放款应收的逻辑:
// 融资放款=融资项目总额-融资首付-[贷款保证金]-[厂家贴息],根据选择的产品政策来判断,若贷款保证金为固定的,需要减去,若为敞口的,不需要减;差额放款需要减厂家贴息,全额放款不需要。差额放款的厂家贴息金额存入“其他应收”字段中,
//生成业务系统融资放款
//应收由原来的融资项目总额-融资首付-[固定贷款保证金]-[厂家贴
//息]-[其他融厂家贴息]调整为融资项目总额-融资首付。
//差额放款的
//主产品实际贴息金额+其他融实际贴息金额+固定类型贷款保证金+意
//外险之和存入业务系统融资放款的其他应收字段中。
//计算融资放款的金额以及厂家贴息金额
ResultBean<PushVo> resultBean = loanSolutionsFeign.selectMoney(saleOrderSid);
if (null != resultBean.getData()) {
@ -945,7 +960,12 @@ public class BusSalesOrderLoancontractService extends MybatisBaseService<BusSale
SysOrganizationVo sysOrganizationVo2 = sysOrganizationFeign.fetchBySid(salesOrder.getOrgSid()).getData();
SolutionsDetailsVo solutions = loanSolutionsFeign.selectDetails(orderSid).getData();
//这是生成业务系统融资放款应收的逻辑:
// 融资放款=融资项目总额-融资首付-[贷款保证金]-[厂家贴息],根据选择的产品政策来判断,若贷款保证金为固定的,需要减去,若为敞口的,不需要减;差额放款需要减厂家贴息,全额放款不需要。差额放款的厂家贴息金额存入“其他应收”字段中,
//生成业务系统融资放款
//应收由原来的融资项目总额-融资首付-[固定贷款保证金]-[厂家贴
//息]-[其他融厂家贴息]调整为融资项目总额-融资首付。
//差额放款的
//主产品实际贴息金额+其他融实际贴息金额+固定类型贷款保证金+意
//外险之和存入业务系统融资放款的其他应收字段中。
//计算融资放款的金额以及厂家贴息金额
ResultBean<PushVo> resultBean = loanSolutionsFeign.selectMoney(orderSid);
if (null != resultBean.getData()) {

4
anrui-buscenter/anrui-buscenter-ui/src/components/publicPage/financialscheme.vue

@ -370,6 +370,7 @@ export default {
mainVehicleAmount: '',
monthlyRepay: '',
nominalPrice: '',
offsetAccessories: '',
offsetPremium: '',
offsetPurchasetax: '',
offsetTotal: '',
@ -517,6 +518,7 @@ export default {
this.finance.mainVehicleAmount = ''
this.finance.monthlyRepay = ''
this.finance.nominalPrice = ''
this.finance.offsetAccessories = ''
this.finance.offsetPremium = ''
this.finance.offsetPurchasetax = ''
this.finance.offsetTotal = ''
@ -897,6 +899,7 @@ export default {
this.finance.downPayAmounts = resp.data.downPayAmounts
this.finance.proxyTotal = resp.data.proxyTotal
this.finance.receivableTotal = resp.data.receivableTotal
this.finance.offsetAccessories = resp.data.offsetAccessories
this.finance.offsetTotal = resp.data.offsetTotal
this.finance.realTotal = resp.data.realTotal
this.finance.vehTotalPrice = resp.data.vehTotalPrice
@ -951,6 +954,7 @@ export default {
mainVehicleAmount: '',
monthlyRepay: '',
nominalPrice: '',
offsetAccessories: '',
offsetPremium: '',
offsetPurchasetax: '',
offsetTotal: '',

40
anrui-buscenter/anrui-buscenter-ui/src/components/publicPage/financialschemeEdit.vue

@ -220,18 +220,22 @@
<el-form-item><span class="addinputInfo">{{ formobj.dealWay }}</span></el-form-item>
</el-col>
</el-row>
<el-row v-if="formobj.dealWayKey == '01' && formobj.isPack == '0' ">
<el-row>
<el-col :span="6">
<div class="span-sty">代收费用合计</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyTotal }}</span></el-form-item>
</el-col>
<el-col :span="9">
<div class="span-sty">代收首年保险费</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyPremium }}</span></el-form-item>
<div v-if="formobj.proxyTotal != '0'">
<div class="span-sty">代收首年保险费</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyPremium }}</span></el-form-item>
</div>
</el-col>
<el-col :span="9">
<div class="span-sty">代收购置税</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyPurchasetax }}</span></el-form-item>
<div v-if="formobj.proxyTotal != '0'">
<div class="span-sty">代收购置税</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyPurchasetax }}</span></el-form-item>
</div>
</el-col>
</el-row>
<el-row>
@ -240,18 +244,28 @@
<el-form-item><span class="addinputInfo">{{ formobj.receivableTotal }}</span></el-form-item>
</el-col>
</el-row>
<el-row v-if="formobj.dealWayKey == '02' && formobj.isPack == '1'">
<el-row>
<el-col :span="6">
<div class="span-sty">抵顶费用合计</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetTotal }}</span></el-form-item>
</el-col>
<el-col :span="9">
<div class="span-sty">抵顶首年保险费</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetPremium }}</span></el-form-item>
<el-col :span="6">
<div v-if="formobj.offsetTotal != '0'">
<div class="span-sty">抵顶首年保险费</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetPremium }}</span></el-form-item>
</div>
</el-col>
<el-col :span="9">
<div class="span-sty">抵顶购置税</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetPurchasetax }}</span></el-form-item>
<el-col :span="6">
<div v-if="formobj.offsetTotal != '0'">
<div class="span-sty">抵顶购置税</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetPurchasetax }}</span></el-form-item>
</div>
</el-col>
<el-col :span="6">
<div v-if="formobj.offsetTotal != '0'">
<div class="span-sty">配件抵顶</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetAccessories }}</span></el-form-item>
</div>
</el-col>
</el-row>
<el-row>
@ -362,6 +376,7 @@ export default {
mainVehicleAmount: '',
monthlyRepay: '',
nominalPrice: '',
offsetAccessories: '',
offsetPremium: '',
offsetPurchasetax: '',
offsetTotal: '',
@ -470,6 +485,7 @@ export default {
mainVehicleAmount: '',
monthlyRepay: '',
nominalPrice: '',
offsetAccessories: '',
offsetPremium: '',
offsetPurchasetax: '',
offsetTotal: '',

39
anrui-buscenter/anrui-buscenter-ui/src/components/publicPage/financialschemeInfo.vue

@ -219,18 +219,22 @@
<el-form-item><span class="addinputInfo">{{ formobj.dealWay }}</span></el-form-item>
</el-col>
</el-row>
<el-row v-if="formobj.dealWayKey == '01' && formobj.isPack == '0' ">
<el-row>
<el-col :span="6">
<div class="span-sty">代收费用合计</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyTotal }}</span></el-form-item>
</el-col>
<el-col :span="9">
<div class="span-sty">代收首年保险费</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyPremium }}</span></el-form-item>
<div v-if="formobj.proxyTotal != '0'">
<div class="span-sty">代收首年保险费</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyPremium }}</span></el-form-item>
</div>
</el-col>
<el-col :span="9">
<div class="span-sty">代收购置税</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyPurchasetax }}</span></el-form-item>
<div v-if="formobj.proxyTotal != '0'">
<div class="span-sty">代收购置税</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyPurchasetax }}</span></el-form-item>
</div>
</el-col>
</el-row>
<el-row>
@ -239,18 +243,28 @@
<el-form-item><span class="addinputInfo">{{ formobj.receivableTotal }}</span></el-form-item>
</el-col>
</el-row>
<el-row v-if="formobj.dealWayKey == '02' && formobj.isPack == '1'">
<el-row>
<el-col :span="6">
<div class="span-sty">抵顶费用合计</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetTotal }}</span></el-form-item>
</el-col>
<el-col :span="9">
<div class="span-sty">抵顶首年保险费</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetPremium }}</span></el-form-item>
<el-col :span="6">
<div v-if="formobj.offsetTotal != '0'">
<div class="span-sty">抵顶首年保险费</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetPremium }}</span></el-form-item>
</div>
</el-col>
<el-col :span="9">
<div class="span-sty">抵顶购置税</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetPurchasetax }}</span></el-form-item>
<el-col :span="6">
<div v-if="formobj.offsetTotal != '0'">
<div class="span-sty">抵顶购置税</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetPurchasetax }}</span></el-form-item>
</div>
</el-col>
<el-col :span="6">
<div v-if="formobj.offsetTotal != '0'">
<div class="span-sty">配件抵顶</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetAccessories }}</span></el-form-item>
</div>
</el-col>
</el-row>
<el-row>
@ -439,6 +453,7 @@ export default {
mainVehicleAmount: '',
monthlyRepay: '',
nominalPrice: '',
offsetAccessories: '',
offsetPremium: '',
offsetPurchasetax: '',
offsetTotal: '',

4
anrui-buscenter/anrui-buscenter-ui/src/views/workflow/publicPage/financialscheme.vue

@ -369,6 +369,7 @@ export default {
mainVehicleAmount: '',
monthlyRepay: '',
nominalPrice: '',
offsetAccessories: '',
offsetPremium: '',
offsetPurchasetax: '',
offsetTotal: '',
@ -503,6 +504,7 @@ export default {
mainVehicleAmount: '',
monthlyRepay: '',
nominalPrice: '',
offsetAccessories: '',
offsetPremium: '',
offsetPurchasetax: '',
offsetTotal: '',
@ -824,6 +826,7 @@ export default {
this.finance.downPayAmounts = resp.data.downPayAmounts
this.finance.proxyTotal = resp.data.proxyTotal
this.finance.receivableTotal = resp.data.receivableTotal
this.finance.offsetAccessories = resp.data.offsetAccessories
this.finance.offsetTotal = resp.data.offsetTotal
this.finance.realTotal = resp.data.realTotal
this.finance.vehTotalPrice = resp.data.vehTotalPrice
@ -878,6 +881,7 @@ export default {
mainVehicleAmount: '',
monthlyRepay: '',
nominalPrice: '',
offsetAccessories: '',
offsetPremium: '',
offsetPurchasetax: '',
offsetTotal: '',

39
anrui-buscenter/anrui-buscenter-ui/src/views/workflow/publicPage/financialschemeEdit.vue

@ -220,18 +220,22 @@
<el-form-item><span class="addinputInfo">{{ formobj.dealWay }}</span></el-form-item>
</el-col>
</el-row>
<el-row v-if="formobj.dealWayKey == '01' && formobj.isPack == '0' ">
<el-row>
<el-col :span="6">
<div class="span-sty">代收费用合计</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyTotal }}</span></el-form-item>
</el-col>
<el-col :span="9">
<div class="span-sty">代收首年保险费</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyPremium }}</span></el-form-item>
<div v-if="formobj.proxyTotal != '0'">
<div class="span-sty">代收首年保险费</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyPremium }}</span></el-form-item>
</div>
</el-col>
<el-col :span="9">
<div class="span-sty">代收购置税</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyPurchasetax }}</span></el-form-item>
<div v-if="formobj.proxyTotal != '0'">
<div class="span-sty">代收购置税</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyPurchasetax }}</span></el-form-item>
</div>
</el-col>
</el-row>
<el-row>
@ -240,18 +244,28 @@
<el-form-item><span class="addinputInfo">{{ formobj.receivableTotal }}</span></el-form-item>
</el-col>
</el-row>
<el-row v-if="formobj.dealWayKey == '02' && formobj.isPack == '1'">
<el-row>
<el-col :span="6">
<div class="span-sty">抵顶费用合计</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetTotal }}</span></el-form-item>
</el-col>
<el-col :span="9">
<div class="span-sty">抵顶首年保险费</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetPremium }}</span></el-form-item>
<el-col :span="6">
<div v-if="formobj.offsetTotal != '0'">
<div class="span-sty">抵顶首年保险费</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetPremium }}</span></el-form-item>
</div>
</el-col>
<el-col :span="9">
<div class="span-sty">抵顶购置税</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetPurchasetax }}</span></el-form-item>
<el-col :span="6">
<div v-if="formobj.offsetTotal != '0'">
<div class="span-sty">抵顶购置税</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetPurchasetax }}</span></el-form-item>
</div>
</el-col>
<el-col :span="6">
<div v-if="formobj.offsetTotal != '0'">
<div class="span-sty">配件抵顶</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetAccessories }}</span></el-form-item>
</div>
</el-col>
</el-row>
<el-row>
@ -362,6 +376,7 @@ export default {
mainVehicleAmount: '',
monthlyRepay: '',
nominalPrice: '',
offsetAccessories: '',
offsetPremium: '',
offsetPurchasetax: '',
offsetTotal: '',

40
anrui-buscenter/anrui-buscenter-ui/src/views/workflow/publicPage/financialschemeInfo.vue

@ -219,18 +219,22 @@
<el-form-item><span class="addinputInfo">{{ formobj.dealWay }}</span></el-form-item>
</el-col>
</el-row>
<el-row v-if="formobj.dealWayKey == '01' && formobj.isPack == '0' ">
<el-row>
<el-col :span="6">
<div class="span-sty">代收费用合计</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyTotal }}</span></el-form-item>
</el-col>
<el-col :span="9">
<div class="span-sty">代收首年保险费</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyPremium }}</span></el-form-item>
<div v-if="formobj.proxyTotal != '0'">
<div class="span-sty">代收首年保险费</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyPremium }}</span></el-form-item>
</div>
</el-col>
<el-col :span="9">
<div class="span-sty">代收购置税</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyPurchasetax }}</span></el-form-item>
<div v-if="formobj.proxyTotal != '0'">
<div class="span-sty">代收购置税</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyPurchasetax }}</span></el-form-item>
</div>
</el-col>
</el-row>
<el-row>
@ -239,18 +243,28 @@
<el-form-item><span class="addinputInfo">{{ formobj.receivableTotal }}</span></el-form-item>
</el-col>
</el-row>
<el-row v-if="formobj.dealWayKey == '02' && formobj.isPack == '1'">
<el-row>
<el-col :span="6">
<div class="span-sty">抵顶费用合计</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetTotal }}</span></el-form-item>
</el-col>
<el-col :span="9">
<div class="span-sty">抵顶首年保险费</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetPremium }}</span></el-form-item>
<el-col :span="6">
<div v-if="formobj.offsetTotal != '0'">
<div class="span-sty">抵顶首年保险费</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetPremium }}</span></el-form-item>
</div>
</el-col>
<el-col :span="9">
<div class="span-sty">抵顶购置税</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetPurchasetax }}</span></el-form-item>
<el-col :span="6">
<div v-if="formobj.offsetTotal != '0'">
<div class="span-sty">抵顶购置税</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetPurchasetax }}</span></el-form-item>
</div>
</el-col>
<el-col :span="6">
<div v-if="formobj.offsetTotal != '0'">
<div class="span-sty">配件抵顶</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetAccessories }}</span></el-form-item>
</div>
</el-col>
</el-row>
<el-row>
@ -354,6 +368,7 @@ export default {
mainVehicleAmount: '',
monthlyRepay: '',
nominalPrice: '',
offsetAccessories: '',
offsetPremium: '',
offsetPurchasetax: '',
offsetTotal: '',
@ -436,6 +451,7 @@ export default {
mainVehicleAmount: '',
monthlyRepay: '',
nominalPrice: '',
offsetAccessories: '',
offsetPremium: '',
offsetPurchasetax: '',
offsetTotal: '',

11
anrui-buscenter/anrui-finmanage-ui/src/api/anruifinmanagement/paymentConfirmation.js

@ -144,7 +144,7 @@ export function upload(data) {
})
}
// 代收款申请、收款款项确认、出纳款项确认--下载
// 代收款申请、收款款项确认、出纳款项确认--下载收款单
export function createPdf(data) {
return request({
url: '/fin/fincollectionconfirmation/createPdf',
@ -153,6 +153,15 @@ export function createPdf(data) {
})
}
// 出纳款项确认--下载金融收款单
export function createPdfRsk(data) {
return request({
url: '/fin/fincollectionconfirmation/createPdfRsk',
method: 'post',
params: data
})
}
// 客户账单明细--下载
export function createPdfByCustomer(data) {
return request({

38
anrui-buscenter/anrui-finmanage-ui/src/components/publicPage/financialschemeInfo.vue

@ -213,18 +213,22 @@
<el-form-item><span class="addinputInfo">{{ formobj.dealWay }}</span></el-form-item>
</el-col>
</el-row>
<el-row v-if="formobj.dealWayKey == '01' && formobj.isPack == '0' ">
<el-row>
<el-col :span="6">
<div class="span-sty">代收费用合计</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyTotal }}</span></el-form-item>
</el-col>
<el-col :span="9">
<div class="span-sty">代收首年保险费</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyPremium }}</span></el-form-item>
<div v-if="formobj.proxyTotal != '0'">
<div class="span-sty">代收首年保险费</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyPremium }}</span></el-form-item>
</div>
</el-col>
<el-col :span="9">
<div class="span-sty">代收购置税</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyPurchasetax }}</span></el-form-item>
<div v-if="formobj.proxyTotal != '0'">
<div class="span-sty">代收购置税</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyPurchasetax }}</span></el-form-item>
</div>
</el-col>
</el-row>
<el-row>
@ -233,18 +237,28 @@
<el-form-item><span class="addinputInfo">{{ formobj.receivableTotal }}</span></el-form-item>
</el-col>
</el-row>
<el-row v-if="formobj.dealWayKey == '02' && formobj.isPack == '1'">
<el-row>
<el-col :span="6">
<div class="span-sty">抵顶费用合计</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetTotal }}</span></el-form-item>
</el-col>
<el-col :span="9">
<div class="span-sty">抵顶首年保险费</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetPremium }}</span></el-form-item>
<el-col :span="6">
<div v-if="formobj.offsetTotal != '0'">
<div class="span-sty">抵顶首年保险费</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetPremium }}</span></el-form-item>
</div>
</el-col>
<el-col :span="9">
<div class="span-sty">抵顶购置税</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetPurchasetax }}</span></el-form-item>
<el-col :span="6">
<div v-if="formobj.offsetTotal != '0'">
<div class="span-sty">抵顶购置税</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetPurchasetax }}</span></el-form-item>
</div>
</el-col>
<el-col :span="6">
<div v-if="formobj.offsetTotal != '0'">
<div class="span-sty">配件抵顶</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetAccessories }}</span></el-form-item>
</div>
</el-col>
</el-row>
<el-row>

99
anrui-buscenter/anrui-finmanage-ui/src/views/anruifinmanagement/paymentConfirmation/cashierConfirmation.vue

@ -155,7 +155,7 @@
</template>
<script>
import { createPdf, listPage, ctskd } from '@/api/anruifinmanagement/paymentConfirmation.js'
import { createPdf, createPdfRsk, listPage, ctskd } from '@/api/anruifinmanagement/paymentConfirmation.js'
import Pagination from '@/components/pagination'
import pageye from '@/components/pagination/pageye'
import ButtonBar from '@/components/ButtonBar'
@ -179,6 +179,7 @@ export default {
visibleDisabled: false,
printSid: '',
print: '',
printSource: '',
btndisabled: false,
isSearchShow: false,
searchxianshitit: '隐藏查询条件',
@ -356,43 +357,81 @@ export default {
},
handleDownLoad(row) {
this.printSid = row.sid
this.printSource = row.source
this.print = ''
this.dialogVisible = true
},
handleConfirm() {
this.visibleDisabled = true
createPdf({ skdSid: this.printSid, printerType: this.print }).then((resp) => {
if (resp.success && resp.data.pdfPath !== '') {
var xhr = new XMLHttpRequest()
xhr.open('GET', process.env.VUE_APP_BASE_API + '/base/file/download?filePath=' + resp.data.pdfPath + '&outFileName=' + '收款单', true)
xhr.setRequestHeader('token', getStorage())
xhr.responseType = 'blob'
xhr.onload = function(e) {
//
var blob = this.response
var filename = '收款单.pdf'
var a = document.createElement('a')
// blob.type="application/octet-stream";
// url
var url = URL.createObjectURL(blob)
a.href = url
a.download = filename
a.click()
// URL
window.URL.revokeObjectURL(url)
if (this.printSource === '01') {
createPdf({ skdSid: this.printSid, printerType: this.print }).then((resp) => {
if (resp.success && resp.data.pdfPath !== '') {
var xhr = new XMLHttpRequest()
xhr.open('GET', process.env.VUE_APP_BASE_API + '/base/file/download?filePath=' + resp.data.pdfPath + '&outFileName=' + '收款单', true)
xhr.setRequestHeader('token', getStorage())
xhr.responseType = 'blob'
xhr.onload = function(e) {
//
var blob = this.response
var filename = '收款单.pdf'
var a = document.createElement('a')
// blob.type="application/octet-stream";
// url
var url = URL.createObjectURL(blob)
a.href = url
a.download = filename
a.click()
// URL
window.URL.revokeObjectURL(url)
}
//
xhr.send()
this.dialogVisible = false
this.printSid = ''
this.printSource = ''
this.visibleDisabled = false
this.getList()
} else {
this.visibleDisabled = false
}
//
xhr.send()
this.dialogVisible = false
this.printSid = ''
}).catch(() => {
this.visibleDisabled = false
this.getList()
} else {
})
} else if (this.printSource === '02') {
createPdfRsk({ skdSid: this.printSid, printerType: this.print }).then((resp) => {
if (resp.success && resp.data.pdfPath !== '') {
var xhr = new XMLHttpRequest()
xhr.open('GET', process.env.VUE_APP_BASE_API + '/base/file/download?filePath=' + resp.data.pdfPath + '&outFileName=' + '收款单', true)
xhr.setRequestHeader('token', getStorage())
xhr.responseType = 'blob'
xhr.onload = function(e) {
//
var blob = this.response
var filename = '收款单.pdf'
var a = document.createElement('a')
// blob.type="application/octet-stream";
// url
var url = URL.createObjectURL(blob)
a.href = url
a.download = filename
a.click()
// URL
window.URL.revokeObjectURL(url)
}
//
xhr.send()
this.dialogVisible = false
this.printSid = ''
this.printSource = ''
this.visibleDisabled = false
this.getList()
} else {
this.visibleDisabled = false
}
}).catch(() => {
this.visibleDisabled = false
}
}).catch(() => {
this.visibleDisabled = false
})
})
}
},
handLook(row) {
if (row.loan) {

38
anrui-buscenter/anrui-finmanage-ui/src/views/workFlow/publicPage/financialschemeInfo.vue

@ -213,18 +213,22 @@
<el-form-item><span class="addinputInfo">{{ formobj.dealWay }}</span></el-form-item>
</el-col>
</el-row>
<el-row v-if="formobj.dealWayKey == '01' && formobj.isPack == '0' ">
<el-row>
<el-col :span="6">
<div class="span-sty">代收费用合计</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyTotal }}</span></el-form-item>
</el-col>
<el-col :span="9">
<div class="span-sty">代收首年保险费</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyPremium }}</span></el-form-item>
<div v-if="formobj.proxyTotal != '0'">
<div class="span-sty">代收首年保险费</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyPremium }}</span></el-form-item>
</div>
</el-col>
<el-col :span="9">
<div class="span-sty">代收购置税</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyPurchasetax }}</span></el-form-item>
<div v-if="formobj.proxyTotal != '0'">
<div class="span-sty">代收购置税</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyPurchasetax }}</span></el-form-item>
</div>
</el-col>
</el-row>
<el-row>
@ -233,18 +237,28 @@
<el-form-item><span class="addinputInfo">{{ formobj.receivableTotal }}</span></el-form-item>
</el-col>
</el-row>
<el-row v-if="formobj.dealWayKey == '02' && formobj.isPack == '1'">
<el-row>
<el-col :span="6">
<div class="span-sty">抵顶费用合计</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetTotal }}</span></el-form-item>
</el-col>
<el-col :span="9">
<div class="span-sty">抵顶首年保险费</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetPremium }}</span></el-form-item>
<el-col :span="6">
<div v-if="formobj.offsetTotal != '0'">
<div class="span-sty">抵顶首年保险费</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetPremium }}</span></el-form-item>
</div>
</el-col>
<el-col :span="9">
<div class="span-sty">抵顶购置税</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetPurchasetax }}</span></el-form-item>
<el-col :span="6">
<div v-if="formobj.offsetTotal != '0'">
<div class="span-sty">抵顶购置税</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetPurchasetax }}</span></el-form-item>
</div>
</el-col>
<el-col :span="6">
<div v-if="formobj.offsetTotal != '0'">
<div class="span-sty">配件抵顶</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetAccessories }}</span></el-form-item>
</div>
</el-col>
</el-row>
<el-row>

5
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincollectionconfirmation/FinCollectionConfirmationFeign.java

@ -100,6 +100,11 @@ public interface FinCollectionConfirmationFeign {
@ResponseBody
ResultBean<PdfPath> createPdf(@RequestParam("skdSid") String skdSid, @RequestParam("printerType") String printerType);
@ApiOperation("生成金融收款单pdf")
@PostMapping("/createPdfRsk")
@ResponseBody
ResultBean<PdfPath> createPdfRsk(@RequestParam("skdSid") String skdSid, @RequestParam("printerType") String printerType);
@ApiOperation("重推收款单")
@PostMapping("/ctskd")
@ResponseBody

5
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincollectionconfirmation/FinCollectionConfirmationFeignFallback.java

@ -99,6 +99,11 @@ public class FinCollectionConfirmationFeignFallback implements FinCollectionConf
return null;
}
@Override
public ResultBean<PdfPath> createPdfRsk(String skdSid, String printerType) {
return null;
}
@Override
public ResultBean ctskd(String skdSid) {
return null;

32
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/fincollectionconfirmation/rsk/FinRskPdfVehVo.java

@ -0,0 +1,32 @@
package com.yxt.anrui.fin.api.fincollectionconfirmation.rsk;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author Fan
* @description
* @date 2024/4/12 16:14
*/
@Data
public class FinRskPdfVehVo {
@ApiModelProperty("序号")
private String id; // 序号
@ApiModelProperty("贷款人")
private String borrowerName; // 贷款人
@ApiModelProperty("资方")
private String bankName; // 资方
@ApiModelProperty("消贷合同号")
private String contractNo; // 消贷合同号
@ApiModelProperty("车架号")
private String vinNo; // 车架号
@ApiModelProperty("收款项目")
private String collPro; // 收款项目
@ApiModelProperty("收款金额")
private String collMoney; // 收款金额
@ApiModelProperty("收款账号")
private String collNum; // 收款账号
@ApiModelProperty("期数")
private String period; // 收款账号
}

5
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincollectionconfirmation/FinCollectionConfirmationRest.java

@ -122,6 +122,11 @@ public class FinCollectionConfirmationRest implements FinCollectionConfirmationF
return finCollectionConfirmationService.createPdf(skdSid, printerType);
}
@Override
public ResultBean<PdfPath> createPdfRsk(String skdSid, String printerType) {
return finCollectionConfirmationService.createPdfRsk(skdSid,printerType);
}
@Override
public ResultBean ctskd(String skdSid) {
return finCollectionConfirmationService.ctskd(skdSid);

113
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincollectionconfirmation/FinCollectionConfirmationService.java

@ -110,12 +110,10 @@ import com.yxt.anrui.riskcenter.api.loansolutions.LoanSolutions;
import com.yxt.anrui.riskcenter.api.loansolutions.LoanSolutionsFeign;
import com.yxt.anrui.riskcenter.api.loansolutionsdetail.LoanSolutionsDetail;
import com.yxt.anrui.riskcenter.api.loansolutionsotherpolicy.LoanSolutionsOtherpolicy;
import com.yxt.common.base.config.component.DocPdfComponent;
import com.yxt.common.base.config.component.FileUploadComponent;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.HanZiConverterPinYin;
import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.base.utils.TransformMoney;
import com.yxt.common.base.utils.WordUtils;
import com.yxt.common.base.utils.*;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
@ -127,6 +125,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.File;
import java.io.InputStream;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
@ -209,6 +209,9 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl
private FinPaymentrecordService finPaymentrecordService;
@Autowired
private LoanPushFundHistoryFeign loanPushFundHistoryFeign;
@Autowired
private DocPdfComponent docPdfComponent;
private QueryWrapper<FinCollectionConfirmation> createQueryWrapper(FinCollectionConfirmationQuery query) {
// todo: 这里根据具体业务调整查询条件
// 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName()));
@ -3180,6 +3183,102 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl
return rb.success().setData(pdfPath);
}
public ResultBean<PdfPath> createPdfRsk(String skdSid, String printerType) {
ResultBean rb = ResultBean.fireFail();
PdfPath pdfPath = new PdfPath();
//获取收款单信息
FinCollectionConfirmation finCollectionConfirmationDetailsVo = fetchBySid(skdSid);
//获取车辆入库单车辆信息查询
List<FinSelectedReceivablesDetailedVo> finSelectedReceivablesDetaileds = finSelectedReceivablesDetailedService.fetchByCillSid(finCollectionConfirmationDetailsVo.getSid());
Map<String, Object> dataMap = new HashMap();
dataMap.put("collDate", finCollectionConfirmationDetailsVo.getCollectionDate());
dataMap.put("payee", finCollectionConfirmationDetailsVo.getPayerName());
dataMap.put("billNo", finCollectionConfirmationDetailsVo.getBillNo());
dataMap.put("settleType", finCollectionConfirmationDetailsVo.getCollectionTypeValue());
dataMap.put("remarks", finCollectionConfirmationDetailsVo.getRemarks());
List<FinRskPdfVehVo> finCollectionConfirmationMaterials = new ArrayList<>();
int id = 0;
//循环获取车辆信息
for (FinSelectedReceivablesDetailedVo finSelectedReceivablesDetailedVo : finSelectedReceivablesDetaileds) {
String planSid = "";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
if (finSelectedReceivablesDetailedVo.getReceivablesName().equals("月还")) {
planSid = finSelectedReceivablesDetailedVo.getReceivablesSid();
} else {
FinUncollectedReceivablesDetailedJR jr = finUncollectedReceivablesDetailedJRService.fetchBySid(finSelectedReceivablesDetailedVo.getReceivablesSid());
if (jr != null) {
planSid = jr.getBusSid();
}
}
LoanRepaymentPlanDetails plan = loanRepaymentPlanDetailsFeign.fetchDetails(planSid).getData();
if (null != plan) {
FinRskPdfVehVo r = new FinRskPdfVehVo();
id = id + 1;
if (StringUtils.isNotBlank(plan.getVinNo())) {
r.setVinNo(plan.getVinNo());
}
r.setId(String.valueOf(id));
if (StringUtils.isNotBlank(plan.getBorrowerName())) {
r.setBorrowerName(plan.getBorrowerName());
}
if (StringUtils.isNotBlank(plan.getBankName())) {
r.setBankName(plan.getBankName());
}
if (StringUtils.isNotBlank(plan.getLoanContractNo())) {
r.setContractNo(plan.getLoanContractNo());
}
if (StringUtils.isNotBlank(plan.getPeriod())) {
r.setPeriod(plan.getPeriod());
}
r.setCollPro(finSelectedReceivablesDetailedVo.getReceivablesName());
r.setCollMoney(finSelectedReceivablesDetailedVo.getSubscriptionMoney());
r.setCollNum(finCollectionConfirmationDetailsVo.getCollectionBankNum());
finCollectionConfirmationMaterials.add(r);
}
}
dataMap.put("wlList", finCollectionConfirmationMaterials);
dataMap.put("zcollMoney", finCollectionConfirmationDetailsVo.getCollectionMoney().toString());
String tPriceDX = TransformMoney.transform(finCollectionConfirmationDetailsVo.getCollectionMoney().toString());
dataMap.put("tPriceDX", tPriceDX);
dataMap.put("makeName", finCollectionConfirmationDetailsVo.getCreateByName() + DateUtil.formatDate(new Date()));
dataMap.put("confirmName", finCollectionConfirmationDetailsVo.getConfirmName() + finCollectionConfirmationDetailsVo.getConfirmDate());
String temp = "/template/";
String targetPath = docPdfComponent.getUploadTemplateUrl();
try {
//获取模板
String streamPath = "";
if (printerType.equals("针孔式打印机")) {
streamPath = "ftl/rskzhenshi.ftl";
} else if (printerType.equals("激光打印机")) {
streamPath = "ftl/rskjiguang.ftl";
}
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(streamPath);
//生成word文件名
String dateStr = DateUtil.format(new Date(), "yyyyMMdd");
long seconds = System.currentTimeMillis();
String typeName = dateStr + seconds + ".doc";
File file = new File(targetPath + "templateVouchers" + seconds + ".ftl");
File dir = new File(targetPath);
WordConvertUtils.inputStreamToFile(inputStream, file);
WordConvertUtils.creatWord1(dataMap, file, targetPath, typeName, dir);
//新生成的word路径
String wordPath = targetPath + typeName;
String pdfName = "收款单_" + dateStr + seconds + ".pdf";
WordConvertUtils.doc2pdf(wordPath, targetPath, pdfName);
pdfPath.setPdfPath(temp + pdfName);
} catch (NoClassDefFoundError e) {
e.printStackTrace();
}
String downNum = finCollectionConfirmationDetailsVo.getDownNum();
if (StringUtils.isBlank(downNum)) {
downNum = "1";
} else {
downNum = String.valueOf((Integer.parseInt(downNum) + 1));
}
baseMapper.updateDown(skdSid, downNum);
return rb.success().setData(pdfPath);
}
public ResultBean updateVin(String vinNo, String contractNo, String temporaryNo) {
ResultBean rb = ResultBean.fireFail();
int i = baseMapper.updateVin(vinNo, contractNo, temporaryNo);
@ -3935,11 +4034,11 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl
CollectionVoucher.CollectionVoucherDetail d = getFundVoucher(v, collectionDate, planDetails);
if (null != d) {
CollectionVoucher.CollectionVoucherDetail v1 = new CollectionVoucher.CollectionVoucherDetail();
BeanUtil.copyProperties(d,v1);
BeanUtil.copyProperties(d, v1);
v1.setSceneCode(SceneCodeEnum.FUND_VOUCHER1.getCode());
voucherDetails.add(v1);
CollectionVoucher.CollectionVoucherDetail v2 = new CollectionVoucher.CollectionVoucherDetail();
BeanUtil.copyProperties(d,v2);
BeanUtil.copyProperties(d, v2);
v2.setSceneCode(SceneCodeEnum.FUND_VOUCHER2.getCode());
collectionAfterVoucherDetails.add(v2);
}
@ -5661,4 +5760,6 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl
vo.setDownLoadUrl(fils);
return rb.success().setData(vo);
}
}

2126
anrui-fin/anrui-fin-biz/src/main/resources/ftl/rskjiguang.ftl

File diff suppressed because it is too large

3056
anrui-fin/anrui-fin-biz/src/main/resources/ftl/rskzhenshi.ftl

File diff suppressed because it is too large

7
anrui-riskcenter-ui/src/api/advancerequest/advancerequest.js

@ -57,6 +57,13 @@ export default {
headers: { 'Content-Type': 'application/json' }
})
},
bepadsincereCreatePdf: function(data) {
return request({
url: '/riskcenter/v1/loanbepadsincereapply/bepadsincereCreatePdf',
method: 'post',
params: data
})
},
// 提交流程
submit: function(params) {
return request({

7
anrui-riskcenter-ui/src/api/agentbusiness/agentbusiness.js

@ -50,6 +50,13 @@ export default {
headers: { 'Content-Type': 'application/json' }
})
},
paymentCreatePdf: function(data) {
return request({
url: '/riskcenter/v1/loantransferpaymentapply/paymentCreatePdf',
method: 'post',
params: data
})
},
// 提交流程
submit: function(params) {
return request({

7
anrui-riskcenter-ui/src/api/deduct/deduct.js

@ -40,6 +40,13 @@ export default {
headers: { 'Content-Type': 'application/json' }
})
},
buckleCreatePdf: function(data) {
return request({
url: '/riskcenter/v1/loanbuckleapply/buckleCreatePdf',
method: 'post',
params: data
})
},
// 提交流程
submit: function(params) {
return request({

7
anrui-riskcenter-ui/src/api/monthlyallowance/monthlyallowance.js

@ -40,6 +40,13 @@ export default {
params: data
})
},
accrualCreatePdf: function(data) {
return request({
url: '/riskcenter/v1/loanmonthlyaccrualapply/accrualCreatePdf',
method: 'post',
params: data
})
},
// 提交流程
submit: function(params) {
return request({

7
anrui-riskcenter-ui/src/api/overduereconciliationfinancing/overduereconciliationfinancing.js

@ -42,6 +42,13 @@ export default {
headers: { 'Content-Type': 'application/json' }
})
},
overdueCreatePdf: function(data) {
return request({
url: '/riskcenter/v1/LoanOverdueFin/overdueCreatePdf',
method: 'post',
params: data
})
},
// 提交流程
submit: function(params) {
return request({

9
anrui-riskcenter-ui/src/api/repaymentschedule/repaymentschedule.js

@ -42,5 +42,14 @@ export default {
method: 'get',
params: data
})
},
// 下载还款计划表
createRepaymentVoucher: function(data) {
return request({
url: '/riskcenter/v1/loanrepaymentschedule/createRepaymentVoucher',
method: 'post',
data: data,
headers: { 'Content-Type': 'application/json' }
})
}
}

4
anrui-riskcenter-ui/src/components/publicPage/financialscheme.vue

@ -329,6 +329,7 @@ export default {
mainVehicleAmount: '',
monthlyRepay: '',
nominalPrice: '',
offsetAccessories: '',
offsetPremium: '',
offsetPurchasetax: '',
offsetTotal: '',
@ -451,6 +452,7 @@ export default {
mainVehicleAmount: '',
monthlyRepay: '',
nominalPrice: '',
offsetAccessories: '',
offsetPremium: '',
offsetPurchasetax: '',
offsetTotal: '',
@ -766,6 +768,7 @@ export default {
this.finance.downPayAmounts = resp.data.downPayAmounts
this.finance.proxyTotal = resp.data.proxyTotal
this.finance.receivableTotal = resp.data.receivableTotal
this.finance.offsetAccessories = resp.data.offsetAccessories
this.finance.offsetTotal = resp.data.offsetTotal
this.finance.realTotal = resp.data.realTotal
this.finance.vehTotalPrice = resp.data.vehTotalPrice
@ -814,6 +817,7 @@ export default {
mainVehicleAmount: '',
monthlyRepay: '',
nominalPrice: '',
offsetAccessories: '',
offsetPremium: '',
offsetPurchasetax: '',
offsetTotal: '',

40
anrui-riskcenter-ui/src/components/publicPage/financialschemeEdit.vue

@ -217,18 +217,22 @@
<el-form-item><span class="addinputInfo">{{ formobj.dealWay }}</span></el-form-item>
</el-col>
</el-row>
<el-row v-if="formobj.dealWayKey == '01' && formobj.isPack == '0' ">
<el-row>
<el-col :span="6">
<div class="span-sty">代收费用合计</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyTotal }}</span></el-form-item>
</el-col>
<el-col :span="9">
<div class="span-sty">代收首年保险费</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyPremium }}</span></el-form-item>
<div v-if="formobj.proxyTotal != '0'">
<div class="span-sty">代收首年保险费</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyPremium }}</span></el-form-item>
</div>
</el-col>
<el-col :span="9">
<div class="span-sty">代收购置税</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyPurchasetax }}</span></el-form-item>
<div v-if="formobj.proxyTotal != '0'">
<div class="span-sty">代收购置税</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyPurchasetax }}</span></el-form-item>
</div>
</el-col>
</el-row>
<el-row>
@ -237,18 +241,28 @@
<el-form-item><span class="addinputInfo">{{ formobj.receivableTotal }}</span></el-form-item>
</el-col>
</el-row>
<el-row v-if="formobj.dealWayKey == '02' && formobj.isPack == '1'">
<el-row>
<el-col :span="6">
<div class="span-sty">抵顶费用合计</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetTotal }}</span></el-form-item>
</el-col>
<el-col :span="9">
<div class="span-sty">抵顶首年保险费</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetPremium }}</span></el-form-item>
<el-col :span="6">
<div v-if="formobj.offsetTotal != '0'">
<div class="span-sty">抵顶首年保险费</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetPremium }}</span></el-form-item>
</div>
</el-col>
<el-col :span="9">
<div class="span-sty">抵顶购置税</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetPurchasetax }}</span></el-form-item>
<el-col :span="6">
<div v-if="formobj.offsetTotal != '0'">
<div class="span-sty">抵顶购置税</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetPurchasetax }}</span></el-form-item>
</div>
</el-col>
<el-col :span="6">
<div v-if="formobj.offsetTotal != '0'">
<div class="span-sty">配件抵顶</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetAccessories }}</span></el-form-item>
</div>
</el-col>
</el-row>
<el-row>
@ -323,6 +337,7 @@ export default {
mainVehicleAmount: '',
monthlyRepay: '',
nominalPrice: '',
offsetAccessories: '',
offsetPremium: '',
offsetPurchasetax: '',
offsetTotal: '',
@ -414,6 +429,7 @@ export default {
mainVehicleAmount: '',
monthlyRepay: '',
nominalPrice: '',
offsetAccessories: '',
offsetPremium: '',
offsetPurchasetax: '',
offsetTotal: '',

38
anrui-riskcenter-ui/src/components/publicPage/financialschemeInfo.vue

@ -219,18 +219,22 @@
<el-form-item><span class="addinputInfo">{{ formobj.dealWay }}</span></el-form-item>
</el-col>
</el-row>
<el-row v-if="formobj.dealWayKey == '01' && formobj.isPack == '0' ">
<el-row>
<el-col :span="6">
<div class="span-sty">代收费用合计</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyTotal }}</span></el-form-item>
</el-col>
<el-col :span="9">
<div class="span-sty">代收首年保险费</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyPremium }}</span></el-form-item>
<div v-if="formobj.proxyTotal != '0'">
<div class="span-sty">代收首年保险费</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyPremium }}</span></el-form-item>
</div>
</el-col>
<el-col :span="9">
<div class="span-sty">代收购置税</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyPurchasetax }}</span></el-form-item>
<div v-if="formobj.proxyTotal != '0'">
<div class="span-sty">代收购置税</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyPurchasetax }}</span></el-form-item>
</div>
</el-col>
</el-row>
<el-row>
@ -239,18 +243,28 @@
<el-form-item><span class="addinputInfo">{{ formobj.receivableTotal }}</span></el-form-item>
</el-col>
</el-row>
<el-row v-if="formobj.dealWayKey == '02' && formobj.isPack == '1'">
<el-row>
<el-col :span="6">
<div class="span-sty">抵顶费用合计</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetTotal }}</span></el-form-item>
</el-col>
<el-col :span="9">
<div class="span-sty">抵顶首年保险费</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetPremium }}</span></el-form-item>
<el-col :span="6">
<div v-if="formobj.offsetTotal != '0'">
<div class="span-sty">抵顶首年保险费</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetPremium }}</span></el-form-item>
</div>
</el-col>
<el-col :span="9">
<div class="span-sty">抵顶购置税</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetPurchasetax }}</span></el-form-item>
<el-col :span="6">
<div v-if="formobj.offsetTotal != '0'">
<div class="span-sty">抵顶购置税</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetPurchasetax }}</span></el-form-item>
</div>
</el-col>
<el-col :span="6">
<div v-if="formobj.offsetTotal != '0'">
<div class="span-sty">配件抵顶</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetAccessories }}</span></el-form-item>
</div>
</el-col>
</el-row>
<el-row>

28
anrui-riskcenter-ui/src/views/advancerequest/advancerequestInfo.vue

@ -4,6 +4,7 @@
<div class="tab-header webtop">
<div>{{ viewTitle }}</div>
<div>
<el-button type="primary" size="small" @click="handleDownload()">下载</el-button>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div>
</div>
@ -72,6 +73,7 @@
<script>
import req from '@/api/advancerequest/advancerequest'
import { getStorage } from '@/utils/auth'
export default {
name: 'AdvanceRequestInfo',
@ -178,6 +180,32 @@ export default {
}
})
},
handleDownload() {
req.bepadsincereCreatePdf({ sid: this.formobj.sid }).then((res) => {
if (res.success) {
var xhr = new XMLHttpRequest()
xhr.open('GET', process.env.VUE_APP_BASE_API + '/base/file/download?filePath=' + res.data + '&outFileName=' + '垫还', true)
xhr.setRequestHeader('token', getStorage())
xhr.responseType = 'blob'
xhr.onload = function(e) {
//
var blob = this.response
var filename = '垫还.pdf'
var a = document.createElement('a')
// blob.type="application/octet-stream";
// url
var url = URL.createObjectURL(blob)
a.href = url
a.download = filename
a.click()
// URL
window.URL.revokeObjectURL(url)
}
//
xhr.send()
}
}).catch(() => {})
},
handleReturn() {
this.formobj = {
billNo: '',

28
anrui-riskcenter-ui/src/views/agentbusiness/agentbusinessInfo.vue

@ -4,6 +4,7 @@
<div class="tab-header webtop">
<div>{{ viewTitle }}</div>
<div>
<el-button type="primary" size="small" @click="handleDownload()">下载</el-button>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div>
</div>
@ -70,6 +71,7 @@
<script>
import req from '@/api/agentbusiness/agentbusiness'
import { getStorage } from '@/utils/auth'
export default {
name: 'AgentBusinessInfo',
@ -116,6 +118,32 @@ export default {
}
})
},
handleDownload() {
req.paymentCreatePdf({ sid: this.formobj.sid }).then((res) => {
if (res.success) {
var xhr = new XMLHttpRequest()
xhr.open('GET', process.env.VUE_APP_BASE_API + '/base/file/download?filePath=' + res.data + '&outFileName=' + '代收代付', true)
xhr.setRequestHeader('token', getStorage())
xhr.responseType = 'blob'
xhr.onload = function(e) {
//
var blob = this.response
var filename = '代收代付.pdf'
var a = document.createElement('a')
// blob.type="application/octet-stream";
// url
var url = URL.createObjectURL(blob)
a.href = url
a.download = filename
a.click()
// URL
window.URL.revokeObjectURL(url)
}
//
xhr.send()
}
}).catch(() => {})
},
handleReturn() {
this.formobj = {
sid: '',

28
anrui-riskcenter-ui/src/views/deduct/deductInfo.vue

@ -4,6 +4,7 @@
<div class="tab-header webtop">
<div>{{ viewTitle }}</div>
<div>
<el-button type="primary" size="small" @click="handleDownload()">下载</el-button>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div>
</div>
@ -69,6 +70,7 @@
<script>
import req from '@/api/deduct/deduct'
import { getStorage } from '@/utils/auth'
export default {
name: 'DeductInfo',
@ -115,6 +117,32 @@ export default {
}
})
},
handleDownload() {
req.buckleCreatePdf({ sid: this.formobj.sid }).then((res) => {
if (res.success) {
var xhr = new XMLHttpRequest()
xhr.open('GET', process.env.VUE_APP_BASE_API + '/base/file/download?filePath=' + res.data + '&outFileName=' + '月还划扣', true)
xhr.setRequestHeader('token', getStorage())
xhr.responseType = 'blob'
xhr.onload = function(e) {
//
var blob = this.response
var filename = '月还划扣.pdf'
var a = document.createElement('a')
// blob.type="application/octet-stream";
// url
var url = URL.createObjectURL(blob)
a.href = url
a.download = filename
a.click()
// URL
window.URL.revokeObjectURL(url)
}
//
xhr.send()
}
}).catch(() => {})
},
handleReturn(isreload) {
if (isreload === 'true') this.$emit('reloadlist')
this.formobj = {

28
anrui-riskcenter-ui/src/views/monthlyallowance/monthlyallowanceInfo.vue

@ -4,6 +4,7 @@
<div class="tab-header webtop">
<div>{{ viewTitle }}</div>
<div>
<el-button type="primary" size="small" @click="handleDownload()">下载</el-button>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div>
</div>
@ -61,6 +62,7 @@
<script>
import req from '@/api/monthlyallowance/monthlyallowance'
import { getStorage } from '@/utils/auth'
export default {
name: 'MonthlyAllowanceInfo',
@ -104,6 +106,32 @@ export default {
}
})
},
handleDownload() {
req.accrualCreatePdf({ sid: this.formobj.sid }).then((res) => {
if (res.success) {
var xhr = new XMLHttpRequest()
xhr.open('GET', process.env.VUE_APP_BASE_API + '/base/file/download?filePath=' + res.data + '&outFileName=' + '月还计提', true)
xhr.setRequestHeader('token', getStorage())
xhr.responseType = 'blob'
xhr.onload = function(e) {
//
var blob = this.response
var filename = '月还计提.pdf'
var a = document.createElement('a')
// blob.type="application/octet-stream";
// url
var url = URL.createObjectURL(blob)
a.href = url
a.download = filename
a.click()
// URL
window.URL.revokeObjectURL(url)
}
//
xhr.send()
}
}).catch(() => {})
},
handleReturn() {
this.formobj = {
sid: '',

28
anrui-riskcenter-ui/src/views/overduereconciliationfinancing/overduereconciliationfinancingInfo.vue

@ -4,6 +4,7 @@
<div class="tab-header webtop">
<div>{{ viewTitle }}</div>
<div>
<el-button type="primary" size="small" @click="handleDownload()">下载</el-button>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div>
</div>
@ -61,6 +62,7 @@
<script>
import req from '@/api/overduereconciliationfinancing/overduereconciliationfinancing'
import { getStorage } from '@/utils/auth'
export default {
name: 'OverdueReconciliationFinancingInfo',
@ -109,6 +111,32 @@ export default {
}
})
},
handleDownload() {
req.overdueCreatePdf({ sid: this.formobj.sid }).then((res) => {
if (res.success) {
var xhr = new XMLHttpRequest()
xhr.open('GET', process.env.VUE_APP_BASE_API + '/base/file/download?filePath=' + res.data + '&outFileName=' + '逾期对账', true)
xhr.setRequestHeader('token', getStorage())
xhr.responseType = 'blob'
xhr.onload = function(e) {
//
var blob = this.response
var filename = '逾期对账.pdf'
var a = document.createElement('a')
// blob.type="application/octet-stream";
// url
var url = URL.createObjectURL(blob)
a.href = url
a.download = filename
a.click()
// URL
window.URL.revokeObjectURL(url)
}
//
xhr.send()
}
}).catch(() => {})
},
handleReturn() {
this.formobj = {
createByName: '',

41
anrui-riskcenter-ui/src/views/repaymentschedule/repaymentschedule.vue

@ -91,6 +91,7 @@ import req from '@/api/repaymentschedule/repaymentschedule'
import { getButtonPermissions } from '@/api/Common/dictcommons'
import repaymentscheduleAdd from './repaymentscheduleAdd'
import repaymentscheduleInfo from './repaymentscheduleInfo'
import { getStorage } from '@/utils/auth'
export default {
name: 'RepaymentSchedule',
@ -112,6 +113,13 @@ export default {
btnKey: 'toEdit',
btnLabel: '办理'
},
{
type: 'primary',
size: 'small',
icon: '',
btnKey: 'downloadRepaymentPlan',
btnLabel: '下载还款计划表'
},
{
type: 'info',
size: 'small',
@ -183,6 +191,9 @@ export default {
case 'toEdit':
this.toEdit()
break
case 'downloadRepaymentPlan':
this.downloadRepaymentPlan()
break
case 'doClose':
this.doClose()
break
@ -261,6 +272,36 @@ export default {
this.$message({ showClose: true, type: 'error', message: '请选择一条记录进行操作' })
}
},
downloadRepaymentPlan() {
if (this.sids.length > 0) {
req.createRepaymentVoucher(this.sids).then((res) => {
if (res.success) {
var xhr = new XMLHttpRequest()
xhr.open('GET', process.env.VUE_APP_BASE_API + '/base/file/download?filePath=' + res.data + '&outFileName=' + '还款计划表', true)
xhr.setRequestHeader('token', getStorage())
xhr.responseType = 'blob'
xhr.onload = function(e) {
//
var blob = this.response
var filename = '还款计划表.pdf'
var a = document.createElement('a')
// blob.type="application/octet-stream";
// url
var url = URL.createObjectURL(blob)
a.href = url
a.download = filename
a.click()
// URL
window.URL.revokeObjectURL(url)
}
//
xhr.send()
}
}).catch(() => {})
} else {
this.$message({ showClose: true, type: 'error', message: '请至少选择一条记录进行下载操作' })
}
},
toInfo(row) {
this.viewState = 3
this.$refs['divInfo'].showInfo(row)

4
anrui-riskcenter-ui/src/views/workFlow/publicPage/financialscheme.vue

@ -329,6 +329,7 @@ export default {
mainVehicleAmount: '',
monthlyRepay: '',
nominalPrice: '',
offsetAccessories: '',
offsetPremium: '',
offsetPurchasetax: '',
offsetTotal: '',
@ -453,6 +454,7 @@ export default {
mainVehicleAmount: '',
monthlyRepay: '',
nominalPrice: '',
offsetAccessories: '',
offsetPremium: '',
offsetPurchasetax: '',
offsetTotal: '',
@ -767,6 +769,7 @@ export default {
this.finance.downPayAmounts = resp.data.downPayAmounts
this.finance.proxyTotal = resp.data.proxyTotal
this.finance.receivableTotal = resp.data.receivableTotal
this.finance.offsetAccessories = resp.data.offsetAccessories
this.finance.offsetTotal = resp.data.offsetTotal
this.finance.realTotal = resp.data.realTotal
this.finance.vehTotalPrice = resp.data.vehTotalPrice
@ -815,6 +818,7 @@ export default {
mainVehicleAmount: '',
monthlyRepay: '',
nominalPrice: '',
offsetAccessories: '',
offsetPremium: '',
offsetPurchasetax: '',
offsetTotal: '',

40
anrui-riskcenter-ui/src/views/workFlow/publicPage/financialschemeEdit.vue

@ -217,18 +217,22 @@
<el-form-item><span class="addinputInfo">{{ formobj.dealWay }}</span></el-form-item>
</el-col>
</el-row>
<el-row v-if="formobj.dealWayKey == '01' && formobj.isPack == '0' ">
<el-row>
<el-col :span="6">
<div class="span-sty">代收费用合计</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyTotal }}</span></el-form-item>
</el-col>
<el-col :span="9">
<div class="span-sty">代收首年保险费</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyPremium }}</span></el-form-item>
<div v-if="formobj.proxyTotal != '0'">
<div class="span-sty">代收首年保险费</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyPremium }}</span></el-form-item>
</div>
</el-col>
<el-col :span="9">
<div class="span-sty">代收购置税</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyPurchasetax }}</span></el-form-item>
<div v-if="formobj.proxyTotal != '0'">
<div class="span-sty">代收购置税</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyPurchasetax }}</span></el-form-item>
</div>
</el-col>
</el-row>
<el-row>
@ -237,18 +241,28 @@
<el-form-item><span class="addinputInfo">{{ formobj.receivableTotal }}</span></el-form-item>
</el-col>
</el-row>
<el-row v-if="formobj.dealWayKey == '02' && formobj.isPack == '1'">
<el-row>
<el-col :span="6">
<div class="span-sty">抵顶费用合计</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetTotal }}</span></el-form-item>
</el-col>
<el-col :span="9">
<div class="span-sty">抵顶首年保险费</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetPremium }}</span></el-form-item>
<el-col :span="6">
<div v-if="formobj.offsetTotal != '0'">
<div class="span-sty">抵顶首年保险费</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetPremium }}</span></el-form-item>
</div>
</el-col>
<el-col :span="9">
<div class="span-sty">抵顶购置税</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetPurchasetax }}</span></el-form-item>
<el-col :span="6">
<div v-if="formobj.offsetTotal != '0'">
<div class="span-sty">抵顶购置税</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetPurchasetax }}</span></el-form-item>
</div>
</el-col>
<el-col :span="6">
<div v-if="formobj.offsetTotal != '0'">
<div class="span-sty">配件抵顶</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetAccessories }}</span></el-form-item>
</div>
</el-col>
</el-row>
<el-row>
@ -323,6 +337,7 @@ export default {
mainVehicleAmount: '',
monthlyRepay: '',
nominalPrice: '',
offsetAccessories: '',
offsetPremium: '',
offsetPurchasetax: '',
offsetTotal: '',
@ -416,6 +431,7 @@ export default {
mainVehicleAmount: '',
monthlyRepay: '',
nominalPrice: '',
offsetAccessories: '',
offsetPremium: '',
offsetPurchasetax: '',
offsetTotal: '',

38
anrui-riskcenter-ui/src/views/workFlow/publicPage/financialschemeInfo.vue

@ -219,18 +219,22 @@
<el-form-item><span class="addinputInfo">{{ formobj.dealWay }}</span></el-form-item>
</el-col>
</el-row>
<el-row v-if="formobj.dealWayKey == '01' && formobj.isPack == '0' ">
<el-row>
<el-col :span="6">
<div class="span-sty">代收费用合计</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyTotal }}</span></el-form-item>
</el-col>
<el-col :span="9">
<div class="span-sty">代收首年保险费</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyPremium }}</span></el-form-item>
<div v-if="formobj.proxyTotal != '0'">
<div class="span-sty">代收首年保险费</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyPremium }}</span></el-form-item>
</div>
</el-col>
<el-col :span="9">
<div class="span-sty">代收购置税</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyPurchasetax }}</span></el-form-item>
<div v-if="formobj.proxyTotal != '0'">
<div class="span-sty">代收购置税</div>
<el-form-item><span class="addinputInfo">{{ formobj.proxyPurchasetax }}</span></el-form-item>
</div>
</el-col>
</el-row>
<el-row>
@ -239,18 +243,28 @@
<el-form-item><span class="addinputInfo">{{ formobj.receivableTotal }}</span></el-form-item>
</el-col>
</el-row>
<el-row v-if="formobj.dealWayKey == '02' && formobj.isPack == '1'">
<el-row>
<el-col :span="6">
<div class="span-sty">抵顶费用合计</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetTotal }}</span></el-form-item>
</el-col>
<el-col :span="9">
<div class="span-sty">抵顶首年保险费</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetPremium }}</span></el-form-item>
<el-col :span="6">
<div v-if="formobj.offsetTotal != '0'">
<div class="span-sty">抵顶首年保险费</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetPremium }}</span></el-form-item>
</div>
</el-col>
<el-col :span="9">
<div class="span-sty">抵顶购置税</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetPurchasetax }}</span></el-form-item>
<el-col :span="6">
<div v-if="formobj.offsetTotal != '0'">
<div class="span-sty">抵顶购置税</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetPurchasetax }}</span></el-form-item>
</div>
</el-col>
<el-col :span="6">
<div v-if="formobj.offsetTotal != '0'">
<div class="span-sty">配件抵顶</div>
<el-form-item><span class="addinputInfo">{{ formobj.offsetAccessories }}</span></el-form-item>
</div>
</el-col>
</el-row>
<el-row>

4
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbepadsincereapply/LoanBePadsincereApplyFeign.java

@ -87,6 +87,10 @@ public interface LoanBePadsincereApplyFeign {
@ResponseBody
public ResultBean delBySids(@RequestBody String[] sids);
@ApiOperation("下载垫还审批dpf")
@PostMapping("/bepadsincereCreatePdf")
public ResultBean<String> bepadsincereCreatePdf(@RequestParam("sid") String sid);
@ApiOperation("根据SID获取一条记录")
@GetMapping("/fetchDetailsBySid/{sid}")
@ResponseBody

5
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbepadsincereapply/LoanBePadsincereApplyFeignFallback.java

@ -75,6 +75,11 @@ public class LoanBePadsincereApplyFeignFallback implements LoanBePadsincereApply
return ResultBean.fireFail().setMsg("接口anrui-riskcenter/loanbepadsincereapply/delBySids无法访问");
}
@Override
public ResultBean<String> bepadsincereCreatePdf(String sid) {
return null;
}
@Override
public ResultBean<LoanBePadsincereApplyDetailsVo> fetchDetailsBySid(String sid){
ResultBean rb = ResultBean.fireFail();

5
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleApplyFeign.java

@ -50,6 +50,11 @@ public interface LoanBuckleApplyFeign {
@ResponseBody
public ResultBean<LoanBuckleApplyInit> buckleDetails(@RequestParam("sid") String sid);
@ApiOperation("下载月还划扣审批dpf")
@PostMapping("/buckleCreatePdf")
public ResultBean<String> buckleCreatePdf(@RequestParam("sid") String sid);
@ApiOperation("批量删除")
@DeleteMapping("/deleteBySids")
@ResponseBody

5
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleApplyFeignFallback.java

@ -36,6 +36,11 @@ public class LoanBuckleApplyFeignFallback implements LoanBuckleApplyFeign {
return null;
}
@Override
public ResultBean<String> buckleCreatePdf(String sid) {
return null;
}
@Override
public ResultBean deleteBySids(String[] sids) {
return null;

5
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyFallback.java

@ -41,6 +41,11 @@ public class LoanMonthlyAccrualApplyFallback implements LoanMonthlyAccrualApplyF
return null;
}
@Override
public ResultBean<String> accrualCreatePdf(String sid) {
return null;
}
@Override
public ResultBean submitRecordApplication(SubmitAccrualDto dto) {
return null;

4
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyFeign.java

@ -53,6 +53,10 @@ public interface LoanMonthlyAccrualApplyFeign {
@ResponseBody
public ResultBean deleteBySids(@RequestBody String[] sids);
@ApiOperation("下载月还审批dpf")
@PostMapping("/accrualCreatePdf")
public ResultBean<String> accrualCreatePdf(@RequestParam("sid") String sid);
//---------------------------流程---------------------------------------
@ApiOperation("提交")

20
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanmonthlyaccrualapply/MonthlyAccrualSourceLCVo.java

@ -0,0 +1,20 @@
package com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author Fan
* @description
* @date 2024/4/12 10:18
*/
@Data
public class MonthlyAccrualSourceLCVo {
@ApiModelProperty(value = "审批人姓名")
private String name;
@ApiModelProperty(value = "审批人意见")
private String comment;
@ApiModelProperty(value = "审批时间")
private String spsj;
}

2
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanoverduebank/LoanOverdueBank.java

@ -40,4 +40,6 @@ public class LoanOverdueBank extends BaseEntity {
private String taskDefKey;
@ApiModelProperty("机构全路径sid")
private String orgSidPath;
@ApiModelProperty("单据编号")
private String billNo;
}

2
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanoverduefin/LoanOverdueFin.java

@ -40,4 +40,6 @@ public class LoanOverdueFin extends BaseEntity {
private String taskDefKey;
@ApiModelProperty("机构全路径sid")
private String orgSidPath;
@ApiModelProperty("单据编号")
private String billNo;
}

4
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanoverduefin/LoanOverdueFinFeign.java

@ -43,6 +43,10 @@ public interface LoanOverdueFinFeign {
@ApiOperation(value = "下载模板")
public void downloadExcel();
@ApiOperation("下载逾期对账审批dpf")
@PostMapping("/overdueCreatePdf")
public ResultBean<String> overdueCreatePdf(@RequestParam("sid") String sid);
@ApiOperation(value = "导入")
@PostMapping("/getExcelInfo")
ResultBean<List<ExcelFinVo>> getExcelInfo(@RequestParam(value = "file") MultipartFile file, HttpServletRequest request, @RequestParam(value = "useOrgSid") String useOrgSid) throws IOException;

3
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutions/SolutionDetailsDto.java

@ -172,5 +172,8 @@ public class SolutionDetailsDto implements Dto {
private int saleOrderState = 0;
@ApiModelProperty("抵顶配件项")
private String offsetAccessories;
}

3
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutions/app/SolutionsDetailsVo.java

@ -192,5 +192,8 @@ public class SolutionsDetailsVo implements Vo {
@ApiModelProperty("保证金类型01固定,02敞口")
private String bondTypeKey;
@ApiModelProperty("抵顶配件项")
private String offsetAccessories;
}

3
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutions/app/SolutionssDto.java

@ -171,4 +171,7 @@ public class SolutionssDto implements Dto {
private String otherActualDiscount;
private int saleOrderState;
@ApiModelProperty("抵顶配件项")
private String offsetAccessories;
}

3
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutions/app/SolutionssVo.java

@ -183,5 +183,8 @@ public class SolutionssVo implements Vo {
@ApiModelProperty("保证金类型01固定,02敞口")
private String bondTypeKey;
@ApiModelProperty("抵顶配件项")
private String offsetAccessories;
}

2
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutions/calculate/CalculateQuery.java

@ -101,4 +101,6 @@ public class CalculateQuery {
private String offsetPremium;
@ApiModelProperty("抵顶购置税")
private String offsetPurchasetax;
@ApiModelProperty("抵顶配件项")
private String offsetAccessories;
}

3
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutions/calculate/CalculateVo.java

@ -64,5 +64,8 @@ public class CalculateVo {
@ApiModelProperty("其他融实际贴息")
private String otherActualDiscount;
@ApiModelProperty("抵顶配件项")
private String offsetAccessories;
}

3
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutionsdetail/LoanSolutionsDetail.java

@ -77,6 +77,9 @@ public class LoanSolutionsDetail extends BaseEntity {
@ApiModelProperty("代收合计")
private BigDecimal proxyTotal;
@ApiModelProperty("抵顶配件项")
private BigDecimal offsetAccessories;
/*

4
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/LoanTransferPaymentApplyFeign.java

@ -43,6 +43,10 @@ public interface LoanTransferPaymentApplyFeign {
@ResponseBody
public ResultBean<String> saveTransferPayment(@RequestBody LoanTransferPaymentApplyDto dto);
@ApiOperation("下载月还划扣审批dpf")
@PostMapping("/paymentCreatePdf")
public ResultBean<String> paymentCreatePdf(@RequestParam("sid") String sid);
@ApiOperation("详情查看")
@GetMapping("/paymentDetails")
@ResponseBody

5
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/LoanTransferPaymentApplyFeignFallback.java

@ -30,6 +30,11 @@ public class LoanTransferPaymentApplyFeignFallback implements LoanTransferPaymen
return null;
}
@Override
public ResultBean<String> paymentCreatePdf(String sid) {
return null;
}
@Override
public ResultBean<LoanTransferPaymentApplyInit> paymentDetails(String sid) {
return null;

1
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantransferpaymentapply/LoanTransferPaymentRecordVo.java

@ -43,5 +43,6 @@ public class LoanTransferPaymentRecordVo {
@ApiModelProperty("转付账户账号")
private String accountNumber;
private String vinNo;
private String salesDept;
}

5
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbepadsincereapply/LoanBePadsincereApplyRest.java

@ -122,6 +122,11 @@ public class LoanBePadsincereApplyRest implements LoanBePadsincereApplyFeign {
return loanBePadsincereApplyService.delAllBySids(sids);
}
@Override
public ResultBean<String> bepadsincereCreatePdf(String sid) {
return loanBePadsincereApplyService.bepadsincereCreatePdf(sid);
}
@Override
@ApiOperation("根据SID获取一条记录") @GetMapping("/fetchDetailsBySid/{sid}")

191
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbepadsincereapply/LoanBePadsincereApplyService.java

@ -62,6 +62,7 @@ import com.yxt.anrui.flowable.api.flowtask.FlowTaskVo;
import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo;
import com.yxt.anrui.flowable.api.utils.ProcDefEnum;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.anrui.portal.api.flow.PCHistTaskListAndCommentList;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign;
@ -75,21 +76,30 @@ import com.yxt.anrui.riskcenter.api.loanbepadsincereveh.LoanBePadsincereVehDetai
import com.yxt.anrui.riskcenter.api.loanbepadsincereveh.LoanBePadsincereVehDto;
import com.yxt.anrui.riskcenter.api.loanfile.LoanFile;
import com.yxt.anrui.riskcenter.api.loanfile.LoanFileEnum;
import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.MonthlyAccrualSourceLCVo;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistory;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanPlanDetailsVoForFundVoucher;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanMoneyVo;
import com.yxt.anrui.riskcenter.api.loanrepaymentschedule.LoanRepaymentScheduleDetailsVo;
import com.yxt.anrui.riskcenter.api.loantransferpaymentapply.LoanTransferPaymentApply;
import com.yxt.anrui.riskcenter.api.loantransferpaymentapply.LoanTransferPaymentRecordVo;
import com.yxt.anrui.riskcenter.api.loantransferpaymentrecord.LoanTransferPaymentRecord;
import com.yxt.anrui.riskcenter.biz.loanbepadsincereveh.LoanBePadsincereVehService;
import com.yxt.anrui.riskcenter.biz.loanfile.LoanFileService;
import com.yxt.anrui.riskcenter.biz.loanrepaymentplandetails.LoanRepaymentPlanDetailsService;
import com.yxt.anrui.riskcenter.biz.loanrepaymentschedule.LoanRepaymentScheduleService;
import com.yxt.common.base.config.component.DocPdfComponent;
import com.yxt.common.base.config.component.FileUploadComponent;
import com.yxt.common.base.utils.ConstantUtils;
import com.yxt.common.base.utils.DateUtils;
import com.yxt.common.base.utils.WordConvertUtils;
import com.yxt.messagecenter.api.message.Message;
import com.yxt.messagecenter.api.message.MessageFeign;
import com.yxt.messagecenter.api.message.MessageFlowVo;
import com.yxt.messagecenter.api.message.MessageFlowableQuery;
import com.yxt.messagecenter.api.messagelist.MessageList;
import com.yxt.messagecenter.api.messagelist.MessageListFeign;
import org.apache.commons.lang3.StringUtils;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.PagerUtil;
@ -119,6 +129,8 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import static java.util.Comparator.comparing;
/**
* Project: anrui-riskcenter(垫款申请) <br/>
* File: LoanBePadsincereApplyService.java <br/>
@ -134,7 +146,12 @@ import java.util.stream.Collectors;
*/
@Service
public class LoanBePadsincereApplyService extends MybatisBaseService<LoanBePadsincereApplyMapper, LoanBePadsincereApply> {
@Autowired
private DocPdfComponent docPdfComponent;
@Autowired
private MessageListFeign messageListFeign;
@Autowired
private com.yxt.anrui.portal.api.flow.FlowableFeign flowableFeignPro;
@Autowired
private SysUserFeign sysUserFeign;
@Autowired
@ -468,8 +485,8 @@ public class LoanBePadsincereApplyService extends MybatisBaseService<LoanBePadsi
sysBeMoney = "0";
}
loanBePadsincereVehDetailsVo.setSysBeMoney(sysBeMoney);
loanBePadsincereVehDetailsVo.setBankBeMoney(String.valueOf(new BigDecimal(bePadsincereExcelInfo.getBePrincipal()).divide(new BigDecimal(loanRepaymentScheduleDetailsVos.size()),2,BigDecimal.ROUND_HALF_UP)));
loanBePadsincereVehDetailsVo.setBankBeInter(String.valueOf(new BigDecimal(bePadsincereExcelInfo.getBeDefInter()).divide(new BigDecimal(loanRepaymentScheduleDetailsVos.size()),2,BigDecimal.ROUND_HALF_UP)));
loanBePadsincereVehDetailsVo.setBankBeMoney(String.valueOf(new BigDecimal(bePadsincereExcelInfo.getBePrincipal()).divide(new BigDecimal(loanRepaymentScheduleDetailsVos.size()), 2, BigDecimal.ROUND_HALF_UP)));
loanBePadsincereVehDetailsVo.setBankBeInter(String.valueOf(new BigDecimal(bePadsincereExcelInfo.getBeDefInter()).divide(new BigDecimal(loanRepaymentScheduleDetailsVos.size()), 2, BigDecimal.ROUND_HALF_UP)));
loanBePadsincereVehDetailsVo.setPadMoney(String.valueOf(new BigDecimal(loanBePadsincereVehDetailsVo.getBankBeMoney()).add(new BigDecimal(loanBePadsincereVehDetailsVo.getBankBeInter()))));
loanBePadsincereVehDetailsVo.setPaymentAccount(bePadsincereExcelInfo.getPaymentAccount());
loanBePadsincereVehDetailsVo.setPaymentNum(bePadsincereExcelInfo.getPaymentNum());
@ -1228,4 +1245,172 @@ public class LoanBePadsincereApplyService extends MybatisBaseService<LoanBePadsi
}
return rb.success();
}
public ResultBean<String> bepadsincereCreatePdf(String sid) {
ResultBean rb = ResultBean.fireFail();
String finalPath = "";
String filePath = "";
Map<String, Object> dataMap = new HashMap();
List<Map<String, Object>> newList = new ArrayList<>();
LoanBePadsincereApply data = fetchBySid(sid);
if (null != data) {
if (!data.getNodeState().equals("已办结")) {
return rb.setMsg("无法下载没有办结的审批记录。");
}
List<LoanFile> files = loanFileService.selectByLinkSid(data.getSid(), LoanFileEnum.BEPADSINCERE.getAttachType());
if (!files.isEmpty()) {
List<String> stringList = new ArrayList<>();
for (LoanFile file : files) {
if (StringUtils.isNotBlank(file.getFileName()) && StringUtils.isNotBlank(file.getFileType())) {
stringList.add(file.getFileName() + "." + file.getFileType());
}
}
if (!stringList.isEmpty()) {
filePath = String.join(",", stringList);
}
}
dataMap.put("createTime", DateUtil.formatDate(data.getCreateTime()));
if (StringUtils.isNotBlank(data.getUseOrgName())) {
dataMap.put("company", data.getUseOrgName());
}
if (StringUtils.isNotBlank(data.getCreateByName())) {
dataMap.put("applyName", data.getCreateByName());
}
if (StringUtils.isNotBlank(data.getDeptName())) {
dataMap.put("dept", data.getDeptName());
}
if (StringUtils.isNotBlank(data.getBillNo())) {
dataMap.put("billNo", data.getBillNo());
}
if (StringUtils.isNotBlank(data.getFinPaymentFormValue())) {
dataMap.put("payWay", data.getFinPaymentFormValue());
}
if (StringUtils.isNotBlank(data.getPaymentRemarks())) {
dataMap.put("payRemarks", data.getPaymentRemarks());
}
if (StringUtils.isNotBlank(data.getRemarks())) {
dataMap.put("otherShow", data.getRemarks());
}
if (StringUtils.isNotBlank(filePath)) {
dataMap.put("filePath", filePath);
}
BigDecimal sumMoney = new BigDecimal(0);
//获取审批记录
if (StringUtils.isNotBlank(data.getProcInstSid())) {
List<PCHistTaskListAndCommentList> flowRecordVo = flowableFeignPro.flowRecordAndComment(data.getProcInstSid(), "1").getData();
List<MonthlyAccrualSourceLCVo> sourceLCVos = new ArrayList<>();
for (PCHistTaskListAndCommentList flowTask : flowRecordVo) {
if (flowTask.getFlowableRecordVo() != null) {
Map<String, Object> flowableRecordVo = flowTask.getFlowableRecordVo();
MonthlyAccrualSourceLCVo sourceLCVo = new MonthlyAccrualSourceLCVo();
List<Map<String, Object>> taskUserInfos = ConstantUtils.getListData(flowableRecordVo, "taskUserInfos");
Map<String, Object> comment = ConstantUtils.getMap(flowableRecordVo, "comment");
String assigneeName = (String) taskUserInfos.get(0).get("assigneeName");
String comment1 = (String) comment.get("comment");
sourceLCVo.setName(assigneeName);
sourceLCVo.setComment(comment1);
sourceLCVo.setSpsj(flowableRecordVo.get("finishTime").toString());
sourceLCVos.add(sourceLCVo);
} else {
Map<String, Object> processCommentVo = flowTask.getProcessCommentVo();
MonthlyAccrualSourceLCVo sourceLCVo = new MonthlyAccrualSourceLCVo();
sourceLCVo.setName(processCommentVo.get("title").toString());
sourceLCVo.setComment(processCommentVo.get("content").toString());
sourceLCVo.setSpsj(processCommentVo.get("time").toString());
sourceLCVos.add(sourceLCVo);
}
}
List<Message> messages = messageFeign.selectByBusinessSid(data.getSid()).getData();
if (messages.size() > 0) {
for (Message message : messages) {
MonthlyAccrualSourceLCVo sourceLCVo = new MonthlyAccrualSourceLCVo();
String receiverNames = "";
List<MessageList> messageLists = messageListFeign.fetchByMainSid(message.getSid()).getData();
if (messageLists.size() > 0) {
for (MessageList messageList : messageLists) {
receiverNames = receiverNames + messageList.getReceiverName() + ",";
}
}
sourceLCVo.setName("系统");
sourceLCVo.setComment("抄送 " + receiverNames.substring(0, receiverNames.lastIndexOf(",")));
sourceLCVo.setSpsj(DateUtil.format(message.getCreateTime(), "yyyy-MM-dd HH:mm:ss"));
sourceLCVos.add(sourceLCVo);
}
}
sourceLCVos.sort(comparing(MonthlyAccrualSourceLCVo::getSpsj));
dataMap.put("lcList", sourceLCVos);
}
List<LoanBePadsincereVehDetailsVo> records = loanBePadsincereVehService.selByMainSid(sid);
if (!records.isEmpty()) {
int sortNo = 1;
for (LoanBePadsincereVehDetailsVo record : records) {
Map<String, Object> map = new HashMap<>();
LoanRepaymentPlanDetails details = loanRepaymentPlanDetailsService.fetchMainBankByBusVinSid(record.getBusVinSid());
if (null != details) {
map.put("sortNo", String.valueOf(sortNo++));
if (StringUtils.isNotBlank(record.getLoanContractNo())) {
map.put("loanNo", record.getLoanContractNo());
}
if (StringUtils.isNotBlank(details.getDept())) {
map.put("saleDept", details.getDept());
}
if (StringUtils.isNotBlank(record.getVinNo())) {
map.put("vinNo", record.getVinNo());
}
if (StringUtils.isNotBlank(record.getBankName())) {
map.put("bankName", record.getBankName());
}
if (StringUtils.isNotBlank(record.getBankContractNo())) {
map.put("bankNo", record.getBankContractNo());
}
if (StringUtils.isNotBlank(record.getBorrowerName())) {
map.put("borrowerName", record.getBorrowerName());
}
if (StringUtils.isNotBlank(record.getPeriod())) {
map.put("period", record.getPeriod());
}
if (StringUtils.isNotBlank(record.getSysBeMoney())) {
map.put("overDueMoney", record.getSysBeMoney());
}
if (StringUtils.isNotBlank(record.getBankBeMoney())) {
map.put("bankOverMoney", record.getBankBeMoney());
}
if (StringUtils.isNotBlank(record.getBankBeInter())) {
map.put("beInter", record.getBankBeInter());
}
if (StringUtils.isNotBlank(record.getPadMoney())) {
map.put("padMoney", record.getPadMoney());
sumMoney = sumMoney.add(new BigDecimal(record.getPadMoney()));
}
}
newList.add(map);
}
dataMap.put("amount", sumMoney.toString());
}
dataMap.put("newList", newList);
String temp = "/template/";
String targetPath = docPdfComponent.getUploadTemplateUrl();
try {
//获取模板
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("ftl/vouchers/padsincere.ftl");
//生成word文件名
String dateStr = DateUtil.format(new Date(), "yyyyMMdd");
long seconds = System.currentTimeMillis();
String typeName = dateStr + seconds + ".doc";
File file = new File(targetPath + "templateVouchers" + seconds + ".ftl");
File dir = new File(targetPath);
WordConvertUtils.inputStreamToFile(inputStream, file);
WordConvertUtils.creatWord1(dataMap, file, targetPath, typeName, dir);
//新生成的word路径
String wordPath = targetPath + typeName;
String pdfName = "垫还审批" + dateStr + seconds + ".pdf";
WordConvertUtils.doc2pdf(wordPath, targetPath, pdfName);
finalPath = temp + pdfName;
} catch (NoClassDefFoundError e) {
e.printStackTrace();
finalPath = targetPath;
}
}
return rb.success().setData(finalPath);
}
}

5
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapply/LoanBuckleApplyRest.java

@ -51,6 +51,11 @@ public class LoanBuckleApplyRest implements LoanBuckleApplyFeign {
return loanBuckleApplyService.buckleDetails(sid);
}
@Override
public ResultBean<String> buckleCreatePdf(String sid) {
return loanBuckleApplyService.buckleCreatePdf(sid);
}
@Override
public ResultBean deleteBySids(String[] sids) {
return loanBuckleApplyService.deleteBySids(sids);

176
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapply/LoanBuckleApplyService.java

@ -2,6 +2,7 @@ package com.yxt.anrui.riskcenter.biz.loanbuckleapply;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@ -11,19 +12,15 @@ import com.yxt.anrui.base.api.basepurchasesystem.BasePurchaseSystemFeign;
import com.yxt.anrui.base.common.enums.BillTypeEnum;
import com.yxt.anrui.base.common.utils.Rule;
import com.yxt.anrui.base.common.utils.domain.BillNo;
import com.yxt.anrui.buscenter.api.buscenterfile.BuscenterFile;
import com.yxt.anrui.buscenter.api.buscenterfile.BuscenterFileEnum;
import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrder;
import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrderFeign;
import com.yxt.anrui.buscenter.api.bussalesorderborrower.BusSalesOrderBorrowerDetailsVo;
import com.yxt.anrui.buscenter.api.bussalesorderborrower.BusSalesOrderBorrowerFeign;
import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicle;
import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicleFeign;
import com.yxt.anrui.buscenter.api.bussolutionschange.BusSolutionsChangeFiles;
import com.yxt.anrui.fin.api.kingdee.FinKingDeeFeign;
import com.yxt.anrui.fin.api.kingdee.bdcustomer.BdCustomer;
import com.yxt.anrui.fin.api.kingdee.voucher.GeneralVoucher;
import com.yxt.anrui.fin.api.kingdee.voucher.SceneCodeEnum;
import com.yxt.anrui.flowable.api.flow.FlowableFeign;
import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo;
import com.yxt.anrui.flowable.api.flow2.FlowDelegateQuery;
@ -33,6 +30,7 @@ import com.yxt.anrui.flowable.api.flowtask.FlowTaskVo;
import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo;
import com.yxt.anrui.flowable.api.utils.ProcDefEnum;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.anrui.portal.api.flow.PCHistTaskListAndCommentList;
import com.yxt.anrui.portal.api.sysorganization.*;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrg;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign;
@ -47,7 +45,7 @@ import com.yxt.anrui.riskcenter.api.loanbuckleapplyrecord.LoanBuckleApplyRecord;
import com.yxt.anrui.riskcenter.api.loanbuckleplanhistory.LoanBucklePlanHistory;
import com.yxt.anrui.riskcenter.api.loanfile.LoanFile;
import com.yxt.anrui.riskcenter.api.loanfile.LoanFileEnum;
import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualrecord.LoanMonthlyAccrualRecord;
import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.MonthlyAccrualSourceLCVo;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistory;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistoryRecordVo;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanPlanDetailsVoForLateVoucher;
@ -57,26 +55,36 @@ import com.yxt.anrui.riskcenter.biz.loanbuckleplanhistory.LoanBucklePlanHistoryS
import com.yxt.anrui.riskcenter.biz.loanfile.LoanFileService;
import com.yxt.anrui.riskcenter.biz.loanrepaymenthistory.LoanRepaymentHistoryService;
import com.yxt.anrui.riskcenter.biz.loanrepaymentplandetails.LoanRepaymentPlanDetailsService;
import com.yxt.common.base.config.component.DocPdfComponent;
import com.yxt.common.base.config.component.FileUploadComponent;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.ConstantUtils;
import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.base.utils.WordConvertUtils;
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.message.Message;
import com.yxt.messagecenter.api.message.MessageFeign;
import com.yxt.messagecenter.api.message.MessageFlowVo;
import com.yxt.messagecenter.api.message.MessageFlowableQuery;
import com.yxt.messagecenter.api.messagelist.MessageList;
import com.yxt.messagecenter.api.messagelist.MessageListFeign;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.File;
import java.io.InputStream;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.*;
import java.util.stream.Collectors;
import static java.util.Comparator.comparing;
/**
* @description:
* @author: fzz
@ -85,6 +93,12 @@ import java.util.stream.Collectors;
@Service
public class LoanBuckleApplyService extends MybatisBaseService<LoanBuckleApplyMapper, LoanBuckleApply> {
@Autowired
private MessageListFeign messageListFeign;
@Autowired
private com.yxt.anrui.portal.api.flow.FlowableFeign flowableFeignPro;
@Autowired
private DocPdfComponent docPdfComponent;
@Autowired
private MessageFeign messageFeign;
@Autowired
@ -1216,4 +1230,156 @@ public class LoanBuckleApplyService extends MybatisBaseService<LoanBuckleApplyMa
}
public ResultBean<String> buckleCreatePdf(String sid) {
ResultBean rb = ResultBean.fireFail();
String finalPath = "";
String filePath = "";
Map<String, Object> dataMap = new HashMap();
List<Map<String, Object>> newList = new ArrayList<>();
LoanBuckleApply data = fetchBySid(sid);
if (null != data) {
if (!data.getNodeState().equals("已办结")) {
return rb.setMsg("无法下载没有办结的审批记录。");
}
List<LoanFile> files = loanFileService.selectByLinkSid(data.getSid(), LoanFileEnum.BUCKLE_APPLY.getAttachType());
if (!files.isEmpty()) {
List<String> stringList = new ArrayList<>();
for (LoanFile file : files) {
if (StringUtils.isNotBlank(file.getFileName()) && StringUtils.isNotBlank(file.getFileType())) {
stringList.add(file.getFileName() + "." + file.getFileType());
}
}
if (!stringList.isEmpty()) {
filePath = String.join(",", stringList);
}
}
if (null != data.getApplyDate()) {
dataMap.put("createTime", DateUtil.formatDate(data.getApplyDate()));
}
if (StringUtils.isNotBlank(data.getUseOrgName())) {
dataMap.put("company", data.getUseOrgName());
}
if (StringUtils.isNotBlank(data.getApplyName())) {
dataMap.put("applyName", data.getApplyName());
}
if (StringUtils.isNotBlank(data.getDept())) {
dataMap.put("dept", data.getDept());
}
if (StringUtils.isNotBlank(data.getBillNo())) {
dataMap.put("billNo", data.getBillNo());
}
if (StringUtils.isNotBlank(data.getRemarks())) {
dataMap.put("remarks", data.getRemarks());
}
if (StringUtils.isNotBlank(filePath)) {
dataMap.put("filePath", filePath);
}
//获取审批记录
if (StringUtils.isNotBlank(data.getProcInstId())) {
List<PCHistTaskListAndCommentList> flowRecordVo = flowableFeignPro.flowRecordAndComment(data.getProcInstId(), "1").getData();
List<MonthlyAccrualSourceLCVo> sourceLCVos = new ArrayList<>();
for (PCHistTaskListAndCommentList flowTask : flowRecordVo) {
if (flowTask.getFlowableRecordVo() != null) {
Map<String, Object> flowableRecordVo = flowTask.getFlowableRecordVo();
MonthlyAccrualSourceLCVo sourceLCVo = new MonthlyAccrualSourceLCVo();
List<Map<String, Object>> taskUserInfos = ConstantUtils.getListData(flowableRecordVo, "taskUserInfos");
Map<String, Object> comment = ConstantUtils.getMap(flowableRecordVo, "comment");
String assigneeName = (String) taskUserInfos.get(0).get("assigneeName");
String comment1 = (String) comment.get("comment");
sourceLCVo.setName(assigneeName);
sourceLCVo.setComment(comment1);
sourceLCVo.setSpsj(flowableRecordVo.get("finishTime").toString());
sourceLCVos.add(sourceLCVo);
} else {
Map<String, Object> processCommentVo = flowTask.getProcessCommentVo();
MonthlyAccrualSourceLCVo sourceLCVo = new MonthlyAccrualSourceLCVo();
sourceLCVo.setName(processCommentVo.get("title").toString());
sourceLCVo.setComment(processCommentVo.get("content").toString());
sourceLCVo.setSpsj(processCommentVo.get("time").toString());
sourceLCVos.add(sourceLCVo);
}
}
List<Message> messages = messageFeign.selectByBusinessSid(data.getSid()).getData();
if (messages.size() > 0) {
for (Message message : messages) {
MonthlyAccrualSourceLCVo sourceLCVo = new MonthlyAccrualSourceLCVo();
String receiverNames = "";
List<MessageList> messageLists = messageListFeign.fetchByMainSid(message.getSid()).getData();
if (messageLists.size() > 0) {
for (MessageList messageList : messageLists) {
receiverNames = receiverNames + messageList.getReceiverName() + ",";
}
}
sourceLCVo.setName("系统");
sourceLCVo.setComment("抄送 " + receiverNames.substring(0, receiverNames.lastIndexOf(",")));
sourceLCVo.setSpsj(DateUtil.format(message.getCreateTime(), "yyyy-MM-dd HH:mm:ss"));
sourceLCVos.add(sourceLCVo);
}
}
sourceLCVos.sort(comparing(MonthlyAccrualSourceLCVo::getSpsj));
dataMap.put("lcList", sourceLCVos);
}
List<LoanBuckleApplyRecord> records = loanBuckleApplyRecordService.selByMainSid(sid);
if (!records.isEmpty()) {
int sortNo = 1;
for (LoanBuckleApplyRecord applyRecord : records) {
Map<String, Object> map = new HashMap<>();
String recordSid = applyRecord.getRepaymentHistorySid();
LoanRepaymentPlanDetails details = loanRepaymentPlanDetailsService.fetchBySid(recordSid);
if (null != details) {
map.put("sortNo", String.valueOf(sortNo++));
if (StringUtils.isNotBlank(details.getLoanContractNo())) {
map.put("loanNo", details.getLoanContractNo());
}
if (StringUtils.isNotBlank(details.getVinNo())) {
map.put("vinNo", details.getVinNo());
}
if (StringUtils.isNotBlank(details.getBankName())) {
map.put("bankName", details.getBankName());
}
if (StringUtils.isNotBlank(details.getBankContractNo())) {
map.put("bankNo", details.getBankContractNo());
}
if (StringUtils.isNotBlank(details.getBorrowerName())) {
map.put("borrowerName", details.getBorrowerName());
}
if (StringUtils.isNotBlank(details.getPeriod())) {
map.put("period", details.getPeriod());
}
if (null != applyRecord.getActualMoney()) {
map.put("dueMoney", applyRecord.getActualMoney());
}
if (StringUtils.isNotBlank(details.getDept())) {
map.put("saleDept", details.getDept());
}
}
newList.add(map);
}
}
dataMap.put("newList", newList);
String temp = "/template/";
String targetPath = docPdfComponent.getUploadTemplateUrl();
try {
//获取模板
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("ftl/vouchers/monthBuckle.ftl");
//生成word文件名
String dateStr = DateUtil.format(new Date(), "yyyyMMdd");
long seconds = System.currentTimeMillis();
String typeName = dateStr + seconds + ".doc";
File file = new File(targetPath + "templateVouchers" + seconds + ".ftl");
File dir = new File(targetPath);
WordConvertUtils.inputStreamToFile(inputStream, file);
WordConvertUtils.creatWord1(dataMap, file, targetPath, typeName, dir);
//新生成的word路径
String wordPath = targetPath + typeName;
String pdfName = "月还划扣审批" + dateStr + seconds + ".pdf";
WordConvertUtils.doc2pdf(wordPath, targetPath, pdfName);
finalPath = temp + pdfName;
} catch (NoClassDefFoundError e) {
e.printStackTrace();
finalPath = targetPath;
}
}
return rb.success().setData(finalPath);
}
}

5
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyRest.java

@ -51,6 +51,11 @@ public class LoanMonthlyAccrualApplyRest implements LoanMonthlyAccrualApplyFeign
return loanMonthlyAccrualApplyService.deleteBySids(sids);
}
@Override
public ResultBean<String> accrualCreatePdf(String sid) {
return loanMonthlyAccrualApplyService.accrualCreatePdf(sid);
}
@Override
public ResultBean submitRecordApplication(SubmitAccrualDto dto) {
return loanMonthlyAccrualApplyService.submitRecordApplication(dto);

178
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanmonthlyaccrualapply/LoanMonthlyAccrualApplyService.java

@ -30,6 +30,7 @@ import com.yxt.anrui.flowable.api.flowtask.FlowTaskVo;
import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo;
import com.yxt.anrui.flowable.api.utils.ProcDefEnum;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.anrui.portal.api.flow.PCHistTaskListAndCommentList;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrg;
@ -47,28 +48,34 @@ import com.yxt.anrui.riskcenter.biz.loanfile.LoanFileService;
import com.yxt.anrui.riskcenter.biz.loanmonthlyaccrualrecord.LoanMonthlyAccrualRecordService;
import com.yxt.anrui.riskcenter.biz.loanrepaymenthistory.LoanRepaymentHistoryService;
import com.yxt.anrui.riskcenter.biz.loanrepaymentplandetails.LoanRepaymentPlanDetailsService;
import com.yxt.common.base.config.component.DocPdfComponent;
import com.yxt.common.base.config.component.FileUploadComponent;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.ConstantUtils;
import com.yxt.common.base.utils.DateUtils;
import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.base.utils.WordConvertUtils;
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.message.MessageFeign;
import com.yxt.messagecenter.api.message.MessageFlowVo;
import com.yxt.messagecenter.api.message.MessageFlowableQuery;
import com.yxt.messagecenter.api.message.PushMessageQuery;
import com.yxt.messagecenter.api.message.*;
import com.yxt.messagecenter.api.messagelist.MessageList;
import com.yxt.messagecenter.api.messagelist.MessageListFeign;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.File;
import java.io.InputStream;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.*;
import java.util.stream.Collectors;
import static java.util.Comparator.comparing;
/**
* @description:
* @author: fzz
@ -76,7 +83,10 @@ import java.util.stream.Collectors;
**/
@Service
public class LoanMonthlyAccrualApplyService extends MybatisBaseService<LoanMonthlyAccrualApplyMapper, LoanMonthlyAccrualApply> {
@Autowired
private DocPdfComponent docPdfComponent;
@Autowired
private com.yxt.anrui.portal.api.flow.FlowableFeign flowableFeignPro;
@Autowired
private MessageFeign messageFeign;
@Autowired
@ -111,6 +121,8 @@ public class LoanMonthlyAccrualApplyService extends MybatisBaseService<LoanMonth
private BusSalesOrderFeign busSalesOrderFeign;
@Autowired
private BasePurchaseSystemFeign basePurchaseSystemFeign;
@Autowired
private MessageListFeign messageListFeign;
public ResultBean<LoanMonthlyAccrualApplyInit> accrualInit(String orgPath) {
ResultBean<LoanMonthlyAccrualApplyInit> rb = ResultBean.fireFail();
@ -1032,4 +1044,160 @@ public class LoanMonthlyAccrualApplyService extends MybatisBaseService<LoanMonth
}
return rb.success().setData(vo);
}
public ResultBean<String> accrualCreatePdf(String sid) {
ResultBean rb = ResultBean.fireFail();
String finalPath = "";
String filePath = "";
Map<String, Object> dataMap = new HashMap();
List<Map<String, Object>> newList = new ArrayList<>();
LoanMonthlyAccrualApply data = fetchBySid(sid);
if (null != data) {
if (!data.getNodeState().equals("已办结")) {
return rb.setMsg("无法下载没有办结的审批记录。");
}
List<LoanFile> files = loanFileService.selectByLinkSid(data.getSid(), LoanFileEnum.ACCRUALAPPLY.getAttachType());
if (!files.isEmpty()) {
List<String> stringList = new ArrayList<>();
for (LoanFile file : files) {
if (StringUtils.isNotBlank(file.getFileName()) && StringUtils.isNotBlank(file.getFileType())) {
stringList.add(file.getFileName() + "." + file.getFileType());
}
}
if (!stringList.isEmpty()) {
filePath = String.join(",", stringList);
}
}
if (null != data.getApplyDate()) {
dataMap.put("createTime", DateUtil.formatDate(data.getApplyDate()));
}
if (StringUtils.isNotBlank(data.getUseOrgName())) {
dataMap.put("company", data.getUseOrgName());
}
if (StringUtils.isNotBlank(data.getApplyName())) {
dataMap.put("applyName", data.getApplyName());
}
if (StringUtils.isNotBlank(data.getDept())) {
dataMap.put("dept", data.getDept());
}
if (StringUtils.isNotBlank(data.getBillNo())) {
dataMap.put("billNo", data.getBillNo());
}
if (StringUtils.isNotBlank(data.getRemarks())) {
dataMap.put("remarks", data.getRemarks());
}
if (StringUtils.isNotBlank(filePath)) {
dataMap.put("filePath", filePath);
}
//获取审批记录
if (StringUtils.isNotBlank(data.getProcInstId())) {
List<PCHistTaskListAndCommentList> flowRecordVo = flowableFeignPro.flowRecordAndComment(data.getProcInstId(), "1").getData();
List<MonthlyAccrualSourceLCVo> sourceLCVos = new ArrayList<>();
for (PCHistTaskListAndCommentList flowTask : flowRecordVo) {
if (flowTask.getFlowableRecordVo() != null) {
Map<String, Object> flowableRecordVo = flowTask.getFlowableRecordVo();
MonthlyAccrualSourceLCVo sourceLCVo = new MonthlyAccrualSourceLCVo();
List<Map<String, Object>> taskUserInfos = ConstantUtils.getListData(flowableRecordVo, "taskUserInfos");
Map<String, Object> comment = ConstantUtils.getMap(flowableRecordVo, "comment");
String assigneeName = (String) taskUserInfos.get(0).get("assigneeName");
String comment1 = (String) comment.get("comment");
sourceLCVo.setName(assigneeName);
sourceLCVo.setComment(comment1);
sourceLCVo.setSpsj(flowableRecordVo.get("finishTime").toString());
sourceLCVos.add(sourceLCVo);
} else {
Map<String, Object> processCommentVo = flowTask.getProcessCommentVo();
MonthlyAccrualSourceLCVo sourceLCVo = new MonthlyAccrualSourceLCVo();
sourceLCVo.setName(processCommentVo.get("title").toString());
sourceLCVo.setComment(processCommentVo.get("content").toString());
sourceLCVo.setSpsj(processCommentVo.get("time").toString());
sourceLCVos.add(sourceLCVo);
}
}
List<Message> messages = messageFeign.selectByBusinessSid(data.getSid()).getData();
if (messages.size() > 0) {
for (Message message : messages) {
MonthlyAccrualSourceLCVo sourceLCVo = new MonthlyAccrualSourceLCVo();
String receiverNames = "";
List<MessageList> messageLists = messageListFeign.fetchByMainSid(message.getSid()).getData();
if (messageLists.size() > 0) {
for (MessageList messageList : messageLists) {
receiverNames = receiverNames + messageList.getReceiverName() + ",";
}
}
sourceLCVo.setName("系统");
sourceLCVo.setComment("抄送 " + receiverNames.substring(0, receiverNames.lastIndexOf(",")));
sourceLCVo.setSpsj(DateUtil.format(message.getCreateTime(), "yyyy-MM-dd HH:mm:ss"));
sourceLCVos.add(sourceLCVo);
}
}
sourceLCVos.sort(comparing(MonthlyAccrualSourceLCVo::getSpsj));
dataMap.put("lcList", sourceLCVos);
}
List<LoanMonthlyAccrualRecord> records = loanMonthlyAccrualRecordService.selByMainSid(sid);
if (!records.isEmpty()) {
int sortNo = 1;
for (LoanMonthlyAccrualRecord accrualRecord : records) {
Map<String, Object> map = new HashMap<>();
String recordSid = accrualRecord.getRecordSid();
LoanRepaymentPlanDetails details = loanRepaymentPlanDetailsService.fetchBySid(recordSid);
if (null != details) {
map.put("sortNo", String.valueOf(sortNo++));
if (StringUtils.isNotBlank(details.getLoanContractNo())) {
map.put("loanNo", details.getLoanContractNo());
}
if (StringUtils.isNotBlank(details.getVinNo())) {
map.put("vinNo", details.getVinNo());
}
if (StringUtils.isNotBlank(details.getBankName())) {
map.put("bankName", details.getBankName());
}
if (StringUtils.isNotBlank(details.getBankContractNo())) {
map.put("bankNo", details.getBankContractNo());
}
if (StringUtils.isNotBlank(details.getBorrowerName())) {
map.put("borrowerName", details.getBorrowerName());
}
if (StringUtils.isNotBlank(details.getPeriod())) {
map.put("period", details.getPeriod());
}
if (null != details.getDueDate()) {
map.put("dueDate", DateUtil.formatDate(details.getDueDate()));
}
if (null != details.getDueMoney()) {
map.put("dueMoney", details.getDueMoney());
}
if (StringUtils.isNotBlank(details.getDept())) {
map.put("saleDept", details.getDept());
}
}
newList.add(map);
}
}
dataMap.put("newList", newList);
String temp = "/template/";
String targetPath = docPdfComponent.getUploadTemplateUrl();
try {
//获取模板
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("ftl/vouchers/monthapply.ftl");
//生成word文件名
String dateStr = DateUtil.format(new Date(), "yyyyMMdd");
long seconds = System.currentTimeMillis();
String typeName = dateStr + seconds + ".doc";
File file = new File(targetPath + "templateVouchers" + seconds + ".ftl");
File dir = new File(targetPath);
WordConvertUtils.inputStreamToFile(inputStream, file);
WordConvertUtils.creatWord1(dataMap, file, targetPath, typeName, dir);
//新生成的word路径
String wordPath = targetPath + typeName;
String pdfName = "月还计提审批" + dateStr + seconds + ".pdf";
WordConvertUtils.doc2pdf(wordPath, targetPath, pdfName);
finalPath = temp + pdfName;
} catch (NoClassDefFoundError e) {
e.printStackTrace();
finalPath = targetPath;
}
}
return rb.success().setData(finalPath);
}
}

2
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanoverduebank/LoanOverdueBankMapper.java

@ -33,4 +33,6 @@ public interface LoanOverdueBankMapper extends BaseMapper<LoanOverdueBank> {
List<LoanOverdueBankDetailsDto> detailsList(@Param("useOrgSid") String useOrgSid, @Param(Constants.WRAPPER) QueryWrapper qw, @Param("stopDate") String stopDate);
LoanOverdueBankAppDetailsVo getAppDetails(String sid);
String selectNum(String bill);
}

8
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanoverduebank/LoanOverdueBankMapper.xml

@ -140,4 +140,12 @@
from loan_overdue_bank lb
where lb.sid = #{sid}
</select>
<select id="selectNum" resultType="java.lang.String">
select RIGHT(billNo, 4)
from loan_overdue_bank
where billNo LIKE concat(#{bill}, '%')
order by id desc
limit 1
</select>
</mapper>

26
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanoverduebank/LoanOverdueBankService.java

@ -6,6 +6,9 @@ import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.yxt.anrui.base.common.enums.BillTypeEnum;
import com.yxt.anrui.base.common.utils.Rule;
import com.yxt.anrui.base.common.utils.domain.BillNo;
import com.yxt.anrui.flowable.api.flow.FlowableFeign;
import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo;
import com.yxt.anrui.flowable.api.flow2.FlowDelegateQuery;
@ -446,6 +449,10 @@ public class LoanOverdueBankService extends MybatisBaseService<LoanOverdueBankMa
loanOverdueBankDetailsService.saveOrUpdateDetails(detailsVoList, loanOverdueBank.getSid());
}
sid = loanOverdueBank.getSid();
//申请编号规则:单据名称大写首字母+分公司编码+年份+月份+4位顺序号
//获取单据名称大写首字母+分公司编码+年份+月份
String billNo = getApplyCode(orgPath);
loanOverdueBank.setBillNo(billNo);
baseMapper.insert(loanOverdueBank);
} else {
LoanOverdueBank loanOverdueBank = fetchBySid(sid);
@ -474,6 +481,25 @@ public class LoanOverdueBankService extends MybatisBaseService<LoanOverdueBankMa
return rb.success().setData(sid);
}
private String getApplyCode(String orgPath) {
//获取分公司sid
ResultBean<String> resultBean = sysStaffOrgFeign.getOrgSidByPath(orgPath);
ResultBean<SysOrganizationVo> resultBean1 = sysOrganizationFeign.fetchBySid(resultBean.getData());
String orgCode = resultBean1.getData().getOrgCode();
BillNo b = new BillNo();
b.setOrgCode(orgCode);
b.setBillType(BillTypeEnum.YQZF.getBillType());
String bill = Rule.getBill(b);
String i = baseMapper.selectNum(bill);
String billNo = "";
if (StringUtils.isNotBlank(i)) {
billNo = Rule.getBillNo(bill, Integer.valueOf(i).intValue());
} else {
billNo = Rule.getBillNo(bill, 0);
}
return billNo;
}
public PagerVo<LoanOverdueBankVo> listPageVo(PagerQuery<LoanOverdueBankQuery> pq) {
LoanOverdueBankQuery query = pq.getParams();
QueryWrapper<LoanOverdueBank> qw = new QueryWrapper<>();

2
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanoverduefin/LoanOverdueFinMapper.java

@ -33,4 +33,6 @@ public interface LoanOverdueFinMapper extends BaseMapper<LoanOverdueFin> {
List<LoanOverdueFinDetailsDto> detailsList(@Param("useOrgSid") String useOrgSid, @Param(Constants.WRAPPER) QueryWrapper qw, @Param("stopDate") String stopDate);
LoanOverdueFinAppVo getAppDetails(String sid);
String selectNum(String bill);
}

8
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanoverduefin/LoanOverdueFinMapper.xml

@ -128,4 +128,12 @@
from loan_overdue_fin lf
where lf.sid = #{sid}
</select>
<select id="selectNum" resultType="java.lang.String">
select RIGHT(billNo, 4)
from loan_overdue_fin
where billNo LIKE concat(#{bill}, '%')
order by id desc
limit 1
</select>
</mapper>

5
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanoverduefin/LoanOverdueFinRest.java

@ -71,6 +71,11 @@ public class LoanOverdueFinRest implements LoanOverdueFinFeign {
ExportExcelUtils.export(fileNameURL, list, DownloadExcelVo.class, response);
}
@Override
public ResultBean<String> overdueCreatePdf(String sid) {
return loanOverdueFinService.overdueCreatePdf(sid);
}
@Override
public ResultBean<List<ExcelFinVo>> getExcelInfo(MultipartFile file, HttpServletRequest request,String useOrgSid) throws IOException {
return loanOverdueFinService.getExcelInfo(file, request,useOrgSid);

195
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanoverduefin/LoanOverdueFinService.java

@ -8,7 +8,11 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.yxt.anrui.base.api.basepurchasesystem.BasePurchaseSystemDetailsVo;
import com.yxt.anrui.base.api.busvehicleapply.BusVehicleApplyVo;
import com.yxt.anrui.base.common.enums.BillTypeEnum;
import com.yxt.anrui.base.common.utils.Rule;
import com.yxt.anrui.base.common.utils.domain.BillNo;
import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrder;
import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicleFeign;
import com.yxt.anrui.flowable.api.flow.FlowableFeign;
import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo;
import com.yxt.anrui.flowable.api.flow2.FlowDelegateQuery;
@ -18,6 +22,7 @@ import com.yxt.anrui.flowable.api.flowtask.FlowTaskVo;
import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo;
import com.yxt.anrui.flowable.api.utils.ProcDefEnum;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.anrui.portal.api.flow.PCHistTaskListAndCommentList;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign;
@ -25,6 +30,11 @@ import com.yxt.anrui.portal.api.sysuser.PrivilegeQuery;
import com.yxt.anrui.portal.api.sysuser.SysUserFeign;
import com.yxt.anrui.portal.api.sysuser.SysUserVo;
import com.yxt.anrui.riskcenter.api.loanbepadsincereapply.ReturnExcelInfo;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.LoanBuckleApply;
import com.yxt.anrui.riskcenter.api.loanbuckleapplyrecord.LoanBuckleApplyRecord;
import com.yxt.anrui.riskcenter.api.loanfile.LoanFile;
import com.yxt.anrui.riskcenter.api.loanfile.LoanFileEnum;
import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.MonthlyAccrualSourceLCVo;
import com.yxt.anrui.riskcenter.api.loanoverduefin.*;
import com.yxt.anrui.riskcenter.api.loanoverduefin.flowable.OverFinApplyDelegateQuery;
import com.yxt.anrui.riskcenter.api.loanoverduefin.flowable.OverdueApplyNodeQuery;
@ -32,17 +42,25 @@ import com.yxt.anrui.riskcenter.api.loanoverduefin.flowable.OverdueApplyNodeVo;
import com.yxt.anrui.riskcenter.api.loanoverduefin.flowable.OverdueApplyTaskQuery;
import com.yxt.anrui.riskcenter.api.loanoverduefindetails.LoanOverdueFinAppDetailsVo;
import com.yxt.anrui.riskcenter.api.loanoverduefindetails.LoanOverdueFinDetailsDto;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails;
import com.yxt.anrui.riskcenter.api.loanrepaymentschedule.LoanRepaymentScheduleDetailsVo;
import com.yxt.anrui.riskcenter.biz.loanoverduefindetails.LoanOverdueFinDetailsService;
import com.yxt.anrui.riskcenter.biz.loanrepaymentplandetails.LoanRepaymentPlanDetailsService;
import com.yxt.common.base.config.component.DocPdfComponent;
import com.yxt.common.base.config.component.FileUploadComponent;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.ConstantUtils;
import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.base.utils.WordConvertUtils;
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.message.Message;
import com.yxt.messagecenter.api.message.MessageFeign;
import com.yxt.messagecenter.api.message.MessageFlowVo;
import com.yxt.messagecenter.api.message.MessageFlowableQuery;
import com.yxt.messagecenter.api.messagelist.MessageList;
import com.yxt.messagecenter.api.messagelist.MessageListFeign;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
@ -63,6 +81,8 @@ import java.util.*;
import java.util.concurrent.*;
import java.util.stream.Collectors;
import static java.util.Comparator.comparing;
/**
* @description:
* @author: dimengzhe
@ -71,6 +91,10 @@ import java.util.stream.Collectors;
@Service
public class LoanOverdueFinService extends MybatisBaseService<LoanOverdueFinMapper, LoanOverdueFin> {
@Autowired
private MessageListFeign messageListFeign;
@Autowired
private com.yxt.anrui.portal.api.flow.FlowableFeign flowableFeignPro;
@Autowired
private SysUserFeign sysUserFeign;
@Autowired
@ -89,6 +113,10 @@ public class LoanOverdueFinService extends MybatisBaseService<LoanOverdueFinMapp
private FlowTaskFeign flowTaskFeign;
@Autowired
private FlowableFeign flowableFeign;
@Autowired
private LoanRepaymentPlanDetailsService loanRepaymentPlanDetailsService;
@Autowired
private DocPdfComponent docPdfComponent;
public PagerVo<LoanOverdueFinVo> listPageVo(PagerQuery<LoanOverdueFinQuery> pq) {
LoanOverdueFinQuery query = pq.getParams();
@ -214,6 +242,10 @@ public class LoanOverdueFinService extends MybatisBaseService<LoanOverdueFinMapp
loanOverdueFinDetailsService.saveOrUpdateDetails(detailsVoList, loanOverdueFin.getSid());
}
sid = loanOverdueFin.getSid();
//申请编号规则:单据名称大写首字母+分公司编码+年份+月份+4位顺序号
//获取单据名称大写首字母+分公司编码+年份+月份
String billNo = getApplyCode(orgPath);
loanOverdueFin.setBillNo(billNo);
baseMapper.insert(loanOverdueFin);
} else {
LoanOverdueFin loanOverdueFin = fetchBySid(sid);
@ -237,7 +269,7 @@ public class LoanOverdueFinService extends MybatisBaseService<LoanOverdueFinMapp
detailsVoList.removeAll(Collections.singleton(null));
if (!detailsVoList.isEmpty()) {
loanOverdueFinDetailsService.saveOrUpdateDetails(detailsVoList, loanOverdueFin.getSid());
}else{
} else {
loanOverdueFinDetailsService.deleteByMainSid(sid);
}
baseMapper.updateById(loanOverdueFin);
@ -245,6 +277,25 @@ public class LoanOverdueFinService extends MybatisBaseService<LoanOverdueFinMapp
return rb.success().setData(sid);
}
private String getApplyCode(String orgPath) {
//获取分公司sid
ResultBean<String> resultBean = sysStaffOrgFeign.getOrgSidByPath(orgPath);
ResultBean<SysOrganizationVo> resultBean1 = sysOrganizationFeign.fetchBySid(resultBean.getData());
String orgCode = resultBean1.getData().getOrgCode();
BillNo b = new BillNo();
b.setOrgCode(orgCode);
b.setBillType(BillTypeEnum.YQCW.getBillType());
String bill = Rule.getBill(b);
String i = baseMapper.selectNum(bill);
String billNo = "";
if (StringUtils.isNotBlank(i)) {
billNo = Rule.getBillNo(bill, Integer.valueOf(i).intValue());
} else {
billNo = Rule.getBillNo(bill, 0);
}
return billNo;
}
/* public ResultBean<LoanOverdueFinDetailVo> details(String sid) {
ResultBean<LoanOverdueFinDetailVo> rb = ResultBean.fireFail();
LoanOverdueFin loanOverdueFin = fetchBySid(sid);
@ -785,8 +836,8 @@ public class LoanOverdueFinService extends MybatisBaseService<LoanOverdueFinMapp
if (StringUtils.isBlank(excelFinVo.getTiredDeficiency())) {
checkWord.add("财务累欠金额不能为空");
}
if(!excelFinVo.getCustomerName().contains(excelFinVo.getVinNo())){
checkWord.add("财务中客户名称"+excelFinVo.getCustomerName()+"不正确,请检查");
if (!excelFinVo.getCustomerName().contains(excelFinVo.getVinNo())) {
checkWord.add("财务中客户名称" + excelFinVo.getCustomerName() + "不正确,请检查");
}
List<LoanRepaymentScheduleDetailsVo> loanRepaymentScheduleDetailsVos = loanOverdueFinDetailsService.selectByCustomerNo(excelFinVo.getCustomerNo(), useOrgSid);
loanRepaymentScheduleDetailsVos.removeAll(Collections.singleton(null));
@ -868,4 +919,142 @@ public class LoanOverdueFinService extends MybatisBaseService<LoanOverdueFinMapp
}
return rb.success().setData(loanOverdueFinAppVo);
}
public ResultBean<String> overdueCreatePdf(String sid) {
ResultBean rb = ResultBean.fireFail();
String finalPath = "";
Map<String, Object> dataMap = new HashMap();
List<Map<String, Object>> newList = new ArrayList<>();
LoanOverdueFin data = fetchBySid(sid);
if (null != data) {
if (!data.getNodeState().equals("已办结")) {
return rb.setMsg("无法下载没有办结的审批记录。");
}
dataMap.put("createTime", DateUtil.formatDate(data.getCreateTime()));
if (StringUtils.isNotBlank(data.getUseOrgName())) {
dataMap.put("company", data.getUseOrgName());
}
if (StringUtils.isNotBlank(data.getCreateByName())) {
dataMap.put("applyName", data.getCreateByName());
}
if (StringUtils.isNotBlank(data.getCreateDept())) {
dataMap.put("dept", data.getCreateDept());
}
if (StringUtils.isNotBlank(data.getRemarks())) {
dataMap.put("remarks", data.getRemarks());
}
if (StringUtils.isNotBlank(data.getFiles())) {
dataMap.put("filePath", data.getFiles());
}
if (StringUtils.isNotBlank(data.getStopDate())) {
dataMap.put("endTime", data.getStopDate());
}
if (StringUtils.isNotBlank(data.getBillNo())) {
dataMap.put("billNo", data.getBillNo());
}
//获取审批记录
if (StringUtils.isNotBlank(data.getProcInstId())) {
List<PCHistTaskListAndCommentList> flowRecordVo = flowableFeignPro.flowRecordAndComment(data.getProcInstId(), "1").getData();
List<MonthlyAccrualSourceLCVo> sourceLCVos = new ArrayList<>();
for (PCHistTaskListAndCommentList flowTask : flowRecordVo) {
if (flowTask.getFlowableRecordVo() != null) {
Map<String, Object> flowableRecordVo = flowTask.getFlowableRecordVo();
MonthlyAccrualSourceLCVo sourceLCVo = new MonthlyAccrualSourceLCVo();
List<Map<String, Object>> taskUserInfos = ConstantUtils.getListData(flowableRecordVo, "taskUserInfos");
Map<String, Object> comment = ConstantUtils.getMap(flowableRecordVo, "comment");
String assigneeName = (String) taskUserInfos.get(0).get("assigneeName");
String comment1 = (String) comment.get("comment");
sourceLCVo.setName(assigneeName);
sourceLCVo.setComment(comment1);
sourceLCVo.setSpsj(flowableRecordVo.get("finishTime").toString());
sourceLCVos.add(sourceLCVo);
} else {
Map<String, Object> processCommentVo = flowTask.getProcessCommentVo();
MonthlyAccrualSourceLCVo sourceLCVo = new MonthlyAccrualSourceLCVo();
sourceLCVo.setName(processCommentVo.get("title").toString());
sourceLCVo.setComment(processCommentVo.get("content").toString());
sourceLCVo.setSpsj(processCommentVo.get("time").toString());
sourceLCVos.add(sourceLCVo);
}
}
List<Message> messages = messageFeign.selectByBusinessSid(data.getSid()).getData();
if (messages.size() > 0) {
for (Message message : messages) {
MonthlyAccrualSourceLCVo sourceLCVo = new MonthlyAccrualSourceLCVo();
String receiverNames = "";
List<MessageList> messageLists = messageListFeign.fetchByMainSid(message.getSid()).getData();
if (messageLists.size() > 0) {
for (MessageList messageList : messageLists) {
receiverNames = receiverNames + messageList.getReceiverName() + ",";
}
}
sourceLCVo.setName("系统");
sourceLCVo.setComment("抄送 " + receiverNames.substring(0, receiverNames.lastIndexOf(",")));
sourceLCVo.setSpsj(DateUtil.format(message.getCreateTime(), "yyyy-MM-dd HH:mm:ss"));
sourceLCVos.add(sourceLCVo);
}
}
sourceLCVos.sort(comparing(MonthlyAccrualSourceLCVo::getSpsj));
dataMap.put("lcList", sourceLCVos);
}
List<LoanOverdueFinDetailsDto> records = loanOverdueFinDetailsService.selectByMainSid(sid);
if (!records.isEmpty()) {
int sortNo = 1;
for (LoanOverdueFinDetailsDto applyRecord : records) {
Map<String, Object> map = new HashMap<>();
LoanRepaymentPlanDetails details = loanRepaymentPlanDetailsService.fetchMainBankByBusVinSid(applyRecord.getBusVinSid());
if (null != details) {
map.put("sortNo", String.valueOf(sortNo++));
if (StringUtils.isNotBlank(details.getLoanContractNo())) {
map.put("loanNo", details.getLoanContractNo());
}
if (StringUtils.isNotBlank(details.getVinNo())) {
map.put("vinNo", details.getVinNo());
}
if (StringUtils.isNotBlank(details.getBorrowerName())) {
map.put("borrowerName", details.getBorrowerName());
}
if (StringUtils.isNotBlank(details.getDept())) {
map.put("saleDept", details.getDept());
}
if (StringUtils.isNotBlank(applyRecord.getOverdueMoney())) {
map.put("overDueMoney", applyRecord.getOverdueMoney());
}
if (StringUtils.isNotBlank(applyRecord.getTiredDeficiency())) {
map.put("tiredMoney", applyRecord.getTiredDeficiency());
}
if (StringUtils.isNotBlank(applyRecord.getDiffMoney())) {
map.put("diffMoney", applyRecord.getDiffMoney());
}
}
newList.add(map);
}
}
dataMap.put("newList", newList);
String temp = "/template/";
String targetPath = docPdfComponent.getUploadTemplateUrl();
try {
//获取模板
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("ftl/vouchers/overDue.ftl");
//生成word文件名
String dateStr = DateUtil.format(new Date(), "yyyyMMdd");
long seconds = System.currentTimeMillis();
String typeName = dateStr + seconds + ".doc";
File file = new File(targetPath + "templateVouchers" + seconds + ".ftl");
File dir = new File(targetPath);
WordConvertUtils.inputStreamToFile(inputStream, file);
WordConvertUtils.creatWord1(dataMap, file, targetPath, typeName, dir);
//新生成的word路径
String wordPath = targetPath + typeName;
String pdfName = "逾期对账审批" + dateStr + seconds + ".pdf";
WordConvertUtils.doc2pdf(wordPath, targetPath, pdfName);
finalPath = temp + pdfName;
} catch (NoClassDefFoundError e) {
e.printStackTrace();
finalPath = targetPath;
}
}
return rb.success().setData(finalPath);
}
}

4
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryService.java

@ -935,7 +935,9 @@ public class LoanRepaymentHistoryService extends MybatisBaseService<LoanRepaymen
qw.ne("h.buckleKey", "002");
qw.ne("h.buckleKey", "003");
qw.eq("h.updateState", "1");
qw.notIn("h.sid", selNotRuleForBuckSids);
if (!selNotRuleForBuckSids.isEmpty()) {
qw.notIn("h.sid", selNotRuleForBuckSids);
}
List<RepaymentHistoryVoForBuckle> histories = baseMapper.selbuckleNewInitList(qw);
Map<String, BigDecimal> countMoney = new HashMap<>();
Map<String, List<String>> sids = new HashMap<>();

2
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentplandetails/LoanRepaymentPlanDetailsMapper.java

@ -77,4 +77,6 @@ public interface LoanRepaymentPlanDetailsMapper extends BaseMapper<LoanRepayment
LoanPlanDetailsVoForFundVoucher pushFund(@Param("busVinSid") String busVinSid);
List<LoanPlanDetailsVoForLateVoucher> selPushLaterVoucherOnBuckle(@Param("planSids") List<String> planSids);
LoanRepaymentPlanDetails fetchMainBankByBusVinSid(@Param("busVinSid") String busVinSid);
}

4
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentplandetails/LoanRepaymentPlanDetailsMapper.xml

@ -770,4 +770,8 @@
#{item}
</foreach>
</select>
<select id="fetchMainBankByBusVinSid"
resultType="com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails">
select * from loan_repayment_plan_details where busVinSid =#{busVinSid} and policyOrOther = '0' limit 1
</select>
</mapper>

4
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentplandetails/LoanRepaymentPlanDetailsService.java

@ -313,4 +313,8 @@ public class LoanRepaymentPlanDetailsService extends MybatisBaseService<LoanRepa
public LoanPlanDetailsVoForFundVoucher getLoanPlanDetailsVoForFundVoucher(String busVinSid) {
return baseMapper.pushFund(busVinSid);
}
public LoanRepaymentPlanDetails fetchMainBankByBusVinSid(String busVinSid) {
return baseMapper.fetchMainBankByBusVinSid(busVinSid);
}
}

2
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentschedule/LoanRepaymentScheduleService.java

@ -1888,7 +1888,7 @@ public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepayme
} else if (pdfList.size() >= 3) {
for (int i = 0; i < num; i++) {
List<LoanVoucherPdf> newPdfList = new ArrayList<>();
if (i == num - 1) {
if (i == num - 1 && num != 1) {
String page = "";
if (c == 1) {
page = "1";

103
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansolutions/LoanSolutionsService.java

@ -82,9 +82,9 @@ public class LoanSolutionsService extends MybatisBaseService<LoanSolutionsMapper
if (loanSolutionsDetail != null) {
BeanUtil.copyProperties(loanSolutionsDetail, solutionsDetailsVo);
}
if(StringUtils.isNotBlank(loanSolutions.getPolicySid())){
if (StringUtils.isNotBlank(loanSolutions.getPolicySid())) {
LoanFinPolicy loanFinPolicy = loanFinPolicyService.fetchBySid(loanSolutions.getPolicySid());
if(loanFinPolicy != null){
if (loanFinPolicy != null) {
solutionsDetailsVo.setBondTypeKey(loanFinPolicy.getBondTypeKey());
}
}
@ -1038,9 +1038,9 @@ public class LoanSolutionsService extends MybatisBaseService<LoanSolutionsMapper
return rb;
}
BeanUtil.copyProperties(loanSolutions, solutionsDetailsVo);
if(StringUtils.isNotBlank(loanSolutions.getPolicySid())){
if (StringUtils.isNotBlank(loanSolutions.getPolicySid())) {
LoanFinPolicy loanFinPolicy = loanFinPolicyService.fetchBySid(loanSolutions.getPolicySid());
if(loanFinPolicy != null){
if (loanFinPolicy != null) {
solutionsDetailsVo.setBondTypeKey(loanFinPolicy.getBondTypeKey());
}
}
@ -1228,14 +1228,17 @@ public class LoanSolutionsService extends MybatisBaseService<LoanSolutionsMapper
boolean isOrder = false;
BigDecimal orderPrice = BigDecimal.ZERO;
BusSalesOrder busSalesOrder = baseMapper.seletByBusSids(busSid);
if(busSalesOrder != null){
if (busSalesOrder != null) {
isOrder = true;
BusSalesOrderPrice busSalesOrderPrice = baseMapper.selectByPriceSid(busSid);
if(busSalesOrderPrice == null){
if (busSalesOrderPrice == null) {
return rb.setMsg("请先录入价格信息");
}
orderPrice = busSalesOrderPrice.getSingleFinalPrice();
}
//(合同价+挂车+购置税+保险)
BigDecimal bilAll = BigDecimal.ZERO;
bilAll = bilAll.add(orderPrice);
CalculateVo calculateVo = new CalculateVo();
//计算的初始化
BigDecimal loanTotal = BigDecimal.ZERO;//融资项目总额
@ -1249,6 +1252,8 @@ public class LoanSolutionsService extends MybatisBaseService<LoanSolutionsMapper
BigDecimal vehTotalPrice = BigDecimal.ZERO;
BigDecimal interstAll = BigDecimal.ZERO;
BigDecimal yueAll = BigDecimal.ZERO;
//配件抵顶项
BigDecimal offsetAccessoriesBig = BigDecimal.ZERO;
/***************相关计算及字段*****************/
BigDecimal AmountAll = BigDecimal.ZERO;
@ -1280,22 +1285,26 @@ public class LoanSolutionsService extends MybatisBaseService<LoanSolutionsMapper
//主车发票价
loanTotal = loanTotal.add(new BigDecimal(mainVehicleAmount));
AmountAll = AmountAll.add(new BigDecimal(mainVehicleAmount));
offsetAccessoriesBig = offsetAccessoriesBig.add(new BigDecimal(mainVehicleAmount));
}
if (accessoriesAmountCb) {//包含配件
if (StringUtils.isNotBlank(accessoriesAmount)) {
loanTotal = loanTotal.add(new BigDecimal(accessoriesAmount));
AmountAll = AmountAll.add(new BigDecimal(accessoriesAmount));
offsetAccessoriesBig = offsetAccessoriesBig.add(new BigDecimal(accessoriesAmount));
}
}
if(isOrder){
offsetAccessoriesBig = offsetAccessoriesBig.subtract(orderPrice);
if (isOrder) {
//判断成交价与主车发票价和配件之和
if(AmountAll.compareTo(orderPrice)<0){
if (AmountAll.compareTo(orderPrice) < 0) {
return rb.setMsg("主车发票价与配件之和不能小于订单成交价");
}
}
if (trailerAmountCb) {//包含挂车
if (StringUtils.isNotBlank(trailerAmount)) {
loanTotal = loanTotal.add(new BigDecimal(trailerAmount));
bilAll = bilAll.add(new BigDecimal(trailerAmount));
}
}
//判断是否打包
@ -1303,6 +1312,7 @@ public class LoanSolutionsService extends MybatisBaseService<LoanSolutionsMapper
if (premiumCb) {//包含保险
if (StringUtils.isNotBlank(premium)) {
loanTotal = loanTotal.add(new BigDecimal(premium));
bilAll = bilAll.add(new BigDecimal(premium));
}
} else {
if (StringUtils.isNotBlank(premium)) {
@ -1312,6 +1322,7 @@ public class LoanSolutionsService extends MybatisBaseService<LoanSolutionsMapper
if (purchaseTaxCb) {//包含购置税
if (StringUtils.isNotBlank(purchaseTax)) {
loanTotal = loanTotal.add(new BigDecimal(purchaseTax));
bilAll = bilAll.add(new BigDecimal(purchaseTax));
}
} else {
if (StringUtils.isNotBlank(purchaseTax)) {
@ -1351,9 +1362,9 @@ public class LoanSolutionsService extends MybatisBaseService<LoanSolutionsMapper
actualDiscount = actualDiscount.add(loanInterest);
//根据旧利息总额和厂家贴息计算新利息总额
BigDecimal loanInterestNew = loanInterest.subtract(new BigDecimal(factoryDiscount));
if(loanInterestNew.compareTo(BigDecimal.ZERO)<0){
if (loanInterestNew.compareTo(BigDecimal.ZERO) < 0) {
actualDiscount = actualDiscount.subtract(BigDecimal.ZERO);
}else{
} else {
actualDiscount = actualDiscount.subtract(loanInterestNew);
}
//再根据厂家贴息、旧月还计算新月还金额 = 旧月还金额 减去 厂家贴息 除以 期数
@ -1446,9 +1457,9 @@ public class LoanSolutionsService extends MybatisBaseService<LoanSolutionsMapper
otherActualDiscount = otherActualDiscount.add(otherPolicyInterest);
//根据旧利息总额和厂家贴息计算新利息总额
BigDecimal otherPolicyInterestNew = otherPolicyInterest.subtract(new BigDecimal(otherDiscount));
if(otherPolicyInterestNew.compareTo(BigDecimal.ZERO)<0){
if (otherPolicyInterestNew.compareTo(BigDecimal.ZERO) < 0) {
otherActualDiscount = otherActualDiscount.subtract(BigDecimal.ZERO);
}else{
} else {
otherActualDiscount = otherActualDiscount.subtract(otherPolicyInterestNew);
}
//再根据厂家贴息、旧月还计算新月还金额 = 旧月还金额 减去 厂家贴息 除以 期数
@ -1502,10 +1513,18 @@ public class LoanSolutionsService extends MybatisBaseService<LoanSolutionsMapper
} else {
otherPolicyPeriod = "0";
}
if (offsetAccessoriesBig.compareTo(BigDecimal.ZERO) > 0) {
calculateVo.setOffsetAccessories(offsetAccessoriesBig.toString());
} else {
offsetAccessoriesBig = BigDecimal.ZERO;
calculateVo.setOffsetAccessories(offsetAccessoriesBig.toString());
}
/************************计算融资首付********************************/
calculateVo.setLoanDownPay(loanDownPay.setScale(0, BigDecimal.ROUND_HALF_UP).toString());
//实际首付比例 = (融资首付/融资项目总额)x100
downPayAmountsRatio = loanDownPay.divide(loanTotal, 4, BigDecimal.ROUND_CEILING).multiply(new BigDecimal("100"));
// downPayAmountsRatio = loanDownPay.divide(loanTotal, 4, BigDecimal.ROUND_CEILING).multiply(new BigDecimal("100"));
downPayAmountsRatio = loanDownPay.divide(bilAll, 4, BigDecimal.ROUND_CEILING).multiply(new BigDecimal("100"));
downPayAmountsRatio = downPayAmountsRatio.setScale(2, BigDecimal.ROUND_HALF_UP);
calculateVo.setDownPayAmountsRatio(downPayAmountsRatio.toString());
if (otherPolicyState) {//包含
@ -1658,6 +1677,7 @@ public class LoanSolutionsService extends MybatisBaseService<LoanSolutionsMapper
if (StringUtils.isNotBlank(offsetPurchasetax)) {
offsetTotal = offsetTotal.add(new BigDecimal(offsetPurchasetax));
}
offsetTotal = offsetTotal.add(offsetAccessoriesBig);
calculateVo.setOffsetTotal(offsetTotal.toString());
//实收合计 = 应收合计-抵顶合计
BigDecimal realTotal = receivableTotal.subtract(offsetTotal);
@ -1776,9 +1796,9 @@ public class LoanSolutionsService extends MybatisBaseService<LoanSolutionsMapper
BeanUtil.copyProperties(loanSolutionsDetail, solutionssVo);
}
isTrue = true;
if(StringUtils.isNotBlank(loanSolutions.getPolicySid())){
if (StringUtils.isNotBlank(loanSolutions.getPolicySid())) {
LoanFinPolicy loanFinPolicy = loanFinPolicyService.fetchBySid(loanSolutions.getPolicySid());
if(loanFinPolicy != null){
if (loanFinPolicy != null) {
solutionssVo.setBondTypeKey(loanFinPolicy.getBondTypeKey());
}
}
@ -2036,8 +2056,8 @@ public class LoanSolutionsService extends MybatisBaseService<LoanSolutionsMapper
StringBuilder factoryDiscountValue = new StringBuilder();
if (StringUtils.isNotBlank(solutionssVo.getFactoryDiscount())) {
factoryDiscountValue = factoryDiscountValue.append("厂家贴息:").append(solutionssVo.getFactoryDiscount());
if(StringUtils.isNotBlank(solutionssVo.getActualDiscount())){
if(new BigDecimal(solutionssVo.getActualDiscount()).compareTo(BigDecimal.ZERO) != 0){
if (StringUtils.isNotBlank(solutionssVo.getActualDiscount())) {
if (new BigDecimal(solutionssVo.getActualDiscount()).compareTo(BigDecimal.ZERO) != 0) {
factoryDiscountValue = factoryDiscountValue.append("(实贴").append(solutionssVo.getActualDiscount()).append(")");
}
}
@ -2140,8 +2160,8 @@ public class LoanSolutionsService extends MybatisBaseService<LoanSolutionsMapper
StringBuilder otherDiscountValue = new StringBuilder();
if (StringUtils.isNotBlank(solutionssVo.getOtherDiscount())) {
otherDiscountValue = otherDiscountValue.append("其它融贴息:").append(solutionssVo.getOtherDiscount());
if(StringUtils.isNotBlank(solutionssVo.getOtherActualDiscount())){
if(new BigDecimal(solutionssVo.getOtherActualDiscount()).compareTo(BigDecimal.ZERO) != 0){
if (StringUtils.isNotBlank(solutionssVo.getOtherActualDiscount())) {
if (new BigDecimal(solutionssVo.getOtherActualDiscount()).compareTo(BigDecimal.ZERO) != 0) {
otherDiscountValue = otherDiscountValue.append("(实贴").append(solutionssVo.getOtherActualDiscount()).append(")");
}
}
@ -2322,7 +2342,6 @@ public class LoanSolutionsService extends MybatisBaseService<LoanSolutionsMapper
} else {
proxyPremiumValue = proxyPremiumValue.append("代收首年保险费:").append("-");
}
list.add(getValueSpanSize(proxyPremiumValue.toString(), 1, 0, false));
//代收购置税
StringBuilder proxyPurchasetaxValue = new StringBuilder();
if (StringUtils.isNotBlank(solutionssVo.getProxyPurchasetax())) {
@ -2330,7 +2349,12 @@ public class LoanSolutionsService extends MybatisBaseService<LoanSolutionsMapper
} else {
proxyPurchasetaxValue = proxyPurchasetaxValue.append("代收购置税:").append("-");
}
list.add(getValueSpanSize(proxyPurchasetaxValue.toString(), 1, 0, false));
if (StringUtils.isNotBlank(solutionssVo.getProxyTotal())) {
if (new BigDecimal(solutionssVo.getProxyTotal()).compareTo(BigDecimal.ZERO) > 0) {
list.add(getValueSpanSize(proxyPremiumValue.toString(), 1, 0, false));
list.add(getValueSpanSize(proxyPurchasetaxValue.toString(), 1, 0, false));
}
}
//应收合计
StringBuilder receivableTotalValue = new StringBuilder();
if (StringUtils.isNotBlank(solutionssVo.getReceivableTotal())) {
@ -2355,7 +2379,7 @@ public class LoanSolutionsService extends MybatisBaseService<LoanSolutionsMapper
} else {
offsetPremiumValue = offsetPremiumValue.append("抵顶首年保险费:").append("-");
}
list.add(getValueSpanSize(offsetPremiumValue.toString(), 1, 0, false));
//抵顶购置税
StringBuilder offsetPurchasetaxValue = new StringBuilder();
if (StringUtils.isNotBlank(solutionssVo.getOffsetPurchasetax())) {
@ -2363,7 +2387,21 @@ public class LoanSolutionsService extends MybatisBaseService<LoanSolutionsMapper
} else {
offsetPurchasetaxValue = offsetPurchasetaxValue.append("抵顶购置税:").append("-");
}
list.add(getValueSpanSize(offsetPurchasetaxValue.toString(), 1, 0, false));
//配件抵顶
StringBuilder offsetAccessoriesValue = new StringBuilder();
if (StringUtils.isNotBlank(solutionssVo.getOffsetAccessories())) {
offsetAccessoriesValue = offsetAccessoriesValue.append("配件抵顶:").append(solutionssVo.getOffsetAccessories());
}else{
offsetAccessoriesValue = offsetAccessoriesValue.append("配件抵顶:").append("-");
}
if (StringUtils.isNotBlank(solutionssVo.getOffsetTotal())) {
if (new BigDecimal(solutionssVo.getOffsetTotal()).compareTo(BigDecimal.ZERO) > 0) {
list.add(getValueSpanSize(offsetPremiumValue.toString(), 1, 0, false));
list.add(getValueSpanSize(offsetPurchasetaxValue.toString(), 1, 0, false));
list.add(getValueSpanSize(offsetAccessoriesValue.toString(), 1, 0, false));
}
}
//实收合计
StringBuilder realTotalValue = new StringBuilder();
if (StringUtils.isNotBlank(solutionssVo.getRealTotal())) {
@ -2612,9 +2650,9 @@ public class LoanSolutionsService extends MybatisBaseService<LoanSolutionsMapper
if (loanSolutions != null) {
solutionssVo = new SolutionssVo();
BeanUtil.copyProperties(loanSolutions, solutionssVo);
if(StringUtils.isNotBlank(loanSolutions.getPolicySid())){
if (StringUtils.isNotBlank(loanSolutions.getPolicySid())) {
LoanFinPolicy loanFinPolicy = loanFinPolicyService.fetchBySid(loanSolutions.getPolicySid());
if(loanFinPolicy != null){
if (loanFinPolicy != null) {
solutionssVo.setBondTypeKey(loanFinPolicy.getBondTypeKey());
}
}
@ -2719,9 +2757,12 @@ public class LoanSolutionsService extends MybatisBaseService<LoanSolutionsMapper
public ResultBean<PushVo> selectMoney(String saleOrderSid) {
ResultBean<PushVo> rb = ResultBean.fireFail();
PushVo pushVo = new PushVo();
//融资放款=融资项目总额-融资首付-[贷款保证金]-[厂家贴息]
//根据选择的产品政策来判断,若贷款保证金为固定的,需要减去,若为敞口的,不需要减;
// 差额放款需要减厂家贴息,全额放款不需要。差额放款的厂家贴息金额存入“其他应收”字段中,
//生成业务系统融资放款
//应收由原来的融资项目总额-融资首付-[固定贷款保证金]-[厂家贴
//息]-[其他融厂家贴息]调整为融资项目总额-融资首付。
//差额放款的
//主产品实际贴息金额+其他融实际贴息金额+固定类型贷款保证金+意
//外险之和存入业务系统融资放款的其他应收字段中。
BigDecimal bg = BigDecimal.ZERO;
BigDecimal zer = BigDecimal.ZERO;
LoanSolutions loanSolutions = baseMapper.selectBySaleOrderSid(saleOrderSid);
@ -2749,14 +2790,14 @@ public class LoanSolutionsService extends MybatisBaseService<LoanSolutionsMapper
// bg = bg.subtract(loanSolutions.getFactoryDiscount());
zer = zer.add(loanSolutions.getFactoryDiscount());
}
if(loanSolutionsOtherpolicy.getOtherDiscount() != null){
if (loanSolutionsOtherpolicy.getOtherDiscount() != null) {
// bg = bg.subtract(loanSolutionsOtherpolicy.getOtherDiscount());
zer = zer.add(loanSolutionsOtherpolicy.getOtherDiscount());
}
}
LoanSolutionsDetail loanSolutionsDetail = loanSolutionsDetailService.selectLoanSid(loanSolutions.getSid());
if(loanSolutionsDetail != null){
if(loanSolutionsDetail.getProxyAccidentPremium() != null){
if (loanSolutionsDetail != null) {
if (loanSolutionsDetail.getProxyAccidentPremium() != null) {
zer = zer.add(loanSolutionsDetail.getProxyAccidentPremium());
}
}

3
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentapply/LoanTransferPaymentApplyMapper.xml

@ -69,7 +69,8 @@
r.accountType,
r.accountTypeKey,
r.account,
r.accountNumber
r.accountNumber,
p.dept as salesDept
FROM loan_repayment_history AS h
LEFT JOIN loan_repayment_plan_details AS p ON h.planDetailSid = p.sid
LEFT JOIN loan_transfer_payment_record AS r ON h.sid = r.repaymentHistorySid

5
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentapply/LoanTransferPaymentApplyRest.java

@ -44,6 +44,11 @@ public class LoanTransferPaymentApplyRest implements LoanTransferPaymentApplyFei
return loanTransferPaymentApplyService.saveTransferPayment(dto);
}
@Override
public ResultBean<String> paymentCreatePdf(String sid) {
return loanTransferPaymentApplyService.paymentCreatePdf(sid);
}
@Override
public ResultBean<LoanTransferPaymentApplyInit> paymentDetails(String sid) {
return loanTransferPaymentApplyService.paymentDetails(sid);

195
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantransferpaymentapply/LoanTransferPaymentApplyService.java

@ -2,6 +2,7 @@ package com.yxt.anrui.riskcenter.biz.loantransferpaymentapply;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.math.Money;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -37,6 +38,7 @@ import com.yxt.anrui.flowable.api.flowtask.FlowTaskVo;
import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo;
import com.yxt.anrui.flowable.api.utils.ProcDefEnum;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.anrui.portal.api.flow.PCHistTaskListAndCommentList;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrg;
@ -44,12 +46,14 @@ import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign;
import com.yxt.anrui.portal.api.sysuser.PrivilegeQuery;
import com.yxt.anrui.portal.api.sysuser.SysUserFeign;
import com.yxt.anrui.portal.api.sysuser.SysUserVo;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.LoanBuckleApply;
import com.yxt.anrui.riskcenter.api.loanbuckleapplyrecord.LoanBuckleApplyRecord;
import com.yxt.anrui.riskcenter.api.loanfile.LoanFile;
import com.yxt.anrui.riskcenter.api.loanfile.LoanFileEnum;
import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.AppAccrualRecordVo;
import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.AppMonthAccrualDetailsVo;
import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.LoanMonthlyAccrualApply;
import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.MonthlyAccrualSourceLCVo;
import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualrecord.LoanMonthlyAccrualRecord;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistory;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails;
@ -60,21 +64,29 @@ import com.yxt.anrui.riskcenter.biz.loanfile.LoanFileService;
import com.yxt.anrui.riskcenter.biz.loanrepaymenthistory.LoanRepaymentHistoryService;
import com.yxt.anrui.riskcenter.biz.loanrepaymentplandetails.LoanRepaymentPlanDetailsService;
import com.yxt.anrui.riskcenter.biz.loantransferpaymentrecord.LoanTransferPaymentRecordService;
import com.yxt.common.base.config.component.DocPdfComponent;
import com.yxt.common.base.config.component.FileUploadComponent;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.ConstantUtils;
import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.base.utils.WordConvertUtils;
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.message.Message;
import com.yxt.messagecenter.api.message.MessageFeign;
import com.yxt.messagecenter.api.message.MessageFlowVo;
import com.yxt.messagecenter.api.message.MessageFlowableQuery;
import com.yxt.messagecenter.api.messagelist.MessageList;
import com.yxt.messagecenter.api.messagelist.MessageListFeign;
import io.swagger.annotations.ApiModelProperty;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.File;
import java.io.InputStream;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
@ -82,6 +94,8 @@ import java.util.concurrent.*;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import static java.util.Comparator.comparing;
/**
* @description:
* @author: fzz
@ -90,6 +104,12 @@ import java.util.stream.Collectors;
@Service
public class LoanTransferPaymentApplyService extends MybatisBaseService<LoanTransferPaymentApplyMapper, LoanTransferPaymentApply> {
@Autowired
private MessageListFeign messageListFeign;
@Autowired
private com.yxt.anrui.portal.api.flow.FlowableFeign flowableFeignPro;
@Autowired
private DocPdfComponent docPdfComponent;
@Autowired
private LoanTransferPaymentRecordService loanTransferPaymentRecordService;
@Autowired
@ -1277,4 +1297,179 @@ public class LoanTransferPaymentApplyService extends MybatisBaseService<LoanTran
}
public ResultBean<String> paymentCreatePdf(String sid) {
ResultBean rb = ResultBean.fireFail();
String finalPath = "";
String filePath = "";
Map<String, Object> dataMap = new HashMap();
List<Map<String, Object>> newList = new ArrayList<>();
LoanTransferPaymentApply data = fetchBySid(sid);
if (null != data) {
if (!data.getNodeState().equals("已办结")) {
return rb.setMsg("无法下载没有办结的审批记录。");
}
List<LoanFile> files = loanFileService.selectByLinkSid(data.getSid(), LoanFileEnum.TRANSFERPAYMENT.getAttachType());
if (!files.isEmpty()) {
List<String> stringList = new ArrayList<>();
for (LoanFile file : files) {
if (StringUtils.isNotBlank(file.getFileName()) && StringUtils.isNotBlank(file.getFileType())) {
stringList.add(file.getFileName() + "." + file.getFileType());
}
}
if (!stringList.isEmpty()) {
filePath = String.join(",", stringList);
}
}
if (null != data.getApplyDate()) {
dataMap.put("createTime", DateUtil.formatDate(data.getApplyDate()));
}
if (StringUtils.isNotBlank(data.getUseOrgName())) {
dataMap.put("company", data.getUseOrgName());
}
if (StringUtils.isNotBlank(data.getApplyName())) {
dataMap.put("applyName", data.getApplyName());
}
if (StringUtils.isNotBlank(data.getDept())) {
dataMap.put("dept", data.getDept());
}
if (StringUtils.isNotBlank(data.getBillNo())) {
dataMap.put("billNo", data.getBillNo());
}
if (StringUtils.isNotBlank(data.getPayForm())) {
dataMap.put("payWay", data.getPayForm());
}
if (StringUtils.isNotBlank(data.getPayRemarks())) {
dataMap.put("remarks", data.getPayRemarks());
}
if (StringUtils.isNotBlank(data.getRemarks())) {
dataMap.put("otherShow", data.getRemarks());
}
if (StringUtils.isNotBlank(filePath)) {
dataMap.put("filePath", filePath);
}
BigDecimal sumMoney = new BigDecimal(0);
//获取审批记录
if (StringUtils.isNotBlank(data.getProcInstId())) {
List<PCHistTaskListAndCommentList> flowRecordVo = flowableFeignPro.flowRecordAndComment(data.getProcInstId(), "1").getData();
List<MonthlyAccrualSourceLCVo> sourceLCVos = new ArrayList<>();
for (PCHistTaskListAndCommentList flowTask : flowRecordVo) {
if (flowTask.getFlowableRecordVo() != null) {
Map<String, Object> flowableRecordVo = flowTask.getFlowableRecordVo();
MonthlyAccrualSourceLCVo sourceLCVo = new MonthlyAccrualSourceLCVo();
List<Map<String, Object>> taskUserInfos = ConstantUtils.getListData(flowableRecordVo, "taskUserInfos");
Map<String, Object> comment = ConstantUtils.getMap(flowableRecordVo, "comment");
String assigneeName = (String) taskUserInfos.get(0).get("assigneeName");
String comment1 = (String) comment.get("comment");
sourceLCVo.setName(assigneeName);
sourceLCVo.setComment(comment1);
sourceLCVo.setSpsj(flowableRecordVo.get("finishTime").toString());
sourceLCVos.add(sourceLCVo);
} else {
Map<String, Object> processCommentVo = flowTask.getProcessCommentVo();
MonthlyAccrualSourceLCVo sourceLCVo = new MonthlyAccrualSourceLCVo();
sourceLCVo.setName(processCommentVo.get("title").toString());
sourceLCVo.setComment(processCommentVo.get("content").toString());
sourceLCVo.setSpsj(processCommentVo.get("time").toString());
sourceLCVos.add(sourceLCVo);
}
}
List<Message> messages = messageFeign.selectByBusinessSid(data.getSid()).getData();
if (messages.size() > 0) {
for (Message message : messages) {
MonthlyAccrualSourceLCVo sourceLCVo = new MonthlyAccrualSourceLCVo();
String receiverNames = "";
List<MessageList> messageLists = messageListFeign.fetchByMainSid(message.getSid()).getData();
if (messageLists.size() > 0) {
for (MessageList messageList : messageLists) {
receiverNames = receiverNames + messageList.getReceiverName() + ",";
}
}
sourceLCVo.setName("系统");
sourceLCVo.setComment("抄送 " + receiverNames.substring(0, receiverNames.lastIndexOf(",")));
sourceLCVo.setSpsj(DateUtil.format(message.getCreateTime(), "yyyy-MM-dd HH:mm:ss"));
sourceLCVos.add(sourceLCVo);
}
}
sourceLCVos.sort(comparing(MonthlyAccrualSourceLCVo::getSpsj));
dataMap.put("lcList", sourceLCVos);
}
List<LoanTransferPaymentRecord> records = loanTransferPaymentRecordService.selByMainSid(sid);
if (!records.isEmpty()) {
int sortNo = 1;
for (LoanTransferPaymentRecord applyRecord : records) {
Map<String, Object> map = new HashMap<>();
String recordSid = applyRecord.getRepaymentHistorySid();
LoanTransferPaymentRecordVo details = baseMapper.paymentDetails(applyRecord.getSid());
if (null != details) {
map.put("sortNo", String.valueOf(sortNo++));
if (StringUtils.isNotBlank(details.getLoanContractNo())) {
map.put("loanNo", details.getLoanContractNo());
}
if (StringUtils.isNotBlank(details.getVinNo())) {
map.put("vinNo", details.getVinNo());
}
if (StringUtils.isNotBlank(details.getBankName())) {
map.put("bankName", details.getBankName());
}
if (StringUtils.isNotBlank(details.getBankContractNo())) {
map.put("bankNo", details.getBankContractNo());
}
if (StringUtils.isNotBlank(details.getBorrowerName())) {
map.put("borrowerName", details.getBorrowerName());
}
if (StringUtils.isNotBlank(details.getPeriod())) {
map.put("period", details.getPeriod());
}
if (StringUtils.isNotBlank(details.getActualDate())) {
map.put("return", details.getActualDate());
}
if (StringUtils.isNotBlank(details.getActualMoney())) {
map.put("realMoney", details.getActualMoney());
}
if (StringUtils.isNotBlank(details.getAccountNumber())) {
map.put("accNumber", details.getAccountNumber());
}
BigDecimal money = new BigDecimal(0);
if (StringUtils.isNotBlank(details.getTransferPrincipal())) {
money = new BigDecimal(details.getTransferPrincipal());
}
if (StringUtils.isNotBlank(details.getDefaultInterest())) {
money = new BigDecimal(details.getDefaultInterest()).add(money);
}
map.put("transferMoney", money);
sumMoney = sumMoney.add(money);
if (StringUtils.isNotBlank(details.getSalesDept())) {
map.put("saleDept", details.getSalesDept());
}
}
newList.add(map);
}
dataMap.put("amount", sumMoney.toString());
}
dataMap.put("newList", newList);
String temp = "/template/";
String targetPath = docPdfComponent.getUploadTemplateUrl();
try {
//获取模板
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("ftl/vouchers/transferPay.ftl");
//生成word文件名
String dateStr = DateUtil.format(new Date(), "yyyyMMdd");
long seconds = System.currentTimeMillis();
String typeName = dateStr + seconds + ".doc";
File file = new File(targetPath + "templateVouchers" + seconds + ".ftl");
File dir = new File(targetPath);
WordConvertUtils.inputStreamToFile(inputStream, file);
WordConvertUtils.creatWord1(dataMap, file, targetPath, typeName, dir);
//新生成的word路径
String wordPath = targetPath + typeName;
String pdfName = "代付审批" + dateStr + seconds + ".pdf";
WordConvertUtils.doc2pdf(wordPath, targetPath, pdfName);
finalPath = temp + pdfName;
} catch (NoClassDefFoundError e) {
e.printStackTrace();
finalPath = targetPath;
}
}
return rb.success().setData(finalPath);
}
}

2831
anrui-riskcenter/anrui-riskcenter-biz/src/main/resources/ftl/vouchers/monthApply2.ftl

File diff suppressed because it is too large

2527
anrui-riskcenter/anrui-riskcenter-biz/src/main/resources/ftl/vouchers/monthBuckle.ftl

File diff suppressed because it is too large

3455
anrui-riskcenter/anrui-riskcenter-biz/src/main/resources/ftl/vouchers/monthapply.ftl

File diff suppressed because it is too large

2543
anrui-riskcenter/anrui-riskcenter-biz/src/main/resources/ftl/vouchers/overDue.ftl

File diff suppressed because it is too large

3317
anrui-riskcenter/anrui-riskcenter-biz/src/main/resources/ftl/vouchers/padsincere.ftl

File diff suppressed because it is too large

3127
anrui-riskcenter/anrui-riskcenter-biz/src/main/resources/ftl/vouchers/transferPay.ftl

File diff suppressed because it is too large

3
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/solutions/AppSolutionVo.java

@ -217,5 +217,8 @@ public class AppSolutionVo {
@ApiModelProperty("保证金类型01固定,02敞口")
private String bondTypeKey;
@ApiModelProperty("抵顶配件项")
private String offsetAccessories;
}

3
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/solutions/AppSolutionsDetailsVo.java

@ -190,4 +190,7 @@ public class AppSolutionsDetailsVo implements Vo {
@ApiModelProperty("保证金类型01固定,02敞口")
private String bondTypeKey;
@ApiModelProperty("抵顶配件项")
private String offsetAccessories;
}

3
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/solutions/AppSolutionssDto.java

@ -172,4 +172,7 @@ public class AppSolutionssDto implements Dto {
private String actualDiscount;
@ApiModelProperty("其他融实际贴息")
private String otherActualDiscount;
@ApiModelProperty("抵顶配件项")
private String offsetAccessories;
}

3
工作内容需要的文档/单据模板/财务凭证打印模板/代付审批/transferPay.ftl

File diff suppressed because one or more lines are too long

48
工作内容需要的文档/单据模板/财务凭证打印模板/代付审批/代收代付.docx

@ -0,0 +1,48 @@
代付审批
${company!}
申请时间:${createTime!}
审批编号:${billNo!}
申请人:
${applyName!}
申请部门:
${dept!}
财务付款形式:
${payWay!}
打款时需要备注内容:
${remarks!}
代付总金额:
${amount!}
其他说明:
${otherShow!}
附件:
${filePath!}
审批流程
${lc.comment!}
${lc.name!}
${lc.spsj!}
代付明细
序号
贷款合同号
资方
资方合同号
车架号
贷款人
期数
实还日期
实还金额
转付金额
转付账号账户
销售部门
${list.sortNo!}
${list.loanNo!}
${list.bankName!}
${list.bankNo!}
${list.vinNo!}
${list.borrowerName!}
${list.period!}
${list.return!}
${list.realMoney!}
${list.transferMoney!}
${list.accNumber!}
${list.saleDept!}

2523
工作内容需要的文档/单据模板/财务凭证打印模板/划扣/monthBuckle.ftl

File diff suppressed because it is too large

37
工作内容需要的文档/单据模板/财务凭证打印模板/划扣/月还划扣.docx

@ -0,0 +1,37 @@
月还划扣审批
${company!}
申请时间:${createTime!}
审批编号:${billNo!}
申请人:
${applyName!}
申请部门:
${dept!}
备注:
${remarks!}
附件:
${filePath!}
审批流程
${lc.comment!}
${lc.name!}
${lc.spsj!}
划扣明细
序号
贷款合同号
资方
资方合同号
车架号
贷款人
期数
实还金额
销售部门
${list.sortNo!}
${list.loanNo!}
${list.bankName!}
${list.bankNo!}
${list.vinNo!}
${list.borrowerName!}
${list.period!}
${list.dueMoney!}
${list.saleDept!}

3455
工作内容需要的文档/单据模板/财务凭证打印模板/月还计提/monthapply.ftl

File diff suppressed because it is too large

38
工作内容需要的文档/单据模板/财务凭证打印模板/月还计提/月还计提.docx

@ -0,0 +1,38 @@
月还计提审批
${company!}
申请时间:${createTime!}
审批编号:${billNo!}
申请人:
${applyName!}
申请部门:
${dept!}
备注:
${remarks!}
附件:
${filePath!}
审批流程
${lc.comment!}
${lc.name!}
${lc.spsj!}
本月应还记录
序号
贷款合同号
资方
资方合同号
车架号
贷款人
期数
应还日期
应还金额
销售部门
${list.sortNo!}
${list.loanNo!}
${list.bankName!}
${list.bankNo!}
${list.vinNo!}
${list.borrowerName!}
${list.period!}
${list.dueDate!}
${list.dueMoney!}
${list.saleDept!}

3958
工作内容需要的文档/单据模板/财务凭证打印模板/还款计划/repayment1.ftl

File diff suppressed because it is too large

6512
工作内容需要的文档/单据模板/财务凭证打印模板/还款计划/repayment2.ftl

File diff suppressed because it is too large

9047
工作内容需要的文档/单据模板/财务凭证打印模板/还款计划/repayment3.ftl

File diff suppressed because it is too large

78
工作内容需要的文档/单据模板/财务凭证打印模板/还款计划/还款计划1.docx

@ -0,0 +1,78 @@
客户还款计划表
生成日期:
${createTime1!}
消贷合同编号:
${loanContractNo1!}
销售部门:
${salesDept1!}
资方:
${bankName1!}
客户:
${customer1!}
贷款人:
${borrowerName1!}
车架号:
${vinNo1!}
期数:
${period1!}
还款总金额:
${amount1!}
首期还款日:
${dueDate1!}
首期月还:
${fMoney1!}
期间月还:
${mMoney1!}
末期月还:
${lMoney1!}

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save