Browse Source

划扣申请模块、资方信审终审通过推送其他应收单增加挂车待退款

master
fanzongzhe 1 year ago
parent
commit
a21f47f048
  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/bussalesorderloancontract/LoanOtherReceivablePush.java
  3. 12
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorderloancontract/BusSalesOrderLoancontractService.java
  4. 5
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/capitalcreditresult/CwSystemYT.java
  5. 1
      anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/utils/ProcDefEnum.java
  6. 2
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleApply.java
  7. 28
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleApplyDto.java
  8. 71
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleApplyFeign.java
  9. 79
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleApplyFeignFallback.java
  10. 33
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleApplyInit.java
  11. 31
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleApplyQuery.java
  12. 36
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleApplyVo.java
  13. 44
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleHistoryRecord.java
  14. 23
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/app/AppBuckleDetailsVo.java
  15. 23
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/app/AppRecordVo.java
  16. 41
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/flow/BuckleCompleteDto.java
  17. 26
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/flow/BuckleDelegateQuery.java
  18. 26
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/flow/BuckleGetNodeQuery.java
  19. 25
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/flow/BuckleGetNodeVo.java
  20. 56
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/flow/BuckleTaskQuery.java
  21. 21
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/flow/SubmitBuckleDto.java
  22. 3
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loannoguaranteecreditreview/LoanNoGuaranteeCreditReview.java
  23. 4
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loannoguaranteecreditreview/LoanNoGuaranteeCreditReviewDetailsVo.java
  24. 2
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loannoguaranteecreditreview/LoanNoGuaranteeCreditReviewDto.java
  25. 4
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/LoanRepaymentHistoryFeign.java
  26. 5
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/LoanRepaymentHistoryFeignFallback.java
  27. 38
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/LoanRepaymentHistoryRecordVo.java
  28. 6
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapply/LoanBuckleApplyMapper.java
  29. 37
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapply/LoanBuckleApplyMapper.xml
  30. 90
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapply/LoanBuckleApplyRest.java
  31. 856
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapply/LoanBuckleApplyService.java
  32. 6
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapplyrecord/LoanBuckleApplyRecordMapper.java
  33. 11
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapplyrecord/LoanBuckleApplyRecordMapper.xml
  34. 9
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapplyrecord/LoanBuckleApplyRecordService.java
  35. 16
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loancapitalcreditresult/LoanCapitalCreditResultService.java
  36. 33
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loannoguaranteecreditreview/LoanNoGuaranteeCreditReviewService.java
  37. 3
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryMapper.java
  38. 21
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryMapper.xml
  39. 5
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryRest.java
  40. 6
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryService.java
  41. 24
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/buckle/BuckleDetailsVo.java
  42. 71
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/buckle/BuckleFeign.java
  43. 52
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/buckle/BuckleFeignFallback.java
  44. 23
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/buckle/RecordVo.java
  45. 25
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/buckle/flow/AppBuckleDelegateQuery.java
  46. 46
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/buckle/flow/AppBuckleTaskQuery.java
  47. 21
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/buckle/flow/BuckleFlowableQuery.java
  48. 35
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/buckle/flow/CompleteBuckleDto.java
  49. 62
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/buckle/BuckleRest.java
  50. 163
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/buckle/BuckleService.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/bussalesorderloancontract/LoanOtherReceivablePush.java

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

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", "个贷保证金");
/**

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

@ -61,6 +61,7 @@ public enum ProcDefEnum {
BUSVALCUSTFILING("价值客户备案申请", "process_n8fwpitk:2:5085004"),
LOANCUSTOMERRECORD("欠款客户备案", "process_x6o0chx9:4:6055004"),
BUSSOLUTIONSCHANGE("金融方案变更", "process_x6edjfoj:2:6055008"),
LOANBUCKLEAPPLLY("划扣申请", "process_50xtaucg:1:6757504"),
/******************************测试流程id*********************************************/

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

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) {

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

24
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/buckle/BuckleDetailsVo.java

@ -0,0 +1,24 @@
package com.yxt.anrui.terminal.api.risk.buckle;
import com.yxt.common.core.vo.Vo;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @author Administrator
* @description
* @date 2023/11/13 15:38
*/
@Data
public class BuckleDetailsVo implements Vo {
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<RecordVo> records = new ArrayList<>();
}

71
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/buckle/BuckleFeign.java

@ -0,0 +1,71 @@
package com.yxt.anrui.terminal.api.risk.buckle;
import com.yxt.anrui.terminal.api.risk.buckle.flow.AppBuckleTaskQuery;
import com.yxt.anrui.terminal.api.risk.buckle.flow.BuckleFlowableQuery;
import com.yxt.anrui.terminal.api.risk.buckle.flow.CompleteBuckleDto;
import com.yxt.anrui.terminal.api.risk.loancustomerrecord.*;
import com.yxt.anrui.terminal.api.risk.loancustomerrecord.flow.*;
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: fzz
* @date: 2023/8/8
**/
@Api(tags = "划扣申请")
@FeignClient(
contextId = "terminal-Buckle",
name = "anrui-terminal",
path = "/riskcenter/v1/buckle",
fallback = BuckleFeignFallback.class)
public interface BuckleFeign {
@ApiOperation("划扣申请")
@GetMapping("/detail/{sid}")
@ResponseBody
ResultBean<BuckleDetailsVo> detail(@PathVariable("sid") String sid);
//-------------------------流程-----------------------------------------
@ApiOperation("办理")
@PutMapping("/agreeCreditInfo")
@ResponseBody
ResultBean agreeCreditInfo(@Valid @RequestBody CompleteBuckleDto dto);
@ApiOperation("驳回")
@PutMapping("/rejectCreditInfo")
@ResponseBody
ResultBean rejectCreditInfo(@Valid @RequestBody AppBuckleTaskQuery query);
@ApiOperation("撤回")
@PutMapping("/recallCreditInfo")
@ResponseBody
ResultBean recallCreditInfo(@Valid @RequestBody AppBuckleTaskQuery query);
@ApiOperation("终止")
@PutMapping("/stopCreditInfo")
@ResponseBody
ResultBean stopCreditInfo(@Valid @RequestBody AppBuckleTaskQuery query);
@ApiOperation("获取流程操作标题")
@GetMapping("/getFlowOperateTitle")
@ResponseBody
ResultBean<String> getFlowOperateTitle(@Valid @SpringQueryMap BuckleFlowableQuery query);
// @ApiOperation(value = "加签")
// @PutMapping(value = "/delegate")
// @ResponseBody
// public ResultBean delegate(@RequestBody AppCustomerRecordDelegateQuery delegateQuery);
}

52
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/buckle/BuckleFeignFallback.java

@ -0,0 +1,52 @@
package com.yxt.anrui.terminal.api.risk.buckle;
import com.yxt.anrui.terminal.api.risk.buckle.flow.AppBuckleTaskQuery;
import com.yxt.anrui.terminal.api.risk.buckle.flow.BuckleFlowableQuery;
import com.yxt.anrui.terminal.api.risk.buckle.flow.CompleteBuckleDto;
import com.yxt.anrui.terminal.api.risk.loancustomerrecord.*;
import com.yxt.anrui.terminal.api.risk.loancustomerrecord.flow.*;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* @description:
* @author: fzz
* @date:
**/
@Component
public class BuckleFeignFallback implements BuckleFeign {
@Override
public ResultBean<BuckleDetailsVo> detail(String sid) {
return null;
}
@Override
public ResultBean agreeCreditInfo(CompleteBuckleDto dto) {
return null;
}
@Override
public ResultBean rejectCreditInfo(AppBuckleTaskQuery query) {
return null;
}
@Override
public ResultBean recallCreditInfo(AppBuckleTaskQuery query) {
return null;
}
@Override
public ResultBean stopCreditInfo(AppBuckleTaskQuery query) {
return null;
}
@Override
public ResultBean<String> getFlowOperateTitle(BuckleFlowableQuery query) {
return null;
}
}

23
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/buckle/RecordVo.java

@ -0,0 +1,23 @@
package com.yxt.anrui.terminal.api.risk.buckle;
import lombok.Data;
/**
* @author Administrator
* @description
* @date 2023/11/13 15:45
*/
@Data
public class RecordVo {
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;
}

25
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/buckle/flow/AppBuckleDelegateQuery.java

@ -0,0 +1,25 @@
package com.yxt.anrui.terminal.api.risk.buckle.flow;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author Administrator
* @description
* @date 2023/9/28 10:16
*/
@Data
public class AppBuckleDelegateQuery {
@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;
}

46
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/buckle/flow/AppBuckleTaskQuery.java

@ -0,0 +1,46 @@
package com.yxt.anrui.terminal.api.risk.buckle.flow;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @author Administrator
* @description
* @date 2023/10/17 9:14
*/
@Data
public class AppBuckleTaskQuery implements Query {
/**
* 终止驳回撤回
*/
@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")
@JsonProperty("procInsId")
private String instanceId;
}

21
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/buckle/flow/BuckleFlowableQuery.java

@ -0,0 +1,21 @@
package com.yxt.anrui.terminal.api.risk.buckle.flow;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
@Data
public class BuckleFlowableQuery implements Query {
private static final long serialVersionUID = -5879668616710833830L;
@ApiModelProperty(value = "节点key")
private String taskDefKey;
@ApiModelProperty(value = "业务sid")
private String businessSid;
@ApiModelProperty(value = "0 上一环节 1下一环节")
@NotNull(message = "参数错误:next")
private Integer next;
}

35
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/buckle/flow/CompleteBuckleDto.java

@ -0,0 +1,35 @@
package com.yxt.anrui.terminal.api.risk.buckle.flow;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @author Administrator
* @description
* @date 2023/10/17 9:13
*/
@Data
public class CompleteBuckleDto implements Dto {
@ApiModelProperty(value = "任务id")
@NotBlank(message = "参数错误:taskId")
private String taskId;
@ApiModelProperty(value = "流程id")
@NotBlank(message = "参数错误:procInsId")
@JsonProperty("procInsId")
private String instanceId;
@ApiModelProperty(value = "意见")
private String comment;
@ApiModelProperty(value = "业务sid")
@NotBlank(message = "参数错误:businessSid")
private String businessSid;
@ApiModelProperty(value = "用户sid")
@NotBlank(message = "参数错误:userSid")
private String userSid;
@ApiModelProperty(value = "节点id")
@NotBlank(message = "参数错误:taskDefKey")
private String taskDefKey;
}

62
anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/buckle/BuckleRest.java

@ -0,0 +1,62 @@
package com.yxt.anrui.terminal.biz.risk.buckle;
import com.yxt.anrui.terminal.api.risk.buckle.BuckleDetailsVo;
import com.yxt.anrui.terminal.api.risk.buckle.BuckleFeign;
import com.yxt.anrui.terminal.api.risk.buckle.flow.AppBuckleTaskQuery;
import com.yxt.anrui.terminal.api.risk.buckle.flow.BuckleFlowableQuery;
import com.yxt.anrui.terminal.api.risk.buckle.flow.CompleteBuckleDto;
import com.yxt.anrui.terminal.api.risk.loancustomerrecord.*;
import com.yxt.anrui.terminal.api.risk.loancustomerrecord.flow.*;
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.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.List;
/**
* @description:
* @author: fzz
* @date:
**/
@Controller
@RequestMapping("/riskcenter/v1/buckle")
public class BuckleRest implements BuckleFeign {
@Autowired
private BuckleService buckleService;
@Override
public ResultBean<BuckleDetailsVo> detail(String sid) {
return buckleService.detail(sid);
}
@Override
public ResultBean agreeCreditInfo(CompleteBuckleDto dto) {
return buckleService.agreeCreditInfo(dto);
}
@Override
public ResultBean rejectCreditInfo(AppBuckleTaskQuery query) {
return buckleService.rejectCreditInfo(query);
}
@Override
public ResultBean recallCreditInfo(AppBuckleTaskQuery query) {
return buckleService.recallCreditInfo(query);
}
@Override
public ResultBean stopCreditInfo(AppBuckleTaskQuery query) {
return buckleService.stopCreditInfo(query);
}
@Override
public ResultBean<String> getFlowOperateTitle(BuckleFlowableQuery query) {
return buckleService.getFlowOperateTitle(query);
}
}

163
anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/buckle/BuckleService.java

@ -0,0 +1,163 @@
package com.yxt.anrui.terminal.biz.risk.buckle;
import cn.hutool.core.bean.BeanUtil;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrg;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign;
import com.yxt.anrui.portal.api.sysuser.SysUserFeign;
import com.yxt.anrui.portal.api.sysuser.SysUserVo;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.LoanBuckleApplyFeign;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.app.AppBuckleDetailsVo;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.flow.BuckleCompleteDto;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.flow.BuckleGetNodeQuery;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.flow.BuckleGetNodeVo;
import com.yxt.anrui.riskcenter.api.loanbuckleapply.flow.BuckleTaskQuery;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.LoanCustomerRecordFeign;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.app.*;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.flow.CustomerRecordCompleteDto;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.flow.CustomerRecordDelegateQuery;
import com.yxt.anrui.riskcenter.api.loancustomerrecord.flow.CustomerRecordTaskQuery;
import com.yxt.anrui.terminal.api.risk.buckle.BuckleDetailsVo;
import com.yxt.anrui.terminal.api.risk.buckle.flow.AppBuckleTaskQuery;
import com.yxt.anrui.terminal.api.risk.buckle.flow.BuckleFlowableQuery;
import com.yxt.anrui.terminal.api.risk.buckle.flow.CompleteBuckleDto;
import com.yxt.anrui.terminal.api.risk.loancustomerrecord.*;
import com.yxt.anrui.terminal.api.risk.loancustomerrecord.flow.*;
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.stereotype.Service;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* @description:
* @author: fzz
* @date:
**/
@Service
public class BuckleService {
@Autowired
private SysUserFeign sysUserFeign;
@Autowired
private SysStaffOrgFeign sysStaffOrgFeign;
@Autowired
private LoanBuckleApplyFeign loanBuckleApplyFeign;
public ResultBean<BuckleDetailsVo> detail(String sid) {
ResultBean<BuckleDetailsVo> rb = ResultBean.fireFail();
BuckleDetailsVo vo = new BuckleDetailsVo();
AppBuckleDetailsVo data = loanBuckleApplyFeign.appDetail(sid).getData();
if (null != data) {
BeanUtil.copyProperties(data, vo);
}
return rb.success().setData(vo);
}
public ResultBean agreeCreditInfo(CompleteBuckleDto dto) {
ResultBean rb = ResultBean.fireFail();
//根据用户sid获取staffSid
ResultBean<SysUserVo> userVoResultBean = sysUserFeign.fetchBySid(dto.getUserSid());
if (!userVoResultBean.getSuccess()) {
return rb.setMsg(userVoResultBean.getMsg());
}
//根据staffSid获取用户的组织全路径
ResultBean<SysStaffOrg> staffOrgResultBean = sysStaffOrgFeign.getOrgByStaffSid(userVoResultBean.getData().getStaffSid());
if (!staffOrgResultBean.getSuccess()) {
return rb.setMsg(staffOrgResultBean.getMsg());
}
//用户的组织全路径
String orgSidPath = staffOrgResultBean.getData().getOrgSidPath();
BuckleCompleteDto buckleCompleteDto = new
BuckleCompleteDto();
BeanUtil.copyProperties(dto, buckleCompleteDto);
buckleCompleteDto.setOrgSidPath(orgSidPath);
ResultBean resultBean = loanBuckleApplyFeign.complete(buckleCompleteDto);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
return rb.success().setData(resultBean.getData());
}
public ResultBean rejectCreditInfo(AppBuckleTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
BuckleTaskQuery taskQuery = new
BuckleTaskQuery();
BeanUtil.copyProperties(query, taskQuery);
ResultBean resultBean = loanBuckleApplyFeign.taskReject(taskQuery);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
return rb.success().setData(resultBean.getData());
}
public ResultBean recallCreditInfo(AppBuckleTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
BuckleTaskQuery taskQuery = new
BuckleTaskQuery();
BeanUtil.copyProperties(query, taskQuery);
ResultBean resultBean = loanBuckleApplyFeign.revokeProcess(taskQuery);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
return rb.success().setData(resultBean.getData());
}
public ResultBean stopCreditInfo(AppBuckleTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
BuckleTaskQuery taskQuery = new
BuckleTaskQuery();
BeanUtil.copyProperties(query, taskQuery);
ResultBean resultBean = loanBuckleApplyFeign.breakProcess(taskQuery);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
return rb.success().setData(resultBean.getData());
}
public ResultBean<String> getFlowOperateTitle(BuckleFlowableQuery query) {
ResultBean<String> rb = ResultBean.fireFail();
//0 上一环节 1下一环节
int next = query.getNext();
BuckleGetNodeQuery getNodeQuery = new
BuckleGetNodeQuery();
BeanUtil.copyProperties(query, getNodeQuery);
String data = "";
if (next == 0) {
ResultBean<List<BuckleGetNodeVo>> getPreviousNodesForReject = loanBuckleApplyFeign.getPreviousNodesForReject(getNodeQuery);
if (getPreviousNodesForReject.getSuccess()) {
getPreviousNodesForReject.getData().removeAll(Collections.singleton(null));
data = getPreviousNodesForReject.getData().get(0).getName();
} else {
return rb.setMsg(getPreviousNodesForReject.getMsg());
}
} else if (next == 1) {
ResultBean<List<BuckleGetNodeVo>> getNextNodesForSubmit = loanBuckleApplyFeign.getNextNodesForSubmit(getNodeQuery);
if (getNextNodesForSubmit.getSuccess()) {
getNextNodesForSubmit.getData().removeAll(Collections.singleton(null));
data = getNextNodesForSubmit.getData().get(0).getName();
} else {
return rb.setMsg(getNextNodesForSubmit.getMsg());
}
} else {
return rb.setMsg("参数错误:next");
}
return rb.success().setData(data);
}
//
// public ResultBean delegate(AppCustomerRecordDelegateQuery delegateQuery) {
// ResultBean rb = ResultBean.fireFail();
// CustomerRecordDelegateQuery delegateQuery1 = new
// CustomerRecordDelegateQuery();
// BeanUtil.copyProperties(delegateQuery, delegateQuery1);
// ResultBean delegate = loanCustomerRecordFeign.delegate(delegateQuery1);
// return rb.success();
// }
}
Loading…
Cancel
Save