Browse Source

Merge remote-tracking branch 'origin/master'

master
God 2 years ago
parent
commit
cdf4bfb712
  1. 2
      anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/utils/ProcDefEnum.java
  2. 4
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinotherPolicy/LoanFinOtherPolicy.java
  3. 8
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinotherPolicy/LoanFinOtherPolicyFeign.java
  4. 59
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinotherPolicy/LoanFinOtherPolicyVos.java
  5. 53
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinotherpolicyrecordapply/LoanFinOtherPolicyApplyDto.java
  6. 34
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinotherpolicyrecordapply/LoanFinOtherPolicyApplyInitListVo.java
  7. 43
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinotherpolicyrecordapply/LoanFinOtherPolicyApplyInitVo.java
  8. 38
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinotherpolicyrecordapply/LoanFinOtherPolicyApplyQuery.java
  9. 43
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinotherpolicyrecordapply/LoanFinOtherPolicyApplyVo.java
  10. 60
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinotherpolicyrecordapply/LoanFinOtherPolicyRecordApply.java
  11. 114
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinotherpolicyrecordapply/LoanFinOtherPolicyRecordApplyFeign.java
  12. 86
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinotherpolicyrecordapply/LoanFinOtherPolicyRecordApplyFeignFallback.java
  13. 26
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinotherpolicyrecordapply/flow/GetNodeQuery.java
  14. 25
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinotherpolicyrecordapply/flow/GetNodeVo.java
  15. 40
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinotherpolicyrecordapply/flow/LoanOtherPolicyApplyCompleteDto.java
  16. 56
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinotherpolicyrecordapply/flow/LoanOtherPolicyApplyTaskQuery.java
  17. 20
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinotherpolicyrecordapply/flow/SubmitLoanOtherPolicyApplyDto.java
  18. 4
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicy/LoanFinPolicy.java
  19. 8
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicy/LoanFinPolicyDto.java
  20. 15
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicy/LoanFinPolicyFeign.java
  21. 3
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicy/LoanFinPolicyQuery.java
  22. 20
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicy/LoanFinPolicyStateQuery.java
  23. 15
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicy/LoanFinPolicyVo.java
  24. 4
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicy/LoanFinPolicyVos.java
  25. 21
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicy/LoanRiskStateQuery.java
  26. 2
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicyrecordapply/LoanFinPolicyApplyDto.java
  27. 8
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicyrecordapply/LoanFinPolicyApplyInitListVo.java
  28. 4
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicyrecordapply/LoanFinPolicyApplyInitVo.java
  29. 54
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicyrecordapply/LoanFinPolicyRecordApplyFeign.java
  30. 52
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicyrecordapply/LoanFinPolicyRecordApplyFeignFallback.java
  31. 26
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicyrecordapply/flow/GetNodeQuery.java
  32. 25
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicyrecordapply/flow/GetNodeVo.java
  33. 40
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicyrecordapply/flow/LoanFinPolicyApplyCompleteDto.java
  34. 56
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicyrecordapply/flow/LoanFinPolicyApplyTaskQuery.java
  35. 19
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicyrecordapply/flow/SubmitLoanFinPolicyApplyDto.java
  36. 5
      anrui-riskcenter/anrui-riskcenter-biz/pom.xml
  37. 2
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/RiskCenterApplication.java
  38. 17
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinbank/LoanFinBankRest.java
  39. 3
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinotherPolicy/LoanFinOtherPolicyMapper.java
  40. 6
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinotherPolicy/LoanFinOtherPolicyMapper.xml
  41. 14
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinotherPolicy/LoanFinOtherPolicyRest.java
  42. 8
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinotherPolicy/LoanFinOtherPolicyService.java
  43. 25
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinotherpolicyrecordapply/LoanFinOtherPolicyRecordApplyMapper.java
  44. 35
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinotherpolicyrecordapply/LoanFinOtherPolicyRecordApplyMapper.xml
  45. 114
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinotherpolicyrecordapply/LoanFinOtherPolicyRecordApplyRest.java
  46. 563
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinotherpolicyrecordapply/LoanFinOtherPolicyRecordApplyService.java
  47. 6
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinpolicy/LoanFinPolicyMapper.java
  48. 7
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinpolicy/LoanFinPolicyMapper.xml
  49. 9
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinpolicy/LoanFinPolicyRest.java
  50. 229
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinpolicy/LoanFinPolicyService.java
  51. 8
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinpolicyrecordapply/LoanFinPolicyRecordApplyMapper.java
  52. 16
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinpolicyrecordapply/LoanFinPolicyRecordApplyMapper.xml
  53. 80
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinpolicyrecordapply/LoanFinPolicyRecordApplyRest.java
  54. 510
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinpolicyrecordapply/LoanFinPolicyRecordApplyService.java
  55. 46
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/policyrecordapply/AppFinPolicyApplyInitVo.java
  56. 47
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/policyrecordapply/AppPolicyApplyInitListVo.java
  57. 72
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/policyrecordapply/PolicyRecordApplyFeign.java
  58. 50
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/policyrecordapply/PolicyRecordApplyFeignFallback.java
  59. 38
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/policyrecordapply/flow/CompletePolicyDto.java
  60. 21
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/policyrecordapply/flow/PolicyFlowableQuery.java
  61. 44
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/policyrecordapply/flow/PolicyTaskQuery.java
  62. 64
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/policyrecordapply/PolicyRecordApplyRest.java
  63. 160
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/policyrecordapply/PolicyRecordApplyService.java
  64. 109
      doc/databases/risk_center.sql

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

@ -53,6 +53,8 @@ public enum ProcDefEnum {
FINFUNDSAPPLY("款项结转申请", "process_ypafrrvg:1:2257504"),
BUSHANDOVER("交车确认", "process_e8feloik:5:1747508"),
LOANFINPOLICYRECORDAPPLY("金融产品政策备案", "process_u45lo7qc:1:2272516"),
LOANOTHERPOLICYRECORDAPPLY("其它融产品备案", "process_7pptyzfc:1:2272524"),
/******************************测试流程id*********************************************/

4
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinotherPolicy/LoanFinOtherPolicy.java

@ -1,5 +1,6 @@
package com.yxt.anrui.riskcenter.api.loanfinotherPolicy;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yxt.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -12,6 +13,7 @@ import java.math.BigDecimal;
* @date: 2023/7/6
**/
@Data
@TableName("loan_fin_otherpolicy")
public class LoanFinOtherPolicy extends BaseEntity {
private static final long serialVersionUID = 7109639024348200286L;
@ApiModelProperty("产品名称:组合(资方+产品类别+最高融资比例+期数)")
@ -55,8 +57,6 @@ public class LoanFinOtherPolicy extends BaseEntity {
private int useSate;
@ApiModelProperty("风控状态:1禁用 0正常 风控中心设置的状态")
private int riskState;
@ApiModelProperty("是否有其他融:1有,0无")
private int isOtherProduct;
@ApiModelProperty("适用销售部门sids(逗号分隔)")
private String useDeptSids;
@ApiModelProperty("适用销售部门名称(逗号分隔)")

8
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinotherPolicy/LoanFinOtherPolicyFeign.java

@ -1,7 +1,11 @@
package com.yxt.anrui.riskcenter.api.loanfinotherPolicy;
import com.yxt.common.core.result.ResultBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
/**
* @description: 其他融产品
@ -15,4 +19,8 @@ import org.springframework.cloud.openfeign.FeignClient;
path = "v1/LoanFinOtherPolicy",
fallback = LoanFinOtherPolicyFeignFallback.class)
public interface LoanFinOtherPolicyFeign {
@GetMapping("details")
@ApiOperation("详情")
ResultBean<LoanFinOtherPolicyVos> details(@RequestParam("sid") String sid);
}

59
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinotherPolicy/LoanFinOtherPolicyVos.java

@ -0,0 +1,59 @@
package com.yxt.anrui.riskcenter.api.loanfinotherPolicy;
import com.yxt.anrui.riskcenter.api.loanfinpolicy.UseDept;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2023/7/11
**/
@Data
public class LoanFinOtherPolicyVos {
@ApiModelProperty("资方名称")
private String bankShortName;
@ApiModelProperty("其他融名称(资方+产品类别+最高融资比例+期数)")
private String otherPolicyName;
@ApiModelProperty("资方sid")
private String bankSid;
@ApiModelProperty("主产品sid")
private String mainPolicySid;
@ApiModelProperty("适用销售部门sids(逗号分隔)")
private String useDeptSids;
@ApiModelProperty("适用销售部门名称(逗号分隔)")
private String useDeptNames;
@ApiModelProperty("适用销售部门List")
private List<UseDept> useDeptList = new ArrayList<>();
@ApiModelProperty("产品类别key")
private String productTypeKey;
@ApiModelProperty("产品类别value")
private String productTypeValue;
@ApiModelProperty("业务类型key")
private String busTypeKey;
@ApiModelProperty("业务类型value")
private String busTypeValue;
@ApiModelProperty("车辆大类key")
private String vehCategoryKey;
@ApiModelProperty("车辆大类value")
private String vehCategoryValue;
@ApiModelProperty("车辆功能key")
private String vehTypeKey;
@ApiModelProperty("车辆功能value")
private String vehTypeValue;
@ApiModelProperty("最高融资额比例(%)")
private String maxLoanRatio;
@ApiModelProperty("最高融资额")
private String maxLoanAmount;
@ApiModelProperty("期数")
private int period;
private String periodKey;
@ApiModelProperty("年利率(%)")
private String yearRatio;
@ApiModelProperty("有效期至")
private String validDateTo;
}

53
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinotherpolicyrecordapply/LoanFinOtherPolicyApplyDto.java

@ -0,0 +1,53 @@
package com.yxt.anrui.riskcenter.api.loanfinotherpolicyrecordapply;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* Project: anrui-base(安瑞基础信息模块) <br/>
* File: BaseFinBankDto.java <br/>
* Class: com.yxt.anrui.base.api.basefinbank.BaseFinBankDto <br/>
* Description: 资方信息表 数据传输对象. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2021-09-10 11:31:46 <br/>
*
* @author liupopo
* @version 1.0
* @since 1.0
*/
@ApiModel(value = "其他融备案 数据传输对象", description = "其他融备案 数据传输对象")
@Data
public class LoanFinOtherPolicyApplyDto implements Dto {
private String sid;
private String userSid;
@ApiModelProperty("申请分公司")
private String applyCompany;
@ApiModelProperty("申请部门")
private String department;
@ApiModelProperty("申请人sid")
private String applicantSid;
@ApiModelProperty("申请人")
private String applicant;
@ApiModelProperty("申请日期")
private Date applyDate;
@ApiModelProperty("申请金融产品政策sid")
private List<String> policySids = new ArrayList<>();
@ApiModelProperty("附件路径")
private List<String> annexPaths = new ArrayList<>();
@ApiModelProperty("创建组织sid")
private String createOrgSid;
@ApiModelProperty("创建组织名")
private String createOrgName;
@ApiModelProperty("使用组织全路径")
private String orgSidPath;
@ApiModelProperty("备注")
private String remarks;
}

34
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinotherpolicyrecordapply/LoanFinOtherPolicyApplyInitListVo.java

@ -0,0 +1,34 @@
package com.yxt.anrui.riskcenter.api.loanfinotherpolicyrecordapply;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author Administrator
* @description
* @date 2023/7/6 15:49
*/
@Data
public class LoanFinOtherPolicyApplyInitListVo implements Vo {
@ApiModelProperty("政策sid")
private String otherPolicySid;
@ApiModelProperty("政策名称")
private String otherPolicyName;
@ApiModelProperty("业务类型")
private String busTypeValue;
@ApiModelProperty("车辆大类")
private String vehCategoryValue;
@ApiModelProperty("车辆功能")
private String vehTypeValue;
@ApiModelProperty("最高融资额")
private String maxLoanAmount;
@ApiModelProperty("期数")
private int period;
@ApiModelProperty("标准年利率(%)")
private String yearRatio;
@ApiModelProperty("有效期至")
private String validDateTo;
}

43
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinotherpolicyrecordapply/LoanFinOtherPolicyApplyInitVo.java

@ -0,0 +1,43 @@
package com.yxt.anrui.riskcenter.api.loanfinotherpolicyrecordapply;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* @author Administrator
* @description
* @date 2023/7/6 15:38
*/
@Data
public class LoanFinOtherPolicyApplyInitVo implements Vo {
private String sid;
private String userSid;
@ApiModelProperty("备注")
private String remarks;
@ApiModelProperty("申请分公司")
private String applyCompany;
@ApiModelProperty("申请部门")
private String department;
@ApiModelProperty("申请人")
private String applicant;
@ApiModelProperty("申请日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date applyDate;
@ApiModelProperty("任务id")
private String taskId;
@ApiModelProperty("实例id")
private String instanceId;
@ApiModelProperty("申请金融产品政策sid")
private List<String> policySids = new ArrayList<>();
@ApiModelProperty("附件路径")
private List<String> annexPaths = new ArrayList<>();
@ApiModelProperty("使用组织全路径")
private String orgSidPath;
private List<LoanFinOtherPolicyApplyInitListVo> policyList = new ArrayList<>();
}

38
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinotherpolicyrecordapply/LoanFinOtherPolicyApplyQuery.java

@ -0,0 +1,38 @@
package com.yxt.anrui.riskcenter.api.loanfinotherpolicyrecordapply;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* Project: anrui-base(安瑞基础信息模块) <br/>
* File: BaseFinBankQuery.java <br/>
* Class: com.yxt.anrui.base.api.basefinbank.BaseFinBankQuery <br/>
* Description: 资方信息表 查询条件. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2021-09-10 11:31:46 <br/>
*
* @author liupopo
* @version 1.0
* @since 1.0
*/
@ApiModel(value = "资方信息表 查询条件", description = "资方信息表 查询条件")
@Data
public class LoanFinOtherPolicyApplyQuery implements Query {
@ApiModelProperty("分公司")
private String applyCompany;
@ApiModelProperty("申请部门")
private String department;
@ApiModelProperty("申请人")
private String applicant;
@ApiModelProperty("创建组织sid")
private String createOrgSid;
@ApiModelProperty("开始日期")
private String createStartTime;
@ApiModelProperty("结束日期")
private String createEndTime;
}

43
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinotherpolicyrecordapply/LoanFinOtherPolicyApplyVo.java

@ -0,0 +1,43 @@
package com.yxt.anrui.riskcenter.api.loanfinotherpolicyrecordapply;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* Project: anrui-base(安瑞基础信息模块) <br/>
* File: BaseFinBankVo.java <br/>
* Class: com.yxt.anrui.base.api.basefinbank.BaseFinBankVo <br/>
* Description: 资方信息表 视图数据对象. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2021-09-10 11:31:46 <br/>
*
* @author liupopo
* @version 1.0
* @since 1.0
*/
@ApiModel(value = "金融产品政策报备 视图数据对象", description = "金融产品政策报备 视图数据对象")
@Data
public class LoanFinOtherPolicyApplyVo implements Vo {
private String sid;
@ApiModelProperty("申请分公司")
private String applyCompany;
@ApiModelProperty("申请部门")
private String department;
@ApiModelProperty("申请人")
private String applicant;
@ApiModelProperty("申请日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date applyDate;
@ApiModelProperty("流程状态")
private String nodeState;
@ApiModelProperty("备注")
private String remarks;
}

60
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinotherpolicyrecordapply/LoanFinOtherPolicyRecordApply.java

@ -0,0 +1,60 @@
package com.yxt.anrui.riskcenter.api.loanfinotherpolicyrecordapply;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yxt.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* File: BaseFinBank.java <br/>
* Class: com.yxt.anrui.base.api.basefinbank.BaseFinBank <br/>
* Description: 金融产品政策报备. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2021-09-10 11:31:46 <br/>
*
* @author liupopo
* @version 1.0
* @since 1.0
*/
@ApiModel(value = "金融产品政策报备", description = "金融产品政策报备")
@TableName("loan_fin_other_policy_record_apply")
@Data
public class LoanFinOtherPolicyRecordApply extends BaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty("申请分公司")
private String applyCompany;
@ApiModelProperty("申请部门")
private String department;
@ApiModelProperty("申请人sid")
private String applicantSid;
@ApiModelProperty("申请人")
private String applicant;
@ApiModelProperty("申请日期")
private Date applyDate;
@ApiModelProperty("其他融产品政策sid")
private String otherPolicySid;
@ApiModelProperty("附件路径")
private String annexPath;
@ApiModelProperty("流程定义的id")
private String procDefId;
@ApiModelProperty("环节定义的sid")
private String nodeSid;
@ApiModelProperty("流程实例的id")
private String procInstId;
@ApiModelProperty("流程状态")
private String nodeState;
@ApiModelProperty("任务id")
private String taskId;
@ApiModelProperty("创建组织sid")
private String createOrgSid;
@ApiModelProperty("创建组织名")
private String createOrgName;
@ApiModelProperty("使用组织全路径")
private String orgSidPath;
}

114
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinotherpolicyrecordapply/LoanFinOtherPolicyRecordApplyFeign.java

@ -0,0 +1,114 @@
package com.yxt.anrui.riskcenter.api.loanfinotherpolicyrecordapply;
import com.yxt.anrui.riskcenter.api.loanfinotherpolicyrecordapply.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 io.swagger.annotations.ApiParam;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
/**
* File: BaseFinBankFeign.java <br/>
* Class: com.yxt.anrui.base.api.basefinbank.BaseFinBankFeign <br/>
* Description: 金融产品政策报备. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2021-09-10 11:31:46 <br/>
*
* @author liupopo
* @version 1.0
* @since 1.0
*/
@Api(tags = "其他融产品政策报备")
@FeignClient(
contextId = "anrui-riskcenter-LoanFinOtherPolicyRecordApply",
name = "anrui-riskcenter",
path = "v1/loanfinotherpolicyrecordapply",
fallback = LoanFinOtherPolicyRecordApplyFeignFallback.class)
public interface LoanFinOtherPolicyRecordApplyFeign {
/**
* 新增
*
* @param dto
*/
@ApiOperation("新增修改")
@PostMapping("/saveOrUpdate")
public ResultBean save(@Valid @RequestBody LoanFinOtherPolicyApplyDto dto);
/**
* 根据条件分页查询数据的列表已测试
*
* @param pq
*/
@ApiOperation("根据条件分页查询数据的列表")
@PostMapping("/listPage")
public ResultBean<PagerVo<LoanFinOtherPolicyApplyVo>> listPage(@RequestBody PagerQuery<LoanFinOtherPolicyApplyQuery> pq);
/**
* 金融产品政策报备初始化
*
* @param dto
*/
@ApiOperation("金融产品政策报备保存初始化")
@GetMapping("/policyRecordInit")
@ResponseBody
public ResultBean<LoanFinOtherPolicyApplyInitVo> policyRecordInit(@RequestBody LoanFinOtherPolicyApplyDto dto);
/**
* 金融产品政策报备初始化
*
* @param sid
*/
@ApiOperation("金融产品政策报备编辑初始化")
@GetMapping("/fetchDetailsBySid/{sid}")
@ResponseBody
public ResultBean<LoanFinOtherPolicyApplyInitVo> fetchDetailsBySid(@PathVariable("sid") String sid);
/******************流程接口**************************************/
@ApiOperation("金融政策产品备案提交")
@PostMapping("/submit")
public ResultBean submitRecordApplication(@RequestBody @Valid SubmitLoanOtherPolicyApplyDto dto);
@ApiOperation(value = "办理(同意)")
@PostMapping("/complete")
public ResultBean complete(@Valid @RequestBody LoanOtherPolicyApplyCompleteDto dto);
//分公司到风控中心同意
@ApiOperation(value = "办理(同意)")
@PostMapping("/companyToDivisionOperate")
public ResultBean companyToDivisionOperate(@Valid @RequestBody LoanOtherPolicyApplyCompleteDto query);
@ApiOperation(value = "撤回流程")
@PostMapping(value = "/revokeProcess")
public ResultBean revokeProcess(@ApiParam(value = "工作流任务相关--请求参数") @RequestBody LoanOtherPolicyApplyTaskQuery query);
@ApiOperation(value = "驳回任务")
@PostMapping(value = "/reject")
public ResultBean taskReject(@ApiParam(value = "工作流任务相关--请求参数") @RequestBody LoanOtherPolicyApplyTaskQuery query);
@ApiOperation(value = "终止任务")
@PostMapping(value = "/breakProcess")
public ResultBean breakProcess(@RequestBody LoanOtherPolicyApplyTaskQuery 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<GetNodeVo>> getNextNodesForSubmit(@Valid @RequestBody GetNodeQuery query);
@ApiOperation(value = "获取上一个环节")
@GetMapping(value = "/getPreviousNodesForReject")
ResultBean<List<GetNodeVo>> getPreviousNodesForReject(@Valid @RequestBody GetNodeQuery query);
}

86
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinotherpolicyrecordapply/LoanFinOtherPolicyRecordApplyFeignFallback.java

@ -0,0 +1,86 @@
package com.yxt.anrui.riskcenter.api.loanfinotherpolicyrecordapply;
import com.yxt.anrui.riskcenter.api.loanfinotherpolicyrecordapply.flow.GetNodeQuery;
import com.yxt.anrui.riskcenter.api.loanfinotherpolicyrecordapply.flow.GetNodeVo;
import com.yxt.anrui.riskcenter.api.loanfinotherpolicyrecordapply.flow.LoanOtherPolicyApplyCompleteDto;
import com.yxt.anrui.riskcenter.api.loanfinotherpolicyrecordapply.flow.LoanOtherPolicyApplyTaskQuery;
import com.yxt.anrui.riskcenter.api.loanfinotherpolicyrecordapply.flow.SubmitLoanOtherPolicyApplyDto;
import com.yxt.anrui.riskcenter.api.loanfinpolicyrecordapply.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;
@Component
public class LoanFinOtherPolicyRecordApplyFeignFallback implements LoanFinOtherPolicyRecordApplyFeign {
@Override
public ResultBean save(LoanFinOtherPolicyApplyDto dto) {
return null;
}
@Override
public ResultBean<PagerVo<LoanFinOtherPolicyApplyVo>> listPage(PagerQuery<LoanFinOtherPolicyApplyQuery> pq) {
return null;
}
@Override
public ResultBean<LoanFinOtherPolicyApplyInitVo> policyRecordInit(LoanFinOtherPolicyApplyDto dto) {
return null;
}
@Override
public ResultBean<LoanFinOtherPolicyApplyInitVo> fetchDetailsBySid(String sid) {
return null;
}
@Override
public ResultBean submitRecordApplication(SubmitLoanOtherPolicyApplyDto dto) {
return null;
}
@Override
public ResultBean complete(LoanOtherPolicyApplyCompleteDto dto) {
return null;
}
@Override
public ResultBean companyToDivisionOperate(LoanOtherPolicyApplyCompleteDto query) {
return null;
}
@Override
public ResultBean revokeProcess(LoanOtherPolicyApplyTaskQuery query) {
return null;
}
@Override
public ResultBean taskReject(LoanOtherPolicyApplyTaskQuery query) {
return null;
}
@Override
public ResultBean breakProcess(LoanOtherPolicyApplyTaskQuery query) {
return null;
}
@Override
public ResultBean flowRecord(String procInsId) {
return null;
}
@Override
public ResultBean<List<GetNodeVo>> getNextNodesForSubmit(GetNodeQuery query) {
return null;
}
@Override
public ResultBean<List<GetNodeVo>> getPreviousNodesForReject(GetNodeQuery query) {
return null;
}
}

26
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinotherpolicyrecordapply/flow/GetNodeQuery.java

@ -0,0 +1,26 @@
package com.yxt.anrui.riskcenter.api.loanfinotherpolicyrecordapply.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 GetNodeQuery 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/loanfinotherpolicyrecordapply/flow/GetNodeVo.java

@ -0,0 +1,25 @@
package com.yxt.anrui.riskcenter.api.loanfinotherpolicyrecordapply.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 GetNodeVo 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;
}

40
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinotherpolicyrecordapply/flow/LoanOtherPolicyApplyCompleteDto.java

@ -0,0 +1,40 @@
package com.yxt.anrui.riskcenter.api.loanfinotherpolicyrecordapply.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 LoanOtherPolicyApplyCompleteDto 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;
}

56
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinotherpolicyrecordapply/flow/LoanOtherPolicyApplyTaskQuery.java

@ -0,0 +1,56 @@
package com.yxt.anrui.riskcenter.api.loanfinotherpolicyrecordapply.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 LoanOtherPolicyApplyTaskQuery 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<>();*/
}

20
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinotherpolicyrecordapply/flow/SubmitLoanOtherPolicyApplyDto.java

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

4
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicy/LoanFinPolicy.java

@ -51,6 +51,10 @@ public class LoanFinPolicy extends BaseEntity {
@ApiModelProperty("保证金比例(%)")
private BigDecimal bondRatio;
private String bondRatioKey;
@ApiModelProperty("保证金类型key")
private String bondTypeKey;
@ApiModelProperty("保证金类型")
private String bondType;
@ApiModelProperty("期数")
private int period;
private String periodKey;

8
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicy/LoanFinPolicyDto.java

@ -1,5 +1,6 @@
package com.yxt.anrui.riskcenter.api.loanfinpolicy;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.yxt.anrui.riskcenter.api.loanfinotherPolicy.LoanFinOtherPolicyDto;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
@ -54,6 +55,10 @@ public class LoanFinPolicyDto implements Dto {
@ApiModelProperty("保证金比例(%)")
private String bondRatio;
private String bondRatioKey;
@ApiModelProperty("保证金类型key")
private String bondTypeKey;
@ApiModelProperty("保证金类型")
private String bondType;
@ApiModelProperty("期数")
private int period;
private String periodKey;
@ -74,6 +79,7 @@ public class LoanFinPolicyDto implements Dto {
@ApiModelProperty("有效期至")
private String validDateTo;
@ApiModelProperty("是否有其他融:1有,0无")
@JsonProperty("isOtherProduct")
private boolean isOtherProduct;
@ApiModelProperty("全组织路径")
private String orgPath;
@ -83,6 +89,8 @@ public class LoanFinPolicyDto implements Dto {
private LoanFinOtherPolicyDto loanFinOtherPolicy;
private String userSid;
@ApiModelProperty("备注")
private String remarks;
}

15
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicy/LoanFinPolicyFeign.java

@ -6,10 +6,7 @@ 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.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.*;
/**
* @description:
@ -29,16 +26,20 @@ public interface LoanFinPolicyFeign {
ResultBean saveOrUpdatePolicy(@RequestBody LoanFinPolicyDto dto);
@ApiOperation("初始化、详情")
@PostMapping("details")
@GetMapping("details")
ResultBean<LoanFinPolicyVo> details(@RequestParam("sid") String sid);
@ApiOperation("删除")
@DeleteMapping("deletePolicy")
ResultBean deletePolicy(@RequestBody String[] sids);
@ApiOperation("停用、开启:useState为1时走停用,为0时走开启")
@ApiOperation("使用状态停用、开启:useState为1时走停用,为0时走开启")
@PostMapping("setState")
ResultBean setState(@RequestParam("sid") String sid, @RequestParam("useState") String useState);
ResultBean setState(@RequestBody LoanFinPolicyStateQuery query);
@ApiOperation("风控状态禁用、启用:useState为1时走禁用,为0时走启用")
@PostMapping("setRiskState")
ResultBean setRiskState(@RequestBody LoanRiskStateQuery query);
@ApiOperation("金融产品政策管理分页列表")
@PostMapping("pagerList")

3
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicy/LoanFinPolicyQuery.java

@ -36,7 +36,7 @@ public class LoanFinPolicyQuery implements Query {
@ApiModelProperty("有效期至结束")
private String validDateToEnd;
@ApiModelProperty("期数")
private int period;
private String period;
@ApiModelProperty("服务费类型")
private String serviceAmountTypeKey;
//最低首付比例 至
@ -46,4 +46,5 @@ public class LoanFinPolicyQuery implements Query {
private String menuUrl;
private String orgPath;
private String userSid;
private String menuSid;
}

20
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicy/LoanFinPolicyStateQuery.java

@ -0,0 +1,20 @@
package com.yxt.anrui.riskcenter.api.loanfinpolicy;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2023/7/11
**/
@Data
public class LoanFinPolicyStateQuery {
@ApiModelProperty("sids")
private List<String> sidsList = new ArrayList<>();
@ApiModelProperty("useState为1时走停用,为0时走开启")
private String useState;
}

15
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicy/LoanFinPolicyVo.java

@ -1,10 +1,14 @@
package com.yxt.anrui.riskcenter.api.loanfinpolicy;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.yxt.anrui.riskcenter.api.loanfinotherPolicy.LoanFinOtherPolicyVo;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @description:
* @author: dimengzhe
@ -50,6 +54,10 @@ public class LoanFinPolicyVo implements Vo {
@ApiModelProperty("保证金比例(%)")
private String bondRatio;
private String bondRatioKey;
@ApiModelProperty("保证金类型key")
private String bondTypeKey;
@ApiModelProperty("保证金类型")
private String bondType;
@ApiModelProperty("期数")
private int period;
private String periodKey;
@ -70,11 +78,18 @@ public class LoanFinPolicyVo implements Vo {
@ApiModelProperty("有效期至")
private String validDateTo;
@ApiModelProperty("是否有其他融:1有,0无")
@JsonProperty("isOtherProduct")
private boolean isOtherProduct;
@ApiModelProperty("适用销售部门sids(逗号分隔)")
private String useDeptSids;
@ApiModelProperty("适用销售部门名称(逗号分隔)")
private String useDeptNames;
@ApiModelProperty("适用销售部门List")
private List<UseDept> useDeptList = new ArrayList<>();
private LoanFinOtherPolicyVo loanFinOtherPolicy = new LoanFinOtherPolicyVo();
private String remarks;
private String orgPath;
private String userSid;
}

4
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicy/LoanFinPolicyVos.java

@ -1,5 +1,6 @@
package com.yxt.anrui.riskcenter.api.loanfinpolicy;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -13,6 +14,8 @@ import lombok.Data;
public class LoanFinPolicyVos implements Vo {
private static final long serialVersionUID = 7126087240752513932L;
private String sid;
@ApiModelProperty("其他融sid")
private String otherPolicySid;
@ApiModelProperty("报备状态")
private String filingStateValue;
@ApiModelProperty("风控状态")
@ -52,5 +55,6 @@ public class LoanFinPolicyVos implements Vo {
@ApiModelProperty("名义/留购价款")
private String nominalPrice;
@ApiModelProperty("是否有其他融")
@JsonProperty("isOtherProduct")
private boolean isOtherProduct;
}

21
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicy/LoanRiskStateQuery.java

@ -0,0 +1,21 @@
package com.yxt.anrui.riskcenter.api.loanfinpolicy;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2023/7/11
**/
@Data
public class LoanRiskStateQuery {
@ApiModelProperty("sids")
private List<String> sidsList = new ArrayList<>();
@ApiModelProperty("riskState为1时走禁用,为0时走启用")
private String riskState;
}

2
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicyrecordapply/LoanFinPolicyApplyDto.java

@ -50,4 +50,6 @@ public class LoanFinPolicyApplyDto implements Dto {
private String createOrgName;
@ApiModelProperty("使用组织全路径")
private String orgSidPath;
@ApiModelProperty("备注")
private String remarks;
}

8
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicyrecordapply/LoanFinPolicyApplyInitListVo.java

@ -36,12 +36,12 @@ public class LoanFinPolicyApplyInitListVo implements Vo {
@ApiModelProperty("保险保证金")
private String depositPremium;
@ApiModelProperty("落户保证金")
private BigDecimal depositSettle;
private String depositSettle;
@ApiModelProperty("名义/留购价款")
private BigDecimal nominalPrice;
private String nominalPrice;
@ApiModelProperty("有效期至")
private String validDateTo;
@ApiModelProperty("是否有其他融政策")
private boolean isOtherPolicy;
private boolean showOtherPolicy;
private String otherPolicySid;
}

4
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicyrecordapply/LoanFinPolicyApplyInitVo.java

@ -18,6 +18,8 @@ import java.util.List;
public class LoanFinPolicyApplyInitVo implements Vo {
private String sid;
private String userSid;
@ApiModelProperty("备注")
private String remarks;
@ApiModelProperty("申请分公司")
private String applyCompany;
@ApiModelProperty("申请部门")
@ -30,7 +32,7 @@ public class LoanFinPolicyApplyInitVo implements Vo {
@ApiModelProperty("任务id")
private String taskId;
@ApiModelProperty("实例id")
private String procInstId;
private String instanceId;
@ApiModelProperty("申请金融产品政策sid")
private List<String> policySids = new ArrayList<>();
@ApiModelProperty("附件路径")

54
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicyrecordapply/LoanFinPolicyRecordApplyFeign.java

@ -1,17 +1,17 @@
package com.yxt.anrui.riskcenter.api.loanfinpolicyrecordapply;
import com.yxt.anrui.riskcenter.api.loanfinbank.LoanFinBankInitVo;
import com.yxt.anrui.riskcenter.api.loanfinbank.LoanFinBankQuery;
import com.yxt.anrui.riskcenter.api.loanfinbank.LoanFinBankVo;
import com.yxt.anrui.riskcenter.api.loanfinpolicyrecordapply.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 io.swagger.annotations.ApiParam;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
/**
* File: BaseFinBankFeign.java <br/>
@ -72,5 +72,53 @@ public interface LoanFinPolicyRecordApplyFeign {
@ResponseBody
public ResultBean<LoanFinPolicyApplyInitVo> fetchDetailsBySid(@PathVariable("sid") String sid);
/**
* 批量删除已测试
*
* @param sids
*/
@ApiOperation("批量删除")
@DeleteMapping("/deleteBySids")
@ResponseBody
public ResultBean deleteBySids(@RequestBody String[] sids);
/******************流程接口**************************************/
@ApiOperation("金融政策产品备案提交")
@PostMapping("/submit")
public ResultBean submitRecordApplication(@RequestBody @Valid SubmitLoanFinPolicyApplyDto dto);
@ApiOperation(value = "办理(同意)")
@PostMapping("/complete")
public ResultBean complete(@Valid @RequestBody LoanFinPolicyApplyCompleteDto dto);
//分公司到风控中心同意
@ApiOperation(value = "办理(同意)")
@PostMapping("/companyToDivisionOperate")
public ResultBean companyToDivisionOperate(@Valid @RequestBody LoanFinPolicyApplyCompleteDto query);
@ApiOperation(value = "撤回流程")
@PostMapping(value = "/revokeProcess")
public ResultBean revokeProcess(@ApiParam(value = "工作流任务相关--请求参数") @RequestBody LoanFinPolicyApplyTaskQuery query);
@ApiOperation(value = "驳回任务")
@PostMapping(value = "/reject")
public ResultBean taskReject(@ApiParam(value = "工作流任务相关--请求参数") @RequestBody LoanFinPolicyApplyTaskQuery query);
@ApiOperation(value = "终止任务")
@PostMapping(value = "/breakProcess")
public ResultBean breakProcess(@RequestBody LoanFinPolicyApplyTaskQuery 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<GetNodeVo>> getNextNodesForSubmit(@Valid @RequestBody GetNodeQuery query);
@ApiOperation(value = "获取上一个环节")
@GetMapping(value = "/getPreviousNodesForReject")
ResultBean<List<GetNodeVo>> getPreviousNodesForReject(@Valid @RequestBody GetNodeQuery query);
}

52
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicyrecordapply/LoanFinPolicyRecordApplyFeignFallback.java

@ -1,11 +1,13 @@
package com.yxt.anrui.riskcenter.api.loanfinpolicyrecordapply;
import com.yxt.anrui.riskcenter.api.loanfinpolicyrecordapply.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;
@Component
@ -31,4 +33,54 @@ public class LoanFinPolicyRecordApplyFeignFallback implements LoanFinPolicyRecor
public ResultBean<LoanFinPolicyApplyInitVo> fetchDetailsBySid(String sid) {
return null;
}
@Override
public ResultBean deleteBySids(String[] sids) {
return null;
}
@Override
public ResultBean submitRecordApplication(SubmitLoanFinPolicyApplyDto dto) {
return null;
}
@Override
public ResultBean complete(LoanFinPolicyApplyCompleteDto dto) {
return null;
}
@Override
public ResultBean companyToDivisionOperate(LoanFinPolicyApplyCompleteDto query) {
return null;
}
@Override
public ResultBean revokeProcess(LoanFinPolicyApplyTaskQuery query) {
return null;
}
@Override
public ResultBean taskReject(LoanFinPolicyApplyTaskQuery query) {
return null;
}
@Override
public ResultBean breakProcess(LoanFinPolicyApplyTaskQuery query) {
return null;
}
@Override
public ResultBean flowRecord(String procInsId) {
return null;
}
@Override
public ResultBean<List<GetNodeVo>> getNextNodesForSubmit(GetNodeQuery query) {
return null;
}
@Override
public ResultBean<List<GetNodeVo>> getPreviousNodesForReject(GetNodeQuery query) {
return null;
}
}

26
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicyrecordapply/flow/GetNodeQuery.java

@ -0,0 +1,26 @@
package com.yxt.anrui.riskcenter.api.loanfinpolicyrecordapply.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 GetNodeQuery 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/loanfinpolicyrecordapply/flow/GetNodeVo.java

@ -0,0 +1,25 @@
package com.yxt.anrui.riskcenter.api.loanfinpolicyrecordapply.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 GetNodeVo 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;
}

40
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicyrecordapply/flow/LoanFinPolicyApplyCompleteDto.java

@ -0,0 +1,40 @@
package com.yxt.anrui.riskcenter.api.loanfinpolicyrecordapply.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 LoanFinPolicyApplyCompleteDto 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;
}

56
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicyrecordapply/flow/LoanFinPolicyApplyTaskQuery.java

@ -0,0 +1,56 @@
package com.yxt.anrui.riskcenter.api.loanfinpolicyrecordapply.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 LoanFinPolicyApplyTaskQuery 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<>();*/
}

19
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicyrecordapply/flow/SubmitLoanFinPolicyApplyDto.java

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

5
anrui-riskcenter/anrui-riskcenter-biz/pom.xml

@ -15,6 +15,11 @@
<version>0.0.1</version>
<dependencies>
<dependency>
<groupId>com.yxt.messagecenter</groupId>
<artifactId>message-center-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.yxt</groupId>
<artifactId>yxt-common-base</artifactId>

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

@ -14,7 +14,7 @@ import org.springframework.cloud.openfeign.EnableFeignClients;
"com.yxt.anrui.riskcenter"
})
@EnableDiscoveryClient
@EnableFeignClients(basePackages = {"com.yxt.anrui.portal","com.yxt.anrui.buscenter","com.yxt.anrui.crm","com.yxt.anrui.base","com.yxt.anrui.flowable"})
@EnableFeignClients(basePackages = {"com.yxt.anrui.portal","com.yxt.anrui.buscenter","com.yxt.messagecenter","com.yxt.anrui.crm","com.yxt.anrui.base","com.yxt.anrui.flowable"})
public class RiskCenterApplication {
public static void main(String[] args) {

17
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinbank/LoanFinBankRest.java

@ -1,6 +1,8 @@
package com.yxt.anrui.riskcenter.biz.loanfinbank;
import com.yxt.anrui.riskcenter.api.loanfinbank.*;
import com.yxt.anrui.riskcenter.api.loanfinpolicy.LoanFinPolicy;
import com.yxt.anrui.riskcenter.biz.loanfinpolicy.LoanFinPolicyService;
import com.yxt.common.base.utils.ExportExcelUtils;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.AppResultData;
@ -15,6 +17,7 @@ import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@ -40,8 +43,8 @@ public class LoanFinBankRest implements LoanFinBankFeign {
private LoanFinBankService loanFinBankService;
@Autowired
private HttpServletResponse response;
// @Autowired
// private LoanFinPolicyService loanFinPolicyService;
@Autowired
private LoanFinPolicyService loanFinPolicyService;
@Override
public ResultBean<PagerVo<LoanFinBankVo>> listPage(PagerQuery<LoanFinBankQuery> pq) {
@ -121,11 +124,11 @@ public class LoanFinBankRest implements LoanFinBankFeign {
ResultBean rb = ResultBean.fireFail();
// int count = baseFinBankService.deleteBySids(sidList);
for (String sid : sids) {
// List<LoanFinPolicy> loanFinPolicy = loanFinPolicyService.selectByBankSid(sid);
// loanFinPolicy.removeAll(Collections.singleton(null));
// if (!loanFinPolicy.isEmpty()) {
// return rb.setMsg("已有金融产品政策使用了该资方,不能删除");
// }
List<LoanFinPolicy> loanFinPolicy = loanFinPolicyService.selectByBankSid(sid);
loanFinPolicy.removeAll(Collections.singleton(null));
if (!loanFinPolicy.isEmpty()) {
return rb.setMsg("已有金融产品政策使用了该资方,不能删除");
}
int count = loanFinBankService.updateBySidDelete(sid);
if (count == 0) {
return rb.setMsg("删除失败");

3
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinotherPolicy/LoanFinOtherPolicyMapper.java

@ -2,6 +2,7 @@ package com.yxt.anrui.riskcenter.biz.loanfinotherPolicy;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yxt.anrui.riskcenter.api.loanfinotherPolicy.LoanFinOtherPolicy;
import com.yxt.anrui.riskcenter.api.loanfinotherPolicy.LoanFinOtherPolicyVos;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@ -18,4 +19,6 @@ public interface LoanFinOtherPolicyMapper extends BaseMapper<LoanFinOtherPolicy>
int deleteMainSid(String sid);
LoanFinOtherPolicy selectByMainSid(String sid);
LoanFinOtherPolicyVos details(String sid);
}

6
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinotherPolicy/LoanFinOtherPolicyMapper.xml

@ -22,4 +22,10 @@
from loan_fin_otherpolicy
where mainPolicySid = #{mainPolicySid}
</select>
<select id="details" resultType="com.yxt.anrui.riskcenter.api.loanfinotherPolicy.LoanFinOtherPolicyVos">
select *
from loan_fin_otherpolicy
where sid = #{sid}
</select>
</mapper>

14
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinotherPolicy/LoanFinOtherPolicyRest.java

@ -1,6 +1,10 @@
package com.yxt.anrui.riskcenter.biz.loanfinotherPolicy;
import com.yxt.anrui.riskcenter.api.loanfinotherPolicy.LoanFinOtherPolicyFeign;
import com.yxt.anrui.riskcenter.api.loanfinotherPolicy.LoanFinOtherPolicyVos;
import com.yxt.common.core.result.ResultBean;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@ -12,5 +16,13 @@ import org.springframework.web.bind.annotation.RestController;
@Api(tags = "其他融产品")
@RestController
@RequestMapping("v1/LoanFinOtherPolicy")
public class LoanFinOtherPolicyRest {
public class LoanFinOtherPolicyRest implements LoanFinOtherPolicyFeign {
@Autowired
private LoanFinOtherPolicyService loanFinOtherPolicyService;
@Override
public ResultBean<LoanFinOtherPolicyVos> details(String sid) {
return loanFinOtherPolicyService.details(sid);
}
}

8
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinotherPolicy/LoanFinOtherPolicyService.java

@ -1,7 +1,9 @@
package com.yxt.anrui.riskcenter.biz.loanfinotherPolicy;
import com.yxt.anrui.riskcenter.api.loanfinotherPolicy.LoanFinOtherPolicy;
import com.yxt.anrui.riskcenter.api.loanfinotherPolicy.LoanFinOtherPolicyVos;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.core.result.ResultBean;
import org.springframework.stereotype.Service;
import java.util.List;
@ -32,4 +34,10 @@ public class LoanFinOtherPolicyService extends MybatisBaseService<LoanFinOtherPo
public LoanFinOtherPolicy selectByMainSid(String sid) {
return baseMapper.selectByMainSid(sid);
}
public ResultBean<LoanFinOtherPolicyVos> details(String sid) {
ResultBean<LoanFinOtherPolicyVos> rb = ResultBean.fireFail();
LoanFinOtherPolicyVos loanFinOtherPolicyVos = baseMapper.details(sid);
return rb.success().setData(loanFinOtherPolicyVos);
}
}

25
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinotherpolicyrecordapply/LoanFinOtherPolicyRecordApplyMapper.java

@ -0,0 +1,25 @@
package com.yxt.anrui.riskcenter.biz.loanfinotherpolicyrecordapply;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.yxt.anrui.riskcenter.api.loanfinotherpolicyrecordapply.LoanFinOtherPolicyApplyVo;
import com.yxt.anrui.riskcenter.api.loanfinotherpolicyrecordapply.LoanFinOtherPolicyRecordApply;
import com.yxt.anrui.riskcenter.api.loanfinpolicyrecordapply.LoanFinPolicyRecordApply;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.Map;
/**
* @description:
* @author:
* @date: 2023/7/6
**/
@Mapper
public interface LoanFinOtherPolicyRecordApplyMapper extends BaseMapper<LoanFinOtherPolicyRecordApply> {
IPage<LoanFinOtherPolicyApplyVo> selectPageVo(IPage<LoanFinOtherPolicyRecordApply> page, @Param(Constants.WRAPPER) QueryWrapper<LoanFinOtherPolicyRecordApply> qw);
int updateFlowFiled(Map<String, Object> map);
}

35
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinotherpolicyrecordapply/LoanFinOtherPolicyRecordApplyMapper.xml

@ -0,0 +1,35 @@
<?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.loanfinotherpolicyrecordapply.LoanFinOtherPolicyRecordApplyMapper">
<update id="updateFlowFiled">
UPDATE loan_fin_policy_record_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="selectPageVo"
resultType="com.yxt.anrui.riskcenter.api.loanfinotherpolicyrecordapply.LoanFinOtherPolicyApplyVo">
SELECT
sid,
applyCompany,
department,
applicant,
applyDate,
nodeState,
remarks
FROM loan_fin_other_policy_record_apply
<where>
${ew.sqlSegment}
</where>
</select>
</mapper>

114
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinotherpolicyrecordapply/LoanFinOtherPolicyRecordApplyRest.java

@ -0,0 +1,114 @@
package com.yxt.anrui.riskcenter.biz.loanfinotherpolicyrecordapply;
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.loanfinotherpolicyrecordapply.*;
import com.yxt.anrui.riskcenter.api.loanfinotherpolicyrecordapply.flow.GetNodeQuery;
import com.yxt.anrui.riskcenter.api.loanfinotherpolicyrecordapply.flow.GetNodeVo;
import com.yxt.anrui.riskcenter.api.loanfinotherpolicyrecordapply.flow.LoanOtherPolicyApplyCompleteDto;
import com.yxt.anrui.riskcenter.api.loanfinotherpolicyrecordapply.flow.LoanOtherPolicyApplyTaskQuery;
import com.yxt.anrui.riskcenter.api.loanfinotherpolicyrecordapply.flow.SubmitLoanOtherPolicyApplyDto;
import com.yxt.anrui.riskcenter.api.loanfinpolicyrecordapply.*;
import com.yxt.anrui.riskcenter.api.loanfinpolicyrecordapply.flow.*;
import com.yxt.anrui.riskcenter.biz.loanfinpolicyrecordapply.LoanFinPolicyRecordApplyService;
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 org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2023/7/6
**/
@Api(tags = "金融产品政策报备")
@RestController
@RequestMapping("v1/loanfinotherpolicyrecordapply")
public class LoanFinOtherPolicyRecordApplyRest implements LoanFinOtherPolicyRecordApplyFeign {
@Autowired
private LoanFinOtherPolicyRecordApplyService loanFinOtherPolicyRecordApplyService;
@Override
public ResultBean<String> save(LoanFinOtherPolicyApplyDto dto) {
return loanFinOtherPolicyRecordApplyService.saveOrUpdateRecord(dto);
}
@Override
public ResultBean<PagerVo<LoanFinOtherPolicyApplyVo>> listPage(PagerQuery<LoanFinOtherPolicyApplyQuery> pq) {
ResultBean<PagerVo<LoanFinOtherPolicyApplyVo>> rb = ResultBean.fireFail();
PagerVo<LoanFinOtherPolicyApplyVo> pv = loanFinOtherPolicyRecordApplyService.listPageVo(pq);
return rb.success().setData(pv);
}
@Override
public ResultBean<LoanFinOtherPolicyApplyInitVo> policyRecordInit(LoanFinOtherPolicyApplyDto dto) {
ResultBean<LoanFinOtherPolicyApplyInitVo> rb = ResultBean.fireFail();
LoanFinOtherPolicyApplyInitVo vo = loanFinOtherPolicyRecordApplyService.policyRecordInit(dto);
return rb.success().setData(vo);
}
@Override
public ResultBean<LoanFinOtherPolicyApplyInitVo> fetchDetailsBySid(String sid) {
ResultBean<LoanFinOtherPolicyApplyInitVo> rb = ResultBean.fireFail();
LoanFinOtherPolicyApplyInitVo vo = loanFinOtherPolicyRecordApplyService.fetchDetailsBySid(sid);
return rb.success().setData(vo);
}
@Override
public ResultBean submitRecordApplication(SubmitLoanOtherPolicyApplyDto dto) {
return loanFinOtherPolicyRecordApplyService.submitRecordApplication(dto);
}
@Override
public ResultBean complete(LoanOtherPolicyApplyCompleteDto dto) {
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(dto, bv);
bv.setModelId(ProcDefEnum.LOANOTHERPOLICYRECORDAPPLY.getProDefId());
return loanFinOtherPolicyRecordApplyService.complete(bv);
}
@Override
public ResultBean companyToDivisionOperate(LoanOtherPolicyApplyCompleteDto query) {
BusinessVariables bv=new BusinessVariables();
BeanUtil.copyProperties(query,bv);
bv.setModelId(ProcDefEnum.LOANOTHERPOLICYRECORDAPPLY.getProDefId());
return loanFinOtherPolicyRecordApplyService.companyToDivisionOperate(bv);
}
@Override
public ResultBean revokeProcess(LoanOtherPolicyApplyTaskQuery query) {
return loanFinOtherPolicyRecordApplyService.revokeProcess(query);
}
@Override
public ResultBean taskReject(LoanOtherPolicyApplyTaskQuery query) {
return loanFinOtherPolicyRecordApplyService.taskReject(query);
}
@Override
public ResultBean breakProcess(LoanOtherPolicyApplyTaskQuery query) {
return null;
}
@Override
public ResultBean flowRecord(String procInsId) {
return null;
}
@Override
public ResultBean<List<GetNodeVo>> getNextNodesForSubmit(GetNodeQuery query) {
return null;
}
@Override
public ResultBean<List<GetNodeVo>> getPreviousNodesForReject(GetNodeQuery query) {
return null;
}
}

563
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinotherpolicyrecordapply/LoanFinOtherPolicyRecordApplyService.java

@ -0,0 +1,563 @@
package com.yxt.anrui.riskcenter.biz.loanfinotherpolicyrecordapply;
import cn.hutool.core.bean.BeanUtil;
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.flowable.api.flow.FlowProcessMapQuery;
import com.yxt.anrui.flowable.api.flow.FlowableFeign;
import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo;
import com.yxt.anrui.flowable.api.flowtask.FlowTaskFeign;
import com.yxt.anrui.flowable.api.flowtask.FlowTaskVo;
import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo;
import com.yxt.anrui.flowable.api.utils.ProcDefEnum;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign;
import com.yxt.anrui.portal.api.sysuser.SysUserFeign;
import com.yxt.anrui.portal.api.sysuser.SysUserVo;
import com.yxt.anrui.portal.api.sysuser.UserRoleQuery;
import com.yxt.anrui.riskcenter.api.loanfinotherPolicy.LoanFinOtherPolicy;
import com.yxt.anrui.riskcenter.api.loanfinotherpolicyrecordapply.*;
import com.yxt.anrui.riskcenter.api.loanfinotherpolicyrecordapply.flow.LoanOtherPolicyApplyTaskQuery;
import com.yxt.anrui.riskcenter.api.loanfinotherpolicyrecordapply.flow.SubmitLoanOtherPolicyApplyDto;
import com.yxt.anrui.riskcenter.api.loanfinpolicy.LoanFinPolicy;
import com.yxt.anrui.riskcenter.api.loanfinpolicyrecordapply.*;
import com.yxt.anrui.riskcenter.api.loanfinpolicyrecordapply.flow.GetNodeQuery;
import com.yxt.anrui.riskcenter.api.loanfinpolicyrecordapply.flow.GetNodeVo;
import com.yxt.anrui.riskcenter.api.loanfinpolicyrecordapply.flow.LoanFinPolicyApplyTaskQuery;
import com.yxt.anrui.riskcenter.api.loanfinpolicyrecordapply.flow.SubmitLoanFinPolicyApplyDto;
import com.yxt.anrui.riskcenter.biz.loanfinotherPolicy.LoanFinOtherPolicyService;
import com.yxt.anrui.riskcenter.biz.loanfinpolicy.LoanFinPolicyService;
import com.yxt.common.base.config.component.FileUploadComponent;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import com.yxt.messagecenter.api.message.MessageFeign;
import com.yxt.messagecenter.api.message.MessageFlowVo;
import com.yxt.messagecenter.api.message.MessageFlowableQuery;
import org.apache.commons.lang3.StringUtils;
import org.apache.tomcat.util.threads.ThreadPoolExecutor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.concurrent.*;
import java.util.stream.Collectors;
/**
* @description:
* @author: dimengzhe
* @date: 2023/7/6
**/
@Service
public class LoanFinOtherPolicyRecordApplyService extends MybatisBaseService<LoanFinOtherPolicyRecordApplyMapper, LoanFinOtherPolicyRecordApply> {
@Autowired
private SysStaffOrgFeign sysStaffOrgFeign;
@Autowired
private SysOrganizationFeign sysOrganizationFeign;
@Autowired
private FileUploadComponent fileUploadComponent;
@Autowired
private LoanFinPolicyService loanFinPolicyService;
@Autowired
private LoanFinOtherPolicyService loanFinOtherPolicyService;
@Autowired
private FlowableFeign flowableFeign;
@Autowired
private MessageFeign messageFeign;
@Autowired
private SysUserFeign sysUserFeign;
@Autowired
private FlowTaskFeign flowTaskFeign;
public ResultBean<String> saveOrUpdateRecord(LoanFinOtherPolicyApplyDto dto) {
ResultBean<String> rb = ResultBean.fireFail();
if (StringUtils.isNotBlank(dto.getSid())) {
String sid = dto.getSid();
LoanFinOtherPolicyRecordApply entity = fetchBySid(sid);
StringBuffer sb = new StringBuffer();
BeanUtil.copyProperties(dto, entity, "id", "sid");
List<String> policySids = dto.getPolicySids();
String policySid = String.join(",", policySids);
entity.setOtherPolicySid(policySid);
if (!dto.getAnnexPaths().isEmpty()) {
String urlPrefix = fileUploadComponent.getUrlPrefix();
for (String filePath : dto.getAnnexPaths()) {
String path = filePath.substring(urlPrefix.length());
sb.append(path).append(",");
}
sb.delete(sb.length() - 1, sb.length());
entity.setAnnexPath(sb.toString());
}
int i = baseMapper.updateById(entity);
if (i > 0) {
return rb.success().setData(sid).setMsg("修改成功");
} else {
return rb.success().setData(sid).setMsg("修改失败");
}
} else {
//新增
LoanFinOtherPolicyRecordApply entity = new LoanFinOtherPolicyRecordApply();
String sid = entity.getSid();
StringBuffer sb = new StringBuffer();
BeanUtil.copyProperties(dto, entity, "id", "sid");
String userSid = dto.getUserSid();
ResultBean<String> orgSidByPath = sysStaffOrgFeign.getOrgSidByPath(dto.getOrgSidPath());
if (orgSidByPath.getSuccess()) {
String userOrgSid = orgSidByPath.getData();
entity.setCreateOrgSid(userOrgSid);
ResultBean<SysOrganizationVo> organizationVo = sysOrganizationFeign.fetchBySid(userOrgSid);
if (organizationVo.getSuccess()) {
SysOrganizationVo organizationVoData = organizationVo.getData();
if (null != organizationVoData) {
entity.setCreateOrgName(organizationVoData.getName());
}
}
}
entity.setCreateBySid(userSid);
entity.setApplicantSid(userSid);
List<String> policySids = dto.getPolicySids();
String policySid = String.join(",", policySids);
entity.setOtherPolicySid(policySid);
if (!dto.getAnnexPaths().isEmpty()) {
String urlPrefix = fileUploadComponent.getUrlPrefix();
for (String filePath : dto.getAnnexPaths()) {
String path = filePath.substring(urlPrefix.length());
sb.append(path).append(",");
}
sb.delete(sb.length() - 1, sb.length());
entity.setAnnexPath(sb.toString());
}
entity.setNodeState("待提交");
int i = baseMapper.insert(entity);
if (i > 0) {
return rb.success().setData(sid).setMsg("保存成功");
} else {
return rb.success().setData(sid).setMsg("保存失败");
}
}
}
private QueryWrapper<LoanFinOtherPolicyRecordApply> createQueryWrapper(LoanFinOtherPolicyApplyQuery query) {
// todo: 这里根据具体业务调整查询条件
// 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName()));
QueryWrapper<LoanFinOtherPolicyRecordApply> qw = new QueryWrapper<>();
if (StringUtils.isNotBlank(query.getApplyCompany())) {
qw.like("applyCompany", query.getApplyCompany());
}
if (StringUtils.isNotBlank(query.getDepartment())) {
qw.like("department", query.getDepartment());
}
if (StringUtils.isNotBlank(query.getApplicant())) {
qw.like("applicant", query.getApplicant());
}
String createStartTime = query.getCreateStartTime();
String createEndTime = query.getCreateEndTime();
qw.apply(org.apache.commons.lang3.StringUtils.isNotEmpty(createStartTime), "date_format (applyDate,'%Y-%m-%d') >= date_format('" + createStartTime + "','%Y-%m-%d')").
apply(org.apache.commons.lang3.StringUtils.isNotEmpty(createEndTime), "date_format (applyDate,'%Y-%m-%d') <= date_format('" + createEndTime + "','%Y-%m-%d')"
);
qw.eq("createOrgSid", query.getCreateOrgSid());
qw.eq("isDelete", 0);
qw.orderByDesc("createTime");
return qw;
}
/**
* 分页列表
*
* @param pq
* @return
*/
public PagerVo<LoanFinOtherPolicyApplyVo> listPageVo(PagerQuery<LoanFinOtherPolicyApplyQuery> pq) {
LoanFinOtherPolicyApplyQuery query = pq.getParams();
QueryWrapper<LoanFinOtherPolicyRecordApply> qw = createQueryWrapper(query);
IPage<LoanFinOtherPolicyRecordApply> page = PagerUtil.queryToPage(pq);
IPage<LoanFinOtherPolicyApplyVo> pagging = baseMapper.selectPageVo(page, qw);
PagerVo<LoanFinOtherPolicyApplyVo> p = PagerUtil.pageToVo(pagging, null);
return p;
}
public LoanFinOtherPolicyApplyInitVo policyRecordInit(LoanFinOtherPolicyApplyDto dto) {
LoanFinOtherPolicyApplyInitVo vo = new LoanFinOtherPolicyApplyInitVo();
BeanUtil.copyProperties(dto, vo);
vo.setApplyDate(new Date());
List<LoanFinOtherPolicyApplyInitListVo> policyList = new ArrayList<>();
List<String> policySids = dto.getPolicySids();
for (String policySid : policySids) {
LoanFinOtherPolicyApplyInitListVo initVo = new LoanFinOtherPolicyApplyInitListVo();
LoanFinOtherPolicy loanFinOtherPolicy = loanFinOtherPolicyService.fetchBySid(policySid);
BeanUtil.copyProperties(loanFinOtherPolicy, initVo);
initVo.setOtherPolicySid(policySid);
policyList.add(initVo);
}
vo.setPolicyList(policyList);
return vo;
}
public LoanFinOtherPolicyApplyInitVo fetchDetailsBySid(String sid) {
LoanFinOtherPolicyApplyInitVo vo = new LoanFinOtherPolicyApplyInitVo();
LoanFinOtherPolicyRecordApply entity = fetchBySid(sid);
String urlPrefix = fileUploadComponent.getUrlPrefix();
BeanUtil.copyProperties(entity, vo);
if (StringUtils.isNotBlank(entity.getProcInstId())) {
vo.setInstanceId(entity.getProcInstId());
}
String policySid = entity.getOtherPolicySid();
List<String> pSids = new ArrayList<>();
String[] policySids = policySid.split(",");
for (String s : policySids) {
pSids.add(s);
}
vo.setPolicySids(pSids);
List<LoanFinOtherPolicyApplyInitListVo> policyList = new ArrayList<>();
for (String psid : policySids) {
LoanFinOtherPolicyApplyInitListVo initVo = new LoanFinOtherPolicyApplyInitListVo();
LoanFinOtherPolicy loanFinOtherPolicy = loanFinOtherPolicyService.fetchBySid(psid);
BeanUtil.copyProperties(loanFinOtherPolicy, initVo);
initVo.setOtherPolicySid(psid);
policyList.add(initVo);
}
if (StringUtils.isNotBlank(entity.getAnnexPath())) {
String annexPath = entity.getAnnexPath();
String[] splitPath = annexPath.split(",");
List<String> annexPaths = new ArrayList<>();
for (String path : splitPath) {
annexPaths.add(urlPrefix + path);
}
vo.setAnnexPaths(annexPaths);
}
vo.setPolicyList(policyList);
return vo;
}
/****************************** 流程代码 ********************************************************/
/**
* 判断提交的流程是否被允许
*
* @param dto
* @return
*/
private synchronized int submitBusinessData(SubmitLoanOtherPolicyApplyDto dto, LoanFinOtherPolicyRecordApply recordApply) {
int r = 0;
if (StringUtils.isBlank(dto.getSid())) {
r = 1;
} else {
if (recordApply != null) {
String businessTaskId = recordApply.getTaskId();
if (StringUtils.isBlank(businessTaskId) && StringUtils.isBlank(dto.getTaskId())) {
//新提交
r = 1;
} else if (StringUtils.isNotBlank(businessTaskId) && businessTaskId.equals(dto.getTaskId())) {
//二次提交//只有数据一致的时候才能进行下一步
r = 2;
}
} else {
r = 3;
}
}
return r;
}
public ResultBean submitRecordApplication(SubmitLoanOtherPolicyApplyDto dto) {
ResultBean rb = ResultBean.fireFail();
LoanFinOtherPolicyRecordApply recordApply = fetchBySid(dto.getSid());
int r = submitBusinessData(dto, recordApply);
if (r == 3) {
return rb.setMsg("该申请不存在");
}
if (r == 0) {
return rb.setMsg("操作失败!提交的数据不一致");
}
//新增修改保存
ResultBean<String> resultBean = saveOrUpdateRecord(dto);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
String businessSid = resultBean.getData();
//创建BusinessVariables实体对象
BusinessVariables bv = new BusinessVariables();
//流程中的参数赋值
Map<String, Object> variables = BeanUtil.beanToMap(dto);
Map<String, Object> appMap = new HashMap<>();
//若有网关,则赋值网关中判断的字段。
variables.put("businessSid", businessSid);
appMap.put("sid", businessSid);
variables.put("app", appMap);
LoanFinOtherPolicyRecordApply recordApply1 = fetchBySid(businessSid);
//用户的部门全路径sid
bv.setOrgSidPath(recordApply1.getOrgSidPath());
//业务sid
bv.setBusinessSid(businessSid);
//用户sid
bv.setUserSid(dto.getUserSid());
bv.setFormVariables(variables);
//流程定义id
bv.setModelId(ProcDefEnum.LOANOTHERPOLICYRECORDAPPLY.getProDefId());
if (r == 1) {
//流程定义id
bv.setModelId(ProcDefEnum.LOANOTHERPOLICYRECORDAPPLY.getProDefId());
ResultBean<UpdateFlowFieldVo> voResultBean = flowableFeign.startProcess(bv);
if (!voResultBean.getSuccess()) {
return rb.setMsg(voResultBean.getMsg());
}
UpdateFlowFieldVo ufVo = voResultBean.getData();
int i = updateFlowFiled(BeanUtil.beanToMap(ufVo));
if (i > 0) {
List<String> policySids = dto.getPolicySids();
for (String policySid : policySids) {
LoanFinOtherPolicy loanFinOtherPolicy = loanFinOtherPolicyService.fetchBySid(policySid);
loanFinOtherPolicy.setFilingState(2);
loanFinOtherPolicyService.updateById(loanFinOtherPolicy);
}
}
//==================================添加线程
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(() -> {
//极光推送
// busVehicleApply.set(fetchBySid(businessSid))
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(businessSid);
messageFlowableQuery.setModuleName("其他融产品备案");
SysUserVo userVo = sysUserFeign.fetchBySid(recordApply1.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");
}
bv.setTaskId(recordApply.getTaskId());
bv.setTaskDefKey(recordApply.getNodeSid());
bv.setComment("重新提交");
bv.setInstanceId(dto.getInstanceId());
return complete(bv);
}
return rb;
}
private int updateFlowFiled(Map<String, Object> map) {
return baseMapper.updateFlowFiled(map);
}
public ResultBean complete(BusinessVariables bv) {
ResultBean rb = ResultBean.fireFail();
String businessSid = bv.getBusinessSid();
LoanFinOtherPolicyRecordApply recordApply = this.fetchBySid(businessSid);
if (bv.getTaskId().equals(recordApply.getTaskId())) {
bv.setOrgSidPath(recordApply.getOrgSidPath());
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.handleProsess(bv);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
int i = updateFlowFiled(BeanUtil.beanToMap(resultBean.getData()));
if ("Event_end".equals(resultBean.getData().getTaskDefKey())) {
// LoanFinPolicyApplyInitVo entity = fetchDetailsBySid(businessSid);
// List<String> policySids = entity.getPolicySids();
// for (String policySid : policySids) {
// LoanFinPolicy loanFinPolicy = loanFinPolicyService.fetchBySid(policySid);
// loanFinPolicy.setFilingState(1);
// loanFinPolicyService.updateById(loanFinPolicy);
// }
}
return rb.success().setData(resultBean.getData());
} else {
return rb.setMsg("操作失败!提交的数据不一致");
}
}
public ResultBean companyToDivisionOperate(BusinessVariables bv) {
ResultBean rb = ResultBean.fireFail();
LoanFinOtherPolicyRecordApply otherPolicyRecordApply = fetchBySid(bv.getBusinessSid());
bv.setOrgSidPath(otherPolicyRecordApply.getOrgSidPath());
Map<String, Object> variables = bv.getFormVariables();
otherPolicyRecordApply = fetchBySid(bv.getBusinessSid());
FlowProcessMapQuery flowProcessMapQuery = new FlowProcessMapQuery();
flowProcessMapQuery.setProDefKey(otherPolicyRecordApply.getProcDefId());
flowProcessMapQuery.setVariables(variables);
variables = flowableFeign.getMap(flowProcessMapQuery).getData();
bv.setFormVariables(variables);
//=======================================
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo
List<GetNodeVo> voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), GetNodeVo.class)).collect(Collectors.toList());
List<String> candidateGroups = voList.get(0).getCandidateGroups();
UserRoleQuery userRoleQuery = new UserRoleQuery();
userRoleQuery.setRoleSid(candidateGroups.get(0));
List<SysUserVo> sysUserVos = sysUserFeign.getOtherOrgRoleUser(userRoleQuery).getData();
StringBuilder nextNodeUserSids = new StringBuilder();
if (sysUserVos.size() > 0) {
for (SysUserVo sysUserVo : sysUserVos) {
String sid = sysUserVo.getSid();
nextNodeUserSids.append(sid).append(",");
}
}
if (StringUtils.isBlank(nextNodeUserSids)) {
return rb.setMsg("下一环节暂无操作人员");
}
String substring = nextNodeUserSids.substring(0, nextNodeUserSids.lastIndexOf(","));
bv.setNextNodeUserSids(substring);
if (bv.getTaskId().equals(otherPolicyRecordApply.getTaskId())) {
variables = new HashMap<>();
Map<String, Object> appMap = new HashMap<>();
appMap.put("sid", bv.getBusinessSid());
variables.put("app", appMap);
//========================================
otherPolicyRecordApply = fetchBySid(bv.getBusinessSid());
flowProcessMapQuery = new FlowProcessMapQuery();
flowProcessMapQuery.setProDefKey(otherPolicyRecordApply.getProcDefId());
flowProcessMapQuery.setVariables(variables);
variables = flowableFeign.getMap(flowProcessMapQuery).getData();
//=======================================
bv.setFormVariables(variables);
ResultBean<UpdateFlowFieldVo> resultBean1 = flowableFeign.handleProsess(bv);
if (!resultBean1.getSuccess()) {
return rb.setMsg(resultBean1.getMsg());
}
updateFlowFiled(BeanUtil.beanToMap(resultBean1.getData()));
//极光推送
UpdateFlowFieldVo ufVo = resultBean1.getData();
otherPolicyRecordApply = fetchBySid(bv.getBusinessSid());
SysUserVo userVo = sysUserFeign.fetchBySid(otherPolicyRecordApply.getCreateBySid()).getData();
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
messageFlowVo.setProcInsId(otherPolicyRecordApply.getProcInstId());
messageFlowVo.setProcDefId(otherPolicyRecordApply.getProcDefId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(bv.getBusinessSid());
messageFlowableQuery.setModuleName("其他融产品备案");
messageFlowableQuery.setMsgContent(userVo.getName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
messageFlowableQuery.setMsgTitle("其他融产品备案");
messageFeign.pushMessage(messageFlowableQuery);
//修改备案状态
LoanFinOtherPolicyApplyInitVo finOtherPolicyApplyInitVo = fetchDetailsBySid(bv.getBusinessSid());
List<String> policySids = finOtherPolicyApplyInitVo.getPolicySids();
for (String policySid : policySids) {
LoanFinOtherPolicy loanFinOtherPolicy = loanFinOtherPolicyService.fetchBySid(policySid);
loanFinOtherPolicy.setFilingState(1);
loanFinOtherPolicyService.updateById(loanFinOtherPolicy);
}
return rb.success().setData(resultBean1.getData());
} else {
return rb.setMsg("操作失败!提交的数据不一致");
}
}
public ResultBean revokeProcess(LoanOtherPolicyApplyTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
if (StringUtils.isBlank(query.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
LoanFinOtherPolicyRecordApply recordApply = fetchBySid(query.getBusinessSid());
String businessTaskId = recordApply.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(LoanOtherPolicyApplyTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
String businessSid = query.getBusinessSid();
LoanFinOtherPolicyRecordApply recordApply = fetchBySid(businessSid);
if (recordApply == null) {
return rb.setMsg("该申请不存在");
}
String businessTaskId = recordApply.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if (businessTaskId.equals(query.getTaskId())) {
if (StringUtils.isBlank(query.getComment())) {
return rb.setMsg("请填写意见");
}
if (StringUtils.isBlank(query.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
Map<String, Object> variables = new HashMap<>();
Map<String, Object> appMap = new HashMap<>();
appMap.put("sid", businessSid);
variables.put("app", appMap);
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);
//极光推送
recordApply = fetchBySid(businessSid);
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
String procId = recordApply.getProcInstId();
messageFlowVo.setProcInsId(procId);
messageFlowVo.setProcDefId(recordApply.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(recordApply.getCreateBySid()).getData();
if (userVo != null) {
if (StringUtils.isNotBlank(userVo.getName())) {
messageFlowableQuery.setMsgContent(userVo.getName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
}
}
}
messageFlowableQuery.setMsgTitle("其他融产品备案");
ResultBean<String> stringResultBean = messageFeign.pushMessage(messageFlowableQuery);
return rb.success();
}
}
return rb.setMsg("操作失败!提交的数据不一致!");
}
}

6
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinpolicy/LoanFinPolicyMapper.java

@ -8,6 +8,9 @@ import com.yxt.anrui.riskcenter.api.loanfinpolicy.LoanFinPolicy;
import com.yxt.anrui.riskcenter.api.loanfinpolicy.LoanFinPolicyVos;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* @description:
@ -17,4 +20,7 @@ import org.apache.ibatis.annotations.Param;
@Mapper
public interface LoanFinPolicyMapper extends BaseMapper<LoanFinPolicy> {
IPage<LoanFinPolicyVos> pagerList(IPage<LoanFinPolicy> page, @Param(Constants.WRAPPER) QueryWrapper<LoanFinPolicy> qw);
@Select("select * from loan_fin_policy where bankSid = #{sid}")
List<LoanFinPolicy> selectByBankSid(String sid);
}

7
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinpolicy/LoanFinPolicyMapper.xml

@ -12,7 +12,7 @@
when 0 then '正常'
end as riskStateValue,
case lfp.useSate
when 1 then '用'
when 1 then '用'
when 0 then '正常'
end as useSateValue,
lfp.validDateTo,
@ -24,7 +24,7 @@
lfp.vehTypeValue,
lfp.period,
lfp.yearRatio,
lfp.serviceAmountTypeKey,
lfp.serviceAmountTypeValue,
lfp.serviceAmount,
lfp.downPayRatioLeast,
lfp.vehAccidentAmount,
@ -34,7 +34,8 @@
case lfp.isOtherProduct
when 1 then true
when 0 then false
end as isOtherProduct
end as isOtherProduct,
lfop.sid as otherPolicySid
from loan_fin_policy lfp
left join loan_fin_otherpolicy lfop on lfp.sid = lfop.mainPolicySid
<where>

9
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinpolicy/LoanFinPolicyRest.java

@ -38,8 +38,13 @@ public class LoanFinPolicyRest implements LoanFinPolicyFeign {
}
@Override
public ResultBean setState(String sid, String useState) {
return loanFinPolicyService.setState(sid, useState);
public ResultBean setState(LoanFinPolicyStateQuery query) {
return loanFinPolicyService.setState(query);
}
@Override
public ResultBean setRiskState(LoanRiskStateQuery query) {
return loanFinPolicyService.setRiskState(query);
}
@Override

229
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinpolicy/LoanFinPolicyService.java

@ -21,8 +21,10 @@ 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 org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
@ -74,12 +76,15 @@ public class LoanFinPolicyService extends MybatisBaseService<LoanFinPolicyMapper
loanFinPolicy.setCreateOrgName(useOrgName);
loanFinPolicy.setCreateBySid(dto.getUserSid());
loanFinPolicy.setOrgSidPath(orgPath);
if (dto.isOtherProduct()) {
if (dto.isOtherProduct()) {//有其他融
loanFinPolicy.setIsOtherProduct(1);
LoanFinOtherPolicy loanFinOtherPolicy = new LoanFinOtherPolicy();
BeanUtil.copyProperties(dto, loanFinOtherPolicy, "sid");
LoanFinOtherPolicyDto loanFinOtherPolicyDto = dto.getLoanFinOtherPolicy();
BeanUtil.copyProperties(loanFinOtherPolicyDto, loanFinOtherPolicy);
//其它融名称=资方+产品类别+最高融资比例+期数
String name = loanFinOtherPolicy.getBankShortName() + loanFinOtherPolicy.getProductTypeValue() + loanFinOtherPolicy.getMaxLoanRatio() + loanFinOtherPolicy.getPeriod();
loanFinOtherPolicy.setOtherPolicyName(name);
loanFinOtherPolicy.setMainPolicySid(loanFinPolicy.getSid());
loanFinOtherPolicy.setUseDeptSids(deptSids);
loanFinOtherPolicy.setUseDeptNames(deptNames);
@ -118,12 +123,15 @@ public class LoanFinPolicyService extends MybatisBaseService<LoanFinPolicyMapper
} else {
loanFinPolicy.setIsOtherProduct(1);
LoanFinOtherPolicy loanFinOtherPolicy = loanFinOtherPolicyService.selectByMainSid(sid);
if (loanFinOtherPolicy == null) {
if (loanFinOtherPolicy != null) {
BeanUtil.copyProperties(dto, loanFinOtherPolicy, "sid");
LoanFinOtherPolicyDto loanFinOtherPolicyDto = dto.getLoanFinOtherPolicy();
BeanUtil.copyProperties(loanFinOtherPolicyDto, loanFinOtherPolicy);
loanFinOtherPolicy.setUseDeptSids(deptSids);
loanFinOtherPolicy.setUseDeptNames(deptNames);
//其它融名称=资方+产品类别+最高融资比例+期数
String name = loanFinOtherPolicy.getBankShortName() + loanFinOtherPolicy.getProductTypeValue() + loanFinOtherPolicy.getMaxLoanRatio() + loanFinOtherPolicy.getPeriod();
loanFinOtherPolicy.setOtherPolicyName(name);
loanFinOtherPolicyService.updateById(loanFinOtherPolicy);
} else {
loanFinOtherPolicy = new LoanFinOtherPolicy();
@ -133,6 +141,13 @@ public class LoanFinPolicyService extends MybatisBaseService<LoanFinPolicyMapper
loanFinOtherPolicy.setMainPolicySid(loanFinPolicy.getSid());
loanFinOtherPolicy.setUseDeptSids(deptSids);
loanFinOtherPolicy.setUseDeptNames(deptNames);
loanFinOtherPolicy.setCreateOrgSid(useOrgSid);
loanFinOtherPolicy.setUseOrgName(useOrgName);
loanFinOtherPolicy.setCreateOrgName(useOrgName);
loanFinOtherPolicy.setCreateBySid(dto.getUserSid());
//其它融名称=资方+产品类别+最高融资比例+期数
String name = loanFinOtherPolicy.getBankShortName() + loanFinOtherPolicy.getProductTypeValue() + loanFinOtherPolicy.getMaxLoanRatio() + loanFinOtherPolicy.getPeriod();
loanFinOtherPolicy.setOtherPolicyName(name);
loanFinOtherPolicyService.insert(loanFinOtherPolicy);
}
}
@ -149,6 +164,8 @@ public class LoanFinPolicyService extends MybatisBaseService<LoanFinPolicyMapper
return rb.setMsg("该金融产品政策不存在");
}
BeanUtil.copyProperties(loanFinPolicy, loanFinPolicyVo);
loanFinPolicyVo.setOrgPath(loanFinPolicy.getOrgSidPath());
loanFinPolicyVo.setUserSid(loanFinPolicy.getCreateBySid());
if (loanFinPolicy.getIsOtherProduct() == 1) {
loanFinPolicyVo.setOtherProduct(true);
LoanFinOtherPolicyVo loanFinOtherPolicyVo = new LoanFinOtherPolicyVo();
@ -176,19 +193,28 @@ public class LoanFinPolicyService extends MybatisBaseService<LoanFinPolicyMapper
return rb.success();
}
public ResultBean setState(String sid, String useState) {
@Transactional(rollbackFor = Exception.class)
public ResultBean setState(LoanFinPolicyStateQuery query) {
ResultBean rb = ResultBean.fireFail();
//ToDo:是否可以停用或开启,需补充条件
LoanFinPolicy loanFinPolicy = fetchBySid(sid);
if (loanFinPolicy == null) {
return rb.setMsg("该金融产品政策不存在");
List<String> sidsList = query.getSidsList();
sidsList.removeAll(Collections.singleton(null));
if (sidsList.isEmpty()) {
return rb.setMsg("请选择数据");
}
loanFinPolicy.setUseSate(Integer.valueOf(useState).intValue());
baseMapper.updateById(loanFinPolicy);
LoanFinOtherPolicy loanFinOtherPolicy = loanFinOtherPolicyService.selectByMainSid(sid);
if (loanFinOtherPolicy != null) {
loanFinOtherPolicy.setUseSate(Integer.valueOf(useState).intValue());
loanFinOtherPolicyService.updateById(loanFinOtherPolicy);
String useState = query.getUseState();
for (String sid : sidsList) {
LoanFinPolicy loanFinPolicy = fetchBySid(sid);
if (loanFinPolicy == null) {
return rb.setMsg("选择中包含金融产品政策不存在的数据,请刷新后操作");
}
loanFinPolicy.setUseSate(Integer.valueOf(useState).intValue());
baseMapper.updateById(loanFinPolicy);
LoanFinOtherPolicy loanFinOtherPolicy = loanFinOtherPolicyService.selectByMainSid(sid);
if (loanFinOtherPolicy != null) {
loanFinOtherPolicy.setUseSate(Integer.valueOf(useState).intValue());
loanFinOtherPolicyService.updateById(loanFinOtherPolicy);
}
}
return rb.success();
}
@ -198,40 +224,35 @@ public class LoanFinPolicyService extends MybatisBaseService<LoanFinPolicyMapper
QueryWrapper<LoanFinPolicy> qw = new QueryWrapper<>();
if (query != null) {
//========================================数据授权开始
if (StringUtils.isNotBlank(query.getMenuUrl())) {
//=======================
PrivilegeQuery privilegeQuery = new PrivilegeQuery();
privilegeQuery.setOrgPath(query.getOrgPath());
privilegeQuery.setMenuUrl(query.getMenuUrl());
privilegeQuery.setUserSid(query.getUserSid());
ResultBean<String> defaultIdReltBean = sysUserFeign.selectPrivilegeLevel(privilegeQuery);
if (StringUtils.isNotBlank(defaultIdReltBean.getData())) {
//数据权限ID(1集团、2事业部、3分公司、4部门、5个人)
String orgSidPath = query.getOrgPath();
orgSidPath = orgSidPath + "/";
int i1 = orgSidPath.indexOf("/");
int i2 = orgSidPath.indexOf("/", i1 + 1);
int i3 = orgSidPath.indexOf("/", i2 + 1);
int i4 = orgSidPath.indexOf("/", i3 + 1);
String orgLevelKey = defaultIdReltBean.getData();
if ("1".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i1);
qw.like("lfp.orgSidPath", orgSidPath);
} else if ("2".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i2);
qw.like("lfp.orgSidPath", orgSidPath);
} else if ("3".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i3);
qw.like("lfp.orgSidPath", orgSidPath);
} else if ("4".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i4);
qw.like("lfp.orgSidPath", orgSidPath);
} else if ("5".equals(orgLevelKey)) {
qw.eq("lfp.createBySid", query.getUserSid());
} else {
PagerVo<LoanFinPolicyVos> p = new PagerVo<>();
return p;
}
PrivilegeQuery privilegeQuery = new PrivilegeQuery();
privilegeQuery.setOrgPath(query.getOrgPath());
privilegeQuery.setMenuSid(query.getMenuSid());
privilegeQuery.setMenuUrl(query.getMenuUrl());
privilegeQuery.setUserSid(query.getUserSid());
ResultBean<String> defaultIdReltBean = sysUserFeign.selectPrivilegeLevel(privilegeQuery);
if (StringUtils.isNotBlank(defaultIdReltBean.getData())) {
//数据权限ID(1集团、2事业部、3分公司、4部门、5个人)
String orgSidPath = query.getOrgPath();
orgSidPath = orgSidPath + "/";
int i1 = orgSidPath.indexOf("/");
int i2 = orgSidPath.indexOf("/", i1 + 1);
int i3 = orgSidPath.indexOf("/", i2 + 1);
int i4 = orgSidPath.indexOf("/", i3 + 1);
String orgLevelKey = defaultIdReltBean.getData();
if ("1".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i1);
qw.like("lfp.orgSidPath", orgSidPath);
} else if ("2".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i2);
qw.like("lfp.orgSidPath", orgSidPath);
} else if ("3".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i3);
qw.like("lfp.orgSidPath", orgSidPath);
} else if ("4".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i4);
qw.like("lfp.orgSidPath", orgSidPath);
} else if ("5".equals(orgLevelKey)) {
qw.eq("lfp.createBySid", query.getUserSid());
} else {
PagerVo<LoanFinPolicyVos> p = new PagerVo<>();
return p;
@ -240,41 +261,97 @@ public class LoanFinPolicyService extends MybatisBaseService<LoanFinPolicyMapper
PagerVo<LoanFinPolicyVos> p = new PagerVo<>();
return p;
}
//报备状态
if (StringUtils.isNotBlank(query.getFilingStateKey())) {
qw.eq("lfp.filingState", query.getFilingStateKey());
}
//风控状态
if (StringUtils.isNotBlank(query.getRiskStateKey())) {
qw.eq("lfp.riskState", query.getRiskStateKey());
}
//使用状态
if (StringUtils.isNotBlank(query.getUseSateKey())) {
qw.eq("lfp.useSate", query.getUseSateKey());
}
//分公司
if (StringUtils.isNotBlank(query.getUseOrgName())) {
qw.like("lfp.useOrgName", query.getUseOrgName());
}
//业务类型
if (StringUtils.isNotBlank(query.getBusTypeKey())) {
qw.eq("lfp.busTypeKey", query.getBusTypeKey());
}
//车辆大类
//车辆功能
//适用销售部门
//产品政策名称
//有效期至开始
//有效期至结束
//期数
//最低首付比例开始
//最低首付比例结束
} else {
PagerVo<LoanFinPolicyVos> p = new PagerVo<>();
return p;
}
//报备状态
if (StringUtils.isNotBlank(query.getFilingStateKey())) {
qw.eq("lfp.filingState", query.getFilingStateKey());
}
//风控状态
if (StringUtils.isNotBlank(query.getRiskStateKey())) {
qw.eq("lfp.riskState", query.getRiskStateKey());
}
//使用状态
if (StringUtils.isNotBlank(query.getUseSateKey())) {
qw.eq("lfp.useSate", query.getUseSateKey());
}
//分公司
if (StringUtils.isNotBlank(query.getUseOrgName())) {
qw.like("lfp.useOrgName", query.getUseOrgName());
}
//业务类型
if (StringUtils.isNotBlank(query.getBusTypeKey())) {
qw.eq("lfp.busTypeKey", query.getBusTypeKey());
}
//车辆大类
if (StringUtils.isNotBlank(query.getVehCategoryKey())) {
qw.eq("lfp.vehCategoryKey", query.getVehCategoryKey());
}
//车辆功能
if (StringUtils.isNotBlank(query.getVehTypeKey())) {
qw.eq("lfp.vehTypeKey", query.getVehTypeKey());
}
//适用销售部门
if (StringUtils.isNotBlank(query.getUseDeptNames())) {
qw.like("lfp.useDeptNames", query.getUseDeptNames());
}
//产品政策名称
if (StringUtils.isNotBlank(query.getPolicyName())) {
qw.like("lfp.policeName", query.getPolicyName());
}
//有效期至开始~ //有效期至结束
if (StringUtils.isNotBlank(query.getValidDateToStart()) && StringUtils.isNotBlank(query.getValidDateToEnd())) {
qw.between("lfp.validDateTo", query.getValidDateToStart(), query.getValidDateToEnd());
}
//期数
if (StringUtils.isNotBlank(query.getPeriod())) {
qw.eq("lfp.periodKey", query.getPeriod());
}
//最低首付比例 至
if (StringUtils.isNotBlank(query.getDownPayRatioLeastStart()) && StringUtils.isNotBlank(query.getDownPayRatioLeastEnd())) {
qw.between("lfp.downPayRatioLeast", query.getDownPayRatioLeastStart(), query.getDownPayRatioLeastEnd());
}
IPage<LoanFinPolicy> page = PagerUtil.queryToPage(pagerQuery);
IPage<LoanFinPolicyVos> pagging = baseMapper.pagerList(page, qw);
PagerVo<LoanFinPolicyVos> p = PagerUtil.pageToVo(pagging, null);
return p;
}
@Transactional(rollbackFor = Exception.class)
public ResultBean setRiskState(LoanRiskStateQuery query) {
ResultBean rb = ResultBean.fireFail();
//ToDo:是否可以停用或开启,需补充条件
List<String> sidsList = query.getSidsList();
sidsList.removeAll(Collections.singleton(null));
if (sidsList.isEmpty()) {
return rb.setMsg("请选择数据");
}
String riskState = query.getRiskState();
for (String sid : sidsList) {
LoanFinPolicy loanFinPolicy = fetchBySid(sid);
if (loanFinPolicy == null) {
return rb.setMsg("选择中包含金融产品政策不存在的数据,请刷新后操作");
}
loanFinPolicy.setRiskState(Integer.valueOf(riskState).intValue());
baseMapper.updateById(loanFinPolicy);
LoanFinOtherPolicy loanFinOtherPolicy = loanFinOtherPolicyService.selectByMainSid(sid);
if (loanFinOtherPolicy != null) {
loanFinOtherPolicy.setRiskState(Integer.valueOf(riskState).intValue());
loanFinOtherPolicyService.updateById(loanFinOtherPolicy);
}
}
return rb.success();
}
/**
* 根据资方sid查询金融产品政策
* @param sid
* @return
*/
public List<LoanFinPolicy> selectByBankSid(String sid) {
return baseMapper.selectByBankSid(sid);
}
}

8
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinpolicyrecordapply/LoanFinPolicyRecordApplyMapper.java

@ -8,6 +8,9 @@ import com.yxt.anrui.riskcenter.api.loanfinpolicyrecordapply.LoanFinPolicyApplyV
import com.yxt.anrui.riskcenter.api.loanfinpolicyrecordapply.LoanFinPolicyRecordApply;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
import java.util.Map;
/**
* @description:
@ -17,4 +20,9 @@ import org.apache.ibatis.annotations.Param;
@Mapper
public interface LoanFinPolicyRecordApplyMapper extends BaseMapper<LoanFinPolicyRecordApply> {
IPage<LoanFinPolicyApplyVo> selectPageVo(IPage<LoanFinPolicyRecordApply> page, @Param(Constants.WRAPPER) QueryWrapper<LoanFinPolicyRecordApply> qw);
int updateFlowFiled(Map<String, Object> map);
@Update("update loan_fin_policy_record_apply set isDelete = 1 where sid =#{sid}")
int updateBySidDelete(String sid);
}

16
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinpolicyrecordapply/LoanFinPolicyRecordApplyMapper.xml

@ -1,6 +1,22 @@
<?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.loanfinpolicyrecordapply.LoanFinPolicyRecordApplyMapper">
<update id="updateFlowFiled">
UPDATE loan_fin_policy_record_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="selectPageVo"
resultType="com.yxt.anrui.riskcenter.api.loanfinpolicyrecordapply.LoanFinPolicyApplyVo">
SELECT

80
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinpolicyrecordapply/LoanFinPolicyRecordApplyRest.java

@ -1,7 +1,10 @@
package com.yxt.anrui.riskcenter.biz.loanfinpolicyrecordapply;
import com.yxt.anrui.riskcenter.api.loanfinbank.LoanFinBankVo;
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.loanfinpolicyrecordapply.*;
import com.yxt.anrui.riskcenter.api.loanfinpolicyrecordapply.flow.*;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
@ -10,6 +13,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @description:
* @author: dimengzhe
@ -24,13 +29,8 @@ public class LoanFinPolicyRecordApplyRest implements LoanFinPolicyRecordApplyFei
private LoanFinPolicyRecordApplyService loanFinPolicyRecordApplyService;
@Override
public ResultBean save(LoanFinPolicyApplyDto dto) {
ResultBean rb = ResultBean.fireFail();
int i = loanFinPolicyRecordApplyService.saveOrUpdateRecord(dto);
if (i > 0) {
return rb.success().setMsg("操作成功");
}
return rb.success().setMsg("操作失败");
public ResultBean<String> save(LoanFinPolicyApplyDto dto) {
return loanFinPolicyRecordApplyService.saveOrUpdateRecord(dto);
}
@Override
@ -54,5 +54,69 @@ public class LoanFinPolicyRecordApplyRest implements LoanFinPolicyRecordApplyFei
return rb.success().setData(vo);
}
@Override
public ResultBean deleteBySids(String[] sids) {
ResultBean rb = ResultBean.fireFail();
// int count = baseFinBankService.deleteBySids(sidList);
for (String sid : sids) {
int count = loanFinPolicyRecordApplyService.updateBySidDelete(sid);
if (count == 0) {
return rb.setMsg("删除失败");
}
}
return ResultBean.fireSuccess().setMsg("删除成功");
}
/********************************* 流程代码 **************************************************/
@Override
public ResultBean submitRecordApplication(SubmitLoanFinPolicyApplyDto dto) {
return loanFinPolicyRecordApplyService.submitRecordApplication(dto);
}
@Override
public ResultBean complete(LoanFinPolicyApplyCompleteDto dto) {
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(dto, bv);
bv.setModelId(ProcDefEnum.LOANFINPOLICYRECORDAPPLY.getProDefId());
return loanFinPolicyRecordApplyService.complete(bv);
}
@Override
public ResultBean companyToDivisionOperate(LoanFinPolicyApplyCompleteDto query) {
BusinessVariables bv=new BusinessVariables();
BeanUtil.copyProperties(query,bv);
bv.setModelId(ProcDefEnum.LOANFINPOLICYRECORDAPPLY.getProDefId());
return loanFinPolicyRecordApplyService.companyToDivisionOperate(bv);
}
@Override
public ResultBean revokeProcess(LoanFinPolicyApplyTaskQuery query) {
return loanFinPolicyRecordApplyService.revokeProcess(query);
}
@Override
public ResultBean taskReject(LoanFinPolicyApplyTaskQuery query) {
return loanFinPolicyRecordApplyService.taskReject(query);
}
@Override
public ResultBean breakProcess(LoanFinPolicyApplyTaskQuery query) {
return loanFinPolicyRecordApplyService.breakProcess(query);
}
@Override
public ResultBean flowRecord(String procInsId) {
return loanFinPolicyRecordApplyService.flowRecord(procInsId);
}
@Override
public ResultBean<List<GetNodeVo>> getNextNodesForSubmit(GetNodeQuery query) {
return loanFinPolicyRecordApplyService.getNextNodesForSubmit(query);
}
@Override
public ResultBean<List<GetNodeVo>> getPreviousNodesForReject(GetNodeQuery query) {
return loanFinPolicyRecordApplyService.getPreviousNodesForReject(query);
}
}

510
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinpolicyrecordapply/LoanFinPolicyRecordApplyService.java

@ -1,17 +1,28 @@
package com.yxt.anrui.riskcenter.biz.loanfinpolicyrecordapply;
import cn.hutool.core.bean.BeanUtil;
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.flowable.api.flow.FlowProcessMapQuery;
import com.yxt.anrui.flowable.api.flow.FlowableFeign;
import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo;
import com.yxt.anrui.flowable.api.flowtask.FlowTaskFeign;
import com.yxt.anrui.flowable.api.flowtask.FlowTaskVo;
import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo;
import com.yxt.anrui.flowable.api.utils.ProcDefEnum;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign;
import com.yxt.anrui.riskcenter.api.loanfinbank.LoanFinBank;
import com.yxt.anrui.riskcenter.api.loanfinbank.LoanFinBankQuery;
import com.yxt.anrui.riskcenter.api.loanfinbank.LoanFinBankVo;
import com.yxt.anrui.portal.api.sysuser.SysUserFeign;
import com.yxt.anrui.portal.api.sysuser.SysUserVo;
import com.yxt.anrui.portal.api.sysuser.UserRoleQuery;
import com.yxt.anrui.riskcenter.api.loanfinotherPolicy.LoanFinOtherPolicy;
import com.yxt.anrui.riskcenter.api.loanfinpolicy.LoanFinPolicy;
import com.yxt.anrui.riskcenter.api.loanfinpolicyrecordapply.*;
import com.yxt.anrui.riskcenter.api.loanfinpolicyrecordapply.flow.*;
import com.yxt.anrui.riskcenter.biz.loanfinotherPolicy.LoanFinOtherPolicyService;
import com.yxt.anrui.riskcenter.biz.loanfinpolicy.LoanFinPolicyService;
import com.yxt.common.base.config.component.FileUploadComponent;
@ -20,14 +31,17 @@ import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import com.yxt.messagecenter.api.message.MessageFeign;
import com.yxt.messagecenter.api.message.MessageFlowVo;
import com.yxt.messagecenter.api.message.MessageFlowableQuery;
import org.apache.commons.lang3.StringUtils;
import org.apache.tomcat.util.threads.ThreadPoolExecutor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.*;
import java.util.concurrent.*;
import java.util.stream.Collectors;
/**
* @description:
@ -47,7 +61,14 @@ public class LoanFinPolicyRecordApplyService extends MybatisBaseService<LoanFinP
private LoanFinPolicyService loanFinPolicyService;
@Autowired
private LoanFinOtherPolicyService loanFinOtherPolicyService;
@Autowired
private FlowableFeign flowableFeign;
@Autowired
private MessageFeign messageFeign;
@Autowired
private SysUserFeign sysUserFeign;
@Autowired
private FlowTaskFeign flowTaskFeign;
/**
* 保存新增
@ -55,7 +76,8 @@ public class LoanFinPolicyRecordApplyService extends MybatisBaseService<LoanFinP
* @param dto
* @return
*/
public int saveOrUpdateRecord(LoanFinPolicyApplyDto dto) {
public ResultBean<String> saveOrUpdateRecord(LoanFinPolicyApplyDto dto) {
ResultBean<String> rb = ResultBean.fireFail();
if (StringUtils.isNotBlank(dto.getSid())) {
String sid = dto.getSid();
LoanFinPolicyRecordApply entity = fetchBySid(sid);
@ -74,10 +96,15 @@ public class LoanFinPolicyRecordApplyService extends MybatisBaseService<LoanFinP
entity.setAnnexPath(sb.toString());
}
int i = baseMapper.updateById(entity);
return i;
if (i > 0) {
return rb.success().setData(sid).setMsg("修改成功");
} else {
return rb.success().setData(sid).setMsg("修改失败");
}
} else {
//新增
LoanFinPolicyRecordApply entity = new LoanFinPolicyRecordApply();
String sid = entity.getSid();
StringBuffer sb = new StringBuffer();
BeanUtil.copyProperties(dto, entity, "id", "sid");
String userSid = dto.getUserSid();
@ -109,7 +136,11 @@ public class LoanFinPolicyRecordApplyService extends MybatisBaseService<LoanFinP
}
entity.setNodeState("待提交");
int i = baseMapper.insert(entity);
return i;
if (i > 0) {
return rb.success().setData(sid).setMsg("保存成功");
} else {
return rb.success().setData(sid).setMsg("保存失败");
}
}
}
@ -161,6 +192,7 @@ public class LoanFinPolicyRecordApplyService extends MybatisBaseService<LoanFinP
public LoanFinPolicyApplyInitVo policyRecordInit(LoanFinPolicyApplyDto dto) {
LoanFinPolicyApplyInitVo vo = new LoanFinPolicyApplyInitVo();
BeanUtil.copyProperties(dto, vo);
vo.setPolicySids(new ArrayList<>());
vo.setApplyDate(new Date());
List<LoanFinPolicyApplyInitListVo> policyList = new ArrayList<>();
List<String> policySids = dto.getPolicySids();
@ -171,7 +203,11 @@ public class LoanFinPolicyRecordApplyService extends MybatisBaseService<LoanFinP
initVo.setPolicySid(policySid);
List<LoanFinOtherPolicy> otherPolicy = loanFinOtherPolicyService.getOtherPolicyByMainSid(policySid);
otherPolicy.removeAll(Collections.singleton(null));
initVo.setOtherPolicy(!otherPolicy.isEmpty());
initVo.setShowOtherPolicy(!otherPolicy.isEmpty());
for (LoanFinOtherPolicy loanFinOtherPolicy : otherPolicy) {
String otherPolicySid = loanFinOtherPolicy.getSid();
initVo.setOtherPolicySid(otherPolicySid);
}
policyList.add(initVo);
}
vo.setPolicyList(policyList);
@ -183,22 +219,29 @@ public class LoanFinPolicyRecordApplyService extends MybatisBaseService<LoanFinP
LoanFinPolicyRecordApply entity = fetchBySid(sid);
String urlPrefix = fileUploadComponent.getUrlPrefix();
BeanUtil.copyProperties(entity, vo);
if (StringUtils.isNotBlank(entity.getProcInstId())) {
vo.setInstanceId(entity.getProcInstId());
}
String policySid = entity.getPolicySid();
List<String> pSids = new ArrayList<>();
String[] policySids = policySid.split(",");
for (String s : policySids) {
pSids.add(s);
}
vo.setPolicySids(pSids);
// for (String s : policySids) {
// pSids.add(s);
// }
// vo.setPolicySids(pSids);
List<LoanFinPolicyApplyInitListVo> policyList = new ArrayList<>();
for (String psid : policySids) {
LoanFinPolicyApplyInitListVo initVo = new LoanFinPolicyApplyInitListVo();
LoanFinPolicy loanFinPolicy = loanFinPolicyService.fetchBySid(psid);
BeanUtil.copyProperties(loanFinPolicy, initVo);
initVo.setPolicySid(psid);
List<LoanFinOtherPolicy> otherPolicy = loanFinOtherPolicyService.getOtherPolicyByMainSid(policySid);
List<LoanFinOtherPolicy> otherPolicy = loanFinOtherPolicyService.getOtherPolicyByMainSid(psid);
otherPolicy.removeAll(Collections.singleton(null));
initVo.setOtherPolicy(!otherPolicy.isEmpty());
initVo.setShowOtherPolicy(!otherPolicy.isEmpty());
for (LoanFinOtherPolicy loanFinOtherPolicy : otherPolicy) {
String otherPolicySid = loanFinOtherPolicy.getSid();
initVo.setOtherPolicySid(otherPolicySid);
}
policyList.add(initVo);
}
if (StringUtils.isNotBlank(entity.getAnnexPath())) {
@ -213,4 +256,435 @@ public class LoanFinPolicyRecordApplyService extends MybatisBaseService<LoanFinP
vo.setPolicyList(policyList);
return vo;
}
/****************************** 流程代码 ********************************************************/
/**
* 判断提交的流程是否被允许
*
* @param dto
* @return
*/
private synchronized int submitBusinessData(SubmitLoanFinPolicyApplyDto dto, LoanFinPolicyRecordApply recordApply) {
int r = 0;
if (StringUtils.isBlank(dto.getSid())) {
r = 1;
} else {
if (recordApply != null) {
String businessTaskId = recordApply.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 dto
* @return
*/
public ResultBean submitRecordApplication(SubmitLoanFinPolicyApplyDto dto) {
ResultBean rb = ResultBean.fireFail();
LoanFinPolicyRecordApply recordApply = fetchBySid(dto.getSid());
int r = submitBusinessData(dto, recordApply);
if (r == 3) {
return rb.setMsg("该申请不存在");
}
if (r == 0) {
return rb.setMsg("操作失败!提交的数据不一致");
}
//新增修改保存
ResultBean<String> resultBean = saveOrUpdateRecord(dto);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
String businessSid = resultBean.getData();
//创建BusinessVariables实体对象
BusinessVariables bv = new BusinessVariables();
//流程中的参数赋值
Map<String, Object> variables = BeanUtil.beanToMap(dto);
Map<String, Object> appMap = new HashMap<>();
//若有网关,则赋值网关中判断的字段。
variables.put("businessSid", businessSid);
appMap.put("sid", businessSid);
variables.put("app", appMap);
LoanFinPolicyRecordApply recordApply1 = fetchBySid(businessSid);
//用户的部门全路径sid
bv.setOrgSidPath(recordApply1.getOrgSidPath());
//业务sid
bv.setBusinessSid(businessSid);
//用户sid
bv.setUserSid(dto.getUserSid());
bv.setFormVariables(variables);
//流程定义id
bv.setModelId(ProcDefEnum.LOANFINPOLICYRECORDAPPLY.getProDefId());
if (r == 1) {
//流程定义id
bv.setModelId(ProcDefEnum.LOANFINPOLICYRECORDAPPLY.getProDefId());
ResultBean<UpdateFlowFieldVo> voResultBean = flowableFeign.startProcess(bv);
if (!voResultBean.getSuccess()) {
return rb.setMsg(voResultBean.getMsg());
}
UpdateFlowFieldVo ufVo = voResultBean.getData();
int i = updateFlowFiled(BeanUtil.beanToMap(ufVo));
if (i > 0) {
List<String> policySids = dto.getPolicySids();
for (String policySid : policySids) {
LoanFinPolicy loanFinPolicy = loanFinPolicyService.fetchBySid(policySid);
loanFinPolicy.setFilingState(2);
loanFinPolicyService.updateById(loanFinPolicy);
}
}
//==================================添加线程
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(() -> {
//极光推送
// busVehicleApply.set(fetchBySid(businessSid))
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(businessSid);
messageFlowableQuery.setModuleName("金融产品政策备案");
SysUserVo userVo = sysUserFeign.fetchBySid(recordApply1.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");
}
bv.setTaskId(recordApply.getTaskId());
bv.setTaskDefKey(recordApply.getNodeSid());
bv.setComment("重新提交");
bv.setInstanceId(dto.getInstanceId());
return complete(bv);
}
return rb;
}
/**
* 更新流程相关的状态
*
* @param map
* @return
*/
private int updateFlowFiled(Map<String, Object> map) {
return baseMapper.updateFlowFiled(map);
}
public ResultBean complete(BusinessVariables bv) {
ResultBean rb = ResultBean.fireFail();
String businessSid = bv.getBusinessSid();
LoanFinPolicyRecordApply recordApply = this.fetchBySid(businessSid);
if (bv.getTaskId().equals(recordApply.getTaskId())) {
bv.setOrgSidPath(recordApply.getOrgSidPath());
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.handleProsess(bv);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
int i = updateFlowFiled(BeanUtil.beanToMap(resultBean.getData()));
if ("Event_end".equals(resultBean.getData().getTaskDefKey())) {
// LoanFinPolicyApplyInitVo entity = fetchDetailsBySid(businessSid);
// List<String> policySids = entity.getPolicySids();
// for (String policySid : policySids) {
// LoanFinPolicy loanFinPolicy = loanFinPolicyService.fetchBySid(policySid);
// loanFinPolicy.setFilingState(1);
// loanFinPolicyService.updateById(loanFinPolicy);
// }
}
return rb.success().setData(resultBean.getData());
} else {
return rb.setMsg("操作失败!提交的数据不一致");
}
}
public ResultBean revokeProcess(LoanFinPolicyApplyTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
if (StringUtils.isBlank(query.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
LoanFinPolicyRecordApply recordApply = fetchBySid(query.getBusinessSid());
String businessTaskId = recordApply.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(LoanFinPolicyApplyTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
String businessSid = query.getBusinessSid();
LoanFinPolicyRecordApply recordApply = fetchBySid(businessSid);
if (recordApply == null) {
return rb.setMsg("该申请不存在");
}
String businessTaskId = recordApply.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if (businessTaskId.equals(query.getTaskId())) {
if (StringUtils.isBlank(query.getComment())) {
return rb.setMsg("请填写意见");
}
if (StringUtils.isBlank(query.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
Map<String, Object> variables = new HashMap<>();
Map<String, Object> appMap = new HashMap<>();
appMap.put("sid", businessSid);
variables.put("app", appMap);
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);
//极光推送
recordApply = fetchBySid(businessSid);
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
String procId = recordApply.getProcInstId();
messageFlowVo.setProcInsId(procId);
messageFlowVo.setProcDefId(recordApply.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(recordApply.getCreateBySid()).getData();
if (userVo != null) {
if (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(LoanFinPolicyApplyTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
if (StringUtils.isBlank(query.getInstanceId())) {
return rb.setMsg("参数错误:instanceId");
}
if (StringUtils.isBlank(query.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
if (StringUtils.isBlank(query.getComment())) {
return rb.setMsg("请填写意见");
}
LoanFinPolicyRecordApply recordApply = fetchBySid(query.getBusinessSid());
String businessTaskId = recordApply.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if (query.getUserSid().equals(recordApply.getCreateBySid())) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.breakProcess(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
Map<String, Object> map = BeanUtil.beanToMap(resultBean.getData());
updateFlowFiled(map);
return rb.success().setData(resultBean.getData());
} else {
if (businessTaskId.equals(query.getTaskId())) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.breakProcess(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
Map<String, Object> map = BeanUtil.beanToMap(resultBean.getData());
updateFlowFiled(map);
return rb.success().setData(resultBean.getData());
}
}
}
return rb.setMsg("操作失败!提交的数据不一致!");
}
public ResultBean flowRecord(String procInsId) {
return flowTaskFeign.businessFlowRecord(procInsId);
}
public ResultBean<List<GetNodeVo>> getNextNodesForSubmit(GetNodeQuery query) {
ResultBean<List<GetNodeVo>> rb = ResultBean.fireFail();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
//流程中的参数赋值、若有网关,则赋值网关中判断的字段。
Map<String, Object> variables = new HashMap<>();
//根据业务sid查询排产信息
LoanFinPolicyRecordApply recordApply = fetchBySid(query.getBusinessSid());
bv.setFormVariables(variables);
bv.setModelId(recordApply.getProcDefId());
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo
List<GetNodeVo> voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), GetNodeVo.class)).collect(Collectors.toList());
return rb.success().setData(voList);
}
public ResultBean<List<GetNodeVo>> getPreviousNodesForReject(GetNodeQuery query) {
ResultBean<List<GetNodeVo>> rb = ResultBean.fireFail();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
//流程中的参数赋值、若有网关,则赋值网关中判断的字段。
Map<String, Object> variables = new HashMap<>();
//根据业务sid查询排产信息
LoanFinPolicyRecordApply recordApply = fetchBySid(query.getBusinessSid());
bv.setFormVariables(variables);
bv.setModelId(recordApply.getProcDefId());
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo
List<GetNodeVo> voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), GetNodeVo.class)).collect(Collectors.toList());
return rb.success().setData(voList);
}
/**
* 从分公司到风控中心
*
* @param bv
* @return
*/
public ResultBean companyToDivisionOperate(BusinessVariables bv) {
ResultBean rb = ResultBean.fireFail();
LoanFinPolicyRecordApply finPolicyRecordApply = fetchBySid(bv.getBusinessSid());
bv.setOrgSidPath(finPolicyRecordApply.getOrgSidPath());
Map<String, Object> variables = bv.getFormVariables();
finPolicyRecordApply = fetchBySid(bv.getBusinessSid());
FlowProcessMapQuery flowProcessMapQuery = new FlowProcessMapQuery();
flowProcessMapQuery.setProDefKey(finPolicyRecordApply.getProcDefId());
flowProcessMapQuery.setVariables(variables);
variables = flowableFeign.getMap(flowProcessMapQuery).getData();
bv.setFormVariables(variables);
//=======================================
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo
List<GetNodeVo> voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), GetNodeVo.class)).collect(Collectors.toList());
List<String> candidateGroups = voList.get(0).getCandidateGroups();
UserRoleQuery userRoleQuery = new UserRoleQuery();
userRoleQuery.setRoleSid(candidateGroups.get(0));
List<SysUserVo> sysUserVos = sysUserFeign.getOtherOrgRoleUser(userRoleQuery).getData();
StringBuilder nextNodeUserSids = new StringBuilder();
if (sysUserVos.size() > 0) {
for (SysUserVo sysUserVo : sysUserVos) {
String sid = sysUserVo.getSid();
nextNodeUserSids.append(sid).append(",");
}
}
if (StringUtils.isBlank(nextNodeUserSids)) {
return rb.setMsg("下一环节暂无操作人员");
}
String substring = nextNodeUserSids.substring(0, nextNodeUserSids.lastIndexOf(","));
bv.setNextNodeUserSids(substring);
if (bv.getTaskId().equals(finPolicyRecordApply.getTaskId())) {
variables = new HashMap<>();
Map<String, Object> appMap = new HashMap<>();
appMap.put("sid", bv.getBusinessSid());
variables.put("app", appMap);
//========================================
finPolicyRecordApply = fetchBySid(bv.getBusinessSid());
flowProcessMapQuery = new FlowProcessMapQuery();
flowProcessMapQuery.setProDefKey(finPolicyRecordApply.getProcDefId());
flowProcessMapQuery.setVariables(variables);
variables = flowableFeign.getMap(flowProcessMapQuery).getData();
//=======================================
bv.setFormVariables(variables);
ResultBean<UpdateFlowFieldVo> resultBean1 = flowableFeign.handleProsess(bv);
if (!resultBean1.getSuccess()) {
return rb.setMsg(resultBean1.getMsg());
}
updateFlowFiled(BeanUtil.beanToMap(resultBean1.getData()));
//极光推送
UpdateFlowFieldVo ufVo = resultBean1.getData();
finPolicyRecordApply = fetchBySid(bv.getBusinessSid());
SysUserVo userVo = sysUserFeign.fetchBySid(finPolicyRecordApply.getCreateBySid()).getData();
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
messageFlowVo.setProcInsId(finPolicyRecordApply.getProcInstId());
messageFlowVo.setProcDefId(finPolicyRecordApply.getProcDefId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(bv.getBusinessSid());
messageFlowableQuery.setModuleName("金融产品政策备案");
messageFlowableQuery.setMsgContent(userVo.getName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
messageFlowableQuery.setMsgTitle("金融产品政策备案");
messageFeign.pushMessage(messageFlowableQuery);
//修改备案状态
LoanFinPolicyApplyInitVo entity = fetchDetailsBySid(bv.getBusinessSid());
List<String> policySids = entity.getPolicySids();
for (String policySid : policySids) {
LoanFinPolicy loanFinPolicy = loanFinPolicyService.fetchBySid(policySid);
loanFinPolicy.setFilingState(1);
loanFinPolicyService.updateById(loanFinPolicy);
}
return rb.success().setData(resultBean1.getData());
} else {
return rb.setMsg("操作失败!提交的数据不一致");
}
}
/**
* 逻辑删除
* @param sid
* @return
*/
public int updateBySidDelete(String sid) {
return baseMapper.updateBySidDelete(sid);
}
}

46
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/policyrecordapply/AppFinPolicyApplyInitVo.java

@ -0,0 +1,46 @@
package com.yxt.anrui.terminal.api.risk.policyrecordapply;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* @author Administrator
* @description
* @date 2023/7/7 14:06
*/
@Data
public class AppFinPolicyApplyInitVo implements Vo {
private String sid;
@ApiModelProperty("备注")
private String remarks;
@ApiModelProperty("申请分公司")
private String applyCompany;
@ApiModelProperty("申请部门")
private String department;
@ApiModelProperty("申请人")
private String applicant;
@ApiModelProperty("申请日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date applyDate;
@ApiModelProperty("任务id")
private String taskId;
@ApiModelProperty("实例id")
@JsonProperty("procInsId")
private String instanceId;
// @ApiModelProperty("申请金融产品政策sid")
// private List<String> policySids = new ArrayList<>();
@ApiModelProperty("附件路径")
private List<String> annexPaths = new ArrayList<>();
@ApiModelProperty("使用组织全路径")
@JsonProperty("orgPath")
private String orgSidPath;
private List<AppPolicyApplyInitListVo> policyList = new ArrayList<>();
}

47
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/policyrecordapply/AppPolicyApplyInitListVo.java

@ -0,0 +1,47 @@
package com.yxt.anrui.terminal.api.risk.policyrecordapply;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author Administrator
* @description
* @date 2023/7/7 14:07
*/
@Data
public class AppPolicyApplyInitListVo implements Vo {
@ApiModelProperty("政策sid")
private String policySid;
@ApiModelProperty("政策名称")
private String policyName;
@ApiModelProperty("车辆功能value")
private String vehTypeValue;
@ApiModelProperty("期数")
private int period;
@ApiModelProperty("标准年利率(%)")
private String yearRatio;
@ApiModelProperty("服务费类型value")
private String serviceAmountTypeValue;
@ApiModelProperty("服务费")
private String serviceAmount;
@ApiModelProperty("最低首付比例(%)")
private String downPayRatioLeast;
@ApiModelProperty("单车意外险")
private String vehAccidentAmount;
@ApiModelProperty("保险保证金")
private String depositPremium;
@ApiModelProperty("落户保证金")
private BigDecimal depositSettle;
@ApiModelProperty("名义/留购价款")
private BigDecimal nominalPrice;
@ApiModelProperty("有效期至")
private String validDateTo;
@ApiModelProperty("是否有其他融政策")
private boolean showOtherPolicy;
@ApiModelProperty("其他融sid")
private String otherPolicySid;
}

72
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/policyrecordapply/PolicyRecordApplyFeign.java

@ -0,0 +1,72 @@
package com.yxt.anrui.terminal.api.risk.policyrecordapply;
import com.yxt.anrui.terminal.api.autoservice.deliveryConfirm.flowable.DeliveryConfirmTaskQuery;
import com.yxt.anrui.terminal.api.autoservice.deliveryConfirm.flowable.DeliveryFlowableQuery;
import com.yxt.anrui.terminal.api.risk.policyrecordapply.flow.CompletePolicyDto;
import com.yxt.anrui.terminal.api.risk.policyrecordapply.flow.PolicyFlowableQuery;
import com.yxt.anrui.terminal.api.risk.policyrecordapply.flow.PolicyTaskQuery;
import com.yxt.common.core.result.ResultBean;
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;
/**
* @Author
* @Date
* @Description
*/
@Api(tags = "金融方案")
@FeignClient(
contextId = "terminal-PolicyRecordApply",
name = "anrui-terminal",
path = "/risk/v1/policyrecordapply",
fallback = PolicyRecordApplyFeignFallback.class)
public interface PolicyRecordApplyFeign {
/**
* 金融产品政策报备初始化
* @param sid
*/
@ApiOperation("金融产品政策报备详情")
@GetMapping("/fetchDetailsBySid/{sid}")
@ResponseBody
public ResultBean<AppFinPolicyApplyInitVo> fetchDetailsBySid(@PathVariable("sid") String sid);
@ApiOperation("办理")
@PutMapping("/agreePolicyApplyInfo")
@ResponseBody
ResultBean agreePolicyApplyInfo(@Valid @RequestBody CompletePolicyDto dto);
@ApiOperation("从分公司到风控中心办理")
@PutMapping("/agreeCompanyToDivisionOperate")
@ResponseBody
ResultBean agreeCompanyToDivisionOperate(@Valid @RequestBody CompletePolicyDto dto);
@ApiOperation("驳回")
@PutMapping("/rejectPolicyApplyInfo")
@ResponseBody
ResultBean rejectPolicyApplyInfo(@Valid @RequestBody PolicyTaskQuery query);
@ApiOperation("撤回")
@PutMapping("/recallPolicyApplyInfo")
@ResponseBody
ResultBean recallPolicyApplyInfo(@Valid @RequestBody PolicyTaskQuery query);
@ApiOperation("终止")
@PutMapping("/stopPolicyApplyInfo")
@ResponseBody
ResultBean stopPolicyApplyInfo(@Valid @RequestBody PolicyTaskQuery query);
@ApiOperation("获取流程操作标题")
@GetMapping("/getFlowOperateTitle")
@ResponseBody
ResultBean<String> getFlowOperateTitle(@Valid @SpringQueryMap PolicyFlowableQuery query);
}

50
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/policyrecordapply/PolicyRecordApplyFeignFallback.java

@ -0,0 +1,50 @@
package com.yxt.anrui.terminal.api.risk.policyrecordapply;
import com.yxt.anrui.terminal.api.risk.policyrecordapply.flow.CompletePolicyDto;
import com.yxt.anrui.terminal.api.risk.policyrecordapply.flow.PolicyFlowableQuery;
import com.yxt.anrui.terminal.api.risk.policyrecordapply.flow.PolicyTaskQuery;
import com.yxt.common.core.result.ResultBean;
import org.springframework.stereotype.Component;
/**
* @Author dimengzhe
* @Date 2023/3/21 15:19
* @Description
*/
@Component
public class PolicyRecordApplyFeignFallback implements PolicyRecordApplyFeign{
@Override
public ResultBean<AppFinPolicyApplyInitVo> fetchDetailsBySid(String sid) {
return null;
}
@Override
public ResultBean agreePolicyApplyInfo(CompletePolicyDto dto) {
return null;
}
@Override
public ResultBean agreeCompanyToDivisionOperate(CompletePolicyDto dto) {
return null;
}
@Override
public ResultBean rejectPolicyApplyInfo(PolicyTaskQuery query) {
return null;
}
@Override
public ResultBean recallPolicyApplyInfo(PolicyTaskQuery query) {
return null;
}
@Override
public ResultBean stopPolicyApplyInfo(PolicyTaskQuery query) {
return null;
}
@Override
public ResultBean<String> getFlowOperateTitle(PolicyFlowableQuery query) {
return null;
}
}

38
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/policyrecordapply/flow/CompletePolicyDto.java

@ -0,0 +1,38 @@
package com.yxt.anrui.terminal.api.risk.policyrecordapply.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/7/7 14:35
*/
@Data
public class CompletePolicyDto implements Dto {
private static final long serialVersionUID = -1634177638238174363L;
@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;
}

21
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/policyrecordapply/flow/PolicyFlowableQuery.java

@ -0,0 +1,21 @@
package com.yxt.anrui.terminal.api.risk.policyrecordapply.flow;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
@Data
public class PolicyFlowableQuery 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;
}

44
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/policyrecordapply/flow/PolicyTaskQuery.java

@ -0,0 +1,44 @@
package com.yxt.anrui.terminal.api.risk.policyrecordapply.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;
@Data
public class PolicyTaskQuery implements Query {
private static final long serialVersionUID = -6061453269533691015L;
/**
* 终止驳回撤回
*/
@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;
}

64
anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/policyrecordapply/PolicyRecordApplyRest.java

@ -0,0 +1,64 @@
package com.yxt.anrui.terminal.biz.risk.policyrecordapply;
import com.yxt.anrui.terminal.api.risk.policyrecordapply.AppFinPolicyApplyInitVo;
import com.yxt.anrui.terminal.api.risk.policyrecordapply.PolicyRecordApplyFeign;
import com.yxt.anrui.terminal.api.risk.policyrecordapply.flow.CompletePolicyDto;
import com.yxt.anrui.terminal.api.risk.policyrecordapply.flow.PolicyFlowableQuery;
import com.yxt.anrui.terminal.api.risk.policyrecordapply.flow.PolicyTaskQuery;
import com.yxt.anrui.terminal.api.risk.solutions.AppSolutionsDetailsVo;
import com.yxt.anrui.terminal.api.risk.solutions.AppSolutionsDto;
import com.yxt.anrui.terminal.api.risk.solutions.SolutionsFeign;
import com.yxt.common.core.result.ResultBean;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @Author
* @Date 2023/3/25 9:39
* @Description
*/
@Api(tags = "金融方案")
@Controller
@RequestMapping("/risk/v1/policyrecordapply")
public class PolicyRecordApplyRest implements PolicyRecordApplyFeign {
@Autowired
private PolicyRecordApplyService policyRecordApplyService;
@Override
public ResultBean<AppFinPolicyApplyInitVo> fetchDetailsBySid(String sid) {
return policyRecordApplyService.fetchDetailsBySid(sid);
}
@Override
public ResultBean agreePolicyApplyInfo(CompletePolicyDto dto) {
return policyRecordApplyService.agreePolicyApplyInfo(dto);
}
@Override
public ResultBean agreeCompanyToDivisionOperate(CompletePolicyDto dto) {
return policyRecordApplyService.agreeCompanyToDivisionOperate(dto);
}
@Override
public ResultBean rejectPolicyApplyInfo(PolicyTaskQuery query) {
return policyRecordApplyService.rejectPolicyApplyInfo(query);
}
@Override
public ResultBean recallPolicyApplyInfo(PolicyTaskQuery query) {
return policyRecordApplyService.recallPolicyApplyInfo(query);
}
@Override
public ResultBean stopPolicyApplyInfo(PolicyTaskQuery query) {
return policyRecordApplyService.stopPolicyApplyInfo(query);
}
@Override
public ResultBean<String> getFlowOperateTitle(PolicyFlowableQuery query) {
return policyRecordApplyService.getFlowOperateTitle(query);
}
}

160
anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/policyrecordapply/PolicyRecordApplyService.java

@ -0,0 +1,160 @@
package com.yxt.anrui.terminal.biz.risk.policyrecordapply;
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.loanfinpolicyrecordapply.LoanFinPolicyApplyInitVo;
import com.yxt.anrui.riskcenter.api.loanfinpolicyrecordapply.LoanFinPolicyRecordApplyFeign;
import com.yxt.anrui.riskcenter.api.loanfinpolicyrecordapply.flow.LoanFinPolicyApplyCompleteDto;
import com.yxt.anrui.riskcenter.api.loanfinpolicyrecordapply.flow.LoanFinPolicyApplyTaskQuery;
import com.yxt.anrui.terminal.api.risk.policyrecordapply.AppFinPolicyApplyInitVo;
import com.yxt.anrui.terminal.api.risk.policyrecordapply.flow.CompletePolicyDto;
import com.yxt.anrui.terminal.api.risk.policyrecordapply.flow.PolicyFlowableQuery;
import com.yxt.anrui.terminal.api.risk.policyrecordapply.flow.PolicyTaskQuery;
import com.yxt.common.core.result.ResultBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.List;
/**
* @Author
* @Date 2023/3/25 9:40
* @Description
*/
@Service
public class PolicyRecordApplyService {
@Autowired
private LoanFinPolicyRecordApplyFeign loanFinPolicyRecordApplyFeign;
@Autowired
private SysUserFeign sysUserFeign;
@Autowired
private SysStaffOrgFeign sysStaffOrgFeign;
public ResultBean<AppFinPolicyApplyInitVo> fetchDetailsBySid(String sid) {
ResultBean<AppFinPolicyApplyInitVo> rb = ResultBean.fireFail();
AppFinPolicyApplyInitVo vo = new AppFinPolicyApplyInitVo();
ResultBean<LoanFinPolicyApplyInitVo> resultBean = loanFinPolicyRecordApplyFeign.fetchDetailsBySid(sid);
if (resultBean.getSuccess()) {
LoanFinPolicyApplyInitVo data = resultBean.getData();
BeanUtil.copyProperties(data, vo);
}
return rb.success().setData(vo);
}
public ResultBean agreePolicyApplyInfo(CompletePolicyDto 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();
LoanFinPolicyApplyCompleteDto loanFinPolicyApplyCompleteDto = new LoanFinPolicyApplyCompleteDto();
BeanUtil.copyProperties(dto, loanFinPolicyApplyCompleteDto);
loanFinPolicyApplyCompleteDto.setOrgSidPath(orgSidPath);
ResultBean resultBean = loanFinPolicyRecordApplyFeign.complete(loanFinPolicyApplyCompleteDto);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
return rb.success().setData(resultBean.getData());
}
public ResultBean rejectPolicyApplyInfo(PolicyTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
LoanFinPolicyApplyTaskQuery taskQuery = new LoanFinPolicyApplyTaskQuery();
BeanUtil.copyProperties(query, taskQuery);
ResultBean resultBean = loanFinPolicyRecordApplyFeign.taskReject(taskQuery);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
return rb.success().setData(resultBean.getData());
}
public ResultBean recallPolicyApplyInfo(PolicyTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
LoanFinPolicyApplyTaskQuery taskQuery = new LoanFinPolicyApplyTaskQuery();
BeanUtil.copyProperties(query, taskQuery);
ResultBean resultBean = loanFinPolicyRecordApplyFeign.revokeProcess(taskQuery);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
return rb.success().setData(resultBean.getData());
}
public ResultBean stopPolicyApplyInfo(PolicyTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
LoanFinPolicyApplyTaskQuery taskQuery = new LoanFinPolicyApplyTaskQuery();
BeanUtil.copyProperties(query, taskQuery);
ResultBean resultBean = loanFinPolicyRecordApplyFeign.breakProcess(taskQuery);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
return rb.success().setData(resultBean.getData());
}
public ResultBean<String> getFlowOperateTitle(PolicyFlowableQuery query) {
ResultBean<String> rb = ResultBean.fireFail();
//0 上一环节 1下一环节
int next = query.getNext();
com.yxt.anrui.riskcenter.api.loanfinpolicyrecordapply.flow.GetNodeQuery getNodeQuery = new com.yxt.anrui.riskcenter.api.loanfinpolicyrecordapply.flow.GetNodeQuery();
BeanUtil.copyProperties(query, getNodeQuery);
String data = "";
if (next == 0) {
ResultBean<List<com.yxt.anrui.riskcenter.api.loanfinpolicyrecordapply.flow.GetNodeVo>> getPreviousNodesForReject = loanFinPolicyRecordApplyFeign.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<com.yxt.anrui.riskcenter.api.loanfinpolicyrecordapply.flow.GetNodeVo>> getNextNodesForSubmit = loanFinPolicyRecordApplyFeign.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 agreeCompanyToDivisionOperate(CompletePolicyDto 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();
LoanFinPolicyApplyCompleteDto loanFinPolicyApplyCompleteDto = new LoanFinPolicyApplyCompleteDto();
BeanUtil.copyProperties(dto, loanFinPolicyApplyCompleteDto);
loanFinPolicyApplyCompleteDto.setOrgSidPath(orgSidPath);
ResultBean resultBean = loanFinPolicyRecordApplyFeign.companyToDivisionOperate(loanFinPolicyApplyCompleteDto);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
return rb.success().setData(resultBean.getData());
}
}

109
doc/databases/risk_center.sql

@ -1022,110 +1022,6 @@ CREATE TABLE `loan_solutions_detail`
DEFAULT CHARSET = utf8 COMMENT ='金融方案表(费用明细)';
-- 金融产品政策
DROP TABLE IF EXISTS `loan_fin_policy`;
CREATE TABLE `loan_fin_policy`
(
`id` int(32) NOT NULL AUTO_INCREMENT COMMENT 'id',
`sid` varchar(64) NOT NULL COMMENT 'sid',
`lockVersion` int(32) DEFAULT '0' COMMENT '版本锁',
`createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
`isEnable` int(32) DEFAULT '1' COMMENT '是否可用:1可用,0不可用',
`state` int(32) DEFAULT '1' COMMENT '状态',
`isDelete` int(32) DEFAULT '0' COMMENT '是否删除:0未删除,1已删除',
`remarks` varchar(255) DEFAULT NULL COMMENT '备注',
`createBySid` varchar(64) DEFAULT NULL COMMENT '创建人sid',
`updateBySid` varchar(64) DEFAULT NULL COMMENT '修改人sid',
`policyName` VARCHAR(255) DEFAULT NULL COMMENT '政策名称:组合(资方简称+(担保/非担保)+首付比例+保证金比例+是否打包),如中车(担保)30+0打包',
`bankSid` VARCHAR(255) DEFAULT NULL COMMENT '资方sid',
`bankShortName` VARCHAR(255) DEFAULT NULL COMMENT '资方名称',
`busTypeKey` VARCHAR(255) DEFAULT NULL COMMENT '业务类型key',
`busTypeValue` VARCHAR(255) DEFAULT NULL COMMENT '业务类型value',
`vehCategoryKey` VARCHAR(255) DEFAULT NULL COMMENT '车辆大类key',
`vehCategoryValue` VARCHAR(255) DEFAULT NULL COMMENT '车辆大类value',
`vehTypeKey` VARCHAR(255) DEFAULT NULL COMMENT '车辆功能key',
`vehTypeValue` VARCHAR(255) DEFAULT NULL COMMENT '车辆功能value',
`isPack` int(64) DEFAULT NULL COMMENT '是否打包:1打包、2不打包',
`guaranteeTypeKey` VARCHAR(255) DEFAULT NULL COMMENT '担保类型key',
`guaranteeTypeValue` VARCHAR(255) DEFAULT NULL COMMENT '担保类型value',
`isVehFloat` int(32) DEFAULT NULL COMMENT '是否车损上浮',
`vehAccidentAmount` decimal(10, 2) DEFAULT NULL COMMENT '单车意外险',
`downPayRatio` VARCHAR(255) DEFAULT NULL COMMENT '首付比例(%)',
`downPayRatioLeast` VARCHAR(255) DEFAULT NULL COMMENT '最低首付比例(%)',
`bondRatio` VARCHAR(255) DEFAULT NULL COMMENT '保证金比例(%)',
`period` int(64) DEFAULT NULL COMMENT '期数',
`yearRatio` varchar(255) DEFAULT NULL COMMENT '标准年利率(%)',
`serviceAmountTypeKey` varchar(255) DEFAULT NULL COMMENT '服务费类型key',
`serviceAmountTypeValue` varchar(255) DEFAULT NULL COMMENT '服务费类型value',
`serviceAmount` decimal(10, 0) DEFAULT NULL COMMENT '服务费',
`depositPremium` decimal(10, 0) DEFAULT NULL COMMENT '保险保证金',
`depositSettle` decimal(10, 0) DEFAULT NULL COMMENT '落户保证金',
`nominalPrice` decimal(10, 0) DEFAULT NULL COMMENT '名义/留购价款',
`validDateTo` varchar(255) DEFAULT NULL COMMENT '有效期至',
`filingState` int(64) DEFAULT NULL COMMENT '报备状态:1已报备,0未报备,2报备中',
`useSate` int(64) DEFAULT NULL COMMENT '使用状态:1停用 0正常 各分公司设置的状态',
`riskState` int(64) DEFAULT NULL COMMENT '风控状态:1禁用 0正常 风控中心设置的状态',
`isOtherProduct` int(64) DEFAULT NULL COMMENT '是否有其他融:1有,0无',
`useDeptSids` text DEFAULT NULL COMMENT '适用销售部门sids(逗号分隔)',
`useDeptNames` text DEFAULT NULL COMMENT '适用销售部门名称(逗号分隔)',
`createOrgSid` varchar(255) DEFAULT NULL COMMENT '创建组织sid',
`createOrgName` varchar(255) DEFAULT NULL COMMENT '创建组织名称',
`useOrgSid` varchar(255) DEFAULT NULL COMMENT '使用组织sid',
`useOrgName` varchar(255) DEFAULT NULL COMMENT '使用组织名称',
PRIMARY KEY (`id`),
KEY `id` (`id`)
) ENGINE = INNODB
DEFAULT CHARSET = utf8 COMMENT ='金融产品政策';
-- 其他融产品
DROP TABLE IF EXISTS `loan_fin_otherPolicy`;
CREATE TABLE `loan_fin_otherPolicy`
(
`id` int(32) NOT NULL AUTO_INCREMENT COMMENT 'id',
`sid` varchar(64) NOT NULL COMMENT 'sid',
`lockVersion` int(32) DEFAULT '0' COMMENT '版本锁',
`createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
`isEnable` int(32) DEFAULT '1' COMMENT '是否可用:1可用,0不可用',
`state` int(32) DEFAULT '1' COMMENT '状态',
`isDelete` int(32) DEFAULT '0' COMMENT '是否删除:0未删除,1已删除',
`remarks` varchar(255) DEFAULT NULL COMMENT '备注',
`createBySid` varchar(64) DEFAULT NULL COMMENT '创建人sid',
`updateBySid` varchar(64) DEFAULT NULL COMMENT '修改人sid',
`otherPolicyName` VARCHAR(255) DEFAULT NULL COMMENT '产品名称:组合(资方+产品类别+最高融资比例+期数)',
`bankSid` VARCHAR(255) DEFAULT NULL COMMENT '资方sid',
`bankShortName` VARCHAR(255) DEFAULT NULL COMMENT '资方名称',
`mainPolicySid` VARCHAR(64) DEFAULT NULL COMMENT '主产品sid(可以为空)',
`productTypeKey` VARCHAR(64) DEFAULT NULL COMMENT '产品类别Key',
`productTypeValue` VARCHAR(64) DEFAULT NULL COMMENT '产品类别value',
`busTypeKey` VARCHAR(255) DEFAULT NULL COMMENT '业务类型key',
`busTypeValue` VARCHAR(255) DEFAULT NULL COMMENT '业务类型value',
`vehCategoryKey` VARCHAR(255) DEFAULT NULL COMMENT '车辆大类key',
`vehCategoryValue` VARCHAR(255) DEFAULT NULL COMMENT '车辆大类value',
`vehTypeKey` VARCHAR(255) DEFAULT NULL COMMENT '车辆功能key',
`vehTypeValue` VARCHAR(255) DEFAULT NULL COMMENT '车辆功能value',
`maxLoanRatio` VARCHAR(255) DEFAULT NULL COMMENT '最高融资额比例(%)',
`maxLoanAmount` decimal(10, 0) DEFAULT NULL COMMENT '最高融资额',
`period` int(64) DEFAULT NULL COMMENT '期数',
`yearRatio` varchar(255) DEFAULT NULL COMMENT '年利率(%)',
`validDateTo` varchar(255) DEFAULT NULL COMMENT '有效期至',
`filingState` int(64) DEFAULT NULL COMMENT '报备状态:1已报备,0未报备',
`useSate` int(64) DEFAULT NULL COMMENT '使用状态:1停用 0正常 各分公司设置的状态',
`riskState` int(64) DEFAULT NULL COMMENT '风控状态:1禁用 0正常 风控中心设置的状态',
`isOtherProduct` int(64) DEFAULT NULL COMMENT '是否有其他融:1有,0无',
`useDeptSids` text DEFAULT NULL COMMENT '适用销售部门sids(逗号分隔)',
`useDeptNames` text DEFAULT NULL COMMENT '适用销售部门名称(逗号分隔)',
`createOrgSid` varchar(255) DEFAULT NULL COMMENT '创建组织sid',
`createOrgName` varchar(255) DEFAULT NULL COMMENT '创建组织名称',
`useOrgSid` varchar(255) DEFAULT NULL COMMENT '使用组织sid',
`useOrgName` varchar(255) DEFAULT NULL COMMENT '使用组织名称',
PRIMARY KEY (`id`),
KEY `id` (`id`)
) ENGINE = INNODB
DEFAULT CHARSET = utf8 COMMENT ='其他融产品';
-- ------------------------------------------新
-- 金融产品政策
@ -1163,6 +1059,8 @@ CREATE TABLE `loan_fin_policy`
`downPayRatioLeastKey` VARCHAR(255) DEFAULT NULL COMMENT '最低首付比例(%)key',
`bondRatio` decimal(10, 0) DEFAULT NULL COMMENT '保证金比例(%)',
`bondRatioKey` VARCHAR(255) DEFAULT NULL COMMENT '保证金比例(%)key',
`bondTypeKey` VARCHAR(255) DEFAULT NULL COMMENT '保证金类型key',
`bondType` VARCHAR(255) DEFAULT NULL COMMENT '保证金类型',
`period` int(64) DEFAULT NULL COMMENT '期数',
`periodKey` VARCHAR(255) DEFAULT NULL COMMENT '期数key',
`yearRatio` decimal(10, 2) DEFAULT NULL COMMENT '标准年利率(%)',
@ -1183,7 +1081,7 @@ CREATE TABLE `loan_fin_policy`
`createOrgName` varchar(255) DEFAULT NULL COMMENT '创建组织名称',
`useOrgSid` varchar(255) DEFAULT NULL COMMENT '使用组织sid',
`useOrgName` varchar(255) DEFAULT NULL COMMENT '使用组织名称',
`orgPath` varchar(255) DEFAULT NULL COMMENT '组织全路径',
`orgSidPath` varchar(255) DEFAULT NULL COMMENT '组织全路径',
PRIMARY KEY (`id`),
KEY `id` (`id`)
) ENGINE = INNODB
@ -1226,7 +1124,6 @@ CREATE TABLE `loan_fin_otherPolicy`
`filingState` int(64) DEFAULT NULL COMMENT '报备状态:1已报备,0未报备',
`useSate` int(64) DEFAULT NULL COMMENT '使用状态:1停用 0正常 各分公司设置的状态',
`riskState` int(64) DEFAULT NULL COMMENT '风控状态:1禁用 0正常 风控中心设置的状态',
`isOtherProduct` int(64) DEFAULT NULL COMMENT '是否有其他融:1有,0无',
`useDeptSids` text DEFAULT NULL COMMENT '适用销售部门sids(逗号分隔)',
`useDeptNames` text DEFAULT NULL COMMENT '适用销售部门名称(逗号分隔)',
`createOrgSid` varchar(255) DEFAULT NULL COMMENT '创建组织sid',

Loading…
Cancel
Save