Browse Source

Merge remote-tracking branch 'origin/master'

master
God 1 year ago
parent
commit
461673c553
  1. 3
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/common/enums/BillTypeEnum.java
  2. 1
      anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bushandover/BusHandover.java
  3. 1
      anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorderloancontract/LoanOtherReceivablePush.java
  4. 2
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bushandover/BusHandoverService.java
  5. 12
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorderloancontract/BusSalesOrderLoancontractService.java
  6. 5
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/capitalcreditresult/CwSystemYT.java
  7. 23
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincollectionconfirmation/FinCollectionConfirmationMapper.java
  8. 40
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincollectionconfirmation/FinCollectionConfirmationMapper.xml
  9. 293
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincollectionconfirmation/FinCollectionConfirmationService.java
  10. 3
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finselectedreceivablesdetailed/FinSelectedReceivablesDetailedMapper.java
  11. 26
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finselectedreceivablesdetailed/FinSelectedReceivablesDetailedMapper.xml
  12. 8
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finselectedreceivablesdetailed/FinSelectedReceivablesDetailedService.java
  13. 1
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finuncollectedreceivablesdetailed/FinUncollectedReceivablesDetailedMapper.java
  14. 7
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finuncollectedreceivablesdetailed/FinUncollectedReceivablesDetailedMapper.xml
  15. 4
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finuncollectedreceivablesdetailed/FinUncollectedReceivablesDetailedService.java
  16. 2
      anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/utils/ProcDefEnum.java
  17. 106
      anrui-reportcenter/anrui-reportcenter-api/src/main/java/com/yxt/anrui/reportcenter/api/dailyreport/DailyReport.java
  18. 5
      anrui-reportcenter/anrui-reportcenter-api/src/main/java/com/yxt/anrui/reportcenter/api/dailyreport/DailyReportFeign.java
  19. 27
      anrui-reportcenter/anrui-reportcenter-api/src/main/java/com/yxt/anrui/reportcenter/api/dailyreport/DailyReportVo.java
  20. 18
      anrui-riskcenter-ui/src/api/homevisitpreparation/homevisitpreparation.js
  21. 98
      anrui-riskcenter-ui/src/api/loanbalancerecognition/loanbalancerecognition.js
  22. 39
      anrui-riskcenter-ui/src/router/index.js
  23. 582
      anrui-riskcenter-ui/src/views/homevisitpreparation/homevisitpreparationAdd.vue
  24. 42
      anrui-riskcenter-ui/src/views/homevisitpreparation/homevisittobeprepared.vue
  25. 298
      anrui-riskcenter-ui/src/views/loanbalancerecognition/loanbalancerecognition.vue
  26. 244
      anrui-riskcenter-ui/src/views/loanbalancerecognition/loanbalancerecognitionAdd.vue
  27. 147
      anrui-riskcenter-ui/src/views/loanbalancerecognition/loanbalancerecognitionInfo.vue
  28. 1
      anrui-riskcenter-ui/src/views/managementcreditaudit/managementcreditaudit.vue
  29. 11
      anrui-riskcenter-ui/src/views/repaymentschedule/repaymentscheduleAdd.vue
  30. 19
      anrui-riskcenter-ui/src/views/unsecuredbusiness/unsecuredbusinessAdd.vue
  31. 14
      anrui-riskcenter-ui/src/views/unsecuredbusiness/unsecuredbusinessInfo.vue
  32. 415
      anrui-riskcenter-ui/src/views/workFlow/fangkuanquerenFlow/loanbalancerecognitionDaiBan.vue
  33. 260
      anrui-riskcenter-ui/src/views/workFlow/fangkuanquerenFlow/loanbalancerecognitionEdit.vue
  34. 207
      anrui-riskcenter-ui/src/views/workFlow/fangkuanquerenFlow/loanbalancerecognitionYiBan.vue
  35. 2
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleApply.java
  36. 28
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleApplyDto.java
  37. 71
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleApplyFeign.java
  38. 79
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleApplyFeignFallback.java
  39. 33
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleApplyInit.java
  40. 31
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleApplyQuery.java
  41. 36
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleApplyVo.java
  42. 44
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleHistoryRecord.java
  43. 23
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/app/AppBuckleDetailsVo.java
  44. 23
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/app/AppRecordVo.java
  45. 41
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/flow/BuckleCompleteDto.java
  46. 26
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/flow/BuckleDelegateQuery.java
  47. 26
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/flow/BuckleGetNodeQuery.java
  48. 25
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/flow/BuckleGetNodeVo.java
  49. 56
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/flow/BuckleTaskQuery.java
  50. 21
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/flow/SubmitBuckleDto.java
  51. 14
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/DiffFile.java
  52. 41
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/LoanDiff.java
  53. 33
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/LoanDiffDetailsssApp.java
  54. 26
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/LoanDiffDto.java
  55. 81
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/LoanDiffFeign.java
  56. 9
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/LoanDiffFeignFallback.java
  57. 37
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/LoanDiffInitDetails.java
  58. 33
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/LoanDiffQuery.java
  59. 35
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/LoanDiffVo.java
  60. 34
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/LoanDiffsDto.java
  61. 24
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/flowable/DelegateQuery.java
  62. 18
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/flowable/DiffApplyNodeQuery.java
  63. 24
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/flowable/DiffApplyNodeVo.java
  64. 43
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/flowable/DiffApplyTaskQuery.java
  65. 38
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/flowable/DiffCompleteDto.java
  66. 19
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/flowable/SubmitDiffDto.java
  67. 50
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiffdetails/AppRecords.java
  68. 65
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiffdetails/LoanDiffDetails.java
  69. 30
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiffdetails/LoanDiffDetailsDto.java
  70. 49
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiffdetails/LoanDiffDetailssDto.java
  71. 65
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiffdetails/LoanDiffDetailssVo.java
  72. 3
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loannoguaranteecreditreview/LoanNoGuaranteeCreditReview.java
  73. 4
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loannoguaranteecreditreview/LoanNoGuaranteeCreditReviewDetailsVo.java
  74. 2
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loannoguaranteecreditreview/LoanNoGuaranteeCreditReviewDto.java
  75. 4
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/LoanRepaymentHistoryFeign.java
  76. 5
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/LoanRepaymentHistoryFeignFallback.java
  77. 38
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/LoanRepaymentHistoryRecordVo.java
  78. 6
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapply/LoanBuckleApplyMapper.java
  79. 37
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapply/LoanBuckleApplyMapper.xml
  80. 90
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapply/LoanBuckleApplyRest.java
  81. 856
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapply/LoanBuckleApplyService.java
  82. 6
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapplyrecord/LoanBuckleApplyRecordMapper.java
  83. 11
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapplyrecord/LoanBuckleApplyRecordMapper.xml
  84. 9
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapplyrecord/LoanBuckleApplyRecordService.java
  85. 16
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loancapitalcreditresult/LoanCapitalCreditResultService.java
  86. 30
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiff/LoanDiffMapper.java
  87. 47
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiff/LoanDiffMapper.xml
  88. 98
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiff/LoanDiffRest.java
  89. 676
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiff/LoanDiffService.java
  90. 23
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiffdetails/LoanDiffDetailsMapper.java
  91. 36
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiffdetails/LoanDiffDetailsMapper.xml
  92. 9
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiffdetails/LoanDiffDetailsRest.java
  93. 31
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiffdetails/LoanDiffDetailsService.java
  94. 12
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanhomevisitprep/LoanHomevisitPrepService.java
  95. 33
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loannoguaranteecreditreview/LoanNoGuaranteeCreditReviewService.java
  96. 3
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryMapper.java
  97. 21
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryMapper.xml
  98. 5
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryRest.java
  99. 6
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryService.java
  100. 15
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantemplate/LoanTemplateService.java

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

@ -34,7 +34,8 @@ public enum BillTypeEnum {
GCCKSQ("GCCKSQ", "挂车出库申请"),
XXTHS("XXTHS", "销售退货单"),
JCZLQRD("JCZLQRD", "交车资料确认单"),
JCECQRD("JCECQRD", "交车资料二次确认单");
JCECQRD("JCECQRD", "交车资料二次确认单"),
HKSQ("HKSQ", "划扣申请单据编号");
private String billType;

1
anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bushandover/BusHandover.java

@ -93,4 +93,5 @@ public class BusHandover extends BaseEntity {
private String trailerMobile;
private Date trailerDeliverDate;
private String trailerRemarks;
private Date closingDate;
}

1
anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorderloancontract/LoanOtherReceivablePush.java

@ -14,4 +14,5 @@ public class LoanOtherReceivablePush {
private String borrowerSid;
@ApiModelProperty("销售订单sid")
private String saleOrderSid;
private String isCompInvoic;
}

2
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bushandover/BusHandoverService.java

@ -1,6 +1,7 @@
package com.yxt.anrui.buscenter.biz.bushandover;
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;
@ -2097,6 +2098,7 @@ public class BusHandoverService extends MybatisBaseService<BusHandoverMapper, Bu
BusHandover updateStateEntity = fetchBySid(businessSid);
updateStateEntity.setHandoverStateKey("002");
updateStateEntity.setHandoverStateValue("已交车");
updateStateEntity.setClosingDate(new DateTime());
baseMapper.updateById(updateStateEntity);
//推对外交付资料记录表
List<BusHandoverItems> items = busHandoverItemsService.getItemsListByMainSid(businessSid).getData();

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

@ -416,6 +416,18 @@ public class BusSalesOrderLoancontractService extends MybatisBaseService<BusSale
}
SolutionsDetailsVo solutions = loanSolutionsFeign.selectDetails(saleOrderSid).getData();
if (null != solutions) {
if (StringUtils.isNotBlank(loanOtherReceivablePush.getIsCompInvoic())) {
if (loanOtherReceivablePush.getIsCompInvoic().equals("1")) {
//挂车待退款
if (StringUtils.isNotBlank(solutions.getTrailerAmount()) && !("0").equals(solutions.getTrailerAmount())) {
CapitalCreditResult.CapitalCreditResultDetailDto creditResultDetailDto = new CapitalCreditResult.CapitalCreditResultDetailDto();
creditResultDetailDto.setDearDept(sysOrganizationVo2.getOrgCode());
creditResultDetailDto.setExTaxMoney(solutions.getTrailerAmount());
creditResultDetailDto.setUseTo(CwSystemYT.GCDTK.getType());
collectionDetailDtoListOne.add(creditResultDetailDto);
}
}
}
//贷款保证金
if (StringUtils.isNotBlank(solutions.getBondAmounts()) && !("0").equals(solutions.getBondAmounts())) {
CapitalCreditResult.CapitalCreditResultDetailDto creditResultDetailDto = new CapitalCreditResult.CapitalCreditResultDetailDto();

5
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/capitalcreditresult/CwSystemYT.java

@ -23,7 +23,10 @@ public enum CwSystemYT {
FANLI_DICHEKUAN("YT015", "返利抵车款"),
SERVICE_AMOUNT_SANFANG("YT016", "服务费(三方金融)"),
SANFANG_TIEXI_DIECHEKUAN("YT017", "三方金融厂家贴息抵车款"),
TZSQ("YT018", "款项结转-调账申请");
TZSQ("YT018", "款项结转-调账申请"),
GCDTK("YT019", "挂车待退款"),
YWXSR("YT020", "意外险收入"),
GDBZJ("YT021", "个贷保证金");
/**

23
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincollectionconfirmation/FinCollectionConfirmationMapper.java

@ -31,7 +31,14 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrder;
import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicle;
import com.yxt.anrui.fin.api.fincollectionconfirmation.*;
import com.yxt.anrui.riskcenter.api.loanfinbank.LoanFinBank;
import com.yxt.anrui.riskcenter.api.loanfinotherPolicy.LoanFinOtherPolicy;
import com.yxt.anrui.riskcenter.api.loanfinpolicy.LoanFinPolicy;
import com.yxt.anrui.riskcenter.api.loansolutions.LoanSolutions;
import com.yxt.anrui.riskcenter.api.loansolutionsdetail.LoanSolutionsDetail;
import com.yxt.anrui.riskcenter.api.loansolutionsotherpolicy.LoanSolutionsOtherpolicy;
import com.yxt.common.core.result.ResultBean;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -128,4 +135,20 @@ public interface FinCollectionConfirmationMapper extends BaseMapper<FinCollectio
void updateYeBySid(@Param("balance") String balance,@Param("busSid") String busSid);
String getBalance(String busSid);
LoanSolutions selectLoanBySid(String busVinSid);
LoanSolutionsDetail selectByLoanSid(String sid);
LoanSolutionsOtherpolicy selectBySoluSid(String sid);
LoanFinPolicy selectBySoll(String policySid);
LoanFinOtherPolicy selectByOtherSid(String otherPolicySid);
BusSalesOrderVehicle selectByVinSid(String busVinSid);
BusSalesOrder selectByOrderSid(String salesOrderSid);
LoanFinBank selectFinBnk(String contractNo);
}

40
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincollectionconfirmation/FinCollectionConfirmationMapper.xml

@ -254,4 +254,44 @@
ON ffc.`busSid` = fsrd.`sid`
WHERE fsrd.sid = #{busSid}
</select>
<select id="selectLoanBySid" resultType="com.yxt.anrui.riskcenter.api.loansolutions.LoanSolutions">
select ls.* from anrui_riskcenter.loan_solutions ls
left join anrui_buscenter.bus_sales_order_vehicle bv on bv.salesOrderSid = ls.salesOrderSid
where ls.isDelete = 0 and bv.sid = #{busVinSid}
</select>
<select id="selectByLoanSid" resultType="com.yxt.anrui.riskcenter.api.loansolutionsdetail.LoanSolutionsDetail">
SELECT * FROM anrui_riskcenter.loan_solutions_detail where solutionsSid = #{sid}
</select>
<select id="selectBySoluSid"
resultType="com.yxt.anrui.riskcenter.api.loansolutionsotherpolicy.LoanSolutionsOtherpolicy">
select * from anrui_riskcenter.loan_solutions_otherpolicy where solutionsSid = #{sid}
</select>
<select id="selectBySoll" resultType="com.yxt.anrui.riskcenter.api.loanfinpolicy.LoanFinPolicy">
select * from anrui_riskcenter.loan_fin_policy where sid = #{policySid}
</select>
<select id="selectByOtherSid" resultType="com.yxt.anrui.riskcenter.api.loanfinotherPolicy.LoanFinOtherPolicy">
select * from anrui_riskcenter.loan_fin_otherpolicy where sid = #{otherPolicySid}
</select>
<select id="selectByVinSid" resultType="com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicle">
select * from anrui_buscenter.bus_sales_order_vehicle where sid = #{busVinSid}
</select>
<select id="selectByOrderSid" resultType="com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrder">
select * from anrui_buscenter.bus_sales_order where sid = #{salesOrderSid}
</select>
<select id="selectFinBnk" resultType="com.yxt.anrui.riskcenter.api.loanfinbank.LoanFinBank">
select lb.* from anrui_buscenter.bus_sales_order bo
left join anrui_riskcenter.loan_solutions ls on ls.salesOrderSid = bo.sid
left join anrui_riskcenter.loan_fin_policy lp on lp.sid = ls.policySid
left join anrui_riskcenter.loan_fin_bank lb on lb.sid = lp.bankSid
where bo.contractNo = #{contractNo}
</select>
</mapper>

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

@ -88,6 +88,8 @@ import com.yxt.anrui.fin.api.kingdee.FinKingDeeFeign;
import com.yxt.anrui.fin.api.kingdee.arreceivable.ARReceivable;
import com.yxt.anrui.fin.api.kingdee.arreceivebill.ARReceivebill;
import com.yxt.anrui.fin.api.kingdee.bdcustomer.BdCustomer;
import com.yxt.anrui.fin.api.kingdee.capitalcreditresult.CapitalCreditResult;
import com.yxt.anrui.fin.api.kingdee.capitalcreditresult.CwSystemYT;
import com.yxt.anrui.fin.biz.finbillapplication.FinBillApplicationService;
import com.yxt.anrui.fin.biz.finbilltrailer.FinBillTrailerService;
import com.yxt.anrui.fin.biz.finbillvehicle.FinBillVehicleService;
@ -99,6 +101,7 @@ import com.yxt.anrui.fin.biz.finvehicleinvoice.FinVehicleInvoiceService;
import com.yxt.anrui.fin.biz.kingdee.FinKingDeeService;
import com.yxt.anrui.fin.biz.kingdee.arreceivebill.ArReceivebillService;
import com.yxt.anrui.fin.biz.kingdee.bdcustomer.BdCustomerService;
import com.yxt.anrui.fin.biz.kingdee.capitalcreditresult.OtherReceivableBillCreditResultService;
import com.yxt.anrui.fin.biz.kingdee.receivablebill.ReceivableBillService;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo;
@ -107,8 +110,17 @@ 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.loandiff.LoanDiffFeign;
import com.yxt.anrui.riskcenter.api.loandiff.LoanDiffsDto;
import com.yxt.anrui.riskcenter.api.loandiffdetails.LoanDiffDetailssDto;
import com.yxt.anrui.riskcenter.api.loanfinbank.LoanFinBank;
import com.yxt.anrui.riskcenter.api.loanfinotherPolicy.LoanFinOtherPolicy;
import com.yxt.anrui.riskcenter.api.loanfinpolicy.LoanFinPolicy;
import com.yxt.anrui.riskcenter.api.loansolutions.LoanSolutions;
import com.yxt.anrui.riskcenter.api.loansolutions.LoanSolutionsFeign;
import com.yxt.anrui.riskcenter.api.loansolutions.app.SolutionsDetailsVo;
import com.yxt.anrui.riskcenter.api.loansolutionsdetail.LoanSolutionsDetail;
import com.yxt.anrui.riskcenter.api.loansolutionsotherpolicy.LoanSolutionsOtherpolicy;
import com.yxt.common.base.config.component.FileUploadComponent;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.HanZiConverterPinYin;
@ -182,6 +194,10 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl
private FinKingDeeService finKingDeeService;
@Autowired
private BaseVehicleStateFeign baseVehicleStateFeign;
@Autowired
private LoanDiffFeign loanDiffFeign;
@Autowired
private OtherReceivableBillCreditResultService creditResultService;
private QueryWrapper<FinCollectionConfirmation> createQueryWrapper(FinCollectionConfirmationQuery query) {
// todo: 这里根据具体业务调整查询条件
@ -1550,6 +1566,7 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl
//===========================================
List<BaseVehicleStateDto> dtoList = new ArrayList<>();
//查询该申请下的所有待审核的款项明细
BigDecimal subscriptionMoneyAll = new BigDecimal("0");
List<FinSelectedReceivablesDetailedVo> finSelectedReceivablesDetailedVos = finSelectedReceivablesDetailedService.fetchByAuditState(sid, 1);
if (finSelectedReceivablesDetailedVos.size() > 0) {
@ -1652,9 +1669,218 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl
baseMapper.updateById(confirmation);
//删除临时表的数据
ResultBean deleteResult = baseVehicleTempstateFeign.delByBusSid(sid);
try {
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("demo-pool-%d").build();
ExecutorService pool = new ThreadPoolExecutor(2, 100,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());
FinCollectionConfirmation finalConfirmation = confirmation;
Future future1 = pool.submit(() -> {
pushLoanDiff(finalConfirmation);
});
} catch (Exception e) {
e.printStackTrace();
}
return rb.success().setMsg("款项确认成功");
}
public void pushLoanDiff(FinCollectionConfirmation confirmation){
String sid = confirmation.getSid();
/**
* 查询该申请是否有融资放款款项的明细若有
* 则查询该认款的车的金融方案的主方案与其他融的资方是否一致若不一致则查询是否已认完款若已认完则推送若未认完则不推送
* 若金融方案的主方案与其他融的资方一致则查询是否有差额即应收和认款的值是否相同若不同则代表有差额
* 若有差额则查询金融方案的固定类型贷款保证金+主产品实际厂家贴息+其他融实际厂家贴息+意外险与差额作比较若不相等则推送放款差额确认申请
* 若相等则直接推送财务其他应收单
*
* 若无差额则直接推送收款单
*/
List<FinSelectedReceivablesDetailed> finLi = finSelectedReceivablesDetailedService.selectLiBy(sid);
finLi.removeAll(Collections.singleton(null));
if(!finLi.isEmpty()){
LoanDiffsDto loanDiffsDto = new LoanDiffsDto();
loanDiffsDto.setCreateByName(confirmation.getCreateByName());
loanDiffsDto.setCreateBySid(confirmation.getCreateBySid());
loanDiffsDto.setUseOrgName(confirmation.getUseOrgName());
loanDiffsDto.setCreateDeptSid(confirmation.getCreateDeptSid());
loanDiffsDto.setUseOrgSid(confirmation.getUseOrgSid());
loanDiffsDto.setCreateDept(confirmation.getCreateDept());
List<LoanDiffDetailssDto> loanDiffDetailssDtos = new ArrayList<>();
//根据车辆sid查询金融方案
for (int i = 0; i < finLi.size(); i++) {
FinSelectedReceivablesDetailed finSelectedReceivablesDetailed = finLi.get(i);
FinUncollectedReceivablesDetailed finUncollectedReceivablesDetailed = finUncollectedReceivablesDetailedService.fetchBySid(finSelectedReceivablesDetailed.getReceivablesSid());
BigDecimal bigAdd = BigDecimal.ZERO;
BusSalesOrderVehicle busSalesOrderVehicle = baseMapper.selectByVinSid(finUncollectedReceivablesDetailed.getBusVinSid());
LoanSolutions loanSolutions = baseMapper.selectLoanBySid(finUncollectedReceivablesDetailed.getBusVinSid());
LoanSolutionsDetail loanSolutionsDetail = null;
LoanSolutionsOtherpolicy loanSolutionsOtherpolicy = null;
LoanFinPolicy loanFinPolicy = null;
LoanFinOtherPolicy loanFinOtherPolicy = null;
boolean isTue = false;
if(loanSolutions != null){
if (loanSolutionsDetail.getBondAmounts() != null) {
bigAdd = bigAdd.add(loanSolutionsDetail.getBondAmounts());
}
if(loanSolutions.getFactoryDiscount() != null){
bigAdd = bigAdd.add(loanSolutions.getFactoryDiscount());
}
loanSolutionsOtherpolicy = baseMapper.selectBySoluSid(loanSolutions.getSid());
if(loanSolutionsOtherpolicy != null){
if(loanSolutionsOtherpolicy.getOtherDiscount() != null){
bigAdd = bigAdd.add(loanSolutionsOtherpolicy.getOtherDiscount());
}
}
loanSolutionsDetail = baseMapper.selectByLoanSid(loanSolutions.getSid());
if(loanSolutionsDetail != null){
if(loanSolutionsDetail.getProxyAccidentPremium() != null){
bigAdd = bigAdd.add(loanSolutionsDetail.getProxyAccidentPremium());
}
}
//查询主方案的资方和其他融的资方是否一致
loanFinPolicy = baseMapper.selectBySoll(loanSolutions.getPolicySid());
loanFinOtherPolicy = baseMapper.selectByOtherSid(loanSolutionsOtherpolicy.getOtherPolicySid());
if(!loanFinPolicy.getBankSid().equals(loanFinOtherPolicy.getBankSid())){
isTue =true;
}
}
BigDecimal decimalAll = new BigDecimal(finUncollectedReceivablesDetailed.getReveivableMoney()).subtract(finSelectedReceivablesDetailed.getSubscriptionMoney());
if(finSelectedReceivablesDetailed.getSubscriptionMoney().compareTo(new BigDecimal(finUncollectedReceivablesDetailed.getReveivableMoney())) != 0){
//有差额
if(isTue){//不一致
//根据busVinSid查询融资放款的是否已认完款,若已认完,则推送,若未认完则不推送
List<FinSelectedReceivablesDetailedVo> voList = finSelectedReceivablesDetailedService.selectListByVin2(finUncollectedReceivablesDetailed.getContractNo(), finUncollectedReceivablesDetailed.getBusVinSid(), 3);
BigDecimal bigDecimalVinAll = voList.stream().map(FinSelectedReceivablesDetailedVo::getSubscriptionMoney).map(BigDecimal::new).reduce(BigDecimal.ZERO, BigDecimal::add);
List<FinUncollectedReceivablesDetailed> unList = finUncollectedReceivablesDetailedService.selectListByBusVinSid2(finUncollectedReceivablesDetailed.getBusVinSid());
BigDecimal unDecimalVinAll = unList.stream().map(FinUncollectedReceivablesDetailed::getReveivableMoney).map(BigDecimal::new).reduce(BigDecimal.ZERO, BigDecimal::add);
if(bigDecimalVinAll.compareTo(unDecimalVinAll) == 0){//认完
if(bigAdd.compareTo(decimalAll) != 0){//不相等,推送放款差额确认待办
LoanDiffDetailssDto loanDiffDetailssDto = new LoanDiffDetailssDto();
loanDiffDetailssDto.setBankSid(loanFinPolicy.getBankSid());
loanDiffDetailssDto.setBankName(loanFinPolicy.getBankShortName());
loanDiffDetailssDto.setBorrowName(busSalesOrderVehicle.getBorrowName());
loanDiffDetailssDto.setBorrowSid(busSalesOrderVehicle.getBorrowerSid());
loanDiffDetailssDto.setMakeLoan(new BigDecimal(finUncollectedReceivablesDetailed.getReveivableMoney()));
loanDiffDetailssDto.setRealityLoan(finSelectedReceivablesDetailed.getSubscriptionMoney());
loanDiffDetailssDto.setDiffLoan(decimalAll);
loanDiffDetailssDto.setMakeDiscount(loanSolutions.getFactoryDiscount());
loanDiffDetailssDto.setMakeLoanMargin(loanSolutions.getBondAmount());
loanDiffDetailssDto.setMakeOtherDiscount(loanSolutionsOtherpolicy.getOtherDiscount());
loanDiffDetailssDto.setReceivedPremium(loanSolutionsDetail.getProxyAccidentPremium());
loanDiffDetailssDto.setVinNo(busSalesOrderVehicle.getLinkNo());
loanDiffDetailssDto.setVinSid(busSalesOrderVehicle.getLinkSid());
loanDiffDetailssDto.setBusVinSid(busSalesOrderVehicle.getSid());
loanDiffDetailssDtos.add(loanDiffDetailssDto);
}
}
}else{
if(bigAdd.compareTo(decimalAll) != 0){//不相等,推送放款差额确认待办
LoanDiffDetailssDto loanDiffDetailssDto = new LoanDiffDetailssDto();
loanDiffDetailssDto.setBankSid(loanFinPolicy.getBankSid());
loanDiffDetailssDto.setBankName(loanFinPolicy.getBankShortName());
loanDiffDetailssDto.setBorrowName(busSalesOrderVehicle.getBorrowName());
loanDiffDetailssDto.setBorrowSid(busSalesOrderVehicle.getBorrowerSid());
loanDiffDetailssDto.setMakeLoan(new BigDecimal(finUncollectedReceivablesDetailed.getReveivableMoney()));
loanDiffDetailssDto.setRealityLoan(finSelectedReceivablesDetailed.getSubscriptionMoney());
loanDiffDetailssDto.setDiffLoan(decimalAll);
loanDiffDetailssDto.setMakeDiscount(loanSolutions.getFactoryDiscount());
loanDiffDetailssDto.setMakeLoanMargin(loanSolutions.getBondAmount());
loanDiffDetailssDto.setMakeOtherDiscount(loanSolutionsOtherpolicy.getOtherDiscount());
loanDiffDetailssDto.setReceivedPremium(loanSolutionsDetail.getProxyAccidentPremium());
loanDiffDetailssDto.setVinNo(busSalesOrderVehicle.getLinkNo());
loanDiffDetailssDto.setVinSid(busSalesOrderVehicle.getLinkSid());
loanDiffDetailssDto.setBusVinSid(busSalesOrderVehicle.getSid());
loanDiffDetailssDtos.add(loanDiffDetailssDto);
}else{
CapitalCreditResult creditResult = new CapitalCreditResult();
//推送其他应收单
BusSalesOrder busSalesOrder = baseMapper.selectByOrderSid(busSalesOrderVehicle.getSalesOrderSid());
String customerNumber = "";
//判断财务系统是否有客户
Boolean aBoolean = bdCustomerService.customerExistState(busSalesOrderVehicle.getTemporaryNo()).getData();
String linkNo = "";
if (!aBoolean) {
BdCustomer bdCustomer = new BdCustomer();
bdCustomer.setFNumber(busSalesOrderVehicle.getTemporaryNo());
bdCustomer.setFShortName(busSalesOrder.getContractNo());
BasePurchaseSystemDetailsVo data = basePurchaseSystemFeign.fetchDetailsByDeptSid(busSalesOrder.getPurchaseSystemSid()).getData();
bdCustomer.setTOrgIds(data.getOrgCode());
if (com.yxt.common.base.utils.StringUtils.isNotBlank(busSalesOrderVehicle.getLinkNo())) {
String vinNo = busSalesOrderVehicle.getLinkNo();
if (vinNo.length() > 8) {
linkNo = vinNo.substring(vinNo.length() - 8);
} else {
linkNo = busSalesOrderVehicle.getLinkNo();
}
bdCustomer.setFName(busSalesOrderVehicle.getBorrowName() + linkNo);
} else {
bdCustomer.setFName(busSalesOrderVehicle.getBorrowName() + busSalesOrderVehicle.getTemporaryNo());
}
ResultBean<String> resultBean = bdCustomerService.draftBdCustomer(bdCustomer);
if (resultBean.getSuccess()) {
customerNumber = bdCustomer.getFNumber();
}
} else {
customerNumber = busSalesOrderVehicle.getTemporaryNo();
}
creditResult.setCommUnit(customerNumber);
SysOrganizationVo sysOrganizationVo1 = sysOrganizationFeign.fetchBySid(busSalesOrder.getUseOrgSid()).getData();
creditResult.setCollectionOrg(sysOrganizationVo1.getOrgCode());
creditResult.setBussDate(DateUtil.formatDate(new Date()));
List<CapitalCreditResult.CapitalCreditResultDetailDto> collectionDetailDtoListOne = new ArrayList<>();
SysOrganizationVo sysOrganizationVo2 = sysOrganizationFeign.fetchBySid(busSalesOrder.getOrgSid()).getData();
if (loanSolutions.getBondAmount() != null) {//贷款保证金
CapitalCreditResult.CapitalCreditResultDetailDto creditResultDetailDto = new CapitalCreditResult.CapitalCreditResultDetailDto();
creditResultDetailDto.setDearDept(sysOrganizationVo2.getOrgCode());
creditResultDetailDto.setExTaxMoney("-" + loanSolutions.getBondAmount().toString());
creditResultDetailDto.setUseTo(CwSystemYT.BOND_AMOUNTS.getType());
collectionDetailDtoListOne.add(creditResultDetailDto);
}
if (loanSolutions.getFactoryDiscount() != null) {//主产品厂家贴息
CapitalCreditResult.CapitalCreditResultDetailDto creditResultDetailDto = new CapitalCreditResult.CapitalCreditResultDetailDto();
creditResultDetailDto.setDearDept(sysOrganizationVo2.getOrgCode());
creditResultDetailDto.setExTaxMoney("-" + loanSolutions.getFactoryDiscount().toString());
creditResultDetailDto.setUseTo(CwSystemYT.SANFANG_TIEXI_DIECHEKUAN.getType());
collectionDetailDtoListOne.add(creditResultDetailDto);
}
if (loanSolutionsOtherpolicy.getOtherDiscount() != null) {//实扣其他融厂家贴息
CapitalCreditResult.CapitalCreditResultDetailDto creditResultDetailDto = new CapitalCreditResult.CapitalCreditResultDetailDto();
creditResultDetailDto.setDearDept(sysOrganizationVo2.getOrgCode());
creditResultDetailDto.setExTaxMoney("-" + loanSolutionsOtherpolicy.getOtherDiscount().toString());
creditResultDetailDto.setUseTo(CwSystemYT.SANFANG_TIEXI_DIECHEKUAN.getType());
collectionDetailDtoListOne.add(creditResultDetailDto);
}
if (loanSolutionsDetail.getProxyAccidentPremium() != null) {//已收意外险
CapitalCreditResult.CapitalCreditResultDetailDto creditResultDetailDto = new CapitalCreditResult.CapitalCreditResultDetailDto();
creditResultDetailDto.setDearDept(sysOrganizationVo2.getOrgCode());
creditResultDetailDto.setExTaxMoney("-" + loanSolutionsDetail.getProxyAccidentPremium().toString());
creditResultDetailDto.setUseTo(CwSystemYT.PROXY_ACCIDENT_PREMIUM.getType());
collectionDetailDtoListOne.add(creditResultDetailDto);
}
creditResult.setResultDetails(collectionDetailDtoListOne);
creditResultService.pushOtherReceivableBill(creditResult);
}
}
}else{
//无差额
}
}
if(!loanDiffDetailssDtos.isEmpty()){
//推送待办
ResultBean resultBean = loanDiffFeign.save(loanDiffsDto);
}
}
}
/**
* 推送金蝶
*
@ -1728,6 +1954,8 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl
//加装配置手续费(贷款)
List<FinSelectedReceivablesDetailedVo> finSelectedReceivablesDetailedVos3_2 = finSelectedReceivablesDetailedService.fetchByAuditState1_1(sid, "加装配置手续费", "2");
finSelectedReceivablesDetailedVos3_2.removeAll(Collections.singleton(null));
List<FinSelectedReceivablesDetailedVo> finSelectedReceivablesDetailedVos4_1 = finSelectedReceivablesDetailedService.fetchByAuditState1_1(sid, "融资放款", "2");
finSelectedReceivablesDetailedVos4_1.removeAll(Collections.singleton(null));
int carSize = 0;
//全款推送车款
if (finSelectedReceivablesDetailedVos1.size() > 0) {
@ -1852,6 +2080,23 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl
carSize = loanInstaConfigFee(confirmation, arReceivebill, carSize, finSelectedReceivablesDetailedVos3_2, freceivebillentry, one, orgCode);
}
//融资放款
if (finSelectedReceivablesDetailedVos4_1.size() > 0) {
boolean one = false;
if (finSelectedReceivablesDetailedVos1.size() == 0 &&
finSelectedReceivablesDetailedVos1_1_1.size() == 0 &&
finSelectedReceivablesDetailedVos2.size() == 0 &&
finSelectedReceivablesDetailedVos1_1.size() == 0 &&
finSelectedReceivablesDetailedVos2_1.size() == 0 &&
finSelectedReceivablesDetailedVos1_1_2.size() == 0 &&
finSelectedReceivablesDetailedVos3_1.size() == 0 &&
finSelectedReceivablesDetailedVos3_2.size() == 0 &&
finSelectedReceivablesDetailedVos4_1.size() == 1) {
one = true;
}
carSize = loanDiff(confirmation, arReceivebill, carSize, finSelectedReceivablesDetailedVos4_1, freceivebillentry, one, orgCode);
}
//简易订单-订金收取
if (finSelectedReceivablesDetailedVos1.isEmpty() &&
finSelectedReceivablesDetailedVos2.isEmpty() &&
@ -1898,6 +2143,54 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl
return rb.success();
}
private int loanDiff(FinCollectionConfirmation confirmation, ARReceivebill arReceivebill, int carSize, List<FinSelectedReceivablesDetailedVo> finSelectedReceivablesDetailedVos4_1, ARReceivebill.FRECEIVEBILLENTRY freceivebillentry, boolean one, String orgCode) {
String sid = confirmation.getSid();
List<ARReceivebill.FRECEIVEBILLENTRY> fEntityList = new ArrayList<>();
for (int i = 0; i < finSelectedReceivablesDetailedVos4_1.size(); i++) {
FinSelectedReceivablesDetailedVo vvvv = finSelectedReceivablesDetailedVos4_1.get(i);
//推送客户
String customerNo = createCustomerQuery(2, vvvv, orgCode);
//往来单位
arReceivebill.setFCONTACTUNIT(customerNo);
fEntityList = new ArrayList<>();
String uncollSid = "";
freceivebillentry = new ARReceivebill.FRECEIVEBILLENTRY();
//结算方式
freceivebillentry.setFSETTLETYPEIDKey(confirmation.getCollectionTypeKey());
freceivebillentry.setFSETTLETYPEIDType("customerPayType");
//收款金额
freceivebillentry.setFRECTOTALAMOUNTFOR(vvvv.getSubscriptionMoney());
//登记日期
freceivebillentry.setFPOSTDATE(confirmation.getCollectionDate());
if (vvvv.getVIN().length() >= 8) {
freceivebillentry.setF_PAEZ_Base1(vvvv.getVIN().substring(vvvv.getVIN().length() - 8));
}
//收款用途
freceivebillentry.setFPURPOSEIDKey("001");
freceivebillentry.setFPURPOSEIDType("cw_skyt");
freceivebillentry.setFACCOUNTID(confirmation.getCollectionBankNum());
LoanFinBank loanFinBank = baseMapper.selectFinBnk(vvvv.getContractNo());
if(loanFinBank != null){
freceivebillentry.setF_PAEZ_Base(loanFinBank.getBankNo());//资方编码
}
fEntityList.add(freceivebillentry);
uncollSid = vvvv.getReceivablesSid();
//项目类别key、value
arReceivebill.setF_PAEZ_AssistantType("cw_sklb");
arReceivebill.setF_PAEZ_AssistantKey("062");
arReceivebill.setFRECEIVEBILLENTRY(fEntityList);
if (one) {
arReceivebill.setFBillNo(confirmation.getBillNo());
} else {
//单据编号
carSize = carSize + 1;
arReceivebill.setFBillNo(confirmation.getBillNo() + "-" + carSize);
}
ResultBean resultBean1 = arReceivebillService.draftArReceivebill(arReceivebill);
}
return carSize;
}
//组装客户推送
private BdCustomer createBdCustomer(String useOrgSid, String name, String mobile, String customerSid, String collSid) {
BdCustomer bdCustomer = new BdCustomer();

3
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finselectedreceivablesdetailed/FinSelectedReceivablesDetailedMapper.java

@ -98,6 +98,7 @@ public interface FinSelectedReceivablesDetailedMapper extends BaseMapper<FinSele
List<FinSelectedReceivablesDetailedVo> selectListByVin(@Param("contractNo") String contractNo, @Param("busVinSid") String busVinSid, @Param("state") int state);
List<FinSelectedReceivablesDetailedVo> selectListByVin1(@Param("contractNo") String contractNo, @Param("busVinSid") String busVinSid, @Param("state") int state);
List<FinSelectedReceivablesDetailedVo> selectListByVin2(@Param("contractNo") String contractNo, @Param("busVinSid") String busVinSid, @Param("state") int state);
List<FinSelectedReceivablesDetailed> getList(@Param("list") List<String> sidsList);
@ -155,4 +156,6 @@ public interface FinSelectedReceivablesDetailedMapper extends BaseMapper<FinSele
List<FinSelectedReceivablesDetailed> selectByOneCollSid(String sid);
String getBalance(String busSid);
List<FinSelectedReceivablesDetailed> selectLiBy(String sid);
}

26
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finselectedreceivablesdetailed/FinSelectedReceivablesDetailedMapper.xml

@ -209,6 +209,27 @@
GROUP BY d.`sid`) d
</select>
<select id="selectListByVin2"
resultType="com.yxt.anrui.fin.api.finselectedreceivablesdetailed.FinSelectedReceivablesDetailedVo">
select ifnull(sum(dbalance), 0) as subscriptionMoney
from (SELECT cast((
d.`subscriptionMoney` - COALESCE(SUM(f.`thisUseMoney`), 0)) AS DECIMAL(10, 2)) AS dbalance
FROM fin_selected_receivables_detailed d
left join fin_uncollected_receivables_detailed ff on ff.sid = d.receivablesSid
LEFT JOIN (
SELECT f.busSid,
f.thisUseMoney
FROM fin_funds_carried_forward_veh f
JOIN `fin_funds_carried_forward_apply` fa ON f.mainSid = fa.sid
WHERE fa.`nodeState` != '终止'
) f ON f.`busSid` = d.`sid`
WHERE d.auditState = #{state}
and ff.busVinSid = #{busVinSid}
and d.contractNo = #{contractNo}
and ff.receivablesName = '融资放款'
GROUP BY d.`sid`) d
</select>
<select id="getList"
resultType="com.yxt.anrui.fin.api.finselectedreceivablesdetailed.FinSelectedReceivablesDetailed">
select *
@ -546,4 +567,9 @@
ON ffc.`busSid` = ferd.`sid`
WHERE ferd.sid = #{busSid}
</select>
<select id="selectLiBy"
resultType="com.yxt.anrui.fin.api.finselectedreceivablesdetailed.FinSelectedReceivablesDetailed">
select * from fin_selected_receivables_detailed where collSid = #{sid} and receivablesName = '融资放款'
</select>
</mapper>

8
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finselectedreceivablesdetailed/FinSelectedReceivablesDetailedService.java

@ -285,6 +285,10 @@ public class FinSelectedReceivablesDetailedService extends MybatisBaseService<Fi
return baseMapper.selectListByVin1(contractNo, busVinSid, state);
}
public List<FinSelectedReceivablesDetailedVo> selectListByVin2(String contractNo, String busVinSid, int state) {
return baseMapper.selectListByVin2(contractNo, busVinSid, state);
}
public List<FinSelectedReceivablesDetailed> getList(List<String> sidsList) {
return baseMapper.getList(sidsList);
}
@ -868,4 +872,8 @@ public class FinSelectedReceivablesDetailedService extends MybatisBaseService<Fi
}
}
}
public List<FinSelectedReceivablesDetailed> selectLiBy(String sid) {
return baseMapper.selectLiBy(sid);
}
}

1
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finuncollectedreceivablesdetailed/FinUncollectedReceivablesDetailedMapper.java

@ -108,6 +108,7 @@ public interface FinUncollectedReceivablesDetailedMapper extends BaseMapper<FinU
List<FinUncollectedReceivablesDetailed> selectListByBusVinSid(String busVinSid);
List<FinUncollectedReceivablesDetailed> selectListByBusVinSid1(String busVinSid);
List<FinUncollectedReceivablesDetailed> selectListByBusVinSid2(String busVinSid);
/**
* 根据销售订单车辆sid更新应收未收的款项状态

7
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finuncollectedreceivablesdetailed/FinUncollectedReceivablesDetailedMapper.xml

@ -11,8 +11,8 @@
from fin_uncollected_receivables_detailed
<where>
${ew.sqlSegment}
ORDER BY createTime DESC, id
</where>
ORDER BY createTime DESC, id
</select>
@ -338,6 +338,11 @@
select * from fin_uncollected_receivables_detailed where busVinSid = #{busVinSid} and receivablesName = '首付款及费用'
</select>
<select id="selectListByBusVinSid2"
resultType="com.yxt.anrui.fin.api.finuncollectedreceivablesdetailed.FinUncollectedReceivablesDetailed">
select * from fin_uncollected_receivables_detailed where busVinSid = #{busVinSid} and receivablesName = '融资放款'
</select>
<update id="updateKxState">
update fin_uncollected_receivables_detailed set kxState = #{kxState}
where busVinSid in

4
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finuncollectedreceivablesdetailed/FinUncollectedReceivablesDetailedService.java

@ -1021,6 +1021,10 @@ public class FinUncollectedReceivablesDetailedService extends MybatisBaseService
return baseMapper.selectListByBusVinSid1(busVinSid);
}
public List<FinUncollectedReceivablesDetailed> selectListByBusVinSid2(String busVinSid) {
return baseMapper.selectListByBusVinSid2(busVinSid);
}
public ResultBean updateKxState(StateQuery stateQuery) {
ResultBean rb = ResultBean.fireFail();
List<String> busVinSid = stateQuery.getBusVinSid();

2
anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/utils/ProcDefEnum.java

@ -56,10 +56,12 @@ public enum ProcDefEnum {
LOANCREDITAPPEALAPPLY("信用审核申诉", "process_gygvxw8k:2:5212504"),
DEALERFILINGAPPLY("经销商备案", "process_jdu35cog:9:6652504"),
LOANTEMPLATEAPPLY("定制金融方案", "process_9q5omebi:2:2685008"),
LOANDIFFAPPLY("放款差额确认", "process_f70x5q33:1:6845004"),
LOANHOMEVISITAPPEALAPPLY("家访考察申诉", "process_8ujil3h3:1:3665004"),
BUSVALCUSTFILING("价值客户备案申请", "process_n8fwpitk:2:5085004"),
LOANCUSTOMERRECORD("欠款客户备案", "process_x6o0chx9:4:6055004"),
BUSSOLUTIONSCHANGE("金融方案变更", "process_x6edjfoj:2:6055008"),
LOANBUCKLEAPPLLY("划扣申请", "process_50xtaucg:1:6757504"),
/******************************测试流程id*********************************************/

106
anrui-reportcenter/anrui-reportcenter-api/src/main/java/com/yxt/anrui/reportcenter/api/dailyreport/DailyReport.java

@ -34,4 +34,110 @@ public class DailyReport {
private String vehMConfigSid;
@ApiModelProperty("配置名称")
private String vehMConfigName;
@ApiModelProperty("存销比")
private String saleOfStockRatio;
@ApiModelProperty("库存总计")
private int stock_total;
@ApiModelProperty("库存未定")
private int stock_unreserve;
@ApiModelProperty("库存已定")
private int stock_reserve;
@ApiModelProperty("库存小计")
private int stock_subtotal;
@ApiModelProperty("库存-买断未定")
private int stock_buyout_unreserve;
@ApiModelProperty("库存-买断已定")
private int stock_buyout_reserve;
@ApiModelProperty("库存-买断小计")
private int stock_buyout_subtotal;
@ApiModelProperty("排产-未定")
private int pcOrder_unreserve;
@ApiModelProperty("排产-已定")
private int pcOrder_reserve;
@ApiModelProperty("排产-小计")
private int pcOrder_subtotal;
@ApiModelProperty("简易订单-本日")
private int simpleOrder_day;
@ApiModelProperty("简易订单-本月")
private int simpleOrder_month;
@ApiModelProperty("销售订单-全款-本日")
private int saleOrder_full_day;
@ApiModelProperty("销售订单-贷款-本日")
private int saleOrder_loan_day;
@ApiModelProperty("销售订单-小计-本日")
private int saleOrder_subtotal_day;
@ApiModelProperty("销售订单-全款-本月")
private int saleOrder_full_month;
@ApiModelProperty("销售订单-贷款-本月")
private int saleOrder_loan_month;
@ApiModelProperty("销售订单-小计-本月")
private int saleOrder_subtotal_month;
@ApiModelProperty("销售订单-待交车累计")
private int saleOrder_waitVeh_total;
@ApiModelProperty("销售-全款-本日")
private int sale_full_day;
@ApiModelProperty("销售-贷款-本日")
private int sale_loan_day;
@ApiModelProperty("销售-小计-本日")
private int sale_subtotal_day;
@ApiModelProperty("销售-全款-本月")
private int sale_full_month;
@ApiModelProperty("销售-贷款-本月")
private int sale_loan_month;
@ApiModelProperty("销售-小计-本月")
private int sale_subtotal_month;
@ApiModelProperty("销售-全款-本年")
private int sale_full_year;
@ApiModelProperty("销售-贷款-本年")
private int sale_loan_year;
@ApiModelProperty("销售-小计-本年")
private int sale_subtotal_year;
@ApiModelProperty("厂家开票数-全年")
private int manufacturer_invoicing_year;
@ApiModelProperty("买断-本日")
private int buyout_day;
@ApiModelProperty("买断-本月")
private int buyout_month;
@ApiModelProperty("买断-本年")
private int buyout_year;
@ApiModelProperty("欠款提车-数量")
private int arrears_carry_veh_count;
@ApiModelProperty("欠款提车-金额")
private String arrears_carry_veh_amount;
@ApiModelProperty("金融未放款-数量")
private int loan_not_count;
@ApiModelProperty("金融未放款-金额")
private String loan_not_amount;
@ApiModelProperty("本日交付贷款")
private String deliver_loan_day;
@ApiModelProperty("本日交付全款")
private String deliver_full_day;
@ApiModelProperty("本日交付小计")
private String deliver_subtotal_day;
@ApiModelProperty("本月交付贷款")
private String deliver_loan_month;
@ApiModelProperty("本月交付全款")
private String deliver_full_month;
@ApiModelProperty("本月交付小计")
private String deliver_subtotal_month;
@ApiModelProperty("全年交付贷款")
private String deliver_loan_year;
@ApiModelProperty("全年交付全款")
private String deliver_full_year;
@ApiModelProperty("全年交付小计")
private String deliver_subtotal_year;
}

5
anrui-reportcenter/anrui-reportcenter-api/src/main/java/com/yxt/anrui/reportcenter/api/dailyreport/DailyReportFeign.java

@ -30,6 +30,11 @@ public interface DailyReportFeign {
@ResponseBody
ResultBean<PagerVo<DailyReportVo>> listPage(@RequestBody PagerQuery<DailyReportQuery> pagerQuery);
/**
* 获取动态列
* @param useOrgSid
* @return
*/
@GetMapping("selectListByUseOrgSid")
@ResponseBody
ResultBean<List<DailyParameterVo>> selectListByUseOrgSid(@RequestParam("useOrgSid")String useOrgSid);

27
anrui-reportcenter/anrui-reportcenter-api/src/main/java/com/yxt/anrui/reportcenter/api/dailyreport/DailyReportVo.java

@ -114,6 +114,33 @@ public class DailyReportVo implements Vo {
private String loan_not_amount;
@ApiModelProperty("备注")
private String remarks;
@ApiModelProperty("本日交付贷款")
private String deliver_loan_day;
@ApiModelProperty("本日交付全款")
private String deliver_full_day;
@ApiModelProperty("本日交付小计")
private String deliver_subtotal_day;
@ApiModelProperty("本月交付贷款")
private String deliver_loan_month;
@ApiModelProperty("本月交付全款")
private String deliver_full_month;
@ApiModelProperty("本月交付小计")
private String deliver_subtotal_month;
@ApiModelProperty("全年交付贷款")
private String deliver_loan_year;
@ApiModelProperty("全年交付全款")
private String deliver_full_year;
@ApiModelProperty("全年交付小计")
private String deliver_subtotal_year;
//=========================================================车型配置相关参数
@ApiModelProperty("车身颜色")
private String carColor;

18
anrui-riskcenter-ui/src/api/homevisitpreparation/homevisitpreparation.js

@ -17,18 +17,34 @@ export default {
params: data
})
},
fetchDetailsBySid: function(data) {
return request({
url: '/riskcenter/v1/loanhomevisitinvestigate/getHomeVisitCustomerInfo',
method: 'get',
params: data
})
},
initConSetUp: function(data) {
return request({
url: '/riskcenter/v1/loanhomevisitprep/initConSetUp/' + data,
method: 'get'
})
},
// 生成合同设置
saveLoanCon: function(data) {
return request({
url: '/riskcenter/v1/loanhomevisitprep/saveLoanCon',
method: 'post',
params: data
})
},
// 保存
saveOrUpdate: function(data) {
return request({
url: '/riskcenter/v1/loanhomevisitinvestigate/saveHomeVisitCustomerInfo',
method: 'post',
data: data,
headers: { 'Content-Type': 'application/json' }
})
}
}

98
anrui-riskcenter-ui/src/api/loanbalancerecognition/loanbalancerecognition.js

@ -0,0 +1,98 @@
import request from '@/utils/request'
export default {
// 查询分页列表
listPage: function(params) {
return request({
url: '/riskcenter/v1/LoanDiff/listPage',
method: 'post',
data: params,
headers: { 'Content-Type': 'application/json' }
})
},
saveOrUpdate: function(data) {
return request({
url: '/riskcenter/v1/LoanDiff/update',
method: 'post',
data: data,
headers: { 'Content-Type': 'application/json' }
})
},
fetchBySid: function(data) {
return request({
url: '/riskcenter/v1/LoanDiff/details',
method: 'get',
params: data
})
},
// 提交流程
submit: function(params) {
return request({
url: '/riskcenter/v1/LoanDiff/submitDiffApply',
method: 'post',
data: params,
headers: { 'Content-Type': 'application/json' }
})
},
// 流程审批(同意)
complete: function(params) {
return request({
url: '/riskcenter/v1/LoanDiff/complete',
method: 'post',
data: params,
headers: { 'Content-Type': 'application/json' }
})
},
// 流程审批(加签)
delegate: function(params) {
return request({
url: '/riskcenter/v1/LoanDiff/delegate',
method: 'post',
data: params,
headers: { 'Content-Type': 'application/json' }
})
},
// 流程审批(驳回)
reject: function(params) {
return request({
url: '/riskcenter/v1/LoanDiff/reject',
method: 'post',
data: params,
headers: { 'Content-Type': 'application/json' }
})
},
// 流程审批(终止)
breakProcess: function(params) {
return request({
url: '/riskcenter/v1/LoanDiff/breakProcess',
method: 'post',
data: params,
headers: { 'Content-Type': 'application/json' }
})
},
// 流程审批(撤回)
revokeProcess: function(params) {
return request({
url: '/riskcenter/v1/LoanDiff/revokeProcess',
method: 'post',
data: params,
headers: { 'Content-Type': 'application/json' }
})
},
// 审批流程(同意)获取下一环节
getNextNodesForSubmit: function(data) {
return request({
url: '/riskcenter/v1/LoanDiff/getNextNodesForSubmit',
method: 'get',
params: data
})
},
// 审批流程(驳回)获取上一环节
getPreviousNodesForReject: function(data) {
return request({
url: '/riskcenter/v1/LoanDiff/getPreviousNodesForReject',
method: 'get',
params: data
})
}
}

39
anrui-riskcenter-ui/src/router/index.js

@ -331,6 +331,22 @@ export const constantRoutes = [
}
]
},
{
path: '/loanbalancerecognition',
component: Layout,
redirect: '/loanbalancerecognition',
meta: {
title: '放款差额确认'
},
children: [
{
path: '/loanbalancerecognition/loanbalancerecognition',
component: () => import('@/views/loanbalancerecognition/loanbalancerecognition.vue'),
name: 'LoanBalanceRecognition',
meta: { title: '放款差额确认', noCache: true }
}
]
},
// 流程审批
// 金融产品政策报备--编辑
@ -468,7 +484,28 @@ export const constantRoutes = [
component: () =>
import('@/views/workFlow/jiafangshensuFlow/homeappealYiBan.vue'),
name: 'HomeAppealYiBan'
}
},
// 放款差额确认--编辑
{
path: '/fangkuanquerenFlow/loanbalancerecognitionEdit',
component: () =>
import('@/views/workFlow/fangkuanquerenFlow/loanbalancerecognitionEdit.vue'),
name: 'LoanBalanceRecognitionEdit'
},
// 放款差额确认--待办
{
path: '/fangkuanquerenFlow/loanbalancerecognitionDaiBan',
component: () =>
import('@/views/workFlow/fangkuanquerenFlow/loanbalancerecognitionDaiBan.vue'),
name: 'LoanBalanceRecognitionDaiBan'
},
// 放款差额确认--已办
{
path: '/fangkuanquerenFlow/loanbalancerecognitionYiBan',
component: () =>
import('@/views/workFlow/fangkuanquerenFlow/loanbalancerecognitionYiBan.vue'),
name: 'LoanBalanceRecognitionYiBan'
},
// 404 page must be placed at the end !!!
// { path: '*', redirect: '/404', hidden: true }
]

582
anrui-riskcenter-ui/src/views/homevisitpreparation/homevisitpreparationAdd.vue

@ -0,0 +1,582 @@
<template>
<div class="app-container">
<div class="tab-header webtop">
<div>{{ viewTitle }}</div>
<div>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="saveOrUpdate()">保存</el-button>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div>
</div>
<div class="listconadd">
<el-form ref="form_obj" :model="formobj" :rules="rules" class="formaddcopy02">
<el-row style="border-top: 1px solid #e0e3eb">
<el-col :span="24">
<div class="span-sty"><span class="icon">*</span>生成合同设置</div>
<el-form-item>
<el-radio-group class="addinputInfo" :disabled="contractDisabled" style="font-size: 1px" v-model="contractKey">
<el-radio label="001">一车一合同</el-radio>
<el-radio label="002">一贷款人一合同</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<div class="title">还款协议</div>
<div class="title">借款人乙方</div>
<el-row>
<el-col :span="8">
<div class="span-sty"><span><span class="icon">*</span>借款人姓名</span><el-checkbox style="margin-left: 5px" v-model="formobj.actualBuyer">实际购车人</el-checkbox></div>
<el-form-item><span class="addinputInfo">{{ formobj.lenderNam }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty"><span class="icon">*</span>身份证号</div>
<el-form-item prop="idNumber"><el-input class="addinputInfo" style="width: 40%" v-model="formobj.idNumber" clearable placeholder=""/></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty"><span class="icon">*</span>电话</div>
<el-form-item><span class="addinputInfo">{{ formobj.mobile }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">借款人职业</div>
<el-form-item>
<el-select class="addinputInfo" v-model="formobj.lenderJobKey" placeholder="请选择" clearable filterable @change="lenderJobChange">
<el-option v-for="item in career_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty"><span class="icon">*</span>婚姻状况</div>
<el-form-item prop="marriageTypeKey">
<el-select class="addinputInfo" v-model="formobj.marriageTypeKey" placeholder="请选择" clearable filterable @change="marriageChange">
<el-option v-for="item in marital_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">有无子女</div>
<el-form-item prop="childrenKey">
<el-radio-group class="addinputInfo" style="font-size: 1px" v-model="formobj.childrenKey" @change="childrenChange">
<el-radio label="1"></el-radio>
<el-radio label="0"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty"><span class="icon">*</span>借款人户籍地址</div>
<el-form-item prop="koseki">
<el-input class="addinputInfo addinputw" v-model="formobj.koseki" clearable placeholder=""/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty"><span class="icon">*</span>借款人现住址</div>
<el-form-item prop="address">
<el-input class="addinputInfo addinputw" v-model="formobj.address" clearable placeholder=""/>
</el-form-item>
</el-col>
</el-row>
<div v-if="formobj.marriageTypeKey == '0004'">
<div class="title">配偶(丙方)</div>
<el-row>
<el-col :span="8">
<div class="span-sty"><span class="icon">*</span>配偶姓名</div>
<el-form-item prop="spouseName">
<el-input class="addinputInfo" style="width: 40%" v-model="formobj.spouseName" clearable placeholder=""/>
</el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty"><span class="icon">*</span>身份证号</div>
<el-form-item prop="spouseIdCard">
<el-input class="addinputInfo" style="width: 40%" v-model="formobj.spouseIdCard" clearable placeholder=""/>
</el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty"><span class="icon">*</span>电话</div>
<el-form-item prop="spouseMobile">
<el-input class="addinputInfo" style="width: 40%" v-model="formobj.spouseMobile" clearable placeholder=""/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">配偶职业</div>
<el-form-item>
<el-select class="addinputInfo" v-model="formobj.spouseJobKey" placeholder="请选择" clearable filterable @change="spouseChange">
<el-option v-for="item in career_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty"><span class="icon">*</span>户籍地址</div>
<el-form-item prop="spouseRegisterAddress">
<el-input class="addinputInfo addinputw" v-model="formobj.spouseRegisterAddress" clearable placeholder=""/>
</el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty"><span class="icon">*</span>现住址</div>
<el-form-item prop="spouseAddress">
<el-input class="addinputInfo addinputw" v-model="formobj.spouseAddress" clearable placeholder=""/>
</el-form-item>
</el-col>
</el-row>
</div>
<div class="title titleOne">
<div>其他人员(戊方己方,若借款人不是实际购车人,则必须录入实际购车人,且作为担保人)</div>
<el-button type="primary" class="btntopblueline" size="mini" @click="addPerson">添加</el-button>
</div>
<el-table :key="tableKey" :data="formobj.otherPersonnel" :index="index" border style="width: 100%">
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center"/>
<el-table-column label="操作" align="center" width="80">
<template slot-scope="scope">
<el-button type="danger" size="mini" @click="deletePerson(scope.$index)">删除</el-button>
</template>
</el-table-column>
<el-table-column label="人员身份" align="center">
<template slot-scope="scope">
<el-select v-model="scope.row.personnelType" placeholder="请选择" @change="identityChange($event, scope.row)" clearable filterable>
<el-option v-for="item in identity_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"></el-option>
</el-select>
</template>
</el-table-column>
<el-table-column label="姓名" align="center">
<template slot-scope="scope">
<el-input v-model="scope.row.name" clearable placeholder=""></el-input>
</template>
</el-table-column>
<el-table-column label="身份证号码" align="center">
<template slot-scope="scope">
<el-input v-model="scope.row.idCard" clearable placeholder=""></el-input>
</template>
</el-table-column>
<el-table-column label="电话" align="center">
<template slot-scope="scope">
<el-input v-model="scope.row.mobile" clearable placeholder=""></el-input>
</template>
</el-table-column>
<el-table-column label="户籍地址" align="center">
<template slot-scope="scope">
<el-input v-model="scope.row.residentAddress" clearable placeholder=""></el-input>
</template>
</el-table-column>
<el-table-column label="现住址" align="center">
<template slot-scope="scope">
<el-input v-model="scope.row.address" clearable placeholder=""></el-input>
</template>
</el-table-column>
<el-table-column label="工作单位" align="center">
<template slot-scope="scope">
<el-input v-model="scope.row.company" clearable placeholder=""></el-input>
</template>
</el-table-column>
<el-table-column label="职业" align="center">
<template slot-scope="scope">
<el-input v-model="scope.row.job" clearable placeholder=""></el-input>
</template>
</el-table-column>
</el-table>
<el-row>
<el-col :span="12">
<div class="span-sty"><span class="icon">*</span>车辆登记在</div>
<el-form-item prop="vehRegis">
<el-radio-group class="addinputInfo" style="font-size: 1px" v-model="formobj.vehRegis">
<el-radio label="1">客户名下</el-radio>
<el-radio label="2">挂靠公司名下</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<div v-if="formobj.vehRegis == '2'">
<div class="span-sty"><span class="icon">*</span>挂靠公司是否担保</div>
<el-form-item prop="isSecurity">
<el-radio-group class="addinputInfo" style="font-size: 1px" v-model="formobj.isSecurity">
<el-radio label="0"></el-radio>
<el-radio label="1"></el-radio>
</el-radio-group>
</el-form-item>
</div>
</el-col>
</el-row>
<div v-if="formobj.vehRegis == '2'">
<div class="title">挂靠公司信息(丁方)</div>
<el-row>
<el-col :span="24">
<div class="span-sty">选择挂靠运输公司</div>
<el-form-item>
<el-select v-model="formobj.accCompName" class="addinputInfo" filterable clearable placeholder="" @change="changeBusiness">
<el-option v-for="item in business_list" :key="item.taxpayerNo" :label="item.businessName" :value="item.businessName"/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<div class="span-sty"><span class="icon">*</span>挂靠公司名称</div>
<el-form-item>
<el-input class="addinputInfo addinputw" v-model="formobj.accCompName" clearable placeholder=""/>
</el-form-item>
</el-col>
<el-col :span="12">
<div class="span-sty"><span class="icon">*</span>统一社会信用代码</div>
<el-form-item>
<el-input class="addinputInfo" style="width: 30%" v-model="formobj.accCompRegistNum" clearable placeholder=""/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<div class="span-sty">负责人</div>
<el-form-item>
<el-input class="addinputInfo" style="width: 30%" v-model="formobj.accCompContract" clearable placeholder=""/>
</el-form-item>
</el-col>
<el-col :span="12">
<div class="span-sty">电话</div>
<el-form-item>
<el-input class="addinputInfo" style="width: 30%" v-model="formobj.accComphone" clearable placeholder=""/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<div class="span-sty">注册地址</div>
<el-form-item>
<el-input class="addinputInfo addinputw" v-model="formobj.accCompAddress" clearable placeholder=""/>
</el-form-item>
</el-col>
<el-col :span="12">
<div class="span-sty">实际经营地址</div>
<el-form-item>
<el-input class="addinputInfo addinputw" v-model="formobj.accCompxAddress" clearable placeholder=""/>
</el-form-item>
</el-col>
</el-row>
</div>
<div class="title">车辆及上装采购合同</div>
<el-row>
<el-col :span="24">
<div class="span-sty"><span class="icon">*</span>挂车或上装是否公司采购</div>
<el-form-item>
<el-radio-group class="addinputInfo" style="font-size: 1px" v-model="formobj.isCompBuy">
<el-radio label="0"></el-radio>
<el-radio label="1"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
</div>
</template>
<script>
import req from '@/api/homevisitpreparation/homevisitpreparation'
import { selectInvoingByOrgPath, typeValues } from '@/api/Common/dictcommons'
export default {
name: 'HomeVisitPreparationAdd',
data() {
return {
viewTitle: '',
submitdisabled: false,
contractDisabled: false,
contractKey: '',
tableKey: 0,
index: 0,
career_list: [],
marital_list: [],
identity_list: [],
business_list: [],
formobj: {
accCompAddress: '',
accCompContract: '',
accCompName: '',
accCompRegistNum: '',
accComphone: '',
accCompxAddress: '',
actualBuyer: false,
address: '',
bankCardImages: [],
bankNumber: '',
children: '',
childrenKey: '',
emergencyContactMobile: '',
emergencyContactName: '',
emergencyContactType: '',
emergencyContactTypeKey: '',
idNumber: '',
invoBank: '',
isCompBuy: '',
isSecurity: '',
koseki: '',
lenderJob: '',
lenderJobKey: '',
lenderNam: '',
lenderSid: '',
marriageType: '',
marriageTypeKey: '',
mobile: '',
otherPersonnel: [],
sid: '',
spouseAddress: '',
spouseIdCard: '',
spouseJob: '',
spouseJobKey: '',
spouseMobile: '',
spouseName: '',
spouseRegisterAddress: '',
vehRegis: ''
},
rules: {
idNumber: [{ required: true, message: '借款人身份证号不能为空', trigger: 'blur' }],
marriageTypeKey: [{ required: true, message: '婚姻情况不能为空', trigger: 'change' }],
childrenKey: [{ required: true, message: '有无子女不能为空', trigger: 'change' }],
koseki: [{ required: true, message: '借款人户籍地址不能为空', trigger: 'blur' }],
address: [{ required: true, message: '借款人现住址不能为空', trigger: 'blur' }],
vehRegis: [{ required: true, message: '车辆登记不能为空', trigger: 'change' }],
isSecurity: [{ required: true, message: '挂靠公司是否担保不能为空', trigger: 'change' }],
spouseName: [{ required: true, message: '配偶姓名不能为空', trigger: 'blur' }],
spouseIdCard: [{ required: true, message: '配偶身份证号不能为空', trigger: 'blur' }],
spouseMobile: [{ required: true, message: '配偶电话不能为空', trigger: 'blur' }],
spouseRegisterAddress: [{ required: true, message: '配偶户籍地址不能为空', trigger: 'blur' }],
spouseAddress: [{ required: true, message: '配偶现住址不能为空', trigger: 'blur' }]
}
}
},
methods: {
init() {
typeValues({ type: 'careerType' }).then((res) => {
if (res.success) {
this.career_list = res.data
}
})
typeValues({ type: 'maritalstatus' }).then((res) => {
if (res.success) {
this.marital_list = res.data
}
})
typeValues({ type: 'identity2' }).then((res) => {
if (res.success) {
this.identity_list = res.data
}
})
selectInvoingByOrgPath({ orgPath: window.sessionStorage.getItem('defaultOrgPath') }).then((res) => {
if (res.success) {
this.business_list = res.data
}
})
},
showInfo(sid) {
this.init()
this.viewTitle = '贷款合同信息补充'
this.$nextTick(() => {
this.$refs['form_obj'].clearValidate()
})
req.fetchDetailsBySid({ sid: sid }).then((resp) => {
if (resp.success) {
this.formobj = resp.data
this.formobj.sid = sid
}
})
req.initConSetUp(sid).then((res) => {
if (res.success) {
if (res.data === '003') {
this.contractDisabled = false
} else {
this.contractDisabled = true
this.contractKey = res.data
}
}
})
},
lenderJobChange(value) {
const choose = this.career_list.filter((item) => item.dictKey === value)
if (choose.length > 0 && choose !== null) {
this.formobj.lenderJob = choose[0].dictValue
} else {
this.formobj.lenderJob = ''
}
},
marriageChange(value) {
const choose = this.marital_list.filter((item) => item.dictKey === value)
if (choose.length > 0 && choose !== null) {
this.formobj.marriageType = choose[0].dictValue
} else {
this.formobj.marriageType = ''
}
},
childrenChange(val) {
if (val === '1') {
this.formobj.children = '有'
} else {
this.formobj.children = '无'
}
},
spouseChange(value) {
const choose = this.career_list.filter((item) => item.dictKey === value)
if (choose.length > 0 && choose !== null) {
this.formobj.spouseJob = choose[0].dictValue
} else {
this.formobj.spouseJob = ''
}
},
addPerson() {
this.formobj.otherPersonnel.push({
address: '',
company: '',
idCard: '',
job: '',
mobile: '',
name: '',
personnelKey: '',
personnelType: '',
residentAddress: '',
sid: ''
})
},
deletePerson(index) {
this.formobj.otherPersonnel.splice(index, 1)
},
identityChange(value, row) {
const choose = this.identity_list.filter((item) => item.dictValue === value)
if (choose.length > 0) {
row.personnelKey = choose[0].dictKey
} else {
row.personnelKey = ''
}
},
changeBusiness(value) {
const choose = this.business_list.filter((item) => item.businessName === value)
if (choose.length > 0) {
this.formobj.accCompRegistNum = choose[0].taxpayerNo
this.formobj.accComphone = choose[0].phone
this.formobj.accCompxAddress = choose[0].address
} else {
this.formobj.accCompRegistNum = ''
this.formobj.accComphone = ''
this.formobj.accCompxAddress = ''
}
},
saveOrUpdate() {
if (this.contractKey === '') {
this.$message({ showClose: true, type: 'error', message: '生成合同设置不能为空' })
return
}
if (!this.formobj.actualBuyer) {
if (this.formobj.otherPersonnel.length === 0) {
this.$message({ showClose: true, type: 'error', message: '若借款人不是实际购车人,则其他人员表中必须录入实际购车人' })
return
} else {
let tip = '0'
for (var i = 0; i < this.formobj.otherPersonnel.length; i++) {
if (this.formobj.otherPersonnel[i].personnelKey === '3') {
tip = '1'
break
}
}
if (tip === '0') {
this.$message({ showClose: true, type: 'error', message: '若借款人不是实际购车人,则其他人员表中必须录入实际购车人' })
return
}
}
}
this.$refs['form_obj'].validate((valid) => {
if (valid) {
this.submitdisabled = true
req.saveOrUpdate(this.formobj).then((resp) => {
if (resp.success) {
const loading = this.$loading({
lock: true,
text: '合同信息正在生成中',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
})
req.saveLoanCon({ sid: this.formobj.sid, conSetUpKey: this.contractKey }).then((res) => {
if (res.success) {
loading.close()
this.$message({ showClose: true, type: 'success', message: '操作成功' })
this.handleReturn('true')
}
})
} else {
this.submitdisabled = false
}
}).catch(() => {
this.submitdisabled = false
})
}
})
},
handleReturn(isreload) {
if (isreload === 'true') this.$emit('reloadlist')
this.formobj = {
accCompAddress: '',
accCompContract: '',
accCompName: '',
accCompRegistNum: '',
accComphone: '',
accCompxAddress: '',
actualBuyer: false,
address: '',
bankCardImages: [],
bankNumber: '',
children: '',
childrenKey: '',
emergencyContactMobile: '',
emergencyContactName: '',
emergencyContactType: '',
emergencyContactTypeKey: '',
idNumber: '',
invoBank: '',
isCompBuy: '',
isSecurity: '',
koseki: '',
lenderJob: '',
lenderJobKey: '',
lenderNam: '',
lenderSid: '',
marriageType: '',
marriageTypeKey: '',
mobile: '',
otherPersonnel: [],
sid: '',
spouseAddress: '',
spouseIdCard: '',
spouseJob: '',
spouseJobKey: '',
spouseMobile: '',
spouseName: '',
spouseRegisterAddress: '',
vehRegis: ''
}
this.submitdisabled = false
this.contractKey = ''
this.contractDisabled = false
this.$refs['form_obj'].resetFields()
this.$emit('doback')
}
}
}
</script>
<style scoped>
.span-sty {
width: 200px !important;
}
.addinputInfo {
margin-left: 190px !important;
}
/deep/ .el-form-item__error {
margin-left: 190px !important;
}
.titleOne {
padding: 7px;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
</style>

42
anrui-riskcenter-ui/src/views/homevisitpreparation/homevisittobeprepared.vue

@ -124,19 +124,10 @@
<!-- End 列表页面 -->
<!-- 已选择列表 -->
<thehomevisitisready v-show="viewState == 2" ref="divSelect" @doback="resetState"/>
<!-- 生成合同,补充贷款合同信息 -->
<homevisitpreparationAdd v-show="viewState == 4" ref="divAdd" @doback="resetState" @reloadlist="getList"/>
<!-- 查看销售订单 -->
<saleOrder v-show="viewState == 3" ref="divSale" @doback="resetState"/>
<!-- 生成合同 -->
<el-dialog title="生成合同设置" :visible.sync="dialogVisible" width="50%">
<el-radio-group style="font-size: 1px" v-model="contract">
<el-radio label="001">一车一合同</el-radio>
<el-radio label="002">一贷款人一合同</el-radio>
</el-radio-group>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="handleConfirm">确定</el-button>
<el-button @click="dialogVisible = false">取消</el-button>
</span>
</el-dialog>
</div>
</template>
@ -145,6 +136,7 @@ import req from '@/api/homevisitpreparation/homevisitpreparation'
import Pagination from '@/components/pagination'
import pageye from '@/components/pagination/pageye'
import ButtonBar from '@/components/ButtonBar'
import homevisitpreparationAdd from './homevisitpreparationAdd'
import thehomevisitisready from './thehomevisitisready'
import saleOrder from '@/components/publicPage/salesOrder'
@ -154,6 +146,7 @@ export default {
Pagination,
pageye,
ButtonBar,
homevisitpreparationAdd,
thehomevisitisready,
saleOrder
},
@ -161,7 +154,6 @@ export default {
return {
viewState: 1,
btndisabled: false,
dialogVisible: false,
btnList: [
{
type: 'primary',
@ -212,7 +204,6 @@ export default {
size: 10,
total: 0
},
contract: '',
rules: {}
}
},
@ -293,33 +284,12 @@ export default {
},
toContract() {
if (this.sids.length === 1) {
req.initConSetUp(this.sids[0]).then((res) => {
if (res.data === '003') {
this.dialogVisible = true
this.contract = ''
} else {
this.saveLoanCon(res.data)
}
})
this.viewState = 4
this.$refs['divAdd'].showInfo(this.sids[0])
} else {
this.$message({ showClose: true, type: 'error', message: '请选择一条记录进行操作' })
}
},
handleConfirm() {
if (this.contract !== '') {
this.dialogVisible = false
this.saveLoanCon(this.contract)
} else {
this.$message({ showClose: true, type: 'error', message: '请选择相应的生成合同设置方式' })
}
},
saveLoanCon(val) {
req.saveLoanCon({ sid: this.sids[0], conSetUpKey: val }).then((res) => {
if (res.success) {
this.$message({ showClose: true, type: 'success', message: '操作成功'})
}
})
},
handleLook(row) {
this.viewState = 3
this.$refs['divSale'].showInfo(row.saleOrderSid)

298
anrui-riskcenter-ui/src/views/loanbalancerecognition/loanbalancerecognition.vue

@ -0,0 +1,298 @@
<template>
<div class="app-container">
<!--列表页面-->
<div v-show="viewState == 1">
<button-bar view-title="放款差额确认" ref="btnbar" :btndisabled="btndisabled" @btnhandle="btnHandle"/>
<!--Start查询列表部分-->
<div class="main-content">
<div class="searchcon">
<el-button size="small" class="searchbtn" @click="clicksearchShow">{{ searchxianshitit }}</el-button>
<div v-show="isSearchShow" class="search">
<el-form ref="listQueryform" :inline="true" :model="listQuery" label-width="100px" class="tab-header">
<el-form-item label="分公司">
<el-input v-model="listQuery.params.useOrgName" placeholder="" clearable/>
</el-form-item>
<el-form-item label="申请部门">
<el-input v-model="listQuery.params.createDept" placeholder="" clearable/>
</el-form-item>
<el-form-item label="申请人">
<el-input v-model="listQuery.params.createByName" placeholder="" clearable/>
</el-form-item>
<el-form-item label="申请日期">
<el-date-picker v-model="listQuery.params.createTimeStart" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
<span style="padding: 0 8px"></span>
<el-date-picker v-model="listQuery.params.createTimeEnd" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
</el-form-item>
</el-form>
<div class="btn" style="text-align: center;">
<el-button type="primary" icon="el-icon-search" size="small" @click="handleFilter">查询</el-button>
<el-button type="primary" icon="el-icon-refresh" size="small" @click="handleReset">重置</el-button>
</div>
</div>
</div>
<!--End查询列表部分-->
<div class="listtop">
<div class="tit">放款差额确认申请列表</div>
<pageye v-show="list.length > 0" :total="listQuery.total" :page.sync="listQuery.current" :limit.sync="listQuery.size" class="pagination" @pagination="getList"/>
</div>
<!--Start 主页面主要部分 -->
<div class="">
<el-table :key="tableKey" v-loading="listLoading" :data="list" :border="true" style="width: 100%;" @selection-change="handleSelectionChange">
<el-table-column type="selection" align="center" width="50"/>
<el-table-column label="序号" type="index" width="80" :index="indexMethod" align="center"/>
<el-table-column label="操作" width="180px" align="center">
<template slot-scope="scope">
<el-button type="primary" size="mini" @click="toEdit(scope.row)" :disabled="scope.row.nodeState =='发起申请' ? false : scope.row.nodeState == '待提交' ? false : true">办理</el-button>
<el-button type="primary" size="mini" @click="toInfo(scope.row)">查看</el-button>
</template>
</el-table-column>
<el-table-column label="状态" width="180px" header-align="center">
<template slot-scope="scope">
<span v-if="scope.row.nodeState=='待提交'" type="primary" size="mini">待提交</span>
<span v-else @click="flowRecord(scope.row)" class="bluezi">{{ scope.row.nodeState }}</span>
</template>
</el-table-column>
<el-table-column label="分公司" align="center">
<template slot-scope="scope">
<span>{{ scope.row.useOrgName }}</span>
</template>
</el-table-column>
<el-table-column label="申请部门" align="center">
<template slot-scope="scope">
<span>{{ scope.row.createDept }}</span>
</template>
</el-table-column>
<el-table-column label="申请人" align="center" width="100">
<template slot-scope="scope">
<span>{{ scope.row.createByName }}</span>
</template>
</el-table-column>
<el-table-column label="申请日期" align="center" width="100">
<template slot-scope="scope">
<span>{{ scope.row.createTime }}</span>
</template>
</el-table-column>
<el-table-column label="申请编号" align="center" width="100">
<template slot-scope="scope">
<span>{{ scope.row.billNo }}</span>
</template>
</el-table-column>
<el-table-column label="备注" align="center">
<template slot-scope="scope">
<span>{{ scope.row.remarks }}</span>
</template>
</el-table-column>
</el-table>
</div>
<!--End 主页面主要部分-->
<div class="pages">
<div class="tit"/>
<!-- 翻页 -->
<pagination v-show="list.length > 0" :total="listQuery.total" :page.sync="listQuery.current" :limit.sync="listQuery.size" class="pagination" @pagination="getList"/>
</div>
<!--End查询列表部分-->
</div>
</div>
<!--款项结转新增及修改 -->
<loanbalancerecognitionAdd v-show="viewState == 2 || viewState == 3" ref="divAdd" @doback="resetState" @reloadlist="getList"/>
<!--款项结转申请详情-->
<loanbalancerecognitionInfo v-show="viewState == 4" ref="divInfo" @doback="resetState" />
<!-- 流程审批记录 -->
<el-dialog title="" :visible.sync="centerDialogVisible" width="78%" height="1%" :before-close="closeIt" center>
<iframe frameborder="0" id="iframe" style="width:100%;" scrolling="no" :src="this.centerDialogVisible === true ? url :''"></iframe>
</el-dialog>
</div>
</template>
<script>
import Pagination from '@/components/pagination'
import pageye from '@/components/pagination/pageye'
import ButtonBar from '@/components/ButtonBar'
import req from '@/api/loanbalancerecognition/loanbalancerecognition'
import { getStorage } from '@/utils/auth'
import loanbalancerecognitionAdd from './loanbalancerecognitionAdd'
import loanbalancerecognitionInfo from './loanbalancerecognitionInfo'
export default {
name: 'LoanBalanceRecognition',
components: {
Pagination,
pageye,
ButtonBar,
loanbalancerecognitionAdd,
loanbalancerecognitionInfo
},
data() {
return {
url: '',
dialogHeight: '80%',
centerDialogVisible: false,
btndisabled: false,
btnList: [
{
type: 'info',
size: 'small',
icon: 'cross',
btnKey: 'doClose',
btnLabel: '关闭'
}
],
isSearchShow: false,
searchxianshitit: '显示查询条件',
viewState: 1, // 1 2 3 4
tableKey: 0,
list: [],
sids: [], // SIDs
FormLoading: false,
listLoading: false,
//
listQuery: {
current: 1,
size: 10,
total: 0,
params: {
createByName: '',
createDept: '',
createTimeEnd: '',
createTimeStart: '',
menuUrl: '',
orgPath: '',
useOrgName: '',
userSid: ''
}
}
}
},
created() {
//
this.getList()
},
mounted() {
// vuewindowpostMessagehandleMessage
window.addEventListener('message', this.handleMessage)
this.$refs['btnbar'].setButtonList(this.btnList)
},
methods: {
async handleMessage(event) {
var code = ''
if (event.data.params !== null && event.data.params !== undefined) {
code = event.data.params.code
}
if (code === 1) {
this.centerDialogVisible = false
} else if (code === 2) {
this.dialogHeight = event.data.params.data
this.setIframeHeight(document.getElementById('iframe'))
}
},
closeIt() {
this.url = ''
this.centerDialogVisible = false
},
setIframeHeight(iframe) {
iframe.height = this.dialogHeight
},
flowRecord(row) {
this.centerDialogVisible = true
var params = {
deployId: row.procDefId,
procInsId: row.procInstId,
token: getStorage()
}
this.url = '/#/flow/flowRecordForBusiness?data=' + encodeURI((JSON.stringify(params)))
},
//
clicksearchShow() {
this.isSearchShow = !this.isSearchShow
if (this.isSearchShow) {
this.searchxianshitit = '隐藏查询条件'
} else {
this.searchxianshitit = '显示查询条件'
}
},
btnHandle(btnKey) {
console.log('XXXXXXXXXXXXXXX ' + btnKey)
switch (btnKey) {
case 'doClose':
this.doClose()
break
default:
break
}
},
// sid
handleSelectionChange(row) {
const aa = []
row.forEach(element => {
aa.push(element.sid)
})
this.sids = aa
},
//
indexMethod(index) {
var pagestart = (this.listQuery.current - 1) * this.listQuery.size
var pageindex = index + 1 + pagestart
return pageindex
},
//
getList() {
this.listLoading = true
this.listQuery.params.userSid = window.sessionStorage.getItem('userSid')
this.listQuery.params.orgPath = window.sessionStorage.getItem('defaultOrgPath')
this.listQuery.params.menuUrl = this.$route.path
req.listPage(this.listQuery).then(response => {
this.listLoading = false
if (response.success) {
this.list = response.data.records
this.listQuery.total = response.data.total
} else {
this.list = []
this.listQuery.total = 0
}
})
},
//
handleFilter() {
this.listQuery.current = 1
this.getList()
},
//
handleReset() {
this.listQuery = {
current: 1,
size: 10,
total: 0,
params: {
createByName: '',
createDept: '',
createTimeEnd: '',
createTimeStart: '',
menuUrl: '',
orgPath: '',
useOrgName: '',
userSid: ''
}
}
this.getList()
},
toEdit(row) {
this.viewState = 2
this.$refs['divAdd'].showEdit(row)
},
toInfo(row) {
this.viewState = 4
this.$refs['divInfo'].showInfo(row)
},
//
resetState() {
this.viewState = 1
},
doClose() {
this.$store.dispatch('tagsView/delView', this.$route)
this.$router.go(-1)
}
}
}
</script>
<style scoped>
</style>

244
anrui-riskcenter-ui/src/views/loanbalancerecognition/loanbalancerecognitionAdd.vue

@ -0,0 +1,244 @@
<template>
<div class="app-container">
<div v-show="viewState == 1">
<div class="tab-header webtop">
<div>{{ viewTitle }}</div>
<div>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="saveOrUpdate()">保存</el-button>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="submit()">提交</el-button>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div>
</div>
<div class="listconadd">
<el-form ref="form_obj" :model="formobj" :rules="rules" class="formaddcopy02">
<el-row style="border-top: 1px solid #e0e3eb">
<el-col :span="8">
<div class="span-sty">申请部门</div>
<el-form-item><span class="addinputInfo">{{ formobj.createDept }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">申请人</div>
<el-form-item><span class="addinputInfo">{{ formobj.createByName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">申请日期</div>
<el-form-item><span class="addinputInfo">{{ formobj.createDate }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">备注</div>
<el-form-item><el-input v-model="formobj.remarks" clearable placeholder="" class="addinputInfo addinputw" /></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">附件</div>
<el-form-item>
<upload-img ref="uploadImg" class="addinputInfo" v-model="formobj.filesList" :limit="50" bucket="map" :upload-data="{ type: '0001' }"/>
</el-form-item>
</el-col>
</el-row>
<div class="title">
<div>金融产品政策列表</div>
<div>金额单位</div>
</div>
<el-table :key="tableKey" :data="formobj.loanDiffDetails" :index="index" border style="width: 100%">
<el-table-column fixed width="80" label="序号" type="index" :index="index + 1" align="center"/>
<el-table-column prop="bankName" label="资方" align="center" width="100" />
<el-table-column prop="borrowName" label="贷款人" align="center" />
<el-table-column prop="vinNo" label="车架号" align="center" width="100" />
<el-table-column label="放款金额" align="center">
<el-table-column prop="makeLoan" label="应放" align="center" />
<el-table-column prop="realityLoan" label="实放" align="center" width="100" />
<el-table-column prop="diffLoan" label="差额" align="center" width="100" />
</el-table-column>
<el-table-column label="主产品厂家贴息" align="center">
<el-table-column prop="makeDiscount" label="预计" align="center" />
<el-table-column label="实际" align="center" width="150">
<template slot-scope="scope">
<el-input v-model="scope.row.realityDiscount" clearable @keyup.native="UpNumber" placeholder="" @input="realityDiscountInput(scope.row)" />
</template>
</el-table-column>
<el-table-column prop="diffDiscount" label="差额" align="center" width="100" />
</el-table-column>
<el-table-column label="其它融厂家贴息" align="center">
<el-table-column prop="makeOtherDiscount" label="预计" align="center" />
<el-table-column label="实际" align="center" width="150">
<template slot-scope="scope">
<el-input v-model="scope.row.realityOtherDiscount" clearable @keyup.native="UpNumber" placeholder="" @input="realityOtherDiscountInput(scope.row)" />
</template>
</el-table-column>
<el-table-column prop="diffOtherDiscount" label="差额" align="center" width="100" />
</el-table-column>
<el-table-column label="固定贷款保证金" align="center">
<el-table-column prop="makeLoanMargin" label="预计" align="center" />
<el-table-column label="实际" align="center" width="150">
<template slot-scope="scope">
<el-input v-model="scope.row.realityLoanMargin" clearable @keyup.native="UpNumber" placeholder="" @input="realityLoanMarginInput(scope.row)" />
</template>
</el-table-column>
<el-table-column prop="diffLoanMargin" label="差额" align="center" width="100" />
</el-table-column>
<el-table-column label="意外险" align="center">
<el-table-column prop="receivedPremium" label="已收" align="center" />
<el-table-column label="实际" align="center" width="150">
<template slot-scope="scope">
<el-input v-model="scope.row.realityPremium" clearable @keyup.native="UpNumber" placeholder="" @input="realityPremiumInput(scope.row)" />
</template>
</el-table-column>
<el-table-column prop="diffPremium" label="差额" align="center" width="100" />
</el-table-column>
</el-table>
</el-form>
</div>
</div>
</div>
</template>
<script>
import req from '@/api/loanbalancerecognition/loanbalancerecognition'
import uploadImg from '@/components/uploadFile/uploadImg'
export default {
name: 'LoanBalanceRecognitionAdd',
components: {
uploadImg
},
data() {
return {
viewTitle: '',
viewState: 1,
submitdisabled: false,
tableKey: 0,
index: 0,
formobj: {
createByName: '',
createDate: '',
createDept: '',
filesList: [],
loanDiffDetails: [],
remarks: '',
sid: ''
},
rules: {}
}
},
methods: {
showEdit(row) {
this.viewTitle = '【编辑】放款差额确认'
this.$nextTick(() => {
this.$refs['form_obj'].clearValidate()
})
req.fetchBySid({ sid: row.sid }).then((res) => {
if (res.success) {
this.formobj = res.data
}
})
},
UpNumber(e) {
e.target.value = e.target.value.replace(/[^0-9.]/g, '') // .
e.target.value = e.target.value.replace(/^00/, '0.') // 0
e.target.value = e.target.value.replace(/\.{2,}/g, '.') // .
e.target.value = e.target.value.replace('.', '$#$').replace(/\./g, '').replace('$#$', '.')
e.target.value = e.target.value.replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3') //
if (e.target.value.indexOf('.') < 0 && e.target.value !== '' && e.target.value !== '-') {
// 0102
e.target.value = parseFloat(e.target.value)
}
},
// --
realityDiscountInput(row) {
if (row.makeDiscount !== '' && row.realityDiscount !== '' && row.realityDiscount !== null) {
row.diffDiscount = parseFloat(row.makeDiscount) - parseFloat(row.realityDiscount)
} else {
row.diffDiscount = ''
}
},
// --
realityOtherDiscountInput(row) {
if (row.makeOtherDiscount !== '' && row.realityOtherDiscount !== '' && row.realityOtherDiscount !== null) {
row.diffOtherDiscount = parseFloat(row.makeOtherDiscount) - parseFloat(row.realityOtherDiscount)
} else {
row.diffOtherDiscount = ''
}
},
// --
realityLoanMarginInput(row) {
if (row.makeLoanMargin !== '' && row.realityLoanMargin !== '' && row.realityLoanMargin !== null) {
row.diffLoanMargin = parseFloat(row.makeLoanMargin) - parseFloat(row.realityLoanMargin)
} else {
row.diffLoanMargin = ''
}
},
// --
realityPremiumInput(row) {
if (row.receivedPremium !== '' && row.realityPremium !== '' && row.realityPremium !== null) {
row.diffPremium = parseFloat(row.receivedPremium) - parseFloat(row.realityPremium)
} else {
row.diffPremium = ''
}
},
saveOrUpdate() {
this.$refs['form_obj'].validate((valid) => {
if (valid) {
this.submitdisabled = true
req.saveOrUpdate(this.formobj).then((res) => {
if (res.success) {
this.$message({ showClose: true, type: 'success', message: '保存成功' })
this.handleReturn('true')
} else {
this.submitdisabled = false
}
}).catch(() => {
this.submitdisabled = false
})
}
})
},
submit() {
this.$refs['form_obj'].validate((valid) => {
if (valid) {
this.submitdisabled = true
req.submit(this.formobj).then((res) => {
if (res.success) {
this.$message({ showClose: true, type: 'success', message: '操作成功' })
this.handleReturn('true')
} else {
this.submitdisabled = false
}
}).catch(() => {
this.submitdisabled = false
})
}
})
},
handleReturn(isreload) {
if (isreload === 'true') this.$emit('reloadlist')
this.formobj = {
createByName: '',
createDate: '',
createDept: '',
filesList: [],
loanDiffDetails: [],
remarks: '',
sid: ''
}
this.submitdisabled = false
this.$emit('doback')
}
}
}
</script>
<style scoped>
.addinputInfo {
margin-left: 60px !important;
}
.title {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
</style>

147
anrui-riskcenter-ui/src/views/loanbalancerecognition/loanbalancerecognitionInfo.vue

@ -0,0 +1,147 @@
<template>
<div class="app-container">
<div v-show="viewState == 1">
<div class="tab-header webtop">
<div>{{ viewTitle }}</div>
<div>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div>
</div>
<div class="listconadd">
<el-form ref="form_obj" :model="formobj" :rules="rules" class="formaddcopy02">
<el-row style="border-top: 1px solid #e0e3eb">
<el-col :span="8">
<div class="span-sty">申请部门</div>
<el-form-item><span class="addinputInfo">{{ formobj.createDept }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">申请人</div>
<el-form-item><span class="addinputInfo">{{ formobj.createByName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">申请日期</div>
<el-form-item><span class="addinputInfo">{{ formobj.createDate }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">备注</div>
<el-form-item><span class="addinputInfo">{{ formobj.remarks }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">附件</div>
<el-form-item>
<el-image class="addinputInfo" style="width: 150px; height: 150px" v-for="(item, index) in formobj.filesList" :key="index" :src="item" :preview-src-list="formobj.filesList"/>
</el-form-item>
</el-col>
</el-row>
<div class="title">
<div>金融产品政策列表</div>
<div>金额单位</div>
</div>
<el-table :key="tableKey" :data="formobj.loanDiffDetails" :index="index" border style="width: 100%">
<el-table-column fixed width="80" label="序号" type="index" :index="index + 1" align="center"/>
<el-table-column prop="bankName" label="资方" align="center" width="100" />
<el-table-column prop="borrowName" label="贷款人" align="center" />
<el-table-column prop="vinNo" label="车架号" align="center" width="100" />
<el-table-column label="放款金额" align="center">
<el-table-column prop="makeLoan" label="应放" align="center" />
<el-table-column prop="realityLoan" label="实放" align="center" width="100" />
<el-table-column prop="diffLoan" label="差额" align="center" width="100" />
</el-table-column>
<el-table-column label="主产品厂家贴息" align="center">
<el-table-column prop="makeDiscount" label="预计" align="center" />
<el-table-column prop="realityDiscount" label="实际" align="center" width="100" />
<el-table-column prop="diffDiscount" label="差额" align="center" width="100" />
</el-table-column>
<el-table-column label="其它融厂家贴息" align="center">
<el-table-column prop="makeOtherDiscount" label="预计" align="center" />
<el-table-column prop="realityOtherDiscount" label="实际" align="center" width="100" />
<el-table-column prop="diffOtherDiscount" label="差额" align="center" width="100" />
</el-table-column>
<el-table-column label="固定贷款保证金" align="center">
<el-table-column prop="makeLoanMargin" label="预计" align="center" />
<el-table-column prop="realityLoanMargin" label="实际" align="center" width="100" />
<el-table-column prop="diffLoanMargin" label="差额" align="center" width="100" />
</el-table-column>
<el-table-column label="意外险" align="center">
<el-table-column prop="receivedPremium" label="已收" align="center" />
<el-table-column prop="realityPremium" label="实际" align="center" width="100" />
<el-table-column prop="diffPremium" label="差额" align="center" width="100" />
</el-table-column>
</el-table>
</el-form>
</div>
</div>
</div>
</template>
<script>
import req from '@/api/loanbalancerecognition/loanbalancerecognition'
export default {
name: 'LoanBalanceRecognitionInfo',
data() {
return {
viewTitle: '',
viewState: 1,
submitdisabled: false,
tableKey: 0,
index: 0,
formobj: {
createByName: '',
createDate: '',
createDept: '',
filesList: [],
loanDiffDetails: [],
remarks: '',
sid: ''
},
rules: {}
}
},
methods: {
showInfo(row) {
this.viewTitle = '放款差额确认'
req.fetchBySid({ sid: row.sid }).then((res) => {
if (res.success) {
this.formobj = res.data
if (this.formobj.filesList.length > 0) {
const aa = []
this.formobj.filesList.forEach((e) => {
aa.push(e.url)
})
this.formobj.filesList = aa
}
}
})
},
handleReturn() {
this.formobj = {
createByName: '',
createDate: '',
createDept: '',
filesList: [],
loanDiffDetails: [],
remarks: '',
sid: ''
}
this.$emit('doback')
}
}
}
</script>
<style scoped>
.addinputInfo {
margin-left: 60px !important;
}
.title {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
</style>

1
anrui-riskcenter-ui/src/views/managementcreditaudit/managementcreditaudit.vue

@ -306,6 +306,7 @@ export default {
capCarefulDate: row.capCarefulDate,
capCarefulResult: row.capCarefulResult,
loanContractSid: row.loanContractSid,
isCompInvoic: row.isCompInvoic,
sid: row.sid
}
req.save(params).then((resp) => {

11
anrui-riskcenter-ui/src/views/repaymentschedule/repaymentscheduleAdd.vue

@ -41,7 +41,7 @@
</el-col>
<el-col :span="8">
<div class="span-sty">首期还款日</div>
<el-form-item><el-date-picker class="addinputInfo" v-model="formobj.mainRepayDate" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"/></el-form-item>
<el-form-item><el-date-picker class="addinputInfo" @change="mainRepayDateChange" v-model="formobj.mainRepayDate" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"/></el-form-item>
</el-col>
</el-row>
<el-row>
@ -71,7 +71,7 @@
</el-col>
<el-col :span="8">
<div class="span-sty">首期还款日</div>
<el-form-item><el-date-picker class="addinputInfo" v-model="formobj.otherRepayDate" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"/></el-form-item>
<el-form-item><el-date-picker class="addinputInfo" :disabled="formobj.sameBank == '1'" v-model="formobj.otherRepayDate" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"/></el-form-item>
</el-col>
</el-row>
<el-row>
@ -114,6 +114,7 @@ export default {
formobj: {
salesOrderSid: '',
solutionsSid: '',
sameBank: '',
loanContractNo: '',
borrowerName: '',
vehCount: '',
@ -150,6 +151,11 @@ export default {
}
})
},
mainRepayDateChange(val) {
if (this.formobj.sameBank === '1') {
this.formobj.otherRepayDate = val
}
},
saveOrUpdate() {
this.$refs['form_obj'].validate((valid) => {
if (valid) {
@ -180,6 +186,7 @@ export default {
this.formobj = {
salesOrderSid: '',
solutionsSid: '',
sameBank: '',
loanContractNo: '',
borrowerName: '',
vehCount: '',

19
anrui-riskcenter-ui/src/views/unsecuredbusiness/unsecuredbusinessAdd.vue

@ -36,7 +36,7 @@
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-col :span="8">
<div class="span-sty">资方信审终审结果</div>
<el-form-item>
<el-select class="addinputInfo" v-model="formobj.creditReviewKey" @change="creditReviewChange" placeholder="请选择" clearable filterable>
@ -44,7 +44,18 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="8">
<div v-show="formobj.isHavTrailer && formobj.creditReviewKey == '001'">
<div class="span-sty">挂车是否公司开票</div>
<el-form-item>
<el-radio-group class="addinputInfo" style="font-size: 1px" v-model="formobj.isCompInvoic">
<el-radio label="0"></el-radio>
<el-radio label="1"></el-radio>
</el-radio-group>
</el-form-item>
</div>
</el-col>
<el-col :span="8">
<div class="span-sty">信审终审日期</div>
<el-form-item>
<el-date-picker class="addinputInfo" v-model="formobj.creditReviewDate" type="date" clearable format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="选择日期"/>
@ -147,6 +158,8 @@ export default {
loanReviewDate: '',
isLoan: '',
isLoanDate: '',
isCompInvoic: '',
isHavTrailer: false,
homeVisitFiles: [],
creditReviewFiles: [],
loanReviewFiles: []
@ -282,6 +295,8 @@ export default {
loanReviewDate: '',
isLoan: '',
isLoanDate: '',
isCompInvoic: '',
isHavTrailer: false,
homeVisitFiles: [],
creditReviewFiles: [],
loanReviewFiles: []

14
anrui-riskcenter-ui/src/views/unsecuredbusiness/unsecuredbusinessInfo.vue

@ -29,11 +29,17 @@
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-col :span="8">
<div class="span-sty">资方信审终审结果</div>
<el-form-item><span class="addinputInfo">{{ formobj.creditReview }}</span></el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="8">
<div v-show="formobj.isHavTrailer && formobj.creditReviewKey == '001'">
<div class="span-sty">挂车是否公司开票</div>
<el-form-item><span class="addinputInfo">{{ formobj.isCompInvoic == '0' ? '是' : '否' }}</span></el-form-item>
</div>
</el-col>
<el-col :span="8">
<div class="span-sty">信审终审日期</div>
<el-form-item><span class="addinputInfo">{{ formobj.creditReviewDate }}</span></el-form-item>
</el-col>
@ -112,6 +118,8 @@ export default {
loanReviewDate: '',
isLoan: '',
isLoanDate: '',
isCompInvoic: '',
isHavTrailer: false,
homeVisitFiles: [],
creditReviewFiles: [],
loanReviewFiles: []
@ -143,6 +151,8 @@ export default {
loanReviewDate: '',
isLoan: '',
isLoanDate: '',
isCompInvoic: '',
isHavTrailer: false,
homeVisitFiles: [],
creditReviewFiles: [],
loanReviewFiles: []

415
anrui-riskcenter-ui/src/views/workFlow/fangkuanquerenFlow/loanbalancerecognitionDaiBan.vue

@ -0,0 +1,415 @@
<template>
<div class="app-container">
<div v-show="viewState == 1">
<div class="tab-header webtop">
<div>{{ viewTitle }}</div>
<div>
<el-button type="primary" size="small" @click="openCountersign('加签')"> </el-button>
<el-button type="primary" size="small" @click="openAgree('同意')"> </el-button>
<el-button type="danger" size="small" @click="openReject('驳回')"> </el-button>
<el-button type="danger" size="small" @click="openStop('终止')"> </el-button>
</div>
</div>
<div class="">
<el-form ref="form_obj" :model="formobj" :rules="rules" class="formaddcopy02">
<el-row style="border-top: 1px solid #e0e3eb">
<el-col :span="8">
<div class="span-sty">申请部门</div>
<el-form-item><span class="addinputInfo">{{ formobj.createDept }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">申请人</div>
<el-form-item><span class="addinputInfo">{{ formobj.createByName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">申请日期</div>
<el-form-item><span class="addinputInfo">{{ formobj.createDate }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">备注</div>
<el-form-item><span class="addinputInfo">{{ formobj.remarks }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">附件</div>
<el-form-item>
<el-image class="addinputInfo" style="width: 150px; height: 150px" v-for="(item, index) in formobj.filesList" :key="index" :src="item" :preview-src-list="formobj.filesList"/>
</el-form-item>
</el-col>
</el-row>
<div class="title">
<div>金融产品政策列表</div>
<div>金额单位</div>
</div>
<el-table :key="tableKey" :data="formobj.loanDiffDetails" :index="index" border style="width: 100%">
<el-table-column fixed width="80" label="序号" type="index" :index="index + 1" align="center"/>
<el-table-column prop="bankName" label="资方" align="center" width="100" />
<el-table-column prop="borrowName" label="贷款人" align="center" />
<el-table-column prop="vinNo" label="车架号" align="center" width="100" />
<el-table-column label="放款金额" align="center">
<el-table-column prop="makeLoan" label="应放" align="center" />
<el-table-column prop="realityLoan" label="实放" align="center" width="100" />
<el-table-column prop="diffLoan" label="差额" align="center" width="100" />
</el-table-column>
<el-table-column label="主产品厂家贴息" align="center">
<el-table-column prop="makeDiscount" label="预计" align="center" />
<el-table-column prop="realityDiscount" label="实际" align="center" width="100" />
<el-table-column prop="diffDiscount" label="差额" align="center" width="100" />
</el-table-column>
<el-table-column label="其它融厂家贴息" align="center">
<el-table-column prop="makeOtherDiscount" label="预计" align="center" />
<el-table-column prop="realityOtherDiscount" label="实际" align="center" width="100" />
<el-table-column prop="diffOtherDiscount" label="差额" align="center" width="100" />
</el-table-column>
<el-table-column label="固定贷款保证金" align="center">
<el-table-column prop="makeLoanMargin" label="预计" align="center" />
<el-table-column prop="realityLoanMargin" label="实际" align="center" width="100" />
<el-table-column prop="diffLoanMargin" label="差额" align="center" width="100" />
</el-table-column>
<el-table-column label="意外险" align="center">
<el-table-column prop="receivedPremium" label="已收" align="center" />
<el-table-column prop="realityPremium" label="实际" align="center" width="100" />
<el-table-column prop="diffPremium" label="差额" align="center" width="100" />
</el-table-column>
</el-table>
</el-form>
</div>
</div>
<!-- 选择待办人 的弹出框-->
<el-dialog title="填写审批意见" :visible.sync="nodeDialogVisible" width="80%">
<el-form class="formadd" >
<el-row v-show="countersignLink" style="border-top: 1px solid #e0e3eb">
<el-col :span="4" class="tleftb">
<span><span class="icon">*</span>加签人员:</span>
</el-col>
<el-col :span="20">
<el-form-item>
<el-select v-model="countersign.assignee" placeholder="请选择" filterable>
<el-option v-for="item in options" :key="item.userSid" :label="item.staffName" :value="item.userSid">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row v-show="currentLink" style="border-top: 1px solid #e0e3eb">
<el-col :span="4" class="tleftb">
<span>当前环节:</span>
</el-col>
<el-col :span="20">
<el-form-item><span>{{ current.taskName }}->{{ nextNode.name }}</span></el-form-item>
</el-col>
</el-row>
<el-row :class="{rowClass:!currentLink}">
<el-col :span="4" class="tleftb">
<span>意见:</span>
</el-col>
<el-col :span="20">
<el-form-item><el-input size="small" v-model="dialogList.comment" placeholder="审批意见" class="addinputw" type="textarea" :autosize="{ minRows: 1, maxRows: 10}" clearable ></el-input></el-form-item>
</el-col>
</el-row>
<div style="text-align:center;margin-top: 20px;">
<el-button type="primary" size="mini" @click="reject"> </el-button>
<el-button type="info " size="mini" @click="nodeDialogVisible = false"> </el-button>
</div>
</el-form>
</el-dialog>
</div>
</template>
<script>
import req from '@/api/loanbalancerecognition/loanbalancerecognition'
export default {
name: 'LoanBalanceRecognitionInfo',
data() {
return {
viewTitle: '',
viewState: 1,
submitdisabled: false,
tableKey: 0,
index: 0,
formobj: {
createByName: '',
createDate: '',
createDept: '',
filesList: [],
loanDiffDetails: [],
remarks: '',
sid: ''
},
rules: {},
options: [],
operation: '', //
dialogList: {
comment: ''
},
startTask: true,
current: {
taskDefKey: '',
taskName: '' //
},
nextNode: {}, //
nodeDialogVisible: false,
currentLink: true,
countersignLink: false,
//
linkByParameter: {
businessSid: '',
comment: '',
instanceId: '',
taskId: '',
orgSidPath: '',
taskDefKey: '',
userSid: ''
},
//
countersign: {
taskId: '',
assignee: '',
userSid: '',
instanceId: '',
views: ''
}
}
},
created() {
console.log('url:' + window.location.href)
var one = window.location.href.indexOf('&data') + 6
const data = window.location.href.substr(one) // urlunescape()web,使
const obj = JSON.parse(decodeURIComponent(data))
console.log('iframe页面获取的obj:', obj)
//
this.linkByParameter.businessSid = obj.businessSid
this.linkByParameter.instanceId = obj.instanceId
this.linkByParameter.taskId = obj.taskId
this.linkByParameter.taskDefKey = obj.taskDefKey
// this.linkByParameter.orgSidPath = window.sessionStorage.getItem('orgSidPath')
this.linkByParameter.userSid = window.sessionStorage.getItem('userSid')
this.current.taskDefKey = obj.taskDefKey
this.current.taskName = obj.taskName
//
this.countersign.taskId = obj.taskId
this.countersign.userSid = window.sessionStorage.getItem('userSid')
this.countersign.instanceId = obj.instanceId
//
this.showInfo(obj.businessSid)
},
mounted() {
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 2,
data: 500 + 'px'
}
}, '*')
},
methods: {
showInfo(sid) {
this.viewTitle = '放款差额确认'
req.fetchBySid({ sid: sid }).then((res) => {
if (res.success) {
this.formobj = res.data
if (this.formobj.filesList.length > 0) {
const aa = []
this.formobj.filesList.forEach((e) => {
aa.push(e.url)
})
this.formobj.filesList = aa
}
}
})
},
//
openCountersign(val) {
this.operation = val
this.currentLink = true
this.countersignLink = true
this.dialogList.comment = ''
req.getNextNodesForSubmit({ taskDefKey: this.current.taskDefKey, businessSid: this.linkByParameter.businessSid }).then((resp) => {
if (resp.success) {
var arr = resp.data
this.nextNode = arr[0]
this.nodeDialogVisible = true
}
this.submitdisabled = false
})
},
//
openAgree(val) {
this.operation = val
this.currentLink = true
this.countersignLink = false
this.dialogList.comment = '同意'
req.getNextNodesForSubmit({ taskDefKey: this.current.taskDefKey, businessSid: this.linkByParameter.businessSid }).then((resp) => {
if (resp.success) {
var arr = resp.data
this.nextNode = arr[0]
this.nodeDialogVisible = true
}
this.submitdisabled = false
})
},
//
openReject(val) {
this.operation = val
this.currentLink = true
this.countersignLink = false
this.dialogList.comment = ''
req.getPreviousNodesForReject({ taskDefKey: this.current.taskDefKey, businessSid: this.linkByParameter.businessSid }).then((resp) => {
if (resp.success) {
var arr = resp.data
this.nextNode = arr[0]
this.nodeDialogVisible = true
}
this.submitdisabled = false
})
},
//
openStop(val) {
this.operation = val
this.currentLink = false
this.countersignLink = false
this.dialogList.comment = ''
this.nodeDialogVisible = true
},
reject() {
if (this.operation === '同意') {
this.handleAgree()
} else if (this.operation === '驳回') {
if (this.dialogList.comment === '') {
this.$message({ showClose: true, type: 'error', message: '请填写审批意见' })
} else {
this.handleReject()
}
} else if (this.operation === '终止') {
if (this.dialogList.comment === '') {
this.$message({ showClose: true, type: 'error', message: '请填写审批意见' })
} else {
this.handleStop()
}
} else if (this.operation === '加签') {
this.handleCountersign()
}
},
/** 加签 */
handleCountersign() {
if (this.countersign.assignee === '') {
this.$message({ showClose: true, type: 'error', message: '请选择加签人员' })
return
}
if (this.dialogList.comment === '') {
this.$message({ showClose: true, type: 'error', message: '请填写审批意见' })
return
}
this.countersign.views = this.dialogList.comment
req.delegate(this.countersign).then((response) => {
if (response.success) {
this.$notify({
title: '提示',
message: '执行成功',
type: 'success',
duration: 2000
})
this.nodeDialogVisible = false
//
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 1
}
}, '*')
}
})
},
/** 同意任务 */
handleAgree() {
this.linkByParameter.comment = this.dialogList.comment
req.complete(this.linkByParameter).then((response) => {
if (response.success) {
this.$notify({
title: '提示',
message: '执行成功',
type: 'success',
duration: 2000
})
this.nodeDialogVisible = false
//
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 1
}
}, '*')
}
})
},
/** 驳回任务 */
handleReject() {
this.linkByParameter.comment = this.dialogList.comment
req.reject(this.linkByParameter).then((response) => {
if (response.success) {
this.$notify({
title: '提示',
message: '执行成功',
type: 'success',
duration: 2000
})
this.nodeDialogVisible = false
//
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 1
}
}, '*')
}
})
},
/** 终止任务 */
handleStop() {
this.linkByParameter.comment = this.dialogList.comment
req.breakProcess(this.linkByParameter).then((response) => {
if (response.success) {
this.$notify({
title: '提示',
message: '执行成功',
type: 'success',
duration: 2000
})
this.nodeDialogVisible = false
//
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 1
}
}, '*')
}
})
}
}
}
</script>
<style scoped>
.addinputInfo {
margin-left: 60px !important;
}
.title {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
.rowClass{
border-top: 1px solid #E0E3EB;
}
</style>

260
anrui-riskcenter-ui/src/views/workFlow/fangkuanquerenFlow/loanbalancerecognitionEdit.vue

@ -0,0 +1,260 @@
<template>
<div class="app-container">
<div v-show="viewState == 1">
<div class="tab-header webtop">
<div>{{ viewTitle }}</div>
<div>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="saveOrUpdate()">保存</el-button>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="submit()">提交</el-button>
</div>
</div>
<div class="">
<el-form ref="form_obj" :model="formobj" :rules="rules" class="formaddcopy02">
<el-row style="border-top: 1px solid #e0e3eb">
<el-col :span="8">
<div class="span-sty">申请部门</div>
<el-form-item><span class="addinputInfo">{{ formobj.createDept }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">申请人</div>
<el-form-item><span class="addinputInfo">{{ formobj.createByName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">申请日期</div>
<el-form-item><span class="addinputInfo">{{ formobj.createDate }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">备注</div>
<el-form-item><el-input v-model="formobj.remarks" clearable placeholder="" class="addinputInfo addinputw" /></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">附件</div>
<el-form-item>
<upload-img ref="uploadImg" class="addinputInfo" v-model="formobj.filesList" :limit="50" bucket="map" :upload-data="{ type: '0001' }"/>
</el-form-item>
</el-col>
</el-row>
<div class="title">
<div>金融产品政策列表</div>
<div>金额单位</div>
</div>
<el-table :key="tableKey" :data="formobj.loanDiffDetails" :index="index" border style="width: 100%">
<el-table-column fixed width="80" label="序号" type="index" :index="index + 1" align="center"/>
<el-table-column prop="bankName" label="资方" align="center" width="100" />
<el-table-column prop="borrowName" label="贷款人" align="center" />
<el-table-column prop="vinNo" label="车架号" align="center" width="100" />
<el-table-column label="放款金额" align="center">
<el-table-column prop="makeLoan" label="应放" align="center" />
<el-table-column prop="realityLoan" label="实放" align="center" width="100" />
<el-table-column prop="diffLoan" label="差额" align="center" width="100" />
</el-table-column>
<el-table-column label="主产品厂家贴息" align="center">
<el-table-column prop="makeDiscount" label="预计" align="center" />
<el-table-column label="实际" align="center" width="150">
<template slot-scope="scope">
<el-input v-model="scope.row.realityDiscount" clearable @keyup.native="UpNumber" placeholder="" @input="realityDiscountInput(scope.row)" />
</template>
</el-table-column>
<el-table-column prop="diffDiscount" label="差额" align="center" width="100" />
</el-table-column>
<el-table-column label="其它融厂家贴息" align="center">
<el-table-column prop="makeOtherDiscount" label="预计" align="center" />
<el-table-column label="实际" align="center" width="150">
<template slot-scope="scope">
<el-input v-model="scope.row.realityOtherDiscount" clearable @keyup.native="UpNumber" placeholder="" @input="realityOtherDiscountInput(scope.row)" />
</template>
</el-table-column>
<el-table-column prop="diffOtherDiscount" label="差额" align="center" width="100" />
</el-table-column>
<el-table-column label="固定贷款保证金" align="center">
<el-table-column prop="makeLoanMargin" label="预计" align="center" />
<el-table-column label="实际" align="center" width="150">
<template slot-scope="scope">
<el-input v-model="scope.row.realityLoanMargin" clearable @keyup.native="UpNumber" placeholder="" @input="realityLoanMarginInput(scope.row)" />
</template>
</el-table-column>
<el-table-column prop="diffLoanMargin" label="差额" align="center" width="100" />
</el-table-column>
<el-table-column label="意外险" align="center">
<el-table-column prop="receivedPremium" label="已收" align="center" />
<el-table-column label="实际" align="center" width="150">
<template slot-scope="scope">
<el-input v-model="scope.row.realityPremium" clearable @keyup.native="UpNumber" placeholder="" @input="realityPremiumInput(scope.row)" />
</template>
</el-table-column>
<el-table-column prop="diffPremium" label="差额" align="center" width="100" />
</el-table-column>
</el-table>
</el-form>
</div>
</div>
</div>
</template>
<script>
import req from '@/api/loanbalancerecognition/loanbalancerecognition'
import uploadImg from '@/components/uploadFile/uploadImg'
export default {
name: 'LoanBalanceRecognitionAdd',
components: {
uploadImg
},
data() {
return {
viewTitle: '',
viewState: 1,
submitdisabled: false,
tableKey: 0,
index: 0,
formobj: {
createByName: '',
createDate: '',
createDept: '',
filesList: [],
loanDiffDetails: [],
remarks: '',
sid: ''
},
rules: {}
}
},
created() {
console.log('url:' + window.location.href)
var one = window.location.href.indexOf('&data') + 6
const data = window.location.href.substr(one) // urlunescape()web,使
const obj = JSON.parse(decodeURIComponent(data))
this.showInfo(obj.businessSid)
},
mounted() {
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 2,
data: 500 + 'px'
}
}, '*')
},
methods: {
showInfo(sid) {
this.viewTitle = '【编辑】放款差额确认'
this.$nextTick(() => {
this.$refs['form_obj'].clearValidate()
})
req.fetchBySid({ sid: sid }).then((res) => {
if (res.success) {
this.formobj = res.data
}
})
},
UpNumber(e) {
e.target.value = e.target.value.replace(/[^0-9.]/g, '') // .
e.target.value = e.target.value.replace(/^00/, '0.') // 0
e.target.value = e.target.value.replace(/\.{2,}/g, '.') // .
e.target.value = e.target.value.replace('.', '$#$').replace(/\./g, '').replace('$#$', '.')
e.target.value = e.target.value.replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3') //
if (e.target.value.indexOf('.') < 0 && e.target.value !== '' && e.target.value !== '-') {
// 0102
e.target.value = parseFloat(e.target.value)
}
},
// --
realityDiscountInput(row) {
if (row.makeDiscount !== '' && row.realityDiscount !== '' && row.realityDiscount !== null) {
row.diffDiscount = parseFloat(row.makeDiscount) - parseFloat(row.realityDiscount)
} else {
row.diffDiscount = ''
}
},
// --
realityOtherDiscountInput(row) {
if (row.makeOtherDiscount !== '' && row.realityOtherDiscount !== '' && row.realityOtherDiscount !== null) {
row.diffOtherDiscount = parseFloat(row.makeOtherDiscount) - parseFloat(row.realityOtherDiscount)
} else {
row.diffOtherDiscount = ''
}
},
// --
realityLoanMarginInput(row) {
if (row.makeLoanMargin !== '' && row.realityLoanMargin !== '' && row.realityLoanMargin !== null) {
row.diffLoanMargin = parseFloat(row.makeLoanMargin) - parseFloat(row.realityLoanMargin)
} else {
row.diffLoanMargin = ''
}
},
// --
realityPremiumInput(row) {
if (row.receivedPremium !== '' && row.realityPremium !== '' && row.realityPremium !== null) {
row.diffPremium = parseFloat(row.receivedPremium) - parseFloat(row.realityPremium)
} else {
row.diffPremium = ''
}
},
saveOrUpdate() {
this.$refs['form_obj'].validate((valid) => {
if (valid) {
this.submitdisabled = true
req.saveOrUpdate(this.formobj).then((res) => {
if (res.success) {
this.$message({ showClose: true, type: 'success', message: '保存成功' })
// ()
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 1
}
}, '*')
} else {
this.submitdisabled = false
}
}).catch(() => {
this.submitdisabled = false
})
}
})
},
submit() {
this.$refs['form_obj'].validate((valid) => {
if (valid) {
this.submitdisabled = true
req.submit(this.formobj).then((res) => {
if (res.success) {
this.$message({ showClose: true, type: 'success', message: '操作成功' })
// ()
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 1
}
}, '*')
} else {
this.submitdisabled = false
}
}).catch(() => {
this.submitdisabled = false
})
}
})
}
}
}
</script>
<style scoped>
.addinputInfo {
margin-left: 60px !important;
}
.title {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
</style>

207
anrui-riskcenter-ui/src/views/workFlow/fangkuanquerenFlow/loanbalancerecognitionYiBan.vue

@ -0,0 +1,207 @@
<template>
<div class="app-container">
<div v-show="viewState == 1">
<div class="tab-header webtop">
<div>{{ viewTitle }}</div>
<div>
<el-button type="danger" size="small" @click="openRevoke()">撤回</el-button>
</div>
</div>
<div class="">
<el-form ref="form_obj" :model="formobj" :rules="rules" class="formaddcopy02">
<el-row style="border-top: 1px solid #e0e3eb">
<el-col :span="8">
<div class="span-sty">申请部门</div>
<el-form-item><span class="addinputInfo">{{ formobj.createDept }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">申请人</div>
<el-form-item><span class="addinputInfo">{{ formobj.createByName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">申请日期</div>
<el-form-item><span class="addinputInfo">{{ formobj.createDate }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">备注</div>
<el-form-item><span class="addinputInfo">{{ formobj.remarks }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">附件</div>
<el-form-item>
<el-image class="addinputInfo" style="width: 150px; height: 150px" v-for="(item, index) in formobj.filesList" :key="index" :src="item" :preview-src-list="formobj.filesList"/>
</el-form-item>
</el-col>
</el-row>
<div class="title">
<div>金融产品政策列表</div>
<div>金额单位</div>
</div>
<el-table :key="tableKey" :data="formobj.loanDiffDetails" :index="index" border style="width: 100%">
<el-table-column fixed width="80" label="序号" type="index" :index="index + 1" align="center"/>
<el-table-column prop="bankName" label="资方" align="center" width="100" />
<el-table-column prop="borrowName" label="贷款人" align="center" />
<el-table-column prop="vinNo" label="车架号" align="center" width="100" />
<el-table-column label="放款金额" align="center">
<el-table-column prop="makeLoan" label="应放" align="center" />
<el-table-column prop="realityLoan" label="实放" align="center" width="100" />
<el-table-column prop="diffLoan" label="差额" align="center" width="100" />
</el-table-column>
<el-table-column label="主产品厂家贴息" align="center">
<el-table-column prop="makeDiscount" label="预计" align="center" />
<el-table-column prop="realityDiscount" label="实际" align="center" width="100" />
<el-table-column prop="diffDiscount" label="差额" align="center" width="100" />
</el-table-column>
<el-table-column label="其它融厂家贴息" align="center">
<el-table-column prop="makeOtherDiscount" label="预计" align="center" />
<el-table-column prop="realityOtherDiscount" label="实际" align="center" width="100" />
<el-table-column prop="diffOtherDiscount" label="差额" align="center" width="100" />
</el-table-column>
<el-table-column label="固定贷款保证金" align="center">
<el-table-column prop="makeLoanMargin" label="预计" align="center" />
<el-table-column prop="realityLoanMargin" label="实际" align="center" width="100" />
<el-table-column prop="diffLoanMargin" label="差额" align="center" width="100" />
</el-table-column>
<el-table-column label="意外险" align="center">
<el-table-column prop="receivedPremium" label="已收" align="center" />
<el-table-column prop="realityPremium" label="实际" align="center" width="100" />
<el-table-column prop="diffPremium" label="差额" align="center" width="100" />
</el-table-column>
</el-table>
</el-form>
</div>
</div>
</div>
</template>
<script>
import req from '@/api/loanbalancerecognition/loanbalancerecognition'
export default {
name: 'LoanBalanceRecognitionInfo',
data() {
return {
viewTitle: '',
viewState: 1,
submitdisabled: false,
tableKey: 0,
index: 0,
formobj: {
createByName: '',
createDate: '',
createDept: '',
filesList: [],
loanDiffDetails: [],
remarks: '',
sid: ''
},
//
linkByParameter: {
businessSid: '',
comment: '',
instanceId: '',
taskId: '',
orgSidPath: '',
taskDefKey: '',
userSid: ''
},
rules: {}
}
},
created() {
console.log('url:' + window.location.href)
var one = window.location.href.indexOf('&data') + 6
const data = window.location.href.substr(one) // urlunescape()web,使
const obj = JSON.parse(decodeURIComponent(data))
console.log('iframe页面获取的obj:', obj)
//
this.linkByParameter.businessSid = obj.businessSid
this.linkByParameter.instanceId = obj.instanceId
this.linkByParameter.taskId = obj.taskId
this.linkByParameter.taskDefKey = obj.taskDefKey
this.linkByParameter.userSid = window.sessionStorage.getItem('userSid')
//
this.showInfo(obj.businessSid)
},
mounted() {
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 2,
data: 500 + 'px'
}
}, '*')
},
methods: {
showInfo(sid) {
this.viewTitle = '放款差额确认'
req.fetchBySid({ sid: sid }).then((res) => {
if (res.success) {
this.formobj = res.data
if (this.formobj.filesList.length > 0) {
const aa = []
this.formobj.filesList.forEach((e) => {
aa.push(e.url)
})
this.formobj.filesList = aa
}
}
})
},
/** 确认撤回任务 */
openRevoke() {
this.$confirm('是否确认执行撤回操作', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.handleRevoke()
}).catch(() => {
this.$message({
type: 'info',
message: '已取消撤回'
})
})
},
/** 撤回任务 */
handleRevoke() {
req.revokeProcess(this.linkByParameter).then((response) => {
if (response.success) {
this.$notify({
title: '提示',
message: '执行成功',
type: 'success',
duration: 2000
})
this.nodeDialogVisible = false
//
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 1
}
}, '*')
}
})
}
}
}
</script>
<style scoped>
.addinputInfo {
margin-left: 60px !important;
}
.title {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
</style>

2
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleApply.java

@ -24,7 +24,7 @@ public class LoanBuckleApply extends BaseEntity {
@ApiModelProperty("申请日期")
private Date applyDate; // 申请日期
@ApiModelProperty("申请编号")
private String applyNo;
private String billNo;
@ApiModelProperty("申请部门")
private String dept;
@ApiModelProperty("申请部门sid")

28
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleApplyDto.java

@ -0,0 +1,28 @@
package com.yxt.anrui.riskcenter.api.loanbuckleapply;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @author Administrator
* @description
* @date 2023/11/13 14:11
*/
@Data
public class LoanBuckleApplyDto implements Dto {
private String sid;
private String userSid;
private String dept;
private String deptSid;
private String applyName;
private String applyDate;
private String remarks;
private String orgPath;
private List<String> files = new ArrayList<>();
private List<LoanBuckleHistoryRecord> records = new ArrayList<>();
}

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

@ -1,7 +1,7 @@
package com.yxt.anrui.riskcenter.api.loanbuckleapply;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.*;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.app.*;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.app.AppBuckleDetailsVo;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.flow.*;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.flow.*;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
@ -31,5 +31,72 @@ import java.util.List;
public interface LoanBuckleApplyFeign {
@ApiOperation("根据条件分页查询数据的列表")
@PostMapping("/listPage")
public ResultBean<PagerVo<LoanBuckleApplyVo>> listPage(@RequestBody PagerQuery<LoanBuckleApplyQuery> pq);
@ApiOperation("新增初始化")
@GetMapping("/buckleInit")
@ResponseBody
public ResultBean<LoanBuckleApplyInit> buckleInit(@RequestBody String[] sids);
@ApiOperation("保存修改")
@PostMapping("/saveBuckle")
@ResponseBody
public ResultBean<String> saveBuckle(@RequestBody LoanBuckleApplyDto dto);
@ApiOperation("详情查看")
@GetMapping("/buckleDetails")
@ResponseBody
public ResultBean<LoanBuckleApplyInit> buckleDetails(@RequestParam("sid") String sid);
@ApiOperation("批量删除")
@DeleteMapping("/deleteBySids")
@ResponseBody
public ResultBean deleteBySids(@RequestBody String[] sids);
//------------------------------流程接口----------------------------------------------
@ApiOperation("提交")
@PostMapping("/submit")
public ResultBean submitRecordApplication(@RequestBody @Valid SubmitBuckleDto dto);
@ApiOperation(value = "办理(同意)")
@PostMapping("/complete")
public ResultBean complete(@Valid @RequestBody BuckleCompleteDto dto);
@ApiOperation(value = "撤回流程")
@PostMapping(value = "/revokeProcess")
public ResultBean revokeProcess(@ApiParam(value = "工作流任务相关--请求参数") @RequestBody BuckleTaskQuery query);
@ApiOperation(value = "驳回任务")
@PostMapping(value = "/reject")
public ResultBean taskReject(@ApiParam(value = "工作流任务相关--请求参数") @RequestBody BuckleTaskQuery query);
@ApiOperation(value = "终止任务")
@PostMapping(value = "/breakProcess")
public ResultBean breakProcess(@RequestBody BuckleTaskQuery query);
@ApiOperation(value = "流程历史流转记录")
@GetMapping(value = "/task/flowRecord/{procInsId}/{deployId}")
public ResultBean flowRecord(@ApiParam(value = "流程实例id") @PathVariable(value = "procInsId") String procInsId);
@ApiOperation(value = "获取下一个环节")
@GetMapping(value = "/getNextNodesForSubmit")
ResultBean<List<BuckleGetNodeVo>> getNextNodesForSubmit(@Valid @SpringQueryMap BuckleGetNodeQuery query);
@ApiOperation(value = "获取上一个环节")
@GetMapping(value = "/getPreviousNodesForReject")
ResultBean<List<BuckleGetNodeVo>> getPreviousNodesForReject(@Valid @SpringQueryMap BuckleGetNodeQuery query);
@ApiOperation(value = "加签")
@PostMapping(value = "/delegate")
public ResultBean delegate(@RequestBody BuckleDelegateQuery query);
//-------------------------app------------------------
@ApiOperation("划扣申请")
@GetMapping("/appDetail/{sid}")
@ResponseBody
ResultBean<AppBuckleDetailsVo> appDetail(@PathVariable("sid") String sid);
}

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

@ -1,9 +1,8 @@
package com.yxt.anrui.riskcenter.api.loanbuckleapply;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.*;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.app.*;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.flow.*;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.app.AppBuckleDetailsVo;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.flow.*;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
@ -16,4 +15,78 @@ import java.util.List;
public class LoanBuckleApplyFeignFallback implements LoanBuckleApplyFeign {
@Override
public ResultBean<PagerVo<LoanBuckleApplyVo>> listPage(PagerQuery<LoanBuckleApplyQuery> pq) {
return null;
}
@Override
public ResultBean<LoanBuckleApplyInit> buckleInit(String[] sids) {
return null;
}
@Override
public ResultBean<String> saveBuckle(LoanBuckleApplyDto dto) {
return null;
}
@Override
public ResultBean<LoanBuckleApplyInit> buckleDetails(String sid) {
return null;
}
@Override
public ResultBean deleteBySids(String[] sids) {
return null;
}
@Override
public ResultBean submitRecordApplication(SubmitBuckleDto dto) {
return null;
}
@Override
public ResultBean complete(BuckleCompleteDto dto) {
return null;
}
@Override
public ResultBean revokeProcess(BuckleTaskQuery query) {
return null;
}
@Override
public ResultBean taskReject(BuckleTaskQuery query) {
return null;
}
@Override
public ResultBean breakProcess(BuckleTaskQuery query) {
return null;
}
@Override
public ResultBean flowRecord(String procInsId) {
return null;
}
@Override
public ResultBean<List<BuckleGetNodeVo>> getNextNodesForSubmit(BuckleGetNodeQuery query) {
return null;
}
@Override
public ResultBean<List<BuckleGetNodeVo>> getPreviousNodesForReject(BuckleGetNodeQuery query) {
return null;
}
@Override
public ResultBean delegate(BuckleDelegateQuery query) {
return null;
}
@Override
public ResultBean<AppBuckleDetailsVo> appDetail(String sid) {
return null;
}
}

33
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleApplyInit.java

@ -0,0 +1,33 @@
package com.yxt.anrui.riskcenter.api.loanbuckleapply;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @author Administrator
* @description
* @date 2023/11/13 13:43
*/
@Data
public class LoanBuckleApplyInit implements Vo {
private String sid;
private String userSid;
private String dept;
private String deptSid;
private String applyName;
private String applyDate;
private String remarks;
private String orgPath;
@ApiModelProperty("任务id")
private String taskId;
@ApiModelProperty("实例id")
private String instanceId;
private List<String> files = new ArrayList<>();
private List<LoanBuckleHistoryRecord> records = new ArrayList<>();
}

31
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleApplyQuery.java

@ -0,0 +1,31 @@
package com.yxt.anrui.riskcenter.api.loanbuckleapply;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author Administrator
* @description
* @date 2023/11/13 13:32
*/
@Data
public class LoanBuckleApplyQuery implements Query {
@ApiModelProperty("组织全路径")
private String orgPath;
@ApiModelProperty("菜单sid")
private String menuSid;
@ApiModelProperty("菜单url")
private String menuUrl;
@ApiModelProperty("用户sid")
private String userSid;
@ApiModelProperty("分公司")
private String company; // 使用组织名称
@ApiModelProperty("申请人")
private String applyName; // 申请人
private String billNo;
private String applyStartDate;
private String applyEndDate;
}

36
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleApplyVo.java

@ -0,0 +1,36 @@
package com.yxt.anrui.riskcenter.api.loanbuckleapply;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author Administrator
* @description
* @date 2023/11/13 13:32
*/
@Data
public class LoanBuckleApplyVo implements Vo {
private String sid;
@ApiModelProperty("流程状态")
private String nodeState; // 流程状态
@ApiModelProperty("分公司")
private String company; // 使用组织名称
@ApiModelProperty("申请人")
private String applyName; // 申请人
@ApiModelProperty("申请部门")
private String dept;
@ApiModelProperty("申请日期")
private String applyDate; // 申请日期
@ApiModelProperty("申请编号")
private String billNo;
@ApiModelProperty("流程定义的id")
private String procDefId; // 流程定义的id
@ApiModelProperty("流程实例的sid")
private String procInstId; // 流程实例的sid
@ApiModelProperty("备注")
private String remarks; // 备注
}

44
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleHistoryRecord.java

@ -0,0 +1,44 @@
package com.yxt.anrui.riskcenter.api.loanbuckleapply;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* @author Administrator
* @description
* @date 2023/11/13 13:45
*/
@Data
public class LoanBuckleHistoryRecord {
private String recordSid;
private String loanContractNo;
private String vinNo;
@ApiModelProperty("资方名称")
private String bankName;
@ApiModelProperty("资方合同")
private String bankContractNo;
@ApiModelProperty("客户")
private String customer;
@ApiModelProperty("借款人名称")
private String borrowerName;
@ApiModelProperty("还款方式")
private String returnWay;
@ApiModelProperty("期数")
private String period;
@ApiModelProperty("应还日期")
private String dueDate;
@ApiModelProperty("应还金额")
private String dueMoney;
@ApiModelProperty("实还金额")
private String actualMoney;
@ApiModelProperty("本期未还金额")
private String outstandingMoney;
@ApiModelProperty("实还日期")
private String actualDate;
}

23
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/app/AppBuckleDetailsVo.java

@ -0,0 +1,23 @@
package com.yxt.anrui.riskcenter.api.loanbuckleapply.app;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @author Administrator
* @description
* @date 2023/11/13 15:49
*/
@Data
public class AppBuckleDetailsVo {
private String sid;
private String publishInfo;
private String time;
private String remarks;
private List<String> files = new ArrayList<>();
private String taskId;
private String procInsId;
private List<AppRecordVo> records = new ArrayList<>();
}

23
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/app/AppRecordVo.java

@ -0,0 +1,23 @@
package com.yxt.anrui.riskcenter.api.loanbuckleapply.app;
import lombok.Data;
/**
* @author Administrator
* @description
* @date 2023/11/13 15:49
*/
@Data
public class AppRecordVo {
private String contractId;
private String instalments;
private String vin;
private String type;
private String zf;
private String zfNo;
private String cusName;
private String loanName;
private String repaymentDate;
private String info1;
private String info2;
}

41
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/flow/BuckleCompleteDto.java

@ -0,0 +1,41 @@
package com.yxt.anrui.riskcenter.api.loanbuckleapply.flow;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.util.Map;
/**
* @Author dimengzhe
* @Date 2022/6/28 9:01
* @Description
*/
@Data
public class BuckleCompleteDto implements Dto {
private static final long serialVersionUID = 3240453987322803352L;
@ApiModelProperty(value = "用户sid")
@NotBlank(message = "参数错误:userSid")
private String userSid;
@ApiModelProperty(value = "用户全路径sid")
private String orgSidPath;
@ApiModelProperty(value = "节点id")
@NotBlank(message = "参数错误:taskDefKey")
private String taskDefKey;
@ApiModelProperty(value = "任务id")
@NotBlank(message = "参数错误:taskId")
private String taskId;
@ApiModelProperty(value = "流程id")
@NotBlank(message = "参数错误:instanceId")
private String instanceId;
@ApiModelProperty(value = "意见")
@NotBlank(message = "参数错误:comment")
private String comment;
@ApiModelProperty(value = "业务sid")
@NotBlank(message = "参数错误:businessSid")
private String businessSid;
@ApiModelProperty(value = "分支字段及业务字段")
private Map<String, Object> formVariables;
}

26
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/flow/BuckleDelegateQuery.java

@ -0,0 +1,26 @@
package com.yxt.anrui.riskcenter.api.loanbuckleapply.flow;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author Administrator
* @description
* @date 2023/9/28 9:28
*/
@Data
public class BuckleDelegateQuery {
@ApiModelProperty
private String userSid;
@ApiModelProperty("流程实例id")
// @JsonProperty("procInsId")
private String instanceId;
@ApiModelProperty("任务Id")
private String taskId;
@ApiModelProperty("审批人sid")
private String assignee;
@ApiModelProperty("填写意见")
private String views;
}

26
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/flow/BuckleGetNodeQuery.java

@ -0,0 +1,26 @@
package com.yxt.anrui.riskcenter.api.loanbuckleapply.flow;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Map;
/**
* @Author dimengzhe
* @Date 2022/6/28 10:42
* @Description
*/
@Data
public class BuckleGetNodeQuery implements Query {
private static final long serialVersionUID = -5674867230708197611L;
@ApiModelProperty(value = "环节定义id")
private String taskDefKey;
@ApiModelProperty(value = "业务sid")
private String businessSid;
@ApiModelProperty(value = "分支字段及业务字段")
private Map<String, Object> formVariables;
}

25
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/flow/BuckleGetNodeVo.java

@ -0,0 +1,25 @@
package com.yxt.anrui.riskcenter.api.loanbuckleapply.flow;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @Author dimengzhe
* @Date 2022/6/28 11:09
* @Description
*/
@Data
public class BuckleGetNodeVo implements Vo {
private static final long serialVersionUID = 8802774014747063504L;
@ApiModelProperty(value = "节点名称")
private String name;
@ApiModelProperty(value = "节点id")
private String id;
@ApiModelProperty(value = "审批组")
private List<String> candidateGroups;
@ApiModelProperty(value = "是否是最后环节")
private String endTask;
}

56
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/flow/BuckleTaskQuery.java

@ -0,0 +1,56 @@
package com.yxt.anrui.riskcenter.api.loanbuckleapply.flow;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @Author dimengzhe
* @Date 2022/6/28 17:29
* @Description 终止撤回驳回查询参数
*/
@Data
public class BuckleTaskQuery implements Query {
private static final long serialVersionUID = -4006020771892400451L;
/**
* 终止驳回撤回
*/
@ApiModelProperty("任务Id")
@NotBlank(message = "参数错误:taskId")
private String taskId;
/**
* 终止驳回撤回
*/
@ApiModelProperty("业务sid")
@NotBlank(message = "参数错误:businessSid")
private String businessSid;
/**
* 终止驳回
*/
@ApiModelProperty("任务意见")
private String comment;
/**
* 终止撤回驳回
*/
@ApiModelProperty("用户Sid")
private String userSid;
/**
* 终止
*/
@ApiModelProperty("流程实例Id")
private String instanceId;
/*@ApiModelProperty("用户Id")
private String userId;
@ApiModelProperty("节点")
private String targetKey;
@ApiModelProperty("流程变量信息")
private Map<String, Object> values = new HashMap<>();
@ApiModelProperty("审批人")
private String assignee;
@ApiModelProperty("候选人")
private List<String> candidateUsers = new ArrayList<>();
@ApiModelProperty("审批组")
private List<String> candidateGroups = new ArrayList<>();*/
}

21
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/flow/SubmitBuckleDto.java

@ -0,0 +1,21 @@
package com.yxt.anrui.riskcenter.api.loanbuckleapply.flow;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.LoanBuckleApplyDto;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.LoanCustomerRecordDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author dimengzhe
* @Date 2022/6/27 13:38
* @Description
*/
@Data
public class SubmitBuckleDto extends LoanBuckleApplyDto {
private static final long serialVersionUID = 378585162071125756L;
@ApiModelProperty("流程实例id")
private String instanceId;
@ApiModelProperty("任务id")
private String taskId;
}

14
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/DiffFile.java

@ -0,0 +1,14 @@
package com.yxt.anrui.riskcenter.api.loandiff;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/15
**/
@Data
public class DiffFile {
private String url;
}

41
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/LoanDiff.java

@ -0,0 +1,41 @@
package com.yxt.anrui.riskcenter.api.loandiff;
import com.yxt.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/13
**/
@Data
public class LoanDiff extends BaseEntity {
private static final long serialVersionUID = 5447301533409285441L;
private String createByName;
@ApiModelProperty("申请部门sid")
private String createDeptSid;
@ApiModelProperty("申请部门")
private String createDept;
@ApiModelProperty("编号")
private String billNo;
@ApiModelProperty("附件")
private String files;
@ApiModelProperty("组织全路径")
private String orgSidPath;
@ApiModelProperty("流程状态")
private String nodeState;
@ApiModelProperty("环节key")
private String nodeId;
@ApiModelProperty("流程实例id")
private String procDefId;
@ApiModelProperty("实例id")
private String procInstId;
@ApiModelProperty("任务id")
private String taskId;
@ApiModelProperty("分公司sid")
private String useOrgSid;
@ApiModelProperty("分公司名称")
private String useOrgName;
}

33
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/LoanDiffDetailsssApp.java

@ -0,0 +1,33 @@
package com.yxt.anrui.riskcenter.api.loandiff;
import com.yxt.anrui.riskcenter.api.loandiffdetails.AppRecords;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/14
**/
@Data
public class LoanDiffDetailsssApp {
private String sid;
@ApiModelProperty("申请部门-申请人")
private String publishInfo;
@ApiModelProperty("申请时间")
private String time;
@ApiModelProperty("备注")
private String remarks;
private List<String> files = new ArrayList<>();
private String taskId;
private String procInsId;
private List<AppRecords> records = new ArrayList<>();
}

26
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/LoanDiffDto.java

@ -0,0 +1,26 @@
package com.yxt.anrui.riskcenter.api.loandiff;
import com.yxt.anrui.riskcenter.api.loandiffdetails.LoanDiffDetailsDto;
import com.yxt.common.core.dto.Dto;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/14
**/
@Data
public class LoanDiffDto implements Dto {
private static final long serialVersionUID = 3046052875256156498L;
private String sid;
private List<LoanDiffDetailsDto> loanDiffDetails;
// private List<String> filesList;
private List<DiffFile> filesList = new ArrayList<>();
private String remarks;
}

81
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/LoanDiffFeign.java

@ -0,0 +1,81 @@
package com.yxt.anrui.riskcenter.api.loandiff;
import com.yxt.anrui.riskcenter.api.loandiff.flowable.*;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/13
**/
@Api(tags = "放款确认申请")
@FeignClient(
contextId = "anrui-riskcenter-LoanDiff",
name = "anrui-riskcenter",
path = "v1/LoanDiff",
fallback = LoanDiffFeignFallback.class)
public interface LoanDiffFeign {
@ApiOperation("融资放款确认推送数据")
@PostMapping("/save")
ResultBean save(@RequestBody LoanDiffsDto dto);
@ApiOperation("分页列表")
@PostMapping("/listPage")
public ResultBean<PagerVo<LoanDiffVo>> listPage(@RequestBody PagerQuery<LoanDiffQuery> pq);
@ApiOperation("保存")
@PostMapping("/update")
public ResultBean update(@RequestBody LoanDiffDto dto);
@ApiOperation("详情")
@GetMapping("/details")
ResultBean<LoanDiffInitDetails> details(@RequestParam("sid")String sid);
@ApiOperation("提交")
@PostMapping("/submitDiffApply")
public ResultBean submitDiffApply(@Valid @RequestBody SubmitDiffDto dto);
@ApiOperation(value = "办理(同意)")
@PostMapping("/complete")
public ResultBean complete(@Valid @RequestBody DiffCompleteDto query);
@ApiOperation(value = "获取上一个环节")
@GetMapping(value = "/getPreviousNodesForReject")
ResultBean<List<DiffApplyNodeVo>> getPreviousNodesForReject(@Valid @SpringQueryMap DiffApplyNodeQuery query);
@ApiOperation(value = "获取下一个环节")
@GetMapping(value = "/getNextNodesForSubmit")
ResultBean<List<DiffApplyNodeVo>> getNextNodesForSubmit(@Valid @SpringQueryMap DiffApplyNodeQuery query);
@ApiOperation(value = "驳回任务")
@PostMapping(value = "/reject")
public ResultBean taskReject(@Valid @RequestBody DiffApplyTaskQuery query);
@ApiOperation(value = "撤回流程")
@PostMapping(value = "/revokeProcess")
public ResultBean revokeProcess(@Valid @RequestBody DiffApplyTaskQuery query);
@ApiOperation(value = "终止任务")
@PostMapping(value = "/breakProcess")
public ResultBean breakProcess(@Valid @RequestBody DiffApplyTaskQuery query);
@ApiOperation(value = "app详情")
@PostMapping(value = "/appDetails/{sid}")
ResultBean<LoanDiffDetailsssApp> appDetails(@PathVariable("sid")String sid);
@ApiOperation(value = "加签")
@PostMapping(value = "/delegate")
@ResponseBody
public ResultBean delegate(@RequestBody DelegateQuery query);
}

9
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/LoanDiffFeignFallback.java

@ -0,0 +1,9 @@
package com.yxt.anrui.riskcenter.api.loandiff;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/14
**/
public class LoanDiffFeignFallback {
}

37
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/LoanDiffInitDetails.java

@ -0,0 +1,37 @@
package com.yxt.anrui.riskcenter.api.loandiff;
import com.yxt.anrui.riskcenter.api.loandiffdetails.LoanDiffDetailssVo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/14
**/
@Data
public class LoanDiffInitDetails {
private String sid;
@ApiModelProperty("申请部门")
private String createDept;
@ApiModelProperty("申请人")
private String createByName;
@ApiModelProperty("申请日期")
private String createDate;
@ApiModelProperty("备注")
private String remarks;
@ApiModelProperty("附件")
// private List<String> files = new ArrayList<>();
private List<DiffFile> filesList = new ArrayList<>();
private List<LoanDiffDetailssVo> loanDiffDetails = new ArrayList<>();
@ApiModelProperty("流程实例id")
private String instanceId;
@ApiModelProperty("任务id")
private String taskId;
}

33
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/LoanDiffQuery.java

@ -0,0 +1,33 @@
package com.yxt.anrui.riskcenter.api.loandiff;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/14
**/
@Data
public class LoanDiffQuery implements Query {
private static final long serialVersionUID = 7002305390491310057L;
@ApiModelProperty("分公司")
private String useOrgName;
@ApiModelProperty("申请部门")
private String createDept;
@ApiModelProperty("申请人")
private String createByName;
@ApiModelProperty("申请日期开始时间")
private String createTimeStart;
@ApiModelProperty("申请日期结束时间")
private String createTimeEnd;
@ApiModelProperty("机构全路径sid")
private String orgPath;
@ApiModelProperty("菜单url")
private String menuUrl;
@ApiModelProperty("用户sid")
private String userSid;
}

35
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/LoanDiffVo.java

@ -0,0 +1,35 @@
package com.yxt.anrui.riskcenter.api.loandiff;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/14
**/
@Data
public class LoanDiffVo implements Vo {
private static final long serialVersionUID = -7935993141002359582L;
private String sid;
@ApiModelProperty("流程状态")
private String nodeState;
@ApiModelProperty("分公司")
private String useOrgName;
@ApiModelProperty("申请部门")
private String createDept;
@ApiModelProperty("申请人")
private String createByName;
@ApiModelProperty("申请日期")
private String createTime;
@ApiModelProperty("申请编号")
private String billNo;
@ApiModelProperty("备注")
private String remarks;
@ApiModelProperty("流程定义id")
private String procDefId;
@ApiModelProperty("流程实例id")
private String procInstId;
}

34
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/LoanDiffsDto.java

@ -0,0 +1,34 @@
package com.yxt.anrui.riskcenter.api.loandiff;
import com.yxt.anrui.riskcenter.api.loandiffdetails.LoanDiffDetails;
import com.yxt.anrui.riskcenter.api.loandiffdetails.LoanDiffDetailssDto;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/14
**/
@Data
public class LoanDiffsDto implements Dto {
private static final long serialVersionUID = 7160584186871507179L;
@ApiModelProperty("申请人")
private String createBySid;
@ApiModelProperty("分公司sid")
private String useOrgSid;
@ApiModelProperty("分公司名称")
private String useOrgName;
private String createByName;
@ApiModelProperty("申请部门")
private String createDept;
@ApiModelProperty("申请部门sid")
private String createDeptSid;
private List<LoanDiffDetailssDto> loanDiffDetailssDtos;
}

24
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/flowable/DelegateQuery.java

@ -0,0 +1,24 @@
package com.yxt.anrui.riskcenter.api.loandiff.flowable;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/15
**/
@Data
public class DelegateQuery {
@ApiModelProperty
private String userSid;
@ApiModelProperty("流程实例id")
private String instanceId;
@ApiModelProperty("任务Id")
private String taskId;
@ApiModelProperty("审批人sid")
private String assignee;
@ApiModelProperty("填写意见")
private String views;
}

18
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/flowable/DiffApplyNodeQuery.java

@ -0,0 +1,18 @@
package com.yxt.anrui.riskcenter.api.loandiff.flowable;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/14
**/
@Data
public class DiffApplyNodeQuery {
@ApiModelProperty(value = "环节定义id")
private String taskDefKey;
@ApiModelProperty(value = "业务sid")
private String businessSid;
}

24
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/flowable/DiffApplyNodeVo.java

@ -0,0 +1,24 @@
package com.yxt.anrui.riskcenter.api.loandiff.flowable;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/14
**/
@Data
public class DiffApplyNodeVo {
@ApiModelProperty(value = "节点名称")
private String name;
@ApiModelProperty(value = "节点id")
private String id;
@ApiModelProperty(value = "审批组")
private List<String> candidateGroups;
@ApiModelProperty(value = "是否是最后环节")
private String endTask;
}

43
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/flowable/DiffApplyTaskQuery.java

@ -0,0 +1,43 @@
package com.yxt.anrui.riskcenter.api.loandiff.flowable;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/14
**/
@Data
public class DiffApplyTaskQuery {
/**
* 终止驳回撤回
*/
@ApiModelProperty("任务Id")
@NotBlank(message = "参数错误:taskId")
private String taskId;
/**
* 终止驳回撤回
*/
@ApiModelProperty("业务sid")
@NotBlank(message = "参数错误:businessSid")
private String businessSid;
/**
* 终止驳回
*/
@ApiModelProperty("任务意见")
private String comment;
/**
* 终止撤回驳回
*/
@ApiModelProperty("用户Sid")
private String userSid;
/**
* 终止
*/
@ApiModelProperty("流程实例Id")
private String instanceId;
}

38
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/flowable/DiffCompleteDto.java

@ -0,0 +1,38 @@
package com.yxt.anrui.riskcenter.api.loandiff.flowable;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/14
**/
@Data
public class DiffCompleteDto implements Dto {
private static final long serialVersionUID = -1137187204046560845L;
@ApiModelProperty(value = "用户sid")
@NotBlank(message = "参数错误:userSid")
private String userSid;
@ApiModelProperty(value = "用户全路径sid")
private String orgSidPath;
@ApiModelProperty(value = "节点id")
@NotBlank(message = "参数错误:taskDefKey")
private String taskDefKey;
@ApiModelProperty(value = "任务id")
@NotBlank(message = "参数错误:taskId")
private String taskId;
@ApiModelProperty(value = "流程id")
@NotBlank(message = "参数错误:instanceId")
private String instanceId;
@ApiModelProperty(value = "意见")
private String comment;
@ApiModelProperty(value = "业务sid")
@NotBlank(message = "参数错误:businessSid")
private String businessSid;
}

19
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/flowable/SubmitDiffDto.java

@ -0,0 +1,19 @@
package com.yxt.anrui.riskcenter.api.loandiff.flowable;
import com.yxt.anrui.riskcenter.api.loandiff.LoanDiffDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/14
**/
@Data
public class SubmitDiffDto extends LoanDiffDto {
@ApiModelProperty("流程实例id")
private String instanceId;
@ApiModelProperty("任务id")
private String taskId;
}

50
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiffdetails/AppRecords.java

@ -0,0 +1,50 @@
package com.yxt.anrui.riskcenter.api.loandiffdetails;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/14
**/
@Data
public class AppRecords {
@ApiModelProperty("车架号")
private String vin;
@ApiModelProperty("资方")
private String zf;
@ApiModelProperty("贷款人")
private String loanName;
@ApiModelProperty("应放")
private String fk1;
@ApiModelProperty("实放")
private String fk2;
@ApiModelProperty("主产品贴息:预计")
private String mainTx1;
@ApiModelProperty("主产品信息:实际")
private String mainTx2;
@ApiModelProperty("保证金预计")
private String dkbzj1;
@ApiModelProperty("保证金实际")
private String dkbzj2;
private String otherTx1;
private String otherTx2;
private String diffOtherTx;
@ApiModelProperty("意外险:预计")
private String ywx1;
@ApiModelProperty("意外险:实扣")
private String ywx2;
@ApiModelProperty("放款金额:差额")
private String diffFk;
@ApiModelProperty("意外险:差额")
private String diffYwx;
@ApiModelProperty("主产品厂家贴息:差额")
private String diffMainTx;
@ApiModelProperty("贷款保证金:差额")
private String diffDkbzj;
}

65
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiffdetails/LoanDiffDetails.java

@ -0,0 +1,65 @@
package com.yxt.anrui.riskcenter.api.loandiffdetails;
import com.yxt.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/13
**/
@Data
public class LoanDiffDetails extends BaseEntity {
private static final long serialVersionUID = 2569023626756288954L;
@ApiModelProperty("主申请sid")
private String mainSid;
@ApiModelProperty("资方sid")
private String bankSid;
@ApiModelProperty("资方")
private String bankName;
@ApiModelProperty("销售订单车辆sid")
private String busVinSid;
@ApiModelProperty("车架号")
private String vinNo;
@ApiModelProperty("车辆sid")
private String vinSid;
@ApiModelProperty("贷款人sid")
private String borrowSid;
@ApiModelProperty("贷款人")
private String borrowName;
@ApiModelProperty("放款金额:应放")
private BigDecimal makeLoan;
@ApiModelProperty("放款金额:实放")
private BigDecimal realityLoan;
private BigDecimal diffLoan;
@ApiModelProperty("主产品厂家贴息:预计")
private BigDecimal makeDiscount;
@ApiModelProperty("主产品厂家贴息:实际")
private BigDecimal realityDiscount;
private BigDecimal diffDiscount;
@ApiModelProperty("其他融厂家贴息:预计")
private BigDecimal makeOtherDiscount;
@ApiModelProperty("其他融厂家贴息:实际")
private BigDecimal realityOtherDiscount;
private BigDecimal diffOtherDiscount;
@ApiModelProperty("固定贷款保证金:预计")
private BigDecimal makeLoanMargin;
@ApiModelProperty("固定贷款保证金:实际")
private BigDecimal realityLoanMargin;
private BigDecimal diffLoanMargin;
@ApiModelProperty("意外险:已收")
private BigDecimal receivedPremium;
@ApiModelProperty("意外险:实扣")
private BigDecimal realityPremium;
private BigDecimal diffPremium;
}

30
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiffdetails/LoanDiffDetailsDto.java

@ -0,0 +1,30 @@
package com.yxt.anrui.riskcenter.api.loandiffdetails;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/14
**/
@Data
public class LoanDiffDetailsDto {
private String sid;
@ApiModelProperty("主产品厂家贴息:实际")
private String realityDiscount;
@ApiModelProperty("主产品厂家贴息:差额")
private String diffDiscount;
@ApiModelProperty("其他融厂家贴息:实际")
private String realityOtherDiscount;
@ApiModelProperty("其他融厂家贴息:差额")
private String diffOtherDiscount;
@ApiModelProperty("固定贷款保证金:实际")
private String realityLoanMargin;
@ApiModelProperty("固定贷款保证金:差额")
private String diffLoanMargin;
@ApiModelProperty("实扣意外险")
private String realityPremium;
@ApiModelProperty("意外险:差额")
private String diffPremium;
}

49
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiffdetails/LoanDiffDetailssDto.java

@ -0,0 +1,49 @@
package com.yxt.anrui.riskcenter.api.loandiffdetails;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/14
**/
@Data
public class LoanDiffDetailssDto implements Dto {
private static final long serialVersionUID = -2530442143507437830L;
@ApiModelProperty("销售订单车辆sid")
private String busVinSid;
@ApiModelProperty("车辆sid")
private String vinSid;
@ApiModelProperty("车架号")
private String vinNo;
@ApiModelProperty("资方sid")
private String bankSid;
@ApiModelProperty("资方名称")
private String bankName;
@ApiModelProperty("贷款人sid")
private String borrowSid;
@ApiModelProperty("贷款人")
private String borrowName;
@ApiModelProperty("放款金额:应放")
private BigDecimal makeLoan;
@ApiModelProperty("放款金额:实放")
private BigDecimal realityLoan;
@ApiModelProperty("放款金额:差额")
private BigDecimal diffLoan;
@ApiModelProperty("主产品厂家贴息:预计")
private BigDecimal makeDiscount;
@ApiModelProperty("其他融厂家贴息:预计")
private BigDecimal makeOtherDiscount;
@ApiModelProperty("固定贷款保证金:预计")
private BigDecimal makeLoanMargin;
@ApiModelProperty("意外险:已收")
private BigDecimal receivedPremium;
}

65
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiffdetails/LoanDiffDetailssVo.java

@ -0,0 +1,65 @@
package com.yxt.anrui.riskcenter.api.loandiffdetails;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/14
**/
@Data
public class LoanDiffDetailssVo implements Vo {
private static final long serialVersionUID = 8471596886220398279L;
private String sid;
@ApiModelProperty("资方")
private String bankName;
@ApiModelProperty("车架号")
private String vinNo;
@ApiModelProperty("贷款人")
private String borrowName;
@ApiModelProperty("放款金额:应放")
private BigDecimal makeLoan;
@ApiModelProperty("放款金额:实放")
private BigDecimal realityLoan;
@ApiModelProperty("放款金额:差额")
private BigDecimal diffLoan;
@ApiModelProperty("主产品厂家贴息:预计")
private BigDecimal makeDiscount;
@ApiModelProperty("主产品厂家贴息:实际")
private BigDecimal realityDiscount;
@ApiModelProperty("主产品厂家贴息:差额")
private BigDecimal diffDiscount;
@ApiModelProperty("其他融厂家贴息:预计")
private BigDecimal makeOtherDiscount;
@ApiModelProperty("其他融厂家贴息:实际")
private BigDecimal realityOtherDiscount;
@ApiModelProperty("其他融厂家贴息:差额")
private BigDecimal diffOtherDiscount;
@ApiModelProperty("固定贷款保证金:预计")
private BigDecimal makeLoanMargin;
@ApiModelProperty("固定贷款保证金:实际")
private BigDecimal realityLoanMargin;
@ApiModelProperty("固定贷款保证金:差额")
private BigDecimal diffLoanMargin;
@ApiModelProperty("意外险:已收")
private BigDecimal receivedPremium;
@ApiModelProperty("意外险:实扣")
private BigDecimal realityPremium;
@ApiModelProperty("意外险:差额")
private BigDecimal diffPremium;
}

3
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loannoguaranteecreditreview/LoanNoGuaranteeCreditReview.java

@ -39,4 +39,7 @@ public class LoanNoGuaranteeCreditReview extends BaseEntity {
private String isLoan;
@ApiModelProperty("放款日期")
private String isLoanDate;
@ApiModelProperty("是否公司开票(0是,1否)")
private String isCompInvoic;
}

4
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loannoguaranteecreditreview/LoanNoGuaranteeCreditReviewDetailsVo.java

@ -47,4 +47,8 @@ public class LoanNoGuaranteeCreditReviewDetailsVo implements Vo {
private List<String> creditReviewFiles = new ArrayList<>();
@ApiModelProperty("放款审核结果截图")
private List<String> loanReviewFiles = new ArrayList<>();
@ApiModelProperty("是否有挂车")
private Boolean isHavTrailer = false;
@ApiModelProperty("是否公司开票(0是,1否)")
private String isCompInvoic;
}

2
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loannoguaranteecreditreview/LoanNoGuaranteeCreditReviewDto.java

@ -48,5 +48,7 @@ public class LoanNoGuaranteeCreditReviewDto implements Dto {
private List<String> creditReviewFiles = new ArrayList<>();
@ApiModelProperty("放款审核结果截图")
private List<String> loanReviewFiles = new ArrayList<>();
@ApiModelProperty("是否公司开票(0是,1否)")
private String isCompInvoic;
}

4
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/LoanRepaymentHistoryFeign.java

@ -49,6 +49,10 @@ public interface LoanRepaymentHistoryFeign {
@ResponseBody
public ResultBean<LoanRepaymentHistoryUpdate> updateRecordInfo(@RequestParam("sid") String sid);
@ApiOperation("划扣新增回显")
@GetMapping("/buckleInfo")
@ResponseBody
public ResultBean<LoanRepaymentHistoryRecordVo> buckleInfo(@RequestParam("sid") String sid);
@ApiOperation("删除还款记录")
@DeleteMapping("/deleteHistory")

5
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/LoanRepaymentHistoryFeignFallback.java

@ -40,6 +40,11 @@ public class LoanRepaymentHistoryFeignFallback implements LoanRepaymentHistoryFe
return null;
}
@Override
public ResultBean<LoanRepaymentHistoryRecordVo> buckleInfo(String sid) {
return null;
}
@Override
public ResultBean deleteHistory(String scheduleSid) {
return null;

38
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/LoanRepaymentHistoryRecordVo.java

@ -0,0 +1,38 @@
package com.yxt.anrui.riskcenter.api.loanrepaymenthistory;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author Administrator
* @description
* @date 2023/11/13 14:02
*/
@Data
public class LoanRepaymentHistoryRecordVo {
private String recordSid;
private String loanContractNo;
private String vinNo;
@ApiModelProperty("资方名称")
private String bankName;
@ApiModelProperty("资方合同")
private String bankContractNo;
@ApiModelProperty("客户")
private String customer;
@ApiModelProperty("借款人名称")
private String borrowerName;
@ApiModelProperty("还款方式")
private String returnWay;
@ApiModelProperty("期数")
private String period;
@ApiModelProperty("应还日期")
private String dueDate;
@ApiModelProperty("应还金额")
private String dueMoney;
@ApiModelProperty("实还金额")
private String actualMoney;
@ApiModelProperty("本期未还金额")
private String outstandingMoney;
@ApiModelProperty("实还日期")
private String actualDate;
}

6
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapply/LoanBuckleApplyMapper.java

@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.LoanBuckleApply;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.LoanBuckleApplyVo;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.LoanCustomerRecord;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.LoanCustomerRecordDetailsVo;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.LoanCustomerRecordVo;
@ -19,4 +20,9 @@ import java.util.Map;
@Mapper
public interface LoanBuckleApplyMapper extends BaseMapper<LoanBuckleApply> {
IPage<LoanBuckleApplyVo> listPage(IPage<LoanBuckleApply> page, @Param(Constants.WRAPPER) QueryWrapper<LoanBuckleApply> qw);
int updateFlowFiled(Map<String, Object> map);
int selectNum(String bill);
}

37
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapply/LoanBuckleApplyMapper.xml

@ -1,5 +1,42 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yxt.anrui.riskcenter.biz.loanbuckleapply.LoanBuckleApplyMapper">
<update id="updateFlowFiled">
UPDATE loan_buckle_apply
SET nodeState=#{nodeState}
, nodeSid=#{taskDefKey}
<if test="procDefId != null and procDefId != ''">
, procDefId=#{procDefId}
</if>
<if test="procInsId != null and procInsId != ''">
, procInstId=#{procInsId}
</if>
<if test="taskId != null and taskId != ''">
, taskId=#{taskId}
</if>
WHERE sid = #{sid}
</update>
<select id="listPage" resultType="com.yxt.anrui.riskcenter.api.loanbuckleapply.LoanBuckleApplyVo">
SELECT
sid,
nodeState,
useOrgName as company,
dept,
applyName,
date_format(applyDate, '%Y-%m-%d') as applyDate,
remarks,
billNo,
procDefId,
procInstId
FROM loan_buckle_apply
<where>
${ew.sqlSegment}
</where>
</select>
<select id="selectNum" resultType="java.lang.Integer">
select IFNULL(CAST(REPLACE(MAX(billNo), #{bill}, '') AS SIGNED), 0) as code
from loan_buckle_apply
where billNo LIKE concat(#{bill}, '%')
</select>
</mapper>

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

@ -3,9 +3,10 @@ package com.yxt.anrui.riskcenter.biz.loanbuckleapply;
import cn.hutool.core.bean.BeanUtil;
import com.yxt.anrui.flowable.api.utils.ProcDefEnum;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.LoanBuckleApplyFeign;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.*;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.app.*;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.*;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.app.AppBuckleDetailsVo;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.flow.*;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.LoanCustomerRecord;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.flow.*;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
@ -15,7 +16,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
@ -24,5 +24,87 @@ import java.util.List;
@RequestMapping("v1/loanbuckleapply")
public class LoanBuckleApplyRest implements LoanBuckleApplyFeign {
@Autowired
LoanBuckleApplyService loanBuckleApplyService;
@Override
public ResultBean<PagerVo<LoanBuckleApplyVo>> listPage(PagerQuery<LoanBuckleApplyQuery> pq) {
ResultBean<PagerVo<LoanBuckleApplyVo>> rb = ResultBean.fireFail();
PagerVo<LoanBuckleApplyVo> pv = loanBuckleApplyService.listPage(pq);
return rb.success().setData(pv);
}
@Override
public ResultBean<LoanBuckleApplyInit> buckleInit(String[] sids) {
return loanBuckleApplyService.buckleInit(sids);
}
@Override
public ResultBean<String> saveBuckle(LoanBuckleApplyDto dto) {
return loanBuckleApplyService.saveBuckle(dto);
}
@Override
public ResultBean<LoanBuckleApplyInit> buckleDetails(String sid) {
return loanBuckleApplyService.buckleDetails(sid);
}
@Override
public ResultBean deleteBySids(String[] sids) {
return loanBuckleApplyService.deleteBySids(sids);
}
@Override
public ResultBean submitRecordApplication(SubmitBuckleDto dto) {
return loanBuckleApplyService.submitRecordApplication(dto);
}
@Override
public ResultBean complete(BuckleCompleteDto dto) {
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(dto, bv);
bv.setModelId(ProcDefEnum.LOANBUCKLEAPPLLY.getProDefId());
return loanBuckleApplyService.complete(bv);
}
@Override
public ResultBean revokeProcess(BuckleTaskQuery query) {
return loanBuckleApplyService.revokeProcess(query);
}
@Override
public ResultBean taskReject(BuckleTaskQuery query) {
return loanBuckleApplyService.taskReject(query);
}
@Override
public ResultBean breakProcess(BuckleTaskQuery query) {
return loanBuckleApplyService.breakProcess(query);
}
@Override
public ResultBean flowRecord(String procInsId) {
return loanBuckleApplyService.flowRecord(procInsId);
}
@Override
public ResultBean<List<BuckleGetNodeVo>> getNextNodesForSubmit(BuckleGetNodeQuery query) {
return loanBuckleApplyService.getNextNodesForSubmit(query);
}
@Override
public ResultBean<List<BuckleGetNodeVo>> getPreviousNodesForReject(BuckleGetNodeQuery query) {
return loanBuckleApplyService.getPreviousNodesForReject(query);
}
@Override
public ResultBean delegate(BuckleDelegateQuery query) {
return loanBuckleApplyService.delegate(query);
}
@Override
public ResultBean<AppBuckleDetailsVo> appDetail(String sid) {
return loanBuckleApplyService.appDetail(sid);
}
}

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

@ -1,19 +1,13 @@
package com.yxt.anrui.riskcenter.biz.loanbuckleapply;
import cn.hutool.core.bean.BeanUtil;
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;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.yxt.anrui.base.api.basedistributorapply.BaseDistributorApplyFeign;
import com.yxt.anrui.base.api.basedistributorapply.BaseSalesManger;
import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTemp;
import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempFeign;
import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempVo;
import com.yxt.anrui.fin.api.fincompanyinvoicing.FinCompanyInvoicingDetailsVo;
import com.yxt.anrui.fin.api.fincompanyinvoicing.FinCompanyInvoicingDto;
import com.yxt.anrui.fin.api.fincompanyinvoicing.FinCompanyInvoicingFeign;
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;
@ -24,25 +18,26 @@ 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.sysorganization.*;
import com.yxt.anrui.portal.api.sysparameter.SysParameterEnum;
import com.yxt.anrui.portal.api.sysparameter.SysParameterFeign;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrg;
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.loancustomerrecord.*;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.app.*;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.flow.*;
import com.yxt.anrui.riskcenter.api.loancustomerrecordstaff.AppStaffVo;
import com.yxt.anrui.riskcenter.api.loancustomerrecordstaff.LoanCustomerRecordStaff;
import com.yxt.anrui.riskcenter.api.loancustomerrecordstaff.LoanCustomerRecordStaffDto;
import com.yxt.anrui.riskcenter.api.loancustomerrecordstaff.LoanCustomerRecordStaffVo;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.*;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.app.AppBuckleDetailsVo;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.app.AppRecordVo;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.flow.*;
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.biz.loancustomerrecordstaff.LoanCustomerRecordStaffService;
import com.yxt.anrui.riskcenter.api.loanfinotherPolicy.LoanFinOtherPolicy;
import com.yxt.anrui.riskcenter.api.loanfinpolicy.LoanFinPolicy;
import com.yxt.anrui.riskcenter.api.loanfinpolicyrecordapply.LoanFinPolicyRecordApply;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistory;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistoryRecordVo;
import com.yxt.anrui.riskcenter.biz.loanbuckleapplyrecord.LoanBuckleApplyRecordService;
import com.yxt.anrui.riskcenter.biz.loanfile.LoanFileService;
import com.yxt.anrui.riskcenter.biz.loanrepaymenthistory.LoanRepaymentHistoryService;
import com.yxt.common.base.config.component.DocPdfComponent;
import com.yxt.common.base.config.component.FileUploadComponent;
import com.yxt.common.base.service.MybatisBaseService;
@ -71,5 +66,826 @@ import java.util.stream.Collectors;
@Service
public class LoanBuckleApplyService extends MybatisBaseService<LoanBuckleApplyMapper, LoanBuckleApply> {
@Autowired
private MessageFeign messageFeign;
@Autowired
private SysUserFeign sysUserFeign;
@Autowired
private LoanRepaymentHistoryService loanRepaymentHistoryService;
@Autowired
private SysStaffOrgFeign sysStaffOrgFeign;
@Autowired
private SysOrganizationFeign sysOrganizationFeign;
@Autowired
private LoanBuckleApplyRecordService loanBuckleApplyRecordService;
@Autowired
private LoanFileService loanFileService;
@Autowired
private FileUploadComponent fileUploadComponent;
@Autowired
private FlowFeign flowFeign;
@Autowired
private FlowTaskFeign flowTaskFeign;
@Autowired
private FlowableFeign flowableFeign;
public PagerVo<LoanBuckleApplyVo> listPage(PagerQuery<LoanBuckleApplyQuery> pq) {
IPage<LoanBuckleApply> page = PagerUtil.queryToPage(pq);
LoanBuckleApplyQuery pagerQuery = pq.getParams();
QueryWrapper<LoanBuckleApply> qw = new QueryWrapper<>();
//=======================
PrivilegeQuery privilegeQuery = new PrivilegeQuery();
privilegeQuery.setOrgPath(pagerQuery.getOrgPath());
privilegeQuery.setMenuSid(pagerQuery.getMenuSid());
privilegeQuery.setMenuUrl(pagerQuery.getMenuUrl());
privilegeQuery.setUserSid(pagerQuery.getUserSid());
ResultBean<String> defaultIdReltBean = sysUserFeign.selectPrivilegeLevel(privilegeQuery);
if (StringUtils.isNotBlank(defaultIdReltBean.getData())) {
//数据权限ID(1集团、2事业部、3分公司、4部门、5个人)
String orgSidPath = pagerQuery.getOrgPath();
orgSidPath = orgSidPath + "/";
int i1 = orgSidPath.indexOf("/");
int i2 = orgSidPath.indexOf("/", i1 + 1);
int i3 = orgSidPath.indexOf("/", i2 + 1);
int i4 = orgSidPath.indexOf("/", i3 + 1);
String orgLevelKey = defaultIdReltBean.getData();
if ("1".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i1);
qw.like("orgSidPath", orgSidPath);
} else if ("2".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i2);
qw.like("orgSidPath", orgSidPath);
} else if ("3".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i3);
qw.like("orgSidPath", orgSidPath);
} else if ("4".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i4);
qw.like("orgSidPath", orgSidPath);
} else if ("5".equals(orgLevelKey)) {
qw.eq("createBySid", pagerQuery.getUserSid());
} else {
PagerVo<LoanBuckleApplyVo> p = new PagerVo<>();
return p;
}
} else {
PagerVo<LoanBuckleApplyVo> p = new PagerVo<>();
return p;
}
//=======================
//分公司
if (StringUtils.isNotBlank(pagerQuery.getCompany())) {
qw.like("useOrgName", pagerQuery.getCompany());
}
//申请人
if (StringUtils.isNotBlank(pagerQuery.getApplyName())) {
qw.like("applyName", pagerQuery.getApplyName());
}
//申请编号
if (StringUtils.isNotBlank(pagerQuery.getBillNo())) {
qw.like("billNo", pagerQuery.getBillNo());
}
String applyStartTime = pagerQuery.getApplyStartDate();
String applyEndTime = pagerQuery.getApplyEndDate();
qw.apply(StringUtils.isNotEmpty(applyStartTime), "date_format (applyDate,'%Y-%m-%d') >= date_format('" + applyStartTime + "','%Y-%m-%d')").
apply(StringUtils.isNotEmpty(applyEndTime), "date_format (applyDate,'%Y-%m-%d') <= date_format('" + applyEndTime + "','%Y-%m-%d')"
);
qw.eq("isDelete", 0);
qw.orderByDesc("createTime");
IPage<LoanBuckleApplyVo> pagging = baseMapper.listPage(page, qw);
PagerVo<LoanBuckleApplyVo> p = PagerUtil.pageToVo(pagging, null);
return p;
}
public ResultBean<LoanBuckleApplyInit> buckleInit(String[] sids) {
ResultBean<LoanBuckleApplyInit> rb = ResultBean.fireFail();
LoanBuckleApplyInit vo = new LoanBuckleApplyInit();
List<LoanBuckleHistoryRecord> historyRecords = new ArrayList<>();
for (String sid : sids) {
LoanBuckleHistoryRecord record = new LoanBuckleHistoryRecord();
LoanRepaymentHistoryRecordVo recordVo = loanRepaymentHistoryService.buckleInfo(sid).getData();
if (null != recordVo) {
BeanUtil.copyProperties(recordVo, record);
}
historyRecords.add(record);
}
vo.setRecords(historyRecords);
return rb.success().setData(vo);
}
/**
* 生成交车资料确认单单据编号
*
* @param orgSid
* @return
*/
public String getApplyCode(String orgSid) {
//获取分公司sid
ResultBean<SysOrganizationVo> resultBean1 = sysOrganizationFeign.fetchBySid(orgSid);
String orgCode = resultBean1.getData().getOrgCode();
BillNo b = new BillNo();
b.setOrgCode(orgCode);
b.setBillType(BillTypeEnum.HKSQ.getBillType());
String bill = Rule.getBill(b);
int i = baseMapper.selectNum(bill);
String billNo = Rule.getBillNo(bill, i);
return billNo;
}
@Transactional(rollbackFor = Exception.class)
public ResultBean<String> saveBuckle(LoanBuckleApplyDto dto) {
ResultBean<String> rb = ResultBean.fireFail();
String sid = "";
if (StringUtils.isNotBlank(dto.getSid())) {
sid = dto.getSid();
LoanBuckleApply updateEntity = fetchBySid(sid);
if (null != updateEntity) {
BeanUtil.copyProperties(dto, updateEntity, "id", "sid");
baseMapper.updateById(updateEntity);
loanBuckleApplyRecordService.deleteByMainSid(sid);
//删除附件表中关于该linkSid的文件
loanFileService.deleteByLinkSid(sid);
List<String> files = dto.getFiles();
if (!files.isEmpty()) {
loanFileService.saveAll(sid, files, LoanFileEnum.BUCKLE_APPLY.getAttachType());
}
List<LoanBuckleHistoryRecord> records = dto.getRecords();
if (!records.isEmpty()) {
for (LoanBuckleHistoryRecord record : records) {
LoanBuckleApplyRecord applyRecord = new LoanBuckleApplyRecord();
applyRecord.setMainSid(sid);
applyRecord.setRepaymentHistorySid(record.getRecordSid());
loanBuckleApplyRecordService.insert(applyRecord);
}
}
}
} else {
LoanBuckleApply loanBuckleApply = new LoanBuckleApply();
sid = loanBuckleApply.getSid();
BeanUtil.copyProperties(dto, loanBuckleApply, "id", "sid");
loanBuckleApply.setCreateBySid(dto.getUserSid());
loanBuckleApply.setOrgSidPath(dto.getOrgPath());
ResultBean<String> orgSidByPath = sysStaffOrgFeign.getOrgSidByPath(dto.getOrgPath());
if (orgSidByPath.getSuccess()) {
String userOrgSid = orgSidByPath.getData();
loanBuckleApply.setUseOrgSid(userOrgSid);
String billNo = getApplyCode(userOrgSid);
loanBuckleApply.setBillNo(billNo);
ResultBean<SysOrganizationVo> organizationVo = sysOrganizationFeign.fetchBySid(userOrgSid);
if (organizationVo.getSuccess()) {
SysOrganizationVo organizationVoData = organizationVo.getData();
if (null != organizationVoData) {
loanBuckleApply.setUseOrgName(organizationVoData.getName());
}
}
}
loanBuckleApply.setNodeState("待提交");
baseMapper.insert(loanBuckleApply);
List<LoanBuckleHistoryRecord> records = dto.getRecords();
if (!records.isEmpty()) {
for (LoanBuckleHistoryRecord record : records) {
LoanBuckleApplyRecord applyRecord = new LoanBuckleApplyRecord();
applyRecord.setMainSid(sid);
applyRecord.setRepaymentHistorySid(record.getRecordSid());
loanBuckleApplyRecordService.insert(applyRecord);
LoanRepaymentHistory repaymentHistory = loanRepaymentHistoryService.fetchBySid(record.getRecordSid());
if (null != repaymentHistory) {
repaymentHistory.setBuckle("申请中");
repaymentHistory.setBuckleKey("002");
loanRepaymentHistoryService.updateById(repaymentHistory);
}
}
}
List<String> files = dto.getFiles();
if (!files.isEmpty()) {
loanFileService.saveAll(sid, files, LoanFileEnum.BUCKLE_APPLY.getAttachType());
}
}
return rb.success().setData(sid);
}
public ResultBean<LoanBuckleApplyInit> buckleDetails(String sid) {
ResultBean<LoanBuckleApplyInit> rb = ResultBean.fireFail();
LoanBuckleApplyInit initVo = new LoanBuckleApplyInit();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
LoanBuckleApply loanBuckleApply = fetchBySid(sid);
if (null != loanBuckleApply) {
BeanUtil.copyProperties(loanBuckleApply, initVo);
initVo.setUserSid(loanBuckleApply.getCreateBySid());
initVo.setOrgPath(loanBuckleApply.getOrgSidPath());
if (StringUtils.isNotBlank(loanBuckleApply.getProcInstId())) {
initVo.setInstanceId(loanBuckleApply.getProcInstId());
}
if (null != loanBuckleApply.getApplyDate()) {
initVo.setApplyDate(sdf.format(loanBuckleApply.getApplyDate()));
}
List<LoanFile> fileList = loanFileService.selectByLinkSid(sid, LoanFileEnum.BUCKLE_APPLY.getAttachType());
fileList.removeAll(Collections.singleton(null));
if (!fileList.isEmpty()) {
List<String> files = fileList.stream().map(c -> fileUploadComponent.getUrlPrefix() + c.getFilePath()).
collect(Collectors.toList());
initVo.setFiles(files);
}
List<LoanBuckleApplyRecord> records = loanBuckleApplyRecordService.selByMainSid(sid);
List<LoanBuckleHistoryRecord> recordList = new ArrayList<>();
if (!records.isEmpty()) {
for (LoanBuckleApplyRecord record : records) {
String historySid = record.getRepaymentHistorySid();
LoanBuckleHistoryRecord historyRecord = new LoanBuckleHistoryRecord();
LoanRepaymentHistoryRecordVo recordVo = loanRepaymentHistoryService.buckleInfo(historySid).getData();
if (null != recordVo) {
BeanUtil.copyProperties(recordVo, historyRecord);
}
recordList.add(historyRecord);
}
}
initVo.setRecords(recordList);
}
return rb.success().setData(initVo);
}
//-------------------------------------流程------------------------------------------------/
/**
* 判断提交的流程是否被允许
*
* @param dto
* @return
*/
private synchronized int submitBusinessData(SubmitBuckleDto dto, LoanBuckleApply loanBuckleApply) {
int r = 0;
if (StringUtils.isBlank(dto.getSid())) {
r = 1;
} else {
if (loanBuckleApply != null) {
String businessTaskId = loanBuckleApply.getTaskId();
if (StringUtils.isBlank(businessTaskId) && StringUtils.isBlank(dto.getTaskId())) {
//新提交
r = 1;
} else if (StringUtils.isNotBlank(businessTaskId) && businessTaskId.equals(dto.getTaskId())) {
//二次提交//只有数据一致的时候才能进行下一步
r = 2;
}
} else {
r = 3;
}
}
return r;
}
/**
* 更新流程相关的状态
*
* @param map
* @return
*/
private int updateFlowFiled(Map<String, Object> map) {
return baseMapper.updateFlowFiled(map);
}
public ResultBean submitRecordApplication(SubmitBuckleDto dto) {
ResultBean rb = ResultBean.fireFail();
LoanBuckleApply loanBuckleApply = fetchBySid(dto.getSid());
int r = submitBusinessData(dto, loanBuckleApply);
if (r == 3) {
return rb.setMsg("该申请不存在");
}
if (r == 0) {
return rb.setMsg("操作失败!提交的数据不一致");
}
String businessSid = "";
//新增修改保存
ResultBean<String> resultBean = saveBuckle(dto);
if (resultBean.getSuccess()) {
businessSid = resultBean.getData();
}
LoanBuckleApply entity = fetchBySid(businessSid);
String orgSidPath = "";
if (StringUtils.isNotBlank(entity.getOrgSidPath())) {
orgSidPath = entity.getOrgSidPath();
} else {
SysUserVo data = sysUserFeign.fetchBySid(entity.getCreateBySid()).getData();
if (null != data) {
//根据staffSid获取用户的组织全路径
ResultBean<SysStaffOrg> staffOrgResultBean = sysStaffOrgFeign.getOrgByStaffSid(data.getStaffSid());
if (!staffOrgResultBean.getSuccess()) {
return rb.setMsg(staffOrgResultBean.getMsg());
}
//用户的组织全路径
orgSidPath = staffOrgResultBean.getData().getOrgSidPath();
}
}
List<String> orgPathList = Arrays.asList(orgSidPath.split("/"));
SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(orgPathList.get(orgPathList.size() - 1)).getData();
if (sysOrganization == null) {
return rb.setMsg("当前所在的组织机构不存在");
}
if (StringUtils.isBlank(sysOrganization.getManagerSid())) {
// return rb.setMsg("当前所在的组织机构未设置主管人员");
sysOrganization.setManagerSid(ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId());
}
//创建BusinessVariables实体对象
BusinessVariables bv = new BusinessVariables();
//流程中的参数赋值
Map<String, Object> variables = BeanUtil.beanToMap(dto);
Map<String, Object> appMap = new HashMap<>();
//若有网关,则赋值网关中判断的字段。
// boolean isTure = true;
// //去查询是否同意
// if (StringUtils.isNotBlank(entity.getSalesUserSid())) {
// if (!entity.getCreateBySid().equals(entity.getSalesUserSid())) {
// isTure = false;
// }
// }
// variables.put("isTure", isTure);
variables.put("businessSid", businessSid);
appMap.put("sid", businessSid);
variables.put("app", appMap);
// String orderNames = "<" + entity.getCustomer() + ">" + "欠款客户备案";
// variables.put("orderNames", orderNames);
LoanBuckleApply loanBuckleApply1 = fetchBySid(businessSid);
String msgBusinessSid = loanBuckleApply1.getSid();
//用户的部门全路径sid
bv.setOrgSidPath(loanBuckleApply1.getOrgSidPath());
//业务sid
bv.setBusinessSid(businessSid);
//用户sid
bv.setUserSid(dto.getUserSid());
bv.setFormVariables(variables);
// String nextNodeUserSids_ = sysOrganization.getManagerSid();
// if (isTure) {
// bv.setNextNodeUserSids(nextNodeUserSids_);
// } else {
// bv.setNextNodeUserSids(entity.getSalesUserSid());
// }
//流程定义id
bv.setModelId(ProcDefEnum.LOANBUCKLEAPPLLY.getProDefId());
if (r == 1) {
//流程定义id
bv.setModelId(ProcDefEnum.LOANBUCKLEAPPLLY.getProDefId());
ResultBean<UpdateFlowFieldVo> voResultBean = flowFeign.startProcess(bv);
if (!voResultBean.getSuccess()) {
return rb.setMsg(voResultBean.getMsg());
}
UpdateFlowFieldVo ufVo = voResultBean.getData();
int i = updateFlowFiled(BeanUtil.beanToMap(ufVo));
//==================================添加线程
try {
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("demo-pool-%d").build();
ExecutorService pool = new ThreadPoolExecutor(2, 100,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());
Future future1 = pool.submit(() -> {
//极光推送
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(msgBusinessSid);
messageFlowableQuery.setModuleName("划扣申请");
SysUserVo userVo = sysUserFeign.fetchBySid(loanBuckleApply1.getCreateBySid()).getData();
if (userVo != null) {
if (StringUtils.isNotBlank(userVo.getName())) {
messageFlowableQuery.setMsgContent(userVo.getName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
}
}
messageFlowableQuery.setMsgTitle("划扣申请");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
});
} catch (Exception e) {
e.printStackTrace();
}
//==================================添加线程
return voResultBean;
}
if (r == 2) {
// ToDo:驳回到发起人后再次提交
if (StringUtils.isBlank(dto.getInstanceId())) {
return rb.setMsg("参数错误:instanceId");
}
LoanBuckleApply loanBuckleApply2 = fetchBySid(dto.getSid());
bv.setTaskId(dto.getTaskId());
bv.setTaskDefKey(loanBuckleApply2.getNodeSid());
bv.setComment("重新提交");
bv.setInstanceId(dto.getInstanceId());
return complete(bv);
}
return rb;
}
public ResultBean complete(BusinessVariables bv) {
ResultBean rb = ResultBean.fireFail();
String businessSid = bv.getBusinessSid();
LoanBuckleApply loanBuckleApply = this.fetchBySid(businessSid);
if (bv.getTaskId().equals(loanBuckleApply.getTaskId())) {
bv.setOrgSidPath(loanBuckleApply.getOrgSidPath());
//流程中的参数赋值
Map<String, Object> variables = new HashMap<>();
Map<String, Object> appMap = new HashMap<>();
//若有网关,则赋值网关中判断的字段。
// boolean isTure = true;
// //去查询是否同意
// if (StringUtils.isNotBlank(loanCustomerRecord.getSalesUserSid())) {
// if (!loanCustomerRecord.getCreateBySid().equals(loanCustomerRecord.getSalesUserSid())) {
// isTure = false;
// }
// }
// variables.put("isTure", isTure);
// if (bv.getTaskDefKey().equals("Activity_1078xxs")) {
// if (StringUtils.isNotBlank(loanCustomerRecord.getManageSid())) {
// bv.setNextNodeUserSids(loanCustomerRecord.getManageSid());
// } else {
// bv.setNextNodeUserSids(ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId());
// }
// }
variables.put("businessSid", businessSid);
appMap.put("sid", businessSid);
variables.put("app", appMap);
bv.setFormVariables(variables);
ResultBean<UpdateFlowFieldVo> resultBean = flowFeign.handleProsess(bv);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
int i = updateFlowFiled(BeanUtil.beanToMap(resultBean.getData()));
if ("Event_end".equals(resultBean.getData().getTaskDefKey())) {
List<LoanBuckleApplyRecord> applyRecords = loanBuckleApplyRecordService.selByMainSid(businessSid);
if (!applyRecords.isEmpty()) {
for (LoanBuckleApplyRecord applyRecord : applyRecords) {
LoanRepaymentHistory repaymentHistory = loanRepaymentHistoryService.fetchBySid(applyRecord.getRepaymentHistorySid());
if (null != repaymentHistory) {
repaymentHistory.setBuckle("审核通过");
repaymentHistory.setBuckleKey("003");
loanRepaymentHistoryService.updateById(repaymentHistory);
}
}
}
}
return rb.success().setData(resultBean.getData());
} else {
return rb.setMsg("操作失败!提交的数据不一致");
}
}
public ResultBean revokeProcess(BuckleTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
if (StringUtils.isBlank(query.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
LoanBuckleApply loanBuckleApply = fetchBySid(query.getBusinessSid());
String businessTaskId = loanBuckleApply.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if (businessTaskId.equals(query.getTaskId())) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.revokeProcess(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
updateFlowFiled(BeanUtil.beanToMap(resultBean.getData()));
return rb.success().setData(resultBean.getData());
}
}
return rb.setMsg("操作失败,提交的数据不一致!");
}
public ResultBean taskReject(BuckleTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
String businessSid = query.getBusinessSid();
LoanBuckleApply loanBuckleApply = fetchBySid(businessSid);
if (loanBuckleApply == null) {
return rb.setMsg("该申请不存在");
}
String businessTaskId = loanBuckleApply.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if (businessTaskId.equals(query.getTaskId())) {
if (StringUtils.isBlank(query.getComment())) {
return rb.setMsg("请填写意见");
}
if (org.apache.commons.lang3.StringUtils.isBlank(query.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
Map<String, Object> variables = new HashMap<>();
Map<String, Object> appMap = new HashMap<>();
appMap.put("sid", businessSid);
variables.put("app", appMap);
//若有网关,则赋值网关中判断的字段。
// boolean isTure = true;
// //去查询是否同意
// if (StringUtils.isNotBlank(loanCustomerRecord.getSalesUserSid())) {
// if (!loanCustomerRecord.getCreateBySid().equals(loanCustomerRecord.getSalesUserSid())) {
// isTure = false;
// }
// }
// variables.put("isTure", isTure);
flowTaskVo.setValues(variables);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.taskReject(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
UpdateFlowFieldVo ufVo = resultBean.getData();
Map<String, Object> map = BeanUtil.beanToMap(ufVo);
//更新业务中的流程相关的参数
updateFlowFiled(map);
//极光推送
loanBuckleApply = fetchBySid(businessSid);
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
String procId = loanBuckleApply.getProcInstId();
messageFlowVo.setProcInsId(procId);
messageFlowVo.setProcDefId(loanBuckleApply.getProcDefId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(businessSid);
messageFlowableQuery.setModuleName("划扣申请");
ResultBean<List<LatestTaskVo>> listResultBean = flowTaskFeign.getLatestTasks(procId);
String nextName = listResultBean.getData().get(0).getName_();
String nextNodeUserSids = listResultBean.getData().get(0).getASSIGNEE_();
List<String> receiveSidList = Arrays.asList(nextNodeUserSids.split(","));
// if (receiveSidList.size() == 1 && receiveSidList.get(0).equals(busVehicleApply.getCreateBySid())) {
if ("发起申请".equals(nextName)) {
messageFlowableQuery.setMsgContent("您提交的" + messageFlowableQuery.getModuleName() + "已被驳回,请重新提交");
} else {
SysUserVo userVo = sysUserFeign.fetchBySid(loanBuckleApply.getCreateBySid()).getData();
if (userVo != null) {
if (org.apache.commons.lang3.StringUtils.isNotBlank(userVo.getName())) {
messageFlowableQuery.setMsgContent(userVo.getName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
}
}
}
messageFlowableQuery.setMsgTitle("划扣申请");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
return rb.success();
}
}
return rb.setMsg("操作失败!提交的数据不一致!");
}
public ResultBean breakProcess(BuckleTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
if (org.apache.commons.lang3.StringUtils.isBlank(query.getInstanceId())) {
return rb.setMsg("参数错误:instanceId");
}
if (org.apache.commons.lang3.StringUtils.isBlank(query.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
if (org.apache.commons.lang3.StringUtils.isBlank(query.getComment())) {
return rb.setMsg("请填写意见");
}
LoanBuckleApply loanBuckleApply = fetchBySid(query.getBusinessSid());
String businessTaskId = loanBuckleApply.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if (query.getUserSid().equals(loanBuckleApply.getCreateBySid())) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.breakProcess(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
Map<String, Object> map = BeanUtil.beanToMap(resultBean.getData());
updateFlowFiled(map);
//终止任务后划扣状态改完未通过
LoanBuckleApply entity = fetchBySid(query.getBusinessSid());
if (entity.getNodeState().equals("终止")) {
List<LoanBuckleApplyRecord> applyRecords = loanBuckleApplyRecordService.selByMainSid(query.getBusinessSid());
if (!applyRecords.isEmpty()) {
for (LoanBuckleApplyRecord applyRecord : applyRecords) {
LoanRepaymentHistory repaymentHistory = loanRepaymentHistoryService.fetchBySid(applyRecord.getRepaymentHistorySid());
if (null != repaymentHistory) {
repaymentHistory.setBuckle("审核未通过");
repaymentHistory.setBuckleKey("004");
loanRepaymentHistoryService.updateById(repaymentHistory);
}
}
}
}
return rb.success().setData(resultBean.getData());
} else {
if (businessTaskId.equals(query.getTaskId())) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.breakProcess(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
Map<String, Object> map = BeanUtil.beanToMap(resultBean.getData());
updateFlowFiled(map);
//终止任务后划扣状态改完未通过
LoanBuckleApply entity = fetchBySid(query.getBusinessSid());
if (entity.getNodeState().equals("终止")) {
List<LoanBuckleApplyRecord> applyRecords = loanBuckleApplyRecordService.selByMainSid(query.getBusinessSid());
if (!applyRecords.isEmpty()) {
for (LoanBuckleApplyRecord applyRecord : applyRecords) {
LoanRepaymentHistory repaymentHistory = loanRepaymentHistoryService.fetchBySid(applyRecord.getRepaymentHistorySid());
if (null != repaymentHistory) {
repaymentHistory.setBuckle("审核未通过");
repaymentHistory.setBuckleKey("004");
loanRepaymentHistoryService.updateById(repaymentHistory);
}
}
}
}
return rb.success().setData(resultBean.getData());
}
}
}
return rb.setMsg("操作失败!提交的数据不一致!");
}
public ResultBean flowRecord(String procInsId) {
return flowTaskFeign.businessFlowRecord(procInsId);
}
public ResultBean<List<BuckleGetNodeVo>> getNextNodesForSubmit(BuckleGetNodeQuery query) {
ResultBean<List<BuckleGetNodeVo>> rb = ResultBean.fireFail();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
//流程中的参数赋值、若有网关,则赋值网关中判断的字段。
Map<String, Object> variables = new HashMap<>();
//根据业务sid查询排产信息
LoanBuckleApply loanBuckleApply = fetchBySid(query.getBusinessSid());
//若有网关,则赋值网关中判断的字段。
// boolean isTure = true;
// //去查询是否同意
// if (StringUtils.isNotBlank(loanCustomerRecord.getSalesUserSid())) {
// if (!loanCustomerRecord.getCreateBySid().equals(loanCustomerRecord.getSalesUserSid())) {
// isTure = false;
// }
// }
// variables.put("isTure", isTure);
bv.setFormVariables(variables);
bv.setModelId(loanBuckleApply.getProcDefId());
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo
List<BuckleGetNodeVo> voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), BuckleGetNodeVo.class)).collect(Collectors.toList());
return rb.success().setData(voList);
}
public ResultBean<List<BuckleGetNodeVo>> getPreviousNodesForReject(BuckleGetNodeQuery query) {
ResultBean<List<BuckleGetNodeVo>> rb = ResultBean.fireFail();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
//流程中的参数赋值、若有网关,则赋值网关中判断的字段。
Map<String, Object> variables = new HashMap<>();
//根据业务sid查询排产信息
LoanBuckleApply loanBuckleApply = fetchBySid(query.getBusinessSid());
// //若有网关,则赋值网关中判断的字段。
// boolean isTure = true;
// //去查询是否同意
// if (StringUtils.isNotBlank(loanCustomerRecord.getSalesUserSid())) {
// if (!loanCustomerRecord.getCreateBySid().equals(loanCustomerRecord.getSalesUserSid())) {
// isTure = false;
// }
// }
// variables.put("isTure", isTure);
bv.setFormVariables(variables);
bv.setModelId(loanBuckleApply.getProcDefId());
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo
List<BuckleGetNodeVo> voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), BuckleGetNodeVo.class)).collect(Collectors.toList());
return rb.success().setData(voList);
}
public ResultBean delegate(BuckleDelegateQuery query) {
ResultBean rb = ResultBean.fireFail();
FlowDelegateQuery delegateQuery = new FlowDelegateQuery();
BeanUtil.copyProperties(query, delegateQuery);
flowFeign.delegate(delegateQuery);
return rb.success();
}
public ResultBean<AppBuckleDetailsVo> appDetail(String sid) {
ResultBean<AppBuckleDetailsVo> rb = ResultBean.fireFail();
AppBuckleDetailsVo vo = new AppBuckleDetailsVo();
LoanBuckleApply loanBuckleApply = fetchBySid(sid);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
if (null != loanBuckleApply) {
vo.setSid(sid);
String dept = "";
String applyName = "";
if (StringUtils.isNotBlank(loanBuckleApply.getRemarks())) {
vo.setRemarks(loanBuckleApply.getRemarks());
}
if (StringUtils.isNotBlank(loanBuckleApply.getProcInstId())) {
vo.setProcInsId(loanBuckleApply.getProcInstId());
}
if (StringUtils.isNotBlank(loanBuckleApply.getTaskId())) {
vo.setTaskId(loanBuckleApply.getTaskId());
}
if (null != loanBuckleApply.getApplyDate()) {
vo.setTime(sdf.format(loanBuckleApply.getApplyDate()));
}
if (StringUtils.isNotBlank(loanBuckleApply.getDept())) {
dept = loanBuckleApply.getDept();
}
if (StringUtils.isNotBlank(loanBuckleApply.getApplyName())) {
applyName = loanBuckleApply.getApplyName();
}
vo.setPublishInfo(dept + "-" + applyName);
List<LoanFile> fileList = loanFileService.selectByLinkSid(sid, LoanFileEnum.BUCKLE_APPLY.getAttachType());
fileList.removeAll(Collections.singleton(null));
if (!fileList.isEmpty()) {
List<String> files = fileList.stream().map(c -> fileUploadComponent.getUrlPrefix() + c.getFilePath()).
collect(Collectors.toList());
vo.setFiles(files);
}
List<LoanBuckleApplyRecord> applyRecords = loanBuckleApplyRecordService.selByMainSid(sid);
List<AppRecordVo> records = new ArrayList<>();
if (!applyRecords.isEmpty()) {
for (LoanBuckleApplyRecord applyRecord : applyRecords) {
String historySid = applyRecord.getRepaymentHistorySid();
LoanRepaymentHistoryRecordVo data = loanRepaymentHistoryService.buckleInfo(historySid).getData();
if (null != data) {
AppRecordVo appRecordVo = new AppRecordVo();
if (StringUtils.isNotBlank(data.getLoanContractNo())) {
appRecordVo.setContractId(data.getLoanContractNo());
}
if (StringUtils.isNotBlank(data.getPeriod())) {
appRecordVo.setInstalments("期数:" + data.getPeriod());
}
if (StringUtils.isNotBlank(data.getVinNo())) {
appRecordVo.setVin("车架号:" + data.getVinNo());
}
if (StringUtils.isNotBlank(data.getReturnWay())) {
appRecordVo.setType(data.getReturnWay());
}
if (StringUtils.isNotBlank(data.getBankName())) {
appRecordVo.setZf(data.getBankName());
}
if (StringUtils.isNotBlank(data.getBankContractNo())) {
appRecordVo.setZfNo(data.getBankContractNo());
}
if (StringUtils.isNotBlank(data.getCustomer())) {
appRecordVo.setCusName(data.getCustomer());
}
if (StringUtils.isNotBlank(data.getBorrowerName())) {
appRecordVo.setLoanName(data.getBorrowerName());
}
if (StringUtils.isNotBlank(data.getDueDate())) {
appRecordVo.setRepaymentDate(data.getDueDate());
}
String yinghuan = "";
String weihuan = "";
String shihuan = "";
String shihuandate = "";
if (StringUtils.isNotBlank(data.getDueMoney())) {
yinghuan = data.getDueMoney();
}
if (StringUtils.isNotBlank(data.getOutstandingMoney())) {
weihuan = data.getOutstandingMoney();
}
if (StringUtils.isNotBlank(data.getActualDate())) {
shihuandate = data.getActualDate();
}
if (StringUtils.isNotBlank(data.getActualMoney())) {
shihuan = data.getActualMoney();
}
appRecordVo.setInfo1("本期应还:" + yinghuan + ",本期未还:" + weihuan);
appRecordVo.setInfo2("实还日期:" + shihuandate + ",实还金额:" + shihuan);
records.add(appRecordVo);
}
}
}
vo.setRecords(records);
}
return rb.success().setData(vo);
}
public ResultBean deleteBySids(String[] sids) {
ResultBean rb = ResultBean.fireFail();
for (String sid : sids) {
LoanBuckleApply loanBuckleApply = fetchBySid(sid);
if (null != loanBuckleApply) {
if (!loanBuckleApply.getNodeState().equals("待提交")) {
return rb.setMsg("删除的数据中包含已经提交审批的数据,删除失败");
}
}
loanBuckleApply.setIsDelete(1);
int i = baseMapper.updateById(loanBuckleApply);
if (i == 0) {
return rb.setMsg("删除失败");
}
List<LoanBuckleApplyRecord> applyRecords = loanBuckleApplyRecordService.selByMainSid(sid);
if (!applyRecords.isEmpty()) {
for (LoanBuckleApplyRecord applyRecord : applyRecords) {
LoanRepaymentHistory repaymentHistory = loanRepaymentHistoryService.fetchBySid(applyRecord.getRepaymentHistorySid());
if (null != repaymentHistory) {
repaymentHistory.setBuckle("未申请");
repaymentHistory.setBuckleKey("001");
loanRepaymentHistoryService.updateById(repaymentHistory);
}
}
}
}
return ResultBean.fireSuccess().setMsg("删除成功");
}
}

6
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapplyrecord/LoanBuckleApplyRecordMapper.java

@ -4,9 +4,15 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.LoanBuckleApply;
import com.yxt.anrui.riskcenter.api.loanbuckleapplyrecord.LoanBuckleApplyRecord;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface LoanBuckleApplyRecordMapper extends BaseMapper<LoanBuckleApplyRecord> {
int deleteByMainSid(@Param("mainSid") String mainSid);
List<LoanBuckleApplyRecord> selByMainSid(String sid);
}

11
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapplyrecord/LoanBuckleApplyRecordMapper.xml

@ -2,4 +2,15 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yxt.anrui.riskcenter.biz.loanbuckleapplyrecord.LoanBuckleApplyRecordMapper">
<delete id="deleteByMainSid">
DELETE
FROM loan_buckle_apply_record
WHERE mainSid = #{mainSid}
</delete>
<select id="selByMainSid"
resultType="com.yxt.anrui.riskcenter.api.loanbuckleapplyrecord.LoanBuckleApplyRecord">
select *
FROM loan_buckle_apply_record
WHERE mainSid = #{mainSid}
</select>
</mapper>

9
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapplyrecord/LoanBuckleApplyRecordService.java

@ -5,6 +5,8 @@ import com.yxt.anrui.riskcenter.api.loanbuckleapplyrecord.LoanBuckleApplyRecord;
import com.yxt.common.base.service.MybatisBaseService;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @description:
* @author: fzz
@ -13,5 +15,12 @@ import org.springframework.stereotype.Service;
@Service
public class LoanBuckleApplyRecordService extends MybatisBaseService<LoanBuckleApplyRecordMapper, LoanBuckleApplyRecord> {
public int deleteByMainSid(String mainSid) {
return baseMapper.deleteByMainSid(mainSid);
}
public List<LoanBuckleApplyRecord> selByMainSid(String sid) {
return baseMapper.selByMainSid(sid);
}
}

16
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loancapitalcreditresult/LoanCapitalCreditResultService.java

@ -193,11 +193,11 @@ public class LoanCapitalCreditResultService extends MybatisBaseService<LoanCapit
IPage<LoanCapitalCreditResultVo> pagging = baseMapper.selectPageVo(page, qw);
for (LoanCapitalCreditResultVo record : pagging.getRecords()) {
String linkSid = record.getLinkSid();
if (StringUtils.isNotBlank(linkSid)){
if (StringUtils.isNotBlank(linkSid)) {
String[] vehSids = linkSid.split(",");
for (String vehSid : vehSids) {
List<BaseTrailer> baseTrailers = baseTrailerFeign.getByVehSid(vehSid).getData();
if (baseTrailers != null && baseTrailers.size() > 0){
if (baseTrailers != null && baseTrailers.size() > 0) {
record.setIsHavTrailer(true);
}
}
@ -240,6 +240,13 @@ public class LoanCapitalCreditResultService extends MybatisBaseService<LoanCapit
borrowerSid = loancontractDetailsVo.getBorrowerSid();
loanContractPush.setBorrowSid(borrowerSid);
}
String isKP = "";
if (StringUtils.isNotBlank(dto.getIsCompInvoic())) {
isKP = dto.getIsCompInvoic();
} else {
isKP = "0";
}
loanOtherReceivablePush.setIsCompInvoic(isKP);
//推送客户融资放款的应收未收
ResultBean resultBean = busSalesOrderLoancontractFeign.pushLoanOrder(loanContractPush);
//资方信审终审通过后推送财务的融资放款及金融方案中各项费用其他应收单
@ -291,7 +298,6 @@ public class LoanCapitalCreditResultService extends MybatisBaseService<LoanCapit
updateBorrow(loanCapitalCreditResult.getLoanContractSid());
}
return rb.success();
}
@ -301,8 +307,8 @@ public class LoanCapitalCreditResultService extends MybatisBaseService<LoanCapit
int count = baseMapper.selectCoun(loanConcatSid);
baseMapper.setState(loanConcatSid);
int count2 = baseMapper.selectBorr(loancontractDetailsVo.getBorrowerSid());
int count3 = count2-count;
baseMapper.setState2(count3,loancontractDetailsVo.getBorrowerSid());
int count3 = count2 - count;
baseMapper.setState2(count3, loancontractDetailsVo.getBorrowerSid());
}
public void insertByDto(LoanCapitalCreditResultDto dto) {

30
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiff/LoanDiffMapper.java

@ -0,0 +1,30 @@
package com.yxt.anrui.riskcenter.biz.loandiff;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrder;
import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicle;
import com.yxt.anrui.riskcenter.api.loandiff.LoanDiff;
import com.yxt.anrui.riskcenter.api.loandiff.LoanDiffVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.Map;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/13
**/
@Mapper
public interface LoanDiffMapper extends BaseMapper<LoanDiff> {
int updateFlowFiled(Map<String, Object> map);
IPage<LoanDiffVo> listPageVo(IPage<LoanDiff> page, @Param(Constants.WRAPPER)QueryWrapper<LoanDiff> qw);
BusSalesOrderVehicle selectByBusVinSid(String busVinSid);
BusSalesOrder selectByOrderSid(String salesOrderSid);
}

47
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiff/LoanDiffMapper.xml

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yxt.anrui.riskcenter.biz.loandiff.LoanDiffMapper">
<update id="updateFlowFiled">
UPDATE loan_diff
SET nodeState=#{nodeState}
<if test="taskDefKey != null and taskDefKey != ''">
, nodeId=#{taskDefKey}
</if>
<if test="procDefId != null and procDefId != ''">
, procDefId=#{procDefId}
</if>
<if test="procInsId != null and procInsId != ''">
, procInstId=#{procInsId}
</if>
<if test="taskId != null and taskId != ''">
, taskId=#{taskId}
</if>
WHERE sid = #{sid}
</update>
<select id="listPageVo" resultType="com.yxt.anrui.riskcenter.api.loandiff.LoanDiffVo">
select ld.sid,
ld.createByName,
ld.useOrgName,
ld.createDept,
DATE_FORMAT(ld.createTime, '%Y-%m-%d') as createTime,
ld.billNo,
ld.remarks,
if(length(ld.nodeState) > 0, nodeState, '待提交') as nodeState,
procDefId,
procInstId
from loan_diff ld
<where>
${ew.sqlSegment}
</where>
order by ld.id desc
</select>
<select id="selectByBusVinSid" resultType="com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicle">
select * from anrui_buscenter.bus_sales_order_vehicle where sid = #{busVinSid}
</select>
<select id="selectByOrderSid" resultType="com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrder">
select * from anrui_buscenter.bus_sales_order where sid = #{salesOrderSid}
</select>
</mapper>

98
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiff/LoanDiffRest.java

@ -0,0 +1,98 @@
package com.yxt.anrui.riskcenter.biz.loandiff;
import cn.hutool.core.bean.BeanUtil;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.anrui.riskcenter.api.loandiff.*;
import com.yxt.anrui.riskcenter.api.loandiff.flowable.*;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/13
**/
@RestController
@RequestMapping("v1/LoanDiff")
public class LoanDiffRest implements LoanDiffFeign {
@Autowired
private LoanDiffService loanDiffService;
@Override
public ResultBean save(LoanDiffsDto dto) {
return loanDiffService.saveDiff(dto);
}
@Override
public ResultBean<PagerVo<LoanDiffVo>> listPage(PagerQuery<LoanDiffQuery> pq) {
ResultBean<PagerVo<LoanDiffVo>> rb = ResultBean.fireFail();
PagerVo<LoanDiffVo> pv = loanDiffService.listPageVo(pq);
return rb.success().setData(pv);
}
@Override
public ResultBean update(LoanDiffDto dto) {
return loanDiffService.updateDiff(dto);
}
@Override
public ResultBean<LoanDiffInitDetails> details(String sid) {
return loanDiffService.details(sid);
}
@Override
public ResultBean submitDiffApply(SubmitDiffDto dto) {
return loanDiffService.submitDiffApply(dto);
}
@Override
public ResultBean complete(DiffCompleteDto query) {
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
bv.setModelId("");
return loanDiffService.complete(bv);
}
@Override
public ResultBean<List<DiffApplyNodeVo>> getPreviousNodesForReject(DiffApplyNodeQuery query) {
return loanDiffService.getPreviousNodesForReject(query);
}
@Override
public ResultBean<List<DiffApplyNodeVo>> getNextNodesForSubmit(DiffApplyNodeQuery query) {
return loanDiffService.getNextNodesForSubmit(query);
}
@Override
public ResultBean taskReject(DiffApplyTaskQuery query) {
return loanDiffService.taskReject(query);
}
@Override
public ResultBean revokeProcess(DiffApplyTaskQuery query) {
return loanDiffService.revokeProcess(query);
}
@Override
public ResultBean breakProcess(DiffApplyTaskQuery query) {
return loanDiffService.breakProcess(query);
}
@Override
public ResultBean<LoanDiffDetailsssApp> appDetails(String sid) {
return loanDiffService.appDetails(sid);
}
@Override
public ResultBean delegate(DelegateQuery query) {
return loanDiffService.delegate(query);
}
}

676
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiff/LoanDiffService.java

@ -0,0 +1,676 @@
package com.yxt.anrui.riskcenter.biz.loandiff;
import cn.hutool.core.bean.BeanUtil;
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;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.yxt.anrui.base.api.basepurchasesystem.BasePurchaseSystemDetailsVo;
import com.yxt.anrui.base.api.basepurchasesystem.BasePurchaseSystemFeign;
import com.yxt.anrui.base.api.busvehicleapply.BusVehicleApplyVo;
import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrder;
import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicle;
import com.yxt.anrui.fin.api.kingdee.FinKingDeeFeign;
import com.yxt.anrui.fin.api.kingdee.bdcustomer.BdCustomer;
import com.yxt.anrui.fin.api.kingdee.capitalcreditresult.CapitalCreditResult;
import com.yxt.anrui.fin.api.kingdee.capitalcreditresult.CwSystemYT;
import com.yxt.anrui.flowable.api.flow.FlowableFeign;
import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo;
import com.yxt.anrui.flowable.api.flow2.FlowDelegateQuery;
import com.yxt.anrui.flowable.api.flow2.FlowFeign;
import com.yxt.anrui.flowable.api.flowtask.FlowTaskFeign;
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.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo;
import com.yxt.anrui.portal.api.sysuser.PrivilegeQuery;
import com.yxt.anrui.portal.api.sysuser.SysUserFeign;
import com.yxt.anrui.riskcenter.api.loandiff.*;
import com.yxt.anrui.riskcenter.api.loandiff.flowable.*;
import com.yxt.anrui.riskcenter.api.loandiffdetails.*;
import com.yxt.anrui.riskcenter.api.loansolutions.PushVo;
import com.yxt.anrui.riskcenter.api.loansolutions.app.SolutionsDetailsVo;
import com.yxt.anrui.riskcenter.api.loantemplate.LoanTemplate;
import com.yxt.anrui.riskcenter.api.loantemplate.LoanTemplateQuery;
import com.yxt.anrui.riskcenter.api.loantemplate.LoanTemplateVo;
import com.yxt.anrui.riskcenter.api.loantemplate.flowable.SubmitTemplateDto;
import com.yxt.anrui.riskcenter.api.loantemplate.flowable.TemplateApplyNodeVo;
import com.yxt.anrui.riskcenter.biz.loandiffdetails.LoanDiffDetailsService;
import com.yxt.anrui.riskcenter.biz.loantemplate.LoanTemplateMapper;
import com.yxt.common.base.config.component.FileUploadComponent;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.base.utils.StringUtils;
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 org.apache.tomcat.util.threads.ThreadPoolExecutor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.*;
import java.util.concurrent.*;
import java.util.stream.Collectors;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/13
**/
@Service
public class LoanDiffService extends MybatisBaseService<LoanDiffMapper, LoanDiff> {
@Autowired
private FlowableFeign flowableFeign;
@Autowired
private FlowFeign flowFeign;
@Autowired
private FlowTaskFeign flowTaskFeign;
@Autowired
private MessageFeign messageFeign;
@Autowired
private LoanDiffDetailsService loanDiffDetailsService;
@Autowired
private FileUploadComponent fileUploadComponent;
@Autowired
private SysUserFeign sysUserFeign;
@Autowired
private FinKingDeeFeign finKingDeeFeign;
@Autowired
private BasePurchaseSystemFeign basePurchaseSystemFeign;
@Autowired
private SysOrganizationFeign sysOrganizationFeign;
/**
* 判断提交的流程是否被允许
*
* @param dto
* @return
*/
private synchronized int submitBusinessData(SubmitDiffDto dto, LoanDiff loanDiff) {
int r = 0;
if (StringUtils.isBlank(dto.getSid())) {
r = 1;
} else {
if (loanDiff != null) {
String businessTaskId = loanDiff.getTaskId();
if (StringUtils.isBlank(businessTaskId) && StringUtils.isBlank(dto.getTaskId())) {
//新提交
r = 1;
} else if (StringUtils.isNotBlank(businessTaskId) && businessTaskId.equals(dto.getTaskId())) {
//二次提交//只有数据一致的时候才能进行下一步
r = 2;
}
} else {
r = 3;
}
}
return r;
}
public ResultBean submitDiffApply(SubmitDiffDto dto) {
ResultBean rb = ResultBean.fireFail();
LoanDiff loanDiff = fetchBySid(dto.getSid());
int r = submitBusinessData(dto, loanDiff);
if (r == 3) {
return rb.setMsg("该申请不存在");
}
if (r == 0) {
return rb.setMsg("操作失败!提交的数据不一致");
}
ResultBean<String> resultBean = updateDiff(dto);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
String businessSid = dto.getSid();
loanDiff = fetchBySid(businessSid);
//创建BusinessVariables实体对象
BusinessVariables bv = new BusinessVariables();
//流程中的参数赋值、若有网关,则赋值网关中判断的字段。
Map<String, Object> variables = new HashMap<>();
Map<String, Object> appMap = new HashMap<>();
appMap.put("sid", businessSid);
variables.put("app", appMap);
//用户的部门全路径sid
bv.setOrgSidPath(loanDiff.getOrgSidPath());
bv.setBusinessSid(businessSid);
bv.setUserSid(loanDiff.getCreateBySid());
bv.setFormVariables(variables);
if (r == 1) {
//ToDo:流程定义id
bv.setModelId(ProcDefEnum.LOANDIFFAPPLY.getProDefId());
ResultBean<UpdateFlowFieldVo> voResultBean = flowFeign.startProcess(bv);
if (!voResultBean.getSuccess()) {
return rb.setMsg(voResultBean.getMsg());
}
UpdateFlowFieldVo ufVo = voResultBean.getData();
updateFlowFiled(BeanUtil.beanToMap(ufVo));
loanDiff = fetchBySid(businessSid);
//==================================添加线程
try {
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("demo-pool-%d").build();
ExecutorService pool = new ThreadPoolExecutor(2, 100,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());
LoanDiff finalLoanDiff = loanDiff;
Future future1 = pool.submit(() -> {
//极光推送
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(businessSid);
messageFlowableQuery.setModuleName("放款差额确认申请");
messageFlowableQuery.setMsgContent(finalLoanDiff.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
messageFlowableQuery.setMsgTitle("放款差额确认");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
});
} catch (Exception e) {
e.printStackTrace();
}
//==================================添加线程
return voResultBean;
}
if (r == 2) {
// ToDo:驳回到发起人后再次提交
if (StringUtils.isBlank(dto.getInstanceId())) {
return rb.setMsg("参数错误:instanceId");
}
bv.setTaskId(loanDiff.getTaskId());
bv.setTaskDefKey(loanDiff.getNodeId());
bv.setComment("重新提交");
bv.setInstanceId(dto.getInstanceId());
return complete(bv);
}
return rb;
}
public ResultBean complete(BusinessVariables bv) {
ResultBean rb = ResultBean.fireFail();
String businessSid = bv.getBusinessSid();
LoanDiff loanDiff = fetchBySid(businessSid);
Map<String, Object> variables = new HashMap<>();
Map<String, Object> appMap = new HashMap<>();
appMap.put("sid", businessSid);
variables.put("app", appMap);
bv.setFormVariables(variables);
bv.setOrgSidPath(loanDiff.getOrgSidPath());
bv.setModelId(loanDiff.getProcDefId());
if (bv.getTaskId().equals(loanDiff.getTaskId())) {
ResultBean<UpdateFlowFieldVo> resultBean = flowFeign.handleProsess(bv);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
UpdateFlowFieldVo ufVo = resultBean.getData();
updateFlowFiled(BeanUtil.beanToMap(resultBean.getData()));
if ("Event_end".equals(resultBean.getData().getTaskDefKey())) {
//推送财务其他应收单
pushFinOther(businessSid);
} else {
//极光推送
loanDiff = fetchBySid(businessSid);
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
messageFlowVo.setProcDefId(loanDiff.getProcDefId());
messageFlowVo.setProcInsId(loanDiff.getProcInstId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(businessSid);
messageFlowableQuery.setModuleName("放款差额确认申请");
messageFlowableQuery.setMsgContent(loanDiff.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
messageFlowableQuery.setMsgTitle("放款差额确认");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
}
return rb.success().setData(resultBean.getData());
} else {
return rb.setMsg("操作失败!提交的数据不一致");
}
}
public void pushFinOther(String sid) {
List<LoanDiffDetails> list = loanDiffDetailsService.selectDetailsByMainSid(sid);
list.removeAll(Collections.singleton(null));
if (!list.isEmpty()) {
for (int i = 0; i < list.size(); i++) {
CapitalCreditResult creditResult = new CapitalCreditResult();
LoanDiffDetails loanDiffDetails = list.get(i);
String busVinSid = loanDiffDetails.getBusVinSid();
BusSalesOrderVehicle busSalesOrderVehicle = baseMapper.selectByBusVinSid(busVinSid);
BusSalesOrder busSalesOrder = baseMapper.selectByOrderSid(busSalesOrderVehicle.getSalesOrderSid());
String customerNumber = "";
//判断财务系统是否有客户
Boolean aBoolean = finKingDeeFeign.customerExistState(busSalesOrderVehicle.getTemporaryNo()).getData();
String linkNo = "";
if (!aBoolean) {
BdCustomer bdCustomer = new BdCustomer();
bdCustomer.setFNumber(busSalesOrderVehicle.getTemporaryNo());
bdCustomer.setFShortName(busSalesOrder.getContractNo());
BasePurchaseSystemDetailsVo data = basePurchaseSystemFeign.fetchDetailsByDeptSid(busSalesOrder.getPurchaseSystemSid()).getData();
bdCustomer.setTOrgIds(data.getOrgCode());
if (StringUtils.isNotBlank(busSalesOrderVehicle.getLinkNo())) {
String vinNo = busSalesOrderVehicle.getLinkNo();
if (vinNo.length() > 8) {
linkNo = vinNo.substring(vinNo.length() - 8);
} else {
linkNo = busSalesOrderVehicle.getLinkNo();
}
bdCustomer.setFName(busSalesOrderVehicle.getBorrowName() + linkNo);
} else {
bdCustomer.setFName(busSalesOrderVehicle.getBorrowName() + busSalesOrderVehicle.getTemporaryNo());
}
ResultBean<String> resultBean = finKingDeeFeign.draftBdCustomer(bdCustomer);
if (resultBean.getSuccess()) {
customerNumber = bdCustomer.getFNumber();
}
} else {
customerNumber = busSalesOrderVehicle.getTemporaryNo();
}
creditResult.setCommUnit(customerNumber);
SysOrganizationVo sysOrganizationVo1 = sysOrganizationFeign.fetchBySid(busSalesOrder.getUseOrgSid()).getData();
creditResult.setCollectionOrg(sysOrganizationVo1.getOrgCode());
creditResult.setBussDate(DateUtil.formatDate(new Date()));
List<CapitalCreditResult.CapitalCreditResultDetailDto> collectionDetailDtoListOne = new ArrayList<>();
SysOrganizationVo sysOrganizationVo2 = sysOrganizationFeign.fetchBySid(busSalesOrder.getOrgSid()).getData();
if (loanDiffDetails.getRealityLoan() != null) {//实扣贷款保证金
CapitalCreditResult.CapitalCreditResultDetailDto creditResultDetailDto = new CapitalCreditResult.CapitalCreditResultDetailDto();
creditResultDetailDto.setDearDept(sysOrganizationVo2.getOrgCode());
creditResultDetailDto.setExTaxMoney("-" + loanDiffDetails.getRealityLoanMargin().toString());
creditResultDetailDto.setUseTo(CwSystemYT.BOND_AMOUNTS.getType());
collectionDetailDtoListOne.add(creditResultDetailDto);
}
if (loanDiffDetails.getRealityDiscount() != null) {//实扣主产品厂家贴息
CapitalCreditResult.CapitalCreditResultDetailDto creditResultDetailDto = new CapitalCreditResult.CapitalCreditResultDetailDto();
creditResultDetailDto.setDearDept(sysOrganizationVo2.getOrgCode());
creditResultDetailDto.setExTaxMoney("-" + loanDiffDetails.getRealityDiscount().toString());
creditResultDetailDto.setUseTo(CwSystemYT.SANFANG_TIEXI_DIECHEKUAN.getType());
collectionDetailDtoListOne.add(creditResultDetailDto);
}
if (loanDiffDetails.getRealityOtherDiscount() != null) {//实扣其他融厂家贴息
CapitalCreditResult.CapitalCreditResultDetailDto creditResultDetailDto = new CapitalCreditResult.CapitalCreditResultDetailDto();
creditResultDetailDto.setDearDept(sysOrganizationVo2.getOrgCode());
creditResultDetailDto.setExTaxMoney("-" + loanDiffDetails.getRealityOtherDiscount().toString());
creditResultDetailDto.setUseTo(CwSystemYT.SANFANG_TIEXI_DIECHEKUAN.getType());
collectionDetailDtoListOne.add(creditResultDetailDto);
}
if (loanDiffDetails.getReceivedPremium() != null) {//已收意外险
CapitalCreditResult.CapitalCreditResultDetailDto creditResultDetailDto = new CapitalCreditResult.CapitalCreditResultDetailDto();
creditResultDetailDto.setDearDept(sysOrganizationVo2.getOrgCode());
creditResultDetailDto.setExTaxMoney("-" + loanDiffDetails.getReceivedPremium().toString());
creditResultDetailDto.setUseTo(CwSystemYT.PROXY_ACCIDENT_PREMIUM.getType());
collectionDetailDtoListOne.add(creditResultDetailDto);
}
if (loanDiffDetails.getDiffPremium() != null) {//意外险差额
CapitalCreditResult.CapitalCreditResultDetailDto creditResultDetailDto = new CapitalCreditResult.CapitalCreditResultDetailDto();
creditResultDetailDto.setDearDept(sysOrganizationVo2.getOrgCode());
creditResultDetailDto.setExTaxMoney(loanDiffDetails.getDiffPremium().toString());
creditResultDetailDto.setUseTo(CwSystemYT.PROXY_ACCIDENT_PREMIUM.getType());
collectionDetailDtoListOne.add(creditResultDetailDto);
}
creditResult.setResultDetails(collectionDetailDtoListOne);
finKingDeeFeign.pushOtherReceivableBill(creditResult);
}
}
}
public ResultBean<List<DiffApplyNodeVo>> getPreviousNodesForReject(DiffApplyNodeQuery query) {
ResultBean<List<DiffApplyNodeVo>> rb = ResultBean.fireFail();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
LoanDiff loanDiff = fetchBySid(query.getBusinessSid());
bv.setModelId(loanDiff.getProcDefId());
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给TemplateApplyNodeVo
List<DiffApplyNodeVo> voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), DiffApplyNodeVo.class)).collect(Collectors.toList());
return rb.success().setData(voList);
}
public ResultBean<List<DiffApplyNodeVo>> getNextNodesForSubmit(DiffApplyNodeQuery query) {
ResultBean<List<DiffApplyNodeVo>> rb = ResultBean.fireFail();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
LoanDiff loanDiff = fetchBySid(query.getBusinessSid());
bv.setModelId(loanDiff.getProcDefId());
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给TemplateApplyNodeVo
List<DiffApplyNodeVo> voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), DiffApplyNodeVo.class)).collect(Collectors.toList());
return rb.success().setData(voList);
}
public ResultBean taskReject(DiffApplyTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
String businessSid = query.getBusinessSid();
LoanDiff loanDiff = fetchBySid(businessSid);
if (loanDiff == null) {
return rb.setMsg("该申请不存在");
}
String businessTaskId = loanDiff.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if (businessTaskId.equals(query.getTaskId())) {
if (StringUtils.isBlank(query.getComment())) {
return rb.setMsg("请填写意见");
}
if (StringUtils.isBlank(query.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
Map<String, Object> variables = new HashMap<>();
Map<String, Object> appMap = new HashMap<>();
appMap.put("sid", businessSid);
variables.put("app", appMap);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.taskReject(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
UpdateFlowFieldVo ufVo = resultBean.getData();
Map<String, Object> map = BeanUtil.beanToMap(ufVo);
//更新业务中的流程相关的参数
updateFlowFiled(map);
//极光推送
loanDiff = fetchBySid(businessSid);
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
String procId = loanDiff.getProcInstId();
messageFlowVo.setProcInsId(procId);
messageFlowVo.setProcDefId(loanDiff.getProcDefId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(businessSid);
messageFlowableQuery.setModuleName("放款差额确认申请");
ResultBean<List<LatestTaskVo>> listResultBean = flowTaskFeign.getLatestTasks(procId);
String nextName = listResultBean.getData().get(0).getName_();
String nextNodeUserSids = listResultBean.getData().get(0).getASSIGNEE_();
if ("发起申请".equals(nextName)) {
messageFlowableQuery.setMsgContent("您提交的" + messageFlowableQuery.getModuleName() + "已被驳回,请重新提交");
} else {
messageFlowableQuery.setMsgContent(loanDiff.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
}
messageFlowableQuery.setMsgTitle("放款差额确认");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
return rb.success();
}
}
return rb.setMsg("操作失败!提交的数据不一致!");
}
public ResultBean revokeProcess(DiffApplyTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
if (StringUtils.isBlank(query.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
LoanDiff loanDiff = fetchBySid(query.getBusinessSid());
String businessTaskId = loanDiff.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if (businessTaskId.equals(query.getTaskId())) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.revokeProcess(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
updateFlowFiled(BeanUtil.beanToMap(resultBean.getData()));
return rb.success().setData(resultBean.getData());
}
}
return rb.setMsg("操作失败,提交的数据不一致!");
}
public ResultBean breakProcess(DiffApplyTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
if (StringUtils.isBlank(query.getInstanceId())) {
return rb.setMsg("参数错误:instanceId");
}
if (StringUtils.isBlank(query.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
if (StringUtils.isBlank(query.getComment())) {
return rb.setMsg("请填写意见");
}
LoanDiff loanDiff = fetchBySid(query.getBusinessSid());
String businessTaskId = loanDiff.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if (query.getUserSid().equals(loanDiff.getCreateBySid())) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.breakProcess(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
Map<String, Object> map = BeanUtil.beanToMap(resultBean.getData());
updateFlowFiled(map);
return rb.success().setData(resultBean.getData());
} else {
if (businessTaskId.equals(query.getTaskId())) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.breakProcess(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
Map<String, Object> map = BeanUtil.beanToMap(resultBean.getData());
updateFlowFiled(map);
return rb.success().setData(resultBean.getData());
}
}
}
return rb.setMsg("操作失败!提交的数据不一致!");
}
/**
* 更新流程的状态
*
* @param map
* @return
*/
private int updateFlowFiled(Map<String, Object> map) {
return baseMapper.updateFlowFiled(map);
}
public PagerVo<LoanDiffVo> listPageVo(PagerQuery<LoanDiffQuery> pq) {
LoanDiffQuery query = pq.getParams();
QueryWrapper<LoanDiff> qw = new QueryWrapper<>();
if (query != null) {
//分公司
if (StringUtils.isNotBlank(query.getUseOrgName())) {
qw.like("ld.useOrgName", query.getUseOrgName());
}
//申请部门
if (StringUtils.isNotBlank(query.getCreateDept())) {
qw.like("ld.createDept", query.getCreateDept());
}
if (StringUtils.isNotBlank(query.getCreateByName())) {
qw.like("ld.createByName", query.getCreateByName());
}
//========================================数据授权开始
if (StringUtils.isNotBlank(query.getMenuUrl())) {
//=======================
PrivilegeQuery privilegeQuery = new PrivilegeQuery();
privilegeQuery.setOrgPath(query.getOrgPath());
privilegeQuery.setMenuUrl(query.getMenuUrl());
privilegeQuery.setUserSid(query.getUserSid());
ResultBean<String> defaultIdReltBean = sysUserFeign.selectPrivilegeLevel(privilegeQuery);
if (org.apache.commons.lang3.StringUtils.isNotBlank(defaultIdReltBean.getData())) {
//数据权限ID(1集团、2事业部、3分公司、4部门、5个人)
String orgSidPath = query.getOrgPath();
orgSidPath = orgSidPath + "/";
int i1 = orgSidPath.indexOf("/");
int i2 = orgSidPath.indexOf("/", i1 + 1);
int i3 = orgSidPath.indexOf("/", i2 + 1);
int i4 = orgSidPath.indexOf("/", i3 + 1);
String orgLevelKey = defaultIdReltBean.getData();
if ("1".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i1);
qw.like("ld.orgSidPath", orgSidPath);
} else if ("2".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i2);
qw.like("ld.orgSidPath", orgSidPath);
} else if ("3".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i3);
qw.like("ld.orgSidPath", orgSidPath);
} else if ("4".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i4);
qw.like("ld.orgSidPath", orgSidPath);
} else if ("5".equals(orgLevelKey)) {
qw.eq("ld.createBySid", query.getUserSid());
} else {
PagerVo<LoanDiffVo> p = new PagerVo<>();
return p;
}
} else {
PagerVo<LoanDiffVo> p = new PagerVo<>();
return p;
}
} else {
PagerVo<LoanDiffVo> p = new PagerVo<>();
return p;
}
//申请日期开始时间
String createTimeStart = query.getCreateTimeStart();
//申请日期结束时间
String createTimeEnd = query.getCreateTimeEnd();
qw.apply(StringUtils.isNotBlank(createTimeStart), "date_format (ld.createTime,'%Y-%m-%d') >= date_format('" + createTimeStart + "','%Y-%m-%d')").
apply(StringUtils.isNotBlank(createTimeEnd), "date_format (ld.createTime,'%Y-%m-%d') <= date_format('" + createTimeEnd + "','%Y-%m-%d')"
);
}
IPage<LoanDiff> page = PagerUtil.queryToPage(pq);
IPage<LoanDiffVo> pagging = baseMapper.listPageVo(page, qw);
PagerVo<LoanDiffVo> p = PagerUtil.pageToVo(pagging, null);
return p;
}
public ResultBean saveDiff(LoanDiffsDto dto) {
ResultBean rb = ResultBean.fireFail();
LoanDiff loanDiff = new LoanDiff();
BeanUtil.copyProperties(dto, loanDiff);
List<LoanDiffDetailssDto> loanDiffDetailssDtos = dto.getLoanDiffDetailssDtos();
loanDiffDetailssDtos.removeAll(Collections.singleton(null));
if (!loanDiffDetailssDtos.isEmpty()) {
for (int i = 0; i < loanDiffDetailssDtos.size(); i++) {
LoanDiffDetailssDto loanDiffDetailssDto = loanDiffDetailssDtos.get(i);
LoanDiffDetails loanDiffDetails = new LoanDiffDetails();
BeanUtil.copyProperties(loanDiffDetailssDto, loanDiffDetails);
loanDiffDetails.setMainSid(loanDiff.getSid());
loanDiffDetailsService.insert(loanDiffDetails);
}
}
baseMapper.insert(loanDiff);
return rb.success();
}
public ResultBean updateDiff(LoanDiffDto dto) {
ResultBean rb = ResultBean.fireFail();
String sid = dto.getSid();
LoanDiff loanDiff = fetchBySid(sid);
if (loanDiff == null) {
return rb.setMsg("该申请不存在");
}
BeanUtil.copyProperties(dto, loanDiff, "sid");
List<LoanDiffDetailsDto> loanDiffDetailsList = dto.getLoanDiffDetails();
loanDiffDetailsList.removeAll(Collections.singleton(null));
if (!loanDiffDetailsList.isEmpty()) {
for (int i = 0; i < loanDiffDetailsList.size(); i++) {
LoanDiffDetailsDto loanDiffDetailsDto = loanDiffDetailsList.get(i);
LoanDiffDetails loanDiffDetails1 = loanDiffDetailsService.fetchBySid(loanDiffDetailsDto.getSid());
BeanUtil.copyProperties(loanDiffDetailsDto, loanDiffDetails1, "sid");
loanDiffDetailsService.updateById(loanDiffDetails1);
}
}
// List<String> filesList = dto.getFilesList();
List<DiffFile> fileLists = dto.getFilesList();
fileLists.removeAll(Collections.singleton(null));
if (!fileLists.isEmpty()) {
List<String> files = fileLists.stream().map(v -> v.getUrl()).collect(Collectors.toList());
files.removeAll(Collections.singleton(null));
if (!files.isEmpty()) {
String filss = String.join(",", files).replaceAll(fileUploadComponent.getUrlPrefix(), "");
loanDiff.setFiles(filss);
baseMapper.updateById(loanDiff);
}
}
return rb.success();
}
public ResultBean<LoanDiffInitDetails> details(String sid) {
ResultBean<LoanDiffInitDetails> rb = ResultBean.fireFail();
LoanDiffInitDetails details = new LoanDiffInitDetails();
LoanDiff loanDiff = fetchBySid(sid);
if (loanDiff == null) {
return rb.setMsg("该申请不存在");
}
details.setCreateDept(loanDiff.getCreateDept());
details.setCreateByName(loanDiff.getCreateByName());
details.setRemarks(loanDiff.getRemarks());
details.setSid(sid);
details.setCreateDate(DateUtil.format(loanDiff.getCreateTime(), "yyyy-MM-dd"));
details.setInstanceId(loanDiff.getProcInstId());
details.setTaskId(loanDiff.getTaskId());
String files = loanDiff.getFiles();
if (StringUtils.isNotBlank(files)) {
List<String> stringList = Arrays.asList(files.split(",")).stream().map(c -> fileUploadComponent.getUrlPrefix() + c).collect(Collectors.toList());
List<DiffFile> fileList = new ArrayList<>();
for (int i = 0; i < stringList.size(); i++) {
DiffFile diffFile = new DiffFile();
diffFile.setUrl(stringList.get(i));
fileList.add(diffFile);
}
details.setFilesList(fileList);
}
List<LoanDiffDetailssVo> detailssVoList = loanDiffDetailsService.selectByMainSid(sid);
detailssVoList.removeAll(Collections.singleton(null));
if (!detailssVoList.isEmpty()) {
details.setLoanDiffDetails(detailssVoList);
}
return rb.success().setData(details);
}
public ResultBean<LoanDiffDetailsssApp> appDetails(String sid) {
ResultBean<LoanDiffDetailsssApp> rb = ResultBean.fireFail();
LoanDiff loanDiff = fetchBySid(sid);
LoanDiffDetailsssApp loanDiffDetailsssApp = new LoanDiffDetailsssApp();
loanDiffDetailsssApp.setSid(sid);
loanDiffDetailsssApp.setPublishInfo(loanDiff.getCreateDept() + "-" + loanDiff.getCreateByName());
loanDiffDetailsssApp.setRemarks(loanDiff.getRemarks());
loanDiffDetailsssApp.setTime(DateUtil.format(loanDiff.getCreateTime(), "yyyy-MM-dd"));
loanDiffDetailsssApp.setProcInsId(loanDiff.getProcInstId());
loanDiffDetailsssApp.setTaskId(loanDiff.getTaskId());
String files = loanDiff.getFiles();
if (StringUtils.isNotBlank(files)) {
List<String> stringList = Arrays.asList(files.split(",")).stream().map(c -> fileUploadComponent.getUrlPrefix() + c).collect(Collectors.toList());
loanDiffDetailsssApp.setFiles(stringList);
}
List<AppRecords> detailssVoList = loanDiffDetailsService.selectByMainSid2(sid);
detailssVoList.removeAll(Collections.singleton(null));
if (!detailssVoList.isEmpty()) {
loanDiffDetailsssApp.setRecords(detailssVoList);
}
return rb.success().setData(loanDiffDetailsssApp);
}
public ResultBean delegate(DelegateQuery query) {
ResultBean rb = ResultBean.fireFail();
FlowDelegateQuery delegateQuery = new FlowDelegateQuery();
BeanUtil.copyProperties(query, delegateQuery);
flowFeign.delegate(delegateQuery);
return rb.success();
}
}

23
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiffdetails/LoanDiffDetailsMapper.java

@ -0,0 +1,23 @@
package com.yxt.anrui.riskcenter.biz.loandiffdetails;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yxt.anrui.riskcenter.api.loandiffdetails.AppRecords;
import com.yxt.anrui.riskcenter.api.loandiffdetails.LoanDiffDetails;
import com.yxt.anrui.riskcenter.api.loandiffdetails.LoanDiffDetailssVo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/14
**/
@Mapper
public interface LoanDiffDetailsMapper extends BaseMapper<LoanDiffDetails> {
List<LoanDiffDetailssVo> selectByMainSid(String sid);
List<AppRecords> selectByMainSid2(String sid);
List<LoanDiffDetails> selectDetailsByMainSid(String sid);
}

36
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiffdetails/LoanDiffDetailsMapper.xml

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yxt.anrui.riskcenter.biz.loandiffdetails.LoanDiffDetailsMapper">
<select id="selectByMainSid" resultType="com.yxt.anrui.riskcenter.api.loandiffdetails.LoanDiffDetailssVo">
select *
from anrui_riskcenter.loan_diff_details
where mainSid = #{sid}
</select>
<select id="selectByMainSid2" resultType="com.yxt.anrui.riskcenter.api.loandiffdetails.AppRecords">
select vinNo vin,
bankName zf,
borrowName loanName,
makeLoan fk1,
realityLoan fk2,
diffLoan diffFk,
makeDiscount mainTx1,
realityDiscount mainTx2,
diffDiscount diffMainTx,
makeLoanMargin dkbzj1,
realityLoanMargin dkbzj2,
diffLoanMargin diffDkbzj,
makeOtherDiscount otherTx1,
realityOtherDiscount otherTx2,
diffOtherDiscount diffOtherTx,
receivedPremium ywx1,
realityPremium ywx2,
diffPremium diffYwx
from anrui_riskcenter.loan_diff_details
where mainSid = #{sid}
</select>
<select id="selectDetailsByMainSid" resultType="com.yxt.anrui.riskcenter.api.loandiffdetails.LoanDiffDetails">
select * from anrui_riskcenter.loan_diff_details where mainSid = #{sid}
</select>
</mapper>

9
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiffdetails/LoanDiffDetailsRest.java

@ -0,0 +1,9 @@
package com.yxt.anrui.riskcenter.biz.loandiffdetails;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/14
**/
public class LoanDiffDetailsRest {
}

31
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiffdetails/LoanDiffDetailsService.java

@ -0,0 +1,31 @@
package com.yxt.anrui.riskcenter.biz.loandiffdetails;
import com.yxt.anrui.riskcenter.api.loandiff.LoanDiff;
import com.yxt.anrui.riskcenter.api.loandiffdetails.AppRecords;
import com.yxt.anrui.riskcenter.api.loandiffdetails.LoanDiffDetails;
import com.yxt.anrui.riskcenter.api.loandiffdetails.LoanDiffDetailssVo;
import com.yxt.anrui.riskcenter.biz.loandiff.LoanDiffMapper;
import com.yxt.common.base.service.MybatisBaseService;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/14
**/
@Service
public class LoanDiffDetailsService extends MybatisBaseService<LoanDiffDetailsMapper, LoanDiffDetails> {
public List<LoanDiffDetailssVo> selectByMainSid(String sid) {
return baseMapper.selectByMainSid(sid);
}
public List<AppRecords> selectByMainSid2(String sid) {
return baseMapper.selectByMainSid2(sid);
}
public List<LoanDiffDetails> selectDetailsByMainSid(String sid) {
return baseMapper.selectDetailsByMainSid(sid);
}
}

12
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanhomevisitprep/LoanHomevisitPrepService.java

@ -360,10 +360,10 @@ public class LoanHomevisitPrepService extends MybatisBaseService<LoanHomevisitPr
String urlAllVo = "";
List<File> filesList = new ArrayList<>();
//贷款人生成车辆买卖合同
List<File> xcmmContractUrls = commonContractFeign.xcmmContract(printConfirmDto).getData();
/* List<File> xcmmContractUrls = commonContractFeign.xcmmContract(printConfirmDto).getData();
for (File xcmmContractUrl : xcmmContractUrls) {
filesList.add(xcmmContractUrl);
}
}*/
if (conSetUpKey.equals("001")) {//一车一合同
for (BusSalesOrderVehicle busSalesOrderVehicle : busSalesOrderVehicles) {
List<SalesOrderVehicle> salesOrderVehicles = new ArrayList<>();
@ -390,7 +390,7 @@ public class LoanHomevisitPrepService extends MybatisBaseService<LoanHomevisitPr
busSalesOrderLoancontractDto.setBusName("资方终审确认");
String loanContractSid = busSalesOrderLoancontractFeign.save(busSalesOrderLoancontractDto).getData();
busSalesOrderVehicleFeign.updateXDCon(busSalesOrderVehicle.getSid(), loanContractSid);
//生成车辆融资协议
/* //生成车辆融资协议
String clrzxyUrl = generateCLRZXY(printConfirmDto);
//生成还款协议
String hkxyUrl = hkxy(printConfirmDto);
@ -419,7 +419,7 @@ public class LoanHomevisitPrepService extends MybatisBaseService<LoanHomevisitPr
if (StringUtils.isNotBlank(gsgddwdbjy)) {
File file = new File(docPdfComponent.getUploadTemplateUrl() + gsgddwdbjy);
filesList.add(file);
}
}*/
}
} else if (conSetUpKey.equals("002")) {//一人一合同
List<SalesOrderVehicle> salesOrderVehicles = new ArrayList<>();
@ -450,7 +450,7 @@ public class LoanHomevisitPrepService extends MybatisBaseService<LoanHomevisitPr
for (BusSalesOrderVehicle busSalesOrderVehicle : busSalesOrderVehicles) {
busSalesOrderVehicleFeign.updateXDCon(busSalesOrderVehicle.getSid(), loanContractSid);
}
//生成车辆融资协议
/* //生成车辆融资协议
String clrzxyUrl = generateCLRZXY(printConfirmDto);
//生成还款协议
String hkxy = hkxy(printConfirmDto);
@ -479,7 +479,7 @@ public class LoanHomevisitPrepService extends MybatisBaseService<LoanHomevisitPr
if (StringUtils.isNotBlank(gsgddwdbjy)) {
File file = new File(docPdfComponent.getUploadTemplateUrl() + gsgddwdbjy);
filesList.add(file);
}
}*/
}
//合并pdf文件
if (filesList.size() > 0) {

33
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loannoguaranteecreditreview/LoanNoGuaranteeCreditReviewService.java

@ -1,6 +1,8 @@
package com.yxt.anrui.riskcenter.biz.loannoguaranteecreditreview;
import cn.hutool.core.bean.BeanUtil;
import com.yxt.anrui.base.api.basetrailer.BaseTrailer;
import com.yxt.anrui.base.api.basetrailer.BaseTrailerFeign;
import com.yxt.anrui.base.api.basevehiclestate.BaseVehicleStateFeign;
import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrder;
import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrderFeign;
@ -52,6 +54,8 @@ public class LoanNoGuaranteeCreditReviewService extends MybatisBaseService<LoanN
private BusSalesOrderVehicleFeign busSalesOrderVehicleFeign;
@Autowired
private BaseVehicleStateFeign baseVehicleStateFeign;
@Autowired
private BaseTrailerFeign baseTrailerFeign;
public ResultBean<LoanNoGuaranteeCreditReviewDetailsVo> details(String salesOrderSid) {
ResultBean<LoanNoGuaranteeCreditReviewDetailsVo> rb = ResultBean.fireFail();
@ -59,6 +63,7 @@ public class LoanNoGuaranteeCreditReviewService extends MybatisBaseService<LoanN
vo.setSalesOrderSid(salesOrderSid);
LoanNoGuaranteeCreditReview entity = baseMapper.selectOneByBorrowerSid(salesOrderSid);
BusSalesOrderBorrowerDetailsVo borrowerDetailsVo = busSalesOrderBorrowerFeign.fetchDetailsBySid(salesOrderSid).getData();
String orderSid = "";
if (null != borrowerDetailsVo) {
if (StringUtils.isNotBlank(borrowerDetailsVo.getBorrowerName())) {
vo.setBorrowerName(borrowerDetailsVo.getBorrowerName());
@ -68,6 +73,7 @@ public class LoanNoGuaranteeCreditReviewService extends MybatisBaseService<LoanN
if (StringUtils.isNotBlank(busSalesOrder.getStaffName())) {
vo.setSalesman(busSalesOrder.getStaffName());
}
orderSid = busSalesOrder.getSid();
}
}
@ -77,6 +83,19 @@ public class LoanNoGuaranteeCreditReviewService extends MybatisBaseService<LoanN
if (StringUtils.isNotBlank(entity.getSid())) {
sid = entity.getSid();
}
String borrowerSid = entity.getBorrowerSid();
List<BusSalesOrderVehicle> vehicles = busSalesOrderVehicleFeign.selectListByOrderSidAndDkrSid(orderSid, borrowerSid).getData();
if (!vehicles.isEmpty()) {
for (BusSalesOrderVehicle vehicle : vehicles) {
if (StringUtils.isNotBlank(vehicle.getLinkSid())) {
String vehicleLinkSid = vehicle.getLinkSid();
List<BaseTrailer> baseTrailers = baseTrailerFeign.getByVehSid(vehicleLinkSid).getData();
if (baseTrailers != null && baseTrailers.size() > 0) {
vo.setIsHavTrailer(true);
}
}
}
}
//家访考察结果截图
List<LoanFile> fileList = loanFileService.selectByLinkSid(sid, LoanFileEnum.HOME_VISIT_FILES.getAttachType());
fileList.removeAll(Collections.singleton(null));
@ -147,6 +166,13 @@ public class LoanNoGuaranteeCreditReviewService extends MybatisBaseService<LoanN
LoanOtherReceivablePush loanOtherReceivablePush = new LoanOtherReceivablePush();
loanOtherReceivablePush.setBorrowerSid(creditReview.getBorrowerSid());
loanOtherReceivablePush.setSaleOrderSid(borrowerDetailsVo.getSalesOrderSid());
String isKP = "";
if (StringUtils.isNotBlank(creditReview.getIsCompInvoic())) {
isKP = creditReview.getIsCompInvoic();
} else {
isKP = "0";
}
loanOtherReceivablePush.setIsCompInvoic(isKP);
ResultBean pushOtherReceivable = busSalesOrderLoancontractFeign.pushOtherReceivable(loanOtherReceivablePush);
}
//资方信审终审通过后修改车辆业务状态中的资方终审为1.
@ -193,6 +219,13 @@ public class LoanNoGuaranteeCreditReviewService extends MybatisBaseService<LoanN
LoanOtherReceivablePush loanOtherReceivablePush = new LoanOtherReceivablePush();
loanOtherReceivablePush.setBorrowerSid(creditReview.getBorrowerSid());
loanOtherReceivablePush.setSaleOrderSid(borrowerDetailsVo.getSalesOrderSid());
String isKP = "";
if (StringUtils.isNotBlank(creditReview.getIsCompInvoic())) {
isKP = creditReview.getIsCompInvoic();
} else {
isKP = "0";
}
loanOtherReceivablePush.setIsCompInvoic(isKP);
ResultBean pushOtherReceivable = busSalesOrderLoancontractFeign.pushOtherReceivable(loanOtherReceivablePush);
}
//资方信审终审通过后修改车辆业务状态中的资方终审为1.

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

@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistory;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistoryRecordVo;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistoryUpdate;
import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistoryVo;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails;
@ -32,4 +33,6 @@ public interface LoanRepaymentHistoryMapper extends BaseMapper<LoanRepaymentHist
IPage<LoanRepaymentHistoryVo> monthListPage(IPage<LoanRepaymentHistory> page, @Param(Constants.WRAPPER) QueryWrapper<LoanRepaymentHistory> qw);
List<LoanRepaymentHistory> selByBankNoAndActDate(@Param("bankContractNo") String bankContractNo, @Param("realReturnTime") String realReturnTime);
LoanRepaymentHistoryRecordVo buckleInfo(String sid);
}

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

@ -70,4 +70,25 @@
WHERE p.bankContractNo = #{bankContractNo}
AND h.actualDate = #{realReturnTime}
</select>
<select id="buckleInfo"
resultType="com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistoryRecordVo">
SELECT p.loanContractNo as loanContractNo,
p.bankName as bankName,
p.bankContractNo as bankContractNo,
p.borrowerName as borrowerName,
p.customer as customer,
p.period as period,
p.dueDate as dueDate,
p.vinNo as vinNo,
p.dueMoney as dueMoney,
h.outstandingMoney as outstandingMoney,
h.returnWay as returnWay,
h.returnWayKey as returnWayKey,
h.actualMoney as actualMoney,
h.sid as recordSid,
h.actualDate as actualDate
FROM loan_repayment_history AS h
LEFT JOIN loan_repayment_plan_details AS p ON h.planDetailSid = p.sid
WHERE h.sid = #{sid}
</select>
</mapper>

5
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryRest.java

@ -61,6 +61,11 @@ public class LoanRepaymentHistoryRest implements LoanRepaymentHistoryFeign {
return loanRepaymentHistoryService.updateRecordInfo(sid);
}
@Override
public ResultBean<LoanRepaymentHistoryRecordVo> buckleInfo(String sid) {
return loanRepaymentHistoryService.buckleInfo(sid);
}
@Override
public ResultBean deleteHistory(String scheduleSid) {
return loanRepaymentHistoryService.deleteHistory(scheduleSid);

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

@ -611,4 +611,10 @@ public class LoanRepaymentHistoryService extends MybatisBaseService<LoanRepaymen
}
return rb.success();
}
public ResultBean<LoanRepaymentHistoryRecordVo> buckleInfo(String sid) {
ResultBean<LoanRepaymentHistoryRecordVo> rb = ResultBean.fireFail();
LoanRepaymentHistoryRecordVo vo = baseMapper.buckleInfo(sid);
return rb.success().setData(vo);
}
}

15
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantemplate/LoanTemplateService.java

@ -16,6 +16,7 @@ import com.yxt.anrui.buscenter.api.busvehicledatahandover.BusDataListPdfVo;
import com.yxt.anrui.buscenter.api.busvehicledatahandover.BusVehicleDataHandoverPdfVo;
import com.yxt.anrui.flowable.api.flow.FlowableFeign;
import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo;
import com.yxt.anrui.flowable.api.flow2.FlowFeign;
import com.yxt.anrui.flowable.api.flowtask.FlowTaskFeign;
import com.yxt.anrui.flowable.api.flowtask.FlowTaskVo;
import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo;
@ -99,6 +100,8 @@ public class LoanTemplateService extends MybatisBaseService<LoanTemplateMapper,
@Autowired
private FlowableFeign flowableFeign;
@Autowired
private FlowFeign flowFeign;
@Autowired
private MessageFeign messageFeign;
@Autowired
private FlowTaskFeign flowTaskFeign;
@ -301,7 +304,7 @@ public class LoanTemplateService extends MybatisBaseService<LoanTemplateMapper,
if (r == 1) {
//ToDo:流程定义id
bv.setModelId(ProcDefEnum.LOANTEMPLATEAPPLY.getProDefId());
ResultBean<UpdateFlowFieldVo> voResultBean = flowableFeign.startProcess(bv);
ResultBean<UpdateFlowFieldVo> voResultBean = flowFeign.startProcess(bv);
if (!voResultBean.getSuccess()) {
return rb.setMsg(voResultBean.getMsg());
}
@ -399,7 +402,7 @@ public class LoanTemplateService extends MybatisBaseService<LoanTemplateMapper,
bv.setOrgSidPath(loanTemplate.getOrgSidPath());
bv.setModelId(loanTemplate.getProcDefId());
if (bv.getTaskId().equals(loanTemplate.getTaskId())) {
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.handleProsess(bv);
ResultBean<UpdateFlowFieldVo> resultBean = flowFeign.handleProsess(bv);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
@ -911,7 +914,7 @@ public class LoanTemplateService extends MybatisBaseService<LoanTemplateMapper,
*/
public ResultBean<String> templateQuotationCreatePdf(LoanTemplateQuotationQuery query) {
ResultBean<String> rb = ResultBean.fireFail();
// String template = "/template/";
// String template = "/template/";
String s = templateQuotation(query);
String filePath = s.substring(docPdfComponent.getUploadTemplateUrl().length());
return rb.success().setData(filePath);
@ -1009,13 +1012,13 @@ public class LoanTemplateService extends MybatisBaseService<LoanTemplateMapper,
AppLoanTemplateQuery query = pagerQuery.getParams();
QueryWrapper<LoanTemplate> qw = new QueryWrapper<>();
if (query != null) {
if(StringUtils.isNotBlank(query.getOrgPath())){
if (StringUtils.isNotBlank(query.getOrgPath())) {
String useOrgSid = sysStaffOrgFeign.getOrgSidByPath(query.getOrgPath()).getData();
qw.eq("lfp.useOrgSid",useOrgSid);
qw.eq("lfp.useOrgSid", useOrgSid);
}
// qw.eq("lfp.orgSidPath", query.getOrgPath());
qw.eq("lfp.nodeState", "已办结");
qw.eq("lfp.useState",0);
qw.eq("lfp.useState", 0);
}
IPage<LoanTemplate> page = PagerUtil.queryToPage(pagerQuery);
IPage<AppLoanTemplateVo> pagging = baseMapper.getCustomizedList(page, qw, query.getName());

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

Loading…
Cancel
Save