diff --git a/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/utils/ProcDefEnum.java b/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/utils/ProcDefEnum.java index ff7b8cedf7..4f17b26b2e 100644 --- a/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/utils/ProcDefEnum.java +++ b/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/utils/ProcDefEnum.java @@ -68,6 +68,7 @@ public enum ProcDefEnum { MONTHLYACCRUAL("当月应收计提申请", "process_7zpo52qj:1:7367504"), LOANOVERDUEFIN("逾期对账申请(财务)", "process_b0i03acl:1:7672504"), LOANOVERDUEBANK("逾期对账申请(资方)", "process_wwb7q95x:1:7672508"), + LOANVEHCLEARANCEAPPLY("车辆远程解控申请", "process_zbzenr9b:2:7782504"), /******************************测试流程id*********************************************/ diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/LoanVehClearanceApplyDetailsVo.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/LoanVehClearanceApplyDetailsVo.java index 7278ddd477..afc1d38f48 100644 --- a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/LoanVehClearanceApplyDetailsVo.java +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/LoanVehClearanceApplyDetailsVo.java @@ -57,6 +57,8 @@ public class LoanVehClearanceApplyDetailsVo implements Vo { private String sid; // sid + @ApiModelProperty("备注") + private String remarks; @ApiModelProperty("申请日期") private String createTime; @ApiModelProperty("创建人sid") @@ -88,5 +90,5 @@ public class LoanVehClearanceApplyDetailsVo implements Vo { @ApiModelProperty("附件") private List files = new ArrayList<>(); @ApiModelProperty("逾期车辆列表") - private List loanVehClearanceVehDetailsVoList; + private List loanVehClearanceVehList; } \ No newline at end of file diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/LoanVehClearanceApplyDto.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/LoanVehClearanceApplyDto.java index b6cbb0aae4..fd0c23ab52 100644 --- a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/LoanVehClearanceApplyDto.java +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/LoanVehClearanceApplyDto.java @@ -57,6 +57,10 @@ public class LoanVehClearanceApplyDto implements Dto { private String sid; // sid + @ApiModelProperty("备注") + private String remarks; + @ApiModelProperty("创建人sid") + private String createBySid; @ApiModelProperty("创建人") private String createByName; // 创建人 @ApiModelProperty("申请编号") @@ -84,5 +88,5 @@ public class LoanVehClearanceApplyDto implements Dto { @ApiModelProperty("附件") private List files = new ArrayList<>(); @ApiModelProperty("逾期车辆列表") - private List loanVehClearanceVehDtoList; + private List loanVehClearanceVehList; } \ No newline at end of file diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/LoanVehClearanceApplyFeign.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/LoanVehClearanceApplyFeign.java index 390563f47f..a90cade1f1 100644 --- a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/LoanVehClearanceApplyFeign.java +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/LoanVehClearanceApplyFeign.java @@ -26,6 +26,8 @@ package com.yxt.anrui.riskcenter.api.loanvehclearanceapply; import com.yxt.anrui.riskcenter.api.loanbecollectionapply.LoanBeCollectionApplyDetailsVo; +import com.yxt.anrui.riskcenter.api.loanbecollectionapply.flowable.*; +import com.yxt.anrui.riskcenter.api.loanvehclearanceapply.flowable.*; import com.yxt.anrui.riskcenter.api.loanvehclearanceveh.LoanVehClearanceLockCarQuery; import com.yxt.anrui.riskcenter.api.loanvehclearanceveh.LoanVehClearanceLockCarVo; import com.yxt.anrui.riskcenter.api.loanvehclearanceveh.LoanVehClearanceVehDetailsVo; @@ -35,8 +37,12 @@ import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.vo.PagerVo; import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.cloud.openfeign.SpringQueryMap; import org.springframework.web.bind.annotation.*; +import javax.validation.Valid; +import java.util.List; + /** * Project: anrui-riskcenter(车辆远程解控申请)
* File: LoanVehClearanceApplyFeign.java
@@ -87,4 +93,36 @@ public interface LoanVehClearanceApplyFeign { @GetMapping("/fetchDetailsBySid/{sid}") @ResponseBody public ResultBean fetchDetailsBySid(@PathVariable("sid") String sid); + + @ApiOperation("提交审批流程") + @PostMapping("/submit") + public ResultBean submit(@RequestBody @Valid SubmitLoanVehClearanceApplyDto dto); + + @ApiOperation(value = "办理(同意)") + @PostMapping("/complete") + public ResultBean complete(@Valid @RequestBody LoanVehClearanceApplyCompleteDto query); + + @ApiOperation(value = "获取上一个环节") + @GetMapping(value = "/getPreviousNodesForReject") + ResultBean> getPreviousNodesForReject(@Valid @SpringQueryMap LoanVehClearanceApplyNodeQuery query); + + @ApiOperation(value = "获取下一个环节") + @GetMapping(value = "/getNextNodesForSubmit") + ResultBean> getNextNodesForSubmit(@Valid @SpringQueryMap LoanVehClearanceApplyNodeQuery query); + + @ApiOperation(value = "驳回任务") + @PostMapping(value = "/reject") + public ResultBean reject(@Valid @RequestBody LoanVehClearanceApplyTaskQuery query); + + @ApiOperation(value = "撤回流程") + @PostMapping(value = "/revokeProcess") + public ResultBean revokeProcess(@Valid @RequestBody LoanVehClearanceApplyTaskQuery query); + + @ApiOperation(value = "终止任务") + @PostMapping(value = "/breakProcess") + public ResultBean breakProcess(@Valid @RequestBody LoanVehClearanceApplyTaskQuery query); + + @ApiOperation(value = "加签") + @PostMapping(value = "/delegate") + public ResultBean delegate(@RequestBody LoanVehClearanceApplyDelegateQuery query); } \ No newline at end of file diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/LoanVehClearanceApplyFeignFallback.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/LoanVehClearanceApplyFeignFallback.java index 251c88fa43..bc23af539d 100644 --- a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/LoanVehClearanceApplyFeignFallback.java +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/LoanVehClearanceApplyFeignFallback.java @@ -25,6 +25,7 @@ *********************************************************/ package com.yxt.anrui.riskcenter.api.loanvehclearanceapply; +import com.yxt.anrui.riskcenter.api.loanvehclearanceapply.flowable.*; import com.yxt.anrui.riskcenter.api.loanvehclearanceveh.LoanVehClearanceLockCarQuery; import com.yxt.anrui.riskcenter.api.loanvehclearanceveh.LoanVehClearanceLockCarVo; import com.yxt.common.core.query.PagerQuery; @@ -81,4 +82,44 @@ public class LoanVehClearanceApplyFeignFallback implements LoanVehClearanceApply ResultBean rb = ResultBean.fireFail(); return rb.setMsg("接口anrui-riskcenter/loanvehclearanceapply/fetchDetailsBySid无法访问"); } + + @Override + public ResultBean submit(SubmitLoanVehClearanceApplyDto dto) { + return null; + } + + @Override + public ResultBean complete(LoanVehClearanceApplyCompleteDto query) { + return null; + } + + @Override + public ResultBean> getPreviousNodesForReject(LoanVehClearanceApplyNodeQuery query) { + return null; + } + + @Override + public ResultBean> getNextNodesForSubmit(LoanVehClearanceApplyNodeQuery query) { + return null; + } + + @Override + public ResultBean reject(LoanVehClearanceApplyTaskQuery query) { + return null; + } + + @Override + public ResultBean revokeProcess(LoanVehClearanceApplyTaskQuery query) { + return null; + } + + @Override + public ResultBean breakProcess(LoanVehClearanceApplyTaskQuery query) { + return null; + } + + @Override + public ResultBean delegate(LoanVehClearanceApplyDelegateQuery query) { + return null; + } } \ No newline at end of file diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/LoanVehClearanceApplyVo.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/LoanVehClearanceApplyVo.java index 5c62766595..ab1742ca2c 100644 --- a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/LoanVehClearanceApplyVo.java +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/LoanVehClearanceApplyVo.java @@ -66,8 +66,7 @@ public class LoanVehClearanceApplyVo implements Vo { @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") private Date createTime; @ApiModelProperty("办结日期") - @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") - private Date modifyTime; + private String modifyTime; @ApiModelProperty("备注") private String remarks; @ApiModelProperty("流程定义的id") diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/flowable/LoanVehClearanceApplyCompleteDto.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/flowable/LoanVehClearanceApplyCompleteDto.java new file mode 100644 index 0000000000..3efe05822d --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/flowable/LoanVehClearanceApplyCompleteDto.java @@ -0,0 +1,37 @@ +package com.yxt.anrui.riskcenter.api.loanvehclearanceapply.flowable; + +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Author dimengzhe + * @Date 2022/9/6 14:57 + * @Description + */ +@Data +public class LoanVehClearanceApplyCompleteDto implements Dto { + private static final long serialVersionUID = 6378752532534735663L; + + @ApiModelProperty(value = "用户sid") + private String userSid; + @ApiModelProperty(value = "节点id") + @NotBlank(message = "参数错误:taskDefKey") + private String taskDefKey; + @ApiModelProperty(value = "任务id") + @NotBlank(message = "参数错误:taskId") + private String taskId; + @ApiModelProperty(value = "流程id(PC)") + private String instanceId; + @ApiModelProperty(value = "流程id(移动)") + private String procInsId; + @ApiModelProperty(value = "意见") + private String comment; + @ApiModelProperty(value = "业务sid") + @NotBlank(message = "参数错误:businessSid") + private String businessSid; + + private String orgPath; +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/flowable/LoanVehClearanceApplyDelegateQuery.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/flowable/LoanVehClearanceApplyDelegateQuery.java new file mode 100644 index 0000000000..02ec2bef61 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/flowable/LoanVehClearanceApplyDelegateQuery.java @@ -0,0 +1,26 @@ +package com.yxt.anrui.riskcenter.api.loanvehclearanceapply.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author Administrator + * @description + * @date 2023/9/28 9:28 + */ +@Data +public class LoanVehClearanceApplyDelegateQuery { + @ApiModelProperty + private String userSid; + @ApiModelProperty("流程实例id") +// @JsonProperty("procInsId") + private String instanceId; + @ApiModelProperty("任务Id") + private String taskId; + @ApiModelProperty("审批人sid") + private String assignee; + @ApiModelProperty("填写意见") + private String views; + + +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/flowable/LoanVehClearanceApplyNodeQuery.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/flowable/LoanVehClearanceApplyNodeQuery.java new file mode 100644 index 0000000000..68efd4d034 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/flowable/LoanVehClearanceApplyNodeQuery.java @@ -0,0 +1,25 @@ +package com.yxt.anrui.riskcenter.api.loanvehclearanceapply.flowable; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Author dimengzhe + * @Date 2022/9/6 15:04 + * @Description + */ +@Data +public class LoanVehClearanceApplyNodeQuery implements Query { + private static final long serialVersionUID = 9117613683840483366L; + + @ApiModelProperty(value = "环节定义id") + @NotBlank(message = "参数错误:taskDefKey") + private String taskDefKey; + @ApiModelProperty(value = "业务sid") + private String businessSid; + @ApiModelProperty(value = "0 上一环节 1下一环节") + private Integer next; +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/flowable/LoanVehClearanceApplyNodeVo.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/flowable/LoanVehClearanceApplyNodeVo.java new file mode 100644 index 0000000000..0c904eaf4d --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/flowable/LoanVehClearanceApplyNodeVo.java @@ -0,0 +1,26 @@ +package com.yxt.anrui.riskcenter.api.loanvehclearanceapply.flowable; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @Author dimengzhe + * @Date 2022/9/6 15:03 + * @Description + */ +@Data +public class LoanVehClearanceApplyNodeVo implements Vo { + private static final long serialVersionUID = -833419512294877848L; + + @ApiModelProperty(value = "节点名称") + private String name; + @ApiModelProperty(value = "节点id") + private String id; + @ApiModelProperty(value = "审批组") + private List candidateGroups; + @ApiModelProperty(value = "是否是最后环节") + private String endTask; +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/flowable/LoanVehClearanceApplyTaskQuery.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/flowable/LoanVehClearanceApplyTaskQuery.java new file mode 100644 index 0000000000..10cc1efb96 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/flowable/LoanVehClearanceApplyTaskQuery.java @@ -0,0 +1,48 @@ +package com.yxt.anrui.riskcenter.api.loanvehclearanceapply.flowable; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Author dimengzhe + * @Date 2022/9/6 15:06 + * @Description + */ +@Data +public class LoanVehClearanceApplyTaskQuery implements Query { + private static final long serialVersionUID = 1288615499873178778L; + + /** + * 终止、驳回、撤回 + */ + @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(PC)") + private String instanceId; + + @ApiModelProperty("流程实例Id(移动)") + private String procInsId; +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/flowable/SubmitLoanVehClearanceApplyDto.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/flowable/SubmitLoanVehClearanceApplyDto.java new file mode 100644 index 0000000000..f2464d49ad --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceapply/flowable/SubmitLoanVehClearanceApplyDto.java @@ -0,0 +1,25 @@ +package com.yxt.anrui.riskcenter.api.loanvehclearanceapply.flowable; + +import com.yxt.anrui.riskcenter.api.loanbecollectionapply.LoanBeCollectionApplyDto; +import com.yxt.anrui.riskcenter.api.loanvehclearanceapply.LoanVehClearanceApplyDto; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author liuguohui + * @version 1.0 + * @description + * @date 2022/04/13 + */ +@ApiModel("提交") +@Data +public class SubmitLoanVehClearanceApplyDto extends LoanVehClearanceApplyDto { + + @ApiModelProperty("意见") + private String comment; + @ApiModelProperty("流程实例id") + private String instanceId; + @ApiModelProperty("任务id") + private String taskId; +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceveh/LoanVehClearanceVehDetailsVo.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceveh/LoanVehClearanceVehDetailsVo.java index b641ec1d5f..03b62113da 100644 --- a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceveh/LoanVehClearanceVehDetailsVo.java +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceveh/LoanVehClearanceVehDetailsVo.java @@ -26,6 +26,7 @@ package com.yxt.anrui.riskcenter.api.loanvehclearanceveh; +import com.fasterxml.jackson.annotation.JsonFormat; import com.yxt.anrui.riskcenter.api.loanbecollectionveh.LoanBeCollectionVehFile; import com.yxt.common.core.vo.Vo; @@ -33,6 +34,7 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.Date; import java.util.List; /** @@ -68,8 +70,9 @@ public class LoanVehClearanceVehDetailsVo implements Vo { private String customerName; // 客户姓名 @ApiModelProperty("贷款人姓名") private String borrowerName; // 贷款人姓名 - @ApiModelProperty("首次逾期日期") - private String firstBeDate; // 首次逾期日期 + @ApiModelProperty("首次逾期日期") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + private Date firstBeDate; @ApiModelProperty("逾期期数") private String beOverduePeriod; // 逾期期数 @ApiModelProperty("逾期金额") diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceveh/LoanVehClearanceVehFile.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceveh/LoanVehClearanceVehFile.java index 6b3b887b8b..714fab0701 100644 --- a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceveh/LoanVehClearanceVehFile.java +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanvehclearanceveh/LoanVehClearanceVehFile.java @@ -30,6 +30,8 @@ import com.yxt.common.core.vo.Vo; import io.swagger.annotations.ApiModel; import lombok.Data; +import java.util.List; + /** * Project: anrui-riskcenter(催收措施申请)
* File: LoanBeCollectionVehVo.java
@@ -49,4 +51,5 @@ public class LoanVehClearanceVehFile implements Vo { private String name; private String sid; + private List files; } \ No newline at end of file diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbecollectionapply/LoanBeCollectionApplyService.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbecollectionapply/LoanBeCollectionApplyService.java index 15ce6c63ce..e796398e41 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbecollectionapply/LoanBeCollectionApplyService.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbecollectionapply/LoanBeCollectionApplyService.java @@ -367,6 +367,16 @@ public class LoanBeCollectionApplyService extends MybatisBaseService loanBeCollectionVehDetailsVos = loanBeCollectionVehService.selByMainSid(sid); for (LoanBeCollectionVehDetailsVo loanBeCollectionVehDetailsVo : loanBeCollectionVehDetailsVos) { + String lockCarState = loanBeCollectionVehDetailsVo.getLockCarState(); + if ("0".equals(lockCarState)){ + loanBeCollectionVehDetailsVo.setLockCarState("待控制"); + }else if ("1".equals(lockCarState)){ + loanBeCollectionVehDetailsVo.setLockCarState("控制成功"); + }else if ("2".equals(lockCarState)){ + loanBeCollectionVehDetailsVo.setLockCarState("控制失败"); + }else if ("3".equals(lockCarState)){ + loanBeCollectionVehDetailsVo.setLockCarState("已解控"); + } List loanFiles1 = loanFileService.selectByLinkSid(loanBeCollectionVehDetailsVo.getSid(), LoanFileEnum.BECOLLECTIONVEHHKXY.getAttachType()); List loanBeCollectionFileVos1 = new ArrayList<>(); if (loanFiles1 != null && loanFiles1.size() > 0) { @@ -500,6 +510,16 @@ public class LoanBeCollectionApplyService extends MybatisBaseService collMeasures = dto.getCollMeasures(); + List loanBeCollectionVehDetails = dto.getLoanBeCollectionVehDetails(); + if (collMeasures.contains("远程控制")){ + for (LoanBeCollectionVehDto loanBeCollectionVehDetail : loanBeCollectionVehDetails) { + int i = loanBeCollectionVehService.selKzStateBySaleVehSid(loanBeCollectionVehDetail.getSaleVehSid()); + if (i > 0){ + return rb.setMsg("车架号" + loanBeCollectionVehDetail.getVinNo() + "已存在审批中(待控制/控制成功),不可再次勾选远程控制措施。"); + } + } + } LoanBeCollectionApply loanBeCollectionApply = fetchBySid(dto.getSid()); int r = submitBusinessData(dto, loanBeCollectionApply); if (r == 3) { diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbecollectionveh/LoanBeCollectionVehMapper.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbecollectionveh/LoanBeCollectionVehMapper.java index ad9c382eb9..6a47391d59 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbecollectionveh/LoanBeCollectionVehMapper.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbecollectionveh/LoanBeCollectionVehMapper.java @@ -68,8 +68,13 @@ public interface LoanBeCollectionVehMapper extends BaseMapper selByMainSid(String sid); - @Update("update loan_be_collection_veh set lockCarState = '待控制' where mainSid = #{businessSid}") + @Update("update loan_be_collection_veh set lockCarState = '0' where mainSid = #{businessSid}") void updateByMainSid(String businessSid); int selBjBySaleVehSid(String saleVehSid); + + int selKzStateBySaleVehSid(String saleVehSid); + + @Select("select sid from loan_be_collection_veh where saleVehSid = #{saleVehSid} and lockCarState = #{c}") + String selSidBySaleVehSidAndLockState(@Param("saleVehSid") String saleVehSid,@Param("c") String c); } \ No newline at end of file diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbecollectionveh/LoanBeCollectionVehMapper.xml b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbecollectionveh/LoanBeCollectionVehMapper.xml index 5217706407..1f7d43d204 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbecollectionveh/LoanBeCollectionVehMapper.xml +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbecollectionveh/LoanBeCollectionVehMapper.xml @@ -26,4 +26,11 @@ AND la.`nodeState` = '已办结' AND la.`collMeasure` LIKE CONCAT('%远程控制%') + + \ No newline at end of file diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbecollectionveh/LoanBeCollectionVehService.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbecollectionveh/LoanBeCollectionVehService.java index b494ef796f..5e221fa5e4 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbecollectionveh/LoanBeCollectionVehService.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbecollectionveh/LoanBeCollectionVehService.java @@ -258,4 +258,12 @@ public class LoanBeCollectionVehService extends MybatisBaseService @@ -71,4 +72,6 @@ public interface LoanVehClearanceApplyMapper extends BaseMapper lockCarList(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); LoanVehClearanceVehInit initVehListBySaleVehSid(String saleVehSid); + + int updateFlowFiled(Map map); } \ No newline at end of file diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanvehclearanceapply/LoanVehClearanceApplyMapper.xml b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanvehclearanceapply/LoanVehClearanceApplyMapper.xml index f1bf77888f..133d36023d 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanvehclearanceapply/LoanVehClearanceApplyMapper.xml +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanvehclearanceapply/LoanVehClearanceApplyMapper.xml @@ -82,7 +82,8 @@ lr.createTime, lrpd.borrowerSid, lrpd.salesOrderSid, - lv.lockCarMoney + lv.lockCarMoney, + lv.lockCarState FROM `loan_repayment_plan_details` lrpd LEFT JOIN `loan_repayment_history` lrh @@ -100,14 +101,34 @@ ON lrpd.busVinSid = lr.saleVehSid LEFT JOIN anrui_crm.`crm_customer_temp` ct ON lrpd.customerSid = ct.sid - LEFT JOIN loan_be_collection_veh lv + LEFT JOIN (SELECT + * + FROM + loan_be_collection_veh + WHERE lockCarState = '1') lv ON lrpd.busVinSid = lv.saleVehSid WHERE DATE_FORMAT(lrpd.dueDate, '%Y-%m-%d') < CURDATE() GROUP BY lrpd.`sid` HAVING (yq_total > 0)) a1 WHERE a1.busVinSid = #{saleVehSid} + AND a1.lockCarState = '1' GROUP BY a1.loanContractNo, a1.vinNo, a1.busVinSid + + + UPDATE loan_veh_clearance_apply + SET nodeState=#{nodeState}, nodeSid=#{taskDefKey}, modifyTime = NOW() + + , procDefId=#{procDefId} + + + , procInstSid=#{procInsId} + + + , taskId=#{taskId} + + WHERE sid=#{sid} + \ No newline at end of file diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanvehclearanceapply/LoanVehClearanceApplyRest.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanvehclearanceapply/LoanVehClearanceApplyRest.java index 96f3aaa193..14334dbb93 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanvehclearanceapply/LoanVehClearanceApplyRest.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanvehclearanceapply/LoanVehClearanceApplyRest.java @@ -25,7 +25,11 @@ *********************************************************/ package com.yxt.anrui.riskcenter.biz.loanvehclearanceapply; +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.loanvehclearanceapply.*; +import com.yxt.anrui.riskcenter.api.loanvehclearanceapply.flowable.*; import com.yxt.anrui.riskcenter.api.loanvehclearanceveh.LoanVehClearanceLockCarQuery; import com.yxt.anrui.riskcenter.api.loanvehclearanceveh.LoanVehClearanceLockCarVo; import com.yxt.anrui.riskcenter.api.loanvehclearanceveh.LoanVehClearanceVehDetailsVo; @@ -37,6 +41,8 @@ import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.List; + /** * Project: anrui-riskcenter(车辆远程解控申请)
* File: LoanVehClearanceApplyFeignFallback.java
@@ -108,4 +114,47 @@ public class LoanVehClearanceApplyRest implements LoanVehClearanceApplyFeign { return rb.success().setData(vo); } + @Override + public ResultBean submit(SubmitLoanVehClearanceApplyDto dto) { + return loanVehClearanceApplyService.submit(dto); + } + + @Override + public ResultBean complete(LoanVehClearanceApplyCompleteDto query) { + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + bv.setModelId(ProcDefEnum.LOANVEHCLEARANCEAPPLY.getProDefId()); + return loanVehClearanceApplyService.complete(bv); + } + + @Override + public ResultBean> getPreviousNodesForReject(LoanVehClearanceApplyNodeQuery query) { + return loanVehClearanceApplyService.getPreviousNodesForReject(query); + } + + @Override + public ResultBean> getNextNodesForSubmit(LoanVehClearanceApplyNodeQuery query) { + return loanVehClearanceApplyService.getNextNodesForSubmit(query); + } + + @Override + public ResultBean reject(LoanVehClearanceApplyTaskQuery query) { + return loanVehClearanceApplyService.reject(query); + } + + @Override + public ResultBean revokeProcess(LoanVehClearanceApplyTaskQuery query) { + return loanVehClearanceApplyService.revokeProcess(query); + } + + @Override + public ResultBean breakProcess(LoanVehClearanceApplyTaskQuery query) { + return loanVehClearanceApplyService.breakProcess(query); + } + + @Override + public ResultBean delegate(LoanVehClearanceApplyDelegateQuery query) { + return loanVehClearanceApplyService.delegate(query); + } + } diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanvehclearanceapply/LoanVehClearanceApplyService.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanvehclearanceapply/LoanVehClearanceApplyService.java index b16e821efb..643f86f876 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanvehclearanceapply/LoanVehClearanceApplyService.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanvehclearanceapply/LoanVehClearanceApplyService.java @@ -26,7 +26,9 @@ package com.yxt.anrui.riskcenter.biz.loanvehclearanceapply; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.yxt.anrui.base.common.utils.Rule; @@ -36,26 +38,41 @@ import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicle; import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicleFeign; import com.yxt.anrui.fin.api.finvehicleinvoice.FinVehicleInvoice; import com.yxt.anrui.fin.api.finvehicleinvoice.FinVehicleInvoiceFeign; +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.flow2.FlowDelegateQuery; +import com.yxt.anrui.flowable.api.flow2.FlowFeign; +import com.yxt.anrui.flowable.api.flowtask.FlowTaskFeign; +import com.yxt.anrui.flowable.api.flowtask.FlowTaskVo; +import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo; +import com.yxt.anrui.flowable.api.utils.ProcDefEnum; +import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables; import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign; import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo; import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign; import com.yxt.anrui.portal.api.sysuser.PrivilegeQuery; import com.yxt.anrui.portal.api.sysuser.SysUserFeign; import com.yxt.anrui.portal.api.sysuser.SysUserVo; -import com.yxt.anrui.riskcenter.api.loanbecollectionapply.LoanBeCollectionApplyDetailsVo; -import com.yxt.anrui.riskcenter.api.loanbecollectionrecord.LoanBeCollectionRecordVehInit; -import com.yxt.anrui.riskcenter.api.loanbecollectionveh.LoanBeCollectionVehDetailsVo; -import com.yxt.anrui.riskcenter.api.loanbecollectionveh.LoanBeCollectionVehFile; +import com.yxt.anrui.riskcenter.api.loanbecollectionapply.LoanBeCollectionApply; +import com.yxt.anrui.riskcenter.api.loanbecollectionapply.LoanBeCollectionFileVo; +import com.yxt.anrui.riskcenter.api.loanbecollectionapply.flowable.LoanBeCollectionApplyNodeVo; +import com.yxt.anrui.riskcenter.api.loanbecollectionapply.flowable.SubmitLoanBeCollectionApplyDto; import com.yxt.anrui.riskcenter.api.loanfile.LoanFile; import com.yxt.anrui.riskcenter.api.loanfile.LoanFileEnum; import com.yxt.anrui.riskcenter.api.loansolutions.LoanSolutions; import com.yxt.anrui.riskcenter.api.loanvehclearanceapply.*; +import com.yxt.anrui.riskcenter.api.loanvehclearanceapply.flowable.*; import com.yxt.anrui.riskcenter.api.loanvehclearanceveh.*; +import com.yxt.anrui.riskcenter.biz.loanbecollectionveh.LoanBeCollectionVehService; import com.yxt.anrui.riskcenter.biz.loanfile.LoanFileService; import com.yxt.anrui.riskcenter.biz.loanhomevisitinvestigate.LoanHomevisitInvestigateService; import com.yxt.anrui.riskcenter.biz.loansolutions.LoanSolutionsService; import com.yxt.anrui.riskcenter.biz.loanvehclearanceveh.LoanVehClearanceVehService; import com.yxt.common.base.config.component.FileUploadComponent; +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 com.yxt.common.base.service.MybatisBaseService; import com.yxt.common.base.utils.PagerUtil; @@ -67,9 +84,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; /** * Project: anrui-riskcenter(车辆远程解控申请)
@@ -109,6 +126,16 @@ public class LoanVehClearanceApplyService extends MybatisBaseService listPageVo(PagerQuery pq) { LoanVehClearanceApplyQuery query = pq.getParams(); @@ -171,6 +198,14 @@ public class LoanVehClearanceApplyService extends MybatisBaseService page = PagerUtil.queryToPage(pq); IPage pagging = baseMapper.selectPageVo(page, qw); + for (LoanVehClearanceApplyVo record : pagging.getRecords()) { + if ("终止".equals(record.getNodeState()) || "已办结".equals(record.getNodeState())) { + DateTime modifyTime = DateUtil.parse(record.getModifyTime()); + record.setModifyTime(DateUtil.formatDate(modifyTime)); + } else { + record.setModifyTime(""); + } + } PagerVo p = PagerUtil.pageToVo(pagging, null); return p; } @@ -179,7 +214,7 @@ public class LoanVehClearanceApplyService extends MybatisBaseService qw = new QueryWrapper<>(); qw.eq("la.useOrgSid", query.getUseOrgSid()); - qw.eq("lv.lockCarState","1"); + qw.eq("lv.lockCarState", "1"); if (StringUtils.isNotBlank(query.getCustName())) { qw.like("lv.customerName", query.getCustName()); } @@ -201,7 +236,7 @@ public class LoanVehClearanceApplyService extends MybatisBaseService loanVehClearanceVehDtoList = dto.getLoanVehClearanceVehDtoList(); + List loanVehClearanceVehDtoList = dto.getLoanVehClearanceVehList(); List files = dto.getFiles(); if (StringUtils.isBlank(dtoSid)) { //生成单据编号 @@ -301,17 +336,27 @@ public class LoanVehClearanceApplyService extends MybatisBaseService loanVehClearanceVehFiles = new ArrayList<>(); BusSalesOrderVehicle busSalesOrderVehicle1 = busSalesOrderVehicleFeign.details(loanVehClearanceVehDetailsVo.getSaleVehSid()).getData(); BusSalesOrder busSalesOrder = busSalesOrderFeign.fetchBySid(busSalesOrderVehicle1.getSalesOrderSid()).getData(); - //催收记录sid + //担保人sid LoanVehClearanceVehFile loanVehClearanceVehFile1 = new LoanVehClearanceVehFile(); - loanVehClearanceVehFile1.setName("催收记录"); + loanVehClearanceVehFile1.setName("担保人"); loanVehClearanceVehFile1.setSid(loanVehClearanceVehDetailsVo.getSaleVehSid()); loanVehClearanceVehFiles.add(loanVehClearanceVehFile1); - //开票管理sid - FinVehicleInvoice finVehicleInvoice = finVehicleInvoiceFeign.selectByVinAndContractNo(busSalesOrderVehicle1.getLinkSid(), busSalesOrder.getContractNo()).getData(); - LoanVehClearanceVehFile loanVehClearanceVehFile2 = new LoanVehClearanceVehFile(); - loanVehClearanceVehFile2.setName("开票信息"); - loanVehClearanceVehFile2.setSid(finVehicleInvoice.getSid()); - loanVehClearanceVehFiles.add(loanVehClearanceVehFile2); + //还款协议file + LoanVehClearanceVehFile LoanVehClearanceVehFile2 = new LoanVehClearanceVehFile(); + String beCollectionVehSid = loanBeCollectionVehService.selSidBySaleVehSidAndLockState(loanVehClearanceVehDetailsVo.getSaleVehSid(), "1"); + List hkxyFiles = loanFileService.selectByLinkSid(beCollectionVehSid, LoanFileEnum.BECOLLECTIONVEHHKXY.getAttachType()); + List files = new ArrayList<>(); + if (hkxyFiles != null && hkxyFiles.size() > 0) { + for (LoanFile hkxyFile : hkxyFiles) { + String filePath = hkxyFile.getFilePath(); + String urlPrefix = fileUploadComponent.getUrlPrefix(); + filePath = urlPrefix + filePath; + files.add(filePath); + } + } + LoanVehClearanceVehFile2.setName("还款协议"); + LoanVehClearanceVehFile2.setFiles(files); + loanVehClearanceVehFiles.add(LoanVehClearanceVehFile2); //月还明细sid LoanVehClearanceVehFile loanVehClearanceVehFile3 = new LoanVehClearanceVehFile(); loanVehClearanceVehFile3.setName("月还明细"); @@ -336,7 +381,7 @@ public class LoanVehClearanceApplyService extends MybatisBaseService loanVehClearanceVehFiles = new ArrayList<>(); BusSalesOrder busSalesOrder = busSalesOrderFeign.fetchBySid(loanVehClearanceVehInit.getSalesOrderSid()).getData(); BusSalesOrderVehicle busSalesOrderVehicle = busSalesOrderVehicleFeign.details(loanVehClearanceVehInit.getSaleVehSid()).getData(); - //催收记录sid + //担保人sid LoanVehClearanceVehFile LoanVehClearanceVehFile1 = new LoanVehClearanceVehFile(); - LoanVehClearanceVehFile1.setName("催收记录"); + LoanVehClearanceVehFile1.setName("担保人"); LoanVehClearanceVehFile1.setSid(loanVehClearanceVehInit.getSaleVehSid()); loanVehClearanceVehFiles.add(LoanVehClearanceVehFile1); - //开票管理sid - FinVehicleInvoice finVehicleInvoice = finVehicleInvoiceFeign.selectByVinAndContractNo(busSalesOrderVehicle.getLinkSid(), busSalesOrder.getContractNo()).getData(); + //还款协议file LoanVehClearanceVehFile LoanVehClearanceVehFile2 = new LoanVehClearanceVehFile(); - LoanVehClearanceVehFile2.setName("开票信息"); - LoanVehClearanceVehFile2.setSid(finVehicleInvoice.getSid()); + String beCollectionVehSid = loanBeCollectionVehService.selSidBySaleVehSidAndLockState(saleVehSid, "1"); + List loanFiles = loanFileService.selectByLinkSid(beCollectionVehSid, LoanFileEnum.BECOLLECTIONVEHHKXY.getAttachType()); + List files = new ArrayList<>(); + if (loanFiles != null && loanFiles.size() > 0) { + for (LoanFile loanFile : loanFiles) { + String filePath = loanFile.getFilePath(); + String urlPrefix = fileUploadComponent.getUrlPrefix(); + filePath = urlPrefix + filePath; + files.add(filePath); + } + } + LoanVehClearanceVehFile2.setName("还款协议"); + LoanVehClearanceVehFile2.setFiles(files); loanVehClearanceVehFiles.add(LoanVehClearanceVehFile2); //月还明细sid LoanVehClearanceVehFile LoanVehClearanceVehFile3 = new LoanVehClearanceVehFile(); @@ -401,7 +456,312 @@ public class LoanVehClearanceApplyService extends MybatisBaseService variables = new HashMap<>(); + //用户的部门全路径sid + bv.setOrgSidPath(loanVehClearanceApply.getOrgPath()); + //业务sid + bv.setBusinessSid(businessSid); + //用户sid + bv.setUserSid(loanVehClearanceApply.getCreateBySid()); + //若app移动端有此功能,则传递appMap参数 + Map appMap = new HashMap<>(); + appMap.put("sid", businessSid); + //需和移动端沟通业务sid保存的属性具体值:appMap中sid不是固定的。移动端提供具体字段。 + variables.put("app", appMap); + //流程定义id + bv.setModelId(ProcDefEnum.LOANVEHCLEARANCEAPPLY.getProDefId()); + bv.setFormVariables(variables); + SysOrganizationVo sysOrganizationVo = sysOrganizationFeign.selectByOrgSidPath(loanVehClearanceApply.getOrgPath()).getData(); + bv.setNextNodeUserSids(sysOrganizationVo.getManagerSid()); + if (r == 1) { + ResultBean voResultBean = flowableFeign.startProcess(bv); + UpdateFlowFieldVo ufVo = voResultBean.getData(); + updateFlowFiled(BeanUtil.beanToMap(ufVo)); + //极光推送 + loanVehClearanceApply = 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("催收措施申请"); + messageFlowableQuery.setMsgContent(loanVehClearanceApply.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); + messageFlowableQuery.setMsgTitle("催收措施申请"); + messageFeign.pushMessage(messageFlowableQuery); + return voResultBean; + } + if (r == 2) { + // ToDo:驳回到发起人后再次提交 + if (StringUtils.isBlank(dto.getInstanceId())) { + return rb.setMsg("参数错误:instanceId"); + } + bv.setTaskId(loanVehClearanceApply.getTaskId()); + bv.setTaskDefKey(loanVehClearanceApply.getNodeSid()); + bv.setComment(StringUtils.isNotBlank(dto.getComment()) ? dto.getComment() : "重新提交"); + bv.setInstanceId(dto.getInstanceId()); + return complete(bv); + } + return rb; + } + + private synchronized int submitBusinessData(SubmitLoanVehClearanceApplyDto dto, LoanVehClearanceApply loanVehClearanceApply) { + int r = 0; + if (StringUtils.isBlank(dto.getSid())) { + r = 1; + } else { + if (loanVehClearanceApply != null) { + String businessTaskId = loanVehClearanceApply.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; + } + + private int updateFlowFiled(Map map) { + return baseMapper.updateFlowFiled(map); + } + + public ResultBean complete(BusinessVariables bv) { + ResultBean rb = ResultBean.fireFail(); + String businessSid = bv.getBusinessSid(); + LoanVehClearanceApply loanVehClearanceApply = fetchBySid(businessSid); + Map variables = new HashMap<>(); + Map appMap = new HashMap<>(); + appMap.put("sid", businessSid); + variables.put("app", appMap); + //判断解控车辆列表中,远程控制费用是否小于实收 + List loanVehClearanceVehDetailsVoList = loanVehClearanceVehService.selByMainSid(businessSid); + for (LoanVehClearanceVehDetailsVo loanVehClearanceVehDetailsVo : loanVehClearanceVehDetailsVoList) { + BigDecimal lockCarMoney = new BigDecimal(loanVehClearanceVehDetailsVo.getLockCarMoney()); + BigDecimal lockCarRealityMoney = new BigDecimal(loanVehClearanceVehDetailsVo.getLockCarRealityMoney()); + if (lockCarMoney.compareTo(lockCarRealityMoney) > 0) { + variables.put("isAdj", true); + break; + } else { + variables.put("isAdj", false); + } + } + FlowProcessMapQuery flowProcessMapQuery = new FlowProcessMapQuery(); + if (StringUtils.isBlank(loanVehClearanceApply.getProcDefId())) { + flowProcessMapQuery.setProDefKey(bv.getModelId()); + } else { + flowProcessMapQuery.setProDefKey(loanVehClearanceApply.getProcDefId()); + } + flowProcessMapQuery.setVariables(variables); + variables = flowableFeign.getMap(flowProcessMapQuery).getData(); + //======================================= + bv.setFormVariables(variables); + bv.setOrgSidPath(loanVehClearanceApply.getOrgPath()); + if (bv.getTaskId().equals(loanVehClearanceApply.getTaskId())) { + ResultBean resultBean = flowableFeign.handleProsess(bv); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + UpdateFlowFieldVo ufVo = resultBean.getData(); + updateFlowFiled(BeanUtil.beanToMap(resultBean.getData())); + if ("Event_end".equals(resultBean.getData().getTaskDefKey())) { + } else { + //极光推送 + loanVehClearanceApply = fetchBySid(businessSid); + MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); + MessageFlowVo messageFlowVo = new MessageFlowVo(); + BeanUtil.copyProperties(ufVo, messageFlowVo); + ufVo.setProcDefId(loanVehClearanceApply.getProcDefId()); + ufVo.setProcInsId(loanVehClearanceApply.getProcInstSid()); + messageFlowableQuery.setUfVo(messageFlowVo); + messageFlowableQuery.setAppMap(appMap); + messageFlowableQuery.setBusinessSid(businessSid); + messageFlowableQuery.setModuleName("催收措施申请"); + messageFlowableQuery.setMsgContent(loanVehClearanceApply.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); + messageFlowableQuery.setMsgTitle("催收措施申请"); + messageFeign.pushMessage(messageFlowableQuery); + } + return rb.success().setData(resultBean.getData()); + } else { + return rb.setMsg("操作失败!提交的数据不一致"); + } + } + + public ResultBean> getPreviousNodesForReject(LoanVehClearanceApplyNodeQuery query) { + ResultBean> rb = ResultBean.fireFail(); + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + bv.setModelId(ProcDefEnum.LOANVEHCLEARANCEAPPLY.getProDefId()); + ResultBean>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv); + //判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo + List voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), LoanVehClearanceApplyNodeVo.class)).collect(Collectors.toList()); + return rb.success().setData(voList); + } + + public ResultBean> getNextNodesForSubmit(LoanVehClearanceApplyNodeQuery query) { + ResultBean> rb = ResultBean.fireFail(); + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + bv.setModelId(ProcDefEnum.LOANVEHCLEARANCEAPPLY.getProDefId()); + ResultBean>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv); + //判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo + List voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), LoanVehClearanceApplyNodeVo.class)).collect(Collectors.toList()); + return rb.success().setData(voList); + } + + public ResultBean reject(LoanVehClearanceApplyTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + String businessSid = query.getBusinessSid(); + LoanVehClearanceApply loanVehClearanceApply = fetchBySid(businessSid); + if (loanVehClearanceApply == null) { + return rb.setMsg("该申请不存在"); + } + String businessTaskId = loanVehClearanceApply.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 variables = new HashMap<>(); + Map appMap = new HashMap<>(); + appMap.put("sid", businessSid); + variables.put("app", appMap); + flowTaskVo.setValues(variables); + ResultBean resultBean = flowableFeign.taskReject(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + UpdateFlowFieldVo ufVo = resultBean.getData(); + Map map = BeanUtil.beanToMap(ufVo); + //更新业务中的流程相关的参数 + updateFlowFiled(map); + //极光推送 + loanVehClearanceApply = fetchBySid(businessSid); + MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); + MessageFlowVo messageFlowVo = new MessageFlowVo(); + BeanUtil.copyProperties(ufVo, messageFlowVo); + String procId = loanVehClearanceApply.getProcInstSid(); + ufVo.setProcInsId(procId); + ufVo.setProcDefId(loanVehClearanceApply.getProcDefId()); + messageFlowableQuery.setUfVo(messageFlowVo); + messageFlowableQuery.setAppMap(appMap); + messageFlowableQuery.setBusinessSid(businessSid); + messageFlowableQuery.setModuleName("催收措施申请"); + ResultBean> listResultBean = flowTaskFeign.getLatestTasks(procId); + String nextNodeUserSids = listResultBean.getData().get(0).getASSIGNEE_(); + List receiveSidList = Arrays.asList(nextNodeUserSids.split(",")); + if (receiveSidList.size() == 1 && receiveSidList.get(0).equals(loanVehClearanceApply.getCreateBySid())) { + messageFlowableQuery.setMsgContent("您提交的" + messageFlowableQuery.getModuleName() + "已被驳回,请重新提交"); + } else { + messageFlowableQuery.setMsgContent(loanVehClearanceApply.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); + } + messageFlowableQuery.setMsgTitle("催收措施申请"); + messageFeign.pushMessage(messageFlowableQuery); + return rb.success(); + } + } + return rb.setMsg("操作失败!提交的数据不一致!"); + } + + public ResultBean revokeProcess(LoanVehClearanceApplyTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + if (StringUtils.isBlank(query.getUserSid())) { + return rb.setMsg("参数错误:userSid"); + } + LoanVehClearanceApply loanVehClearanceApply = fetchBySid(query.getBusinessSid()); + String businessTaskId = loanVehClearanceApply.getTaskId(); + if (StringUtils.isNotBlank(businessTaskId)) { + if (businessTaskId.equals(query.getTaskId())) { + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + ResultBean resultBean = flowableFeign.revokeProcess(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + updateFlowFiled(BeanUtil.beanToMap(resultBean.getData())); + return rb.success().setData(resultBean.getData()); + } + } + return rb.setMsg("操作失败,提交的数据不一致!"); + } + + public ResultBean breakProcess(LoanVehClearanceApplyTaskQuery 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("请填写意见"); + } + LoanVehClearanceApply loanVehClearanceApply = fetchBySid(query.getBusinessSid()); + String businessTaskId = loanVehClearanceApply.getTaskId(); + if (StringUtils.isNotBlank(businessTaskId)) { + if (query.getUserSid().equals(loanVehClearanceApply.getCreateBySid())) { + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + ResultBean resultBean = flowableFeign.breakProcess(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + Map 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 resultBean = flowableFeign.breakProcess(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + Map map = BeanUtil.beanToMap(resultBean.getData()); + updateFlowFiled(map); + return rb.success().setData(resultBean.getData()); + } + } + + } + return rb.setMsg("操作失败!提交的数据不一致!"); + } + + public ResultBean delegate(LoanVehClearanceApplyDelegateQuery query) { + ResultBean rb = ResultBean.fireFail(); + FlowDelegateQuery delegateQuery = new FlowDelegateQuery(); + BeanUtil.copyProperties(query, delegateQuery); + flowFeign.delegate(delegateQuery); + return rb.success(); + } } \ No newline at end of file diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/vehclearance/AppVehClearanceApplyDetailsVo.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/vehclearance/AppVehClearanceApplyDetailsVo.java new file mode 100644 index 0000000000..d584e2fede --- /dev/null +++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/vehclearance/AppVehClearanceApplyDetailsVo.java @@ -0,0 +1,72 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.terminal.api.risk.vehclearance; + + +import com.yxt.anrui.terminal.api.risk.becollection.AppBeCollectionVehDetailsVo; +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * Project: anrui-riskcenter(催收措施申请)
+ * File: LoanBeCollectionApplyVo.java
+ * Class: com.yxt.anrui.riskcenter.api.loanbecollectionapply.LoanBeCollectionApplyVo
+ * Description: 逾期催收申请 视图数据对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2023-12-12 16:06:20
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "逾期催收申请 视图数据详情", description = "逾期催收申请 视图数据详情") +public class AppVehClearanceApplyDetailsVo implements Vo { + + private String sid; // sid + + @ApiModelProperty("申请部门-申请人") + private String publishInfo; + @ApiModelProperty("申请日期") + private String time; + @ApiModelProperty("备注") + private String remarks; + @ApiModelProperty("附件") + private List files = new ArrayList<>(); + @ApiModelProperty("任务id") + private String taskId; + @ApiModelProperty("流程实例的sid") + private String procInsId; + + @ApiModelProperty("逾期车辆列表") + private List records; +} \ No newline at end of file diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/vehclearance/AppVehClearanceVehDetailsVo.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/vehclearance/AppVehClearanceVehDetailsVo.java new file mode 100644 index 0000000000..07a301889b --- /dev/null +++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/vehclearance/AppVehClearanceVehDetailsVo.java @@ -0,0 +1,99 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.terminal.api.risk.vehclearance; + + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.anrui.terminal.api.risk.loanhomevisitinvestigate.AppLoanHomeVisitVo; +import com.yxt.common.core.vo.Vo; +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-riskcenter(催收措施申请)
+ * File: LoanBeCollectionVehVo.java
+ * Class: com.yxt.anrui.riskcenter.api.loanbecollectionveh.LoanBeCollectionVehVo
+ * Description: 逾期催收车辆 视图数据对象.
+ * Copyright: Copyright (c) 2011
+ * Company: https://gitee.com/liuzp315
+ * Makedate: 2023-12-12 16:06:20
+ * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "逾期催收车辆 视图数据详情", description = "逾期催收车辆 视图数据详情") +public class AppVehClearanceVehDetailsVo implements Vo { + + @ApiModelProperty("是否有担保人") + private Boolean showDbr = false; + @ApiModelProperty("销售订单车辆sid") + private String saleVehSid; + @ApiModelProperty("贷款合同编号") + private String contractId; + @ApiModelProperty("车架号") + private String vin; + @ApiModelProperty("车牌号") + private String carNum; + @ApiModelProperty("资方") + private String zf; + @ApiModelProperty("资方合同号") + private String zfNo; + @ApiModelProperty("客户名称") + private String cusName; + @ApiModelProperty("联系电话") + private String cusPhone; + @ApiModelProperty("贷款人") + private String loanName; + @ApiModelProperty("首次逾期日期") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + private Date firstBeDate; + @ApiModelProperty("逾期期数") + private String instalments; + @ApiModelProperty("逾期金额") + private String beOverdueMoney; + @ApiModelProperty("逾期金额换算期数") + private String beOverdueMoneyAndPeriod; + @ApiModelProperty("远程控制费用") + private String lockCarMoney; + @ApiModelProperty("实收") + private String lockCarRealMoney; + @ApiModelProperty("还款协议附件") + private List appHkxy = new ArrayList<>(); + + @ApiModelProperty("月还明细sid") + private String yhmxSid; + @ApiModelProperty("家访考察sid") + private String jfkcSid; + @ApiModelProperty("金融方案详情页面") + private AppLoanHomeVisitVo jrfa; +} \ No newline at end of file diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/vehclearance/VehClearanceFeign.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/vehclearance/VehClearanceFeign.java new file mode 100644 index 0000000000..698ad9c676 --- /dev/null +++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/vehclearance/VehClearanceFeign.java @@ -0,0 +1,68 @@ +package com.yxt.anrui.terminal.api.risk.vehclearance; + +import com.yxt.anrui.terminal.api.risk.becollection.*; +import com.yxt.anrui.terminal.api.risk.becollection.flowable.AppBeCollectionDelegateQuery; +import com.yxt.anrui.terminal.api.risk.becollection.flowable.BeCollectionQuery; +import com.yxt.anrui.terminal.api.risk.becollection.flowable.BeCollectionTaskQuery; +import com.yxt.anrui.terminal.api.risk.becollection.flowable.CompleteBeCollectionDto; +import com.yxt.anrui.terminal.api.risk.vehclearance.flowable.AppVehClearanceDelegateQuery; +import com.yxt.anrui.terminal.api.risk.vehclearance.flowable.CompleteVehClearanceDto; +import com.yxt.anrui.terminal.api.risk.vehclearance.flowable.VehClearanceQuery; +import com.yxt.anrui.terminal.api.risk.vehclearance.flowable.VehClearanceTaskQuery; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.cloud.openfeign.SpringQueryMap; +import org.springframework.web.bind.annotation.*; + +/** + * @Author + * @Date + * @Description + */ +@Api(tags = "逾期垫款催收") +@FeignClient( + contextId = "terminal-VehClearance", + name = "anrui-terminal", + path = "riskcenter/v1/vehClearance", + fallback = VehClearanceFeignFallback.class) +public interface VehClearanceFeign { + + @ApiOperation("办理") + @PutMapping("/agreeCreditInfo") + @ResponseBody + ResultBean agreeCreditInfo(@RequestBody CompleteVehClearanceDto dto); + + @ApiOperation("驳回") + @PutMapping("/rejectCreditInfo") + @ResponseBody + ResultBean rejectCreditInfo(@RequestBody VehClearanceTaskQuery query); + + @ApiOperation("撤回") + @PutMapping("/recallCreditInfo") + @ResponseBody + ResultBean recallCreditInfo(@RequestBody VehClearanceTaskQuery query); + + @ApiOperation("终止") + @PutMapping("/stopCreditInfo") + @ResponseBody + ResultBean stopCreditInfo(@RequestBody VehClearanceTaskQuery query); + + @ApiOperation("获取流程操作标题") + @GetMapping("/getFlowOperateTitle") + @ResponseBody + ResultBean getFlowOperateTitle(@SpringQueryMap VehClearanceQuery query); + + @ApiOperation(value = "加签") + @PutMapping(value = "/delegate") + @ResponseBody + public ResultBean delegate(@RequestBody AppVehClearanceDelegateQuery delegateQuery); + + @ApiOperation("远程解控详情") + @GetMapping("/details/{sid}") + @ResponseBody + public ResultBean collectionDetail(@PathVariable("sid") String sid); +} diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/vehclearance/VehClearanceFeignFallback.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/vehclearance/VehClearanceFeignFallback.java new file mode 100644 index 0000000000..21a02eb760 --- /dev/null +++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/vehclearance/VehClearanceFeignFallback.java @@ -0,0 +1,12 @@ +package com.yxt.anrui.terminal.api.risk.vehclearance; + +import org.springframework.stereotype.Component; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/8/8 + **/ +@Component +public class VehClearanceFeignFallback { +} diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/vehclearance/flowable/AppVehClearanceDelegateQuery.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/vehclearance/flowable/AppVehClearanceDelegateQuery.java new file mode 100644 index 0000000000..888ffc091b --- /dev/null +++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/vehclearance/flowable/AppVehClearanceDelegateQuery.java @@ -0,0 +1,25 @@ +package com.yxt.anrui.terminal.api.risk.vehclearance.flowable; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author Administrator + * @description + * @date 2023/9/28 10:16 + */ +@Data +public class AppVehClearanceDelegateQuery { + @ApiModelProperty + private String userSid; + @ApiModelProperty("流程实例id") + @JsonProperty("procInsId") + private String instanceId; + @ApiModelProperty("任务Id") + private String taskId; + @ApiModelProperty("审批人sid") + private String assignee; + @ApiModelProperty("填写意见") + private String views; +} diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/vehclearance/flowable/CompleteVehClearanceDto.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/vehclearance/flowable/CompleteVehClearanceDto.java new file mode 100644 index 0000000000..f2855f6e6e --- /dev/null +++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/vehclearance/flowable/CompleteVehClearanceDto.java @@ -0,0 +1,34 @@ +package com.yxt.anrui.terminal.api.risk.vehclearance.flowable; + +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; + +@Data +public class CompleteVehClearanceDto implements Dto { + private static final long serialVersionUID = 7978653524636034916L; + + @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; + + private String orgPath; +} diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/vehclearance/flowable/VehClearanceQuery.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/vehclearance/flowable/VehClearanceQuery.java new file mode 100644 index 0000000000..114e369b65 --- /dev/null +++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/vehclearance/flowable/VehClearanceQuery.java @@ -0,0 +1,17 @@ +package com.yxt.anrui.terminal.api.risk.vehclearance.flowable; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class VehClearanceQuery implements Query { + private static final long serialVersionUID = -3563282658560745370L; + + @ApiModelProperty(value = "节点key") + private String taskDefKey; + @ApiModelProperty(value = "业务sid") + private String businessSid; + @ApiModelProperty(value = "0 上一环节 1下一环节") + private Integer next; +} diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/vehclearance/flowable/VehClearanceTaskQuery.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/vehclearance/flowable/VehClearanceTaskQuery.java new file mode 100644 index 0000000000..804f36b509 --- /dev/null +++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/vehclearance/flowable/VehClearanceTaskQuery.java @@ -0,0 +1,42 @@ +package com.yxt.anrui.terminal.api.risk.vehclearance.flowable; + +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 VehClearanceTaskQuery implements Query { + private static final long serialVersionUID = -6952737531036706114L; + + /** + * 终止、驳回、撤回 + */ + @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; +} diff --git a/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/vehclearance/VehClearanceRest.java b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/vehclearance/VehClearanceRest.java new file mode 100644 index 0000000000..b10e6ed136 --- /dev/null +++ b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/vehclearance/VehClearanceRest.java @@ -0,0 +1,87 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.terminal.biz.risk.vehclearance; + +import com.yxt.anrui.terminal.api.risk.becollection.*; +import com.yxt.anrui.terminal.api.risk.becollection.flowable.AppBeCollectionDelegateQuery; +import com.yxt.anrui.terminal.api.risk.becollection.flowable.BeCollectionQuery; +import com.yxt.anrui.terminal.api.risk.becollection.flowable.BeCollectionTaskQuery; +import com.yxt.anrui.terminal.api.risk.becollection.flowable.CompleteBeCollectionDto; +import com.yxt.anrui.terminal.api.risk.vehclearance.AppVehClearanceApplyDetailsVo; +import com.yxt.anrui.terminal.api.risk.vehclearance.VehClearanceFeign; +import com.yxt.anrui.terminal.api.risk.vehclearance.flowable.AppVehClearanceDelegateQuery; +import com.yxt.anrui.terminal.api.risk.vehclearance.flowable.CompleteVehClearanceDto; +import com.yxt.anrui.terminal.api.risk.vehclearance.flowable.VehClearanceQuery; +import com.yxt.anrui.terminal.api.risk.vehclearance.flowable.VehClearanceTaskQuery; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController("车辆远程解控") +@RequestMapping("riskcenter/v1/vehClearance") +public class VehClearanceRest implements VehClearanceFeign { + + @Autowired + private VehClearanceService beCollectionService; + + @Override + public ResultBean agreeCreditInfo(CompleteVehClearanceDto dto) { + return beCollectionService.agreeCreditInfo(dto); + } + + @Override + public ResultBean rejectCreditInfo(VehClearanceTaskQuery query) { + return beCollectionService.rejectCreditInfo(query); + } + + @Override + public ResultBean recallCreditInfo(VehClearanceTaskQuery query) { + return beCollectionService.recallCreditInfo(query); + } + + @Override + public ResultBean stopCreditInfo(VehClearanceTaskQuery query) { + return beCollectionService.stopCreditInfo(query); + } + + @Override + public ResultBean getFlowOperateTitle(VehClearanceQuery query) { + return beCollectionService.getFlowOperateTitle(query); + } + + @Override + public ResultBean delegate(AppVehClearanceDelegateQuery delegateQuery) { + return beCollectionService.delegate(delegateQuery); + } + + @Override + public ResultBean collectionDetail(String sid) { + return beCollectionService.collectionDetail(sid); + } +} diff --git a/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/vehclearance/VehClearanceService.java b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/vehclearance/VehClearanceService.java new file mode 100644 index 0000000000..f2258acd07 --- /dev/null +++ b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/vehclearance/VehClearanceService.java @@ -0,0 +1,212 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.anrui.terminal.biz.risk.vehclearance; + + +import cn.hutool.core.bean.BeanUtil; +import com.yxt.anrui.riskcenter.api.loanbecollectionapply.flowable.*; +import com.yxt.anrui.riskcenter.api.loansolutions.LoanSolutions; +import com.yxt.anrui.riskcenter.api.loansolutions.LoanSolutionsFeign; +import com.yxt.anrui.riskcenter.api.loanvehclearanceapply.LoanVehClearanceApplyDetailsVo; +import com.yxt.anrui.riskcenter.api.loanvehclearanceapply.LoanVehClearanceApplyFeign; +import com.yxt.anrui.riskcenter.api.loanvehclearanceapply.LoanVehClearanceFileVo; +import com.yxt.anrui.riskcenter.api.loanvehclearanceapply.flowable.*; +import com.yxt.anrui.riskcenter.api.loanvehclearanceveh.LoanVehClearanceVehDetailsVo; +import com.yxt.anrui.riskcenter.api.loanvehclearanceveh.LoanVehClearanceVehFile; +import com.yxt.anrui.terminal.api.base.common.CarModelVo; +import com.yxt.anrui.terminal.api.risk.loanhomevisitinvestigate.AppLoanHomeVisitVo; +import com.yxt.anrui.terminal.api.risk.vehclearance.AppVehClearanceApplyDetailsVo; +import com.yxt.anrui.terminal.api.risk.vehclearance.AppVehClearanceVehDetailsVo; +import com.yxt.anrui.terminal.api.risk.vehclearance.flowable.AppVehClearanceDelegateQuery; +import com.yxt.anrui.terminal.api.risk.vehclearance.flowable.CompleteVehClearanceDto; +import com.yxt.anrui.terminal.api.risk.vehclearance.flowable.VehClearanceQuery; +import com.yxt.anrui.terminal.api.risk.vehclearance.flowable.VehClearanceTaskQuery; +import com.yxt.anrui.terminal.biz.base.common.CommonService; +import com.yxt.common.core.result.ResultBean; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +@Service +public class VehClearanceService { + + @Autowired + private LoanVehClearanceApplyFeign loanVehClearanceApplyFeign; + @Autowired + private LoanSolutionsFeign loanSolutionsFeign; + @Autowired + private CommonService commonService; + + public ResultBean agreeCreditInfo(CompleteVehClearanceDto dto) { + ResultBean rb = ResultBean.fireFail(); + LoanVehClearanceApplyCompleteDto loanVehClearanceApplyCompleteDto = new LoanVehClearanceApplyCompleteDto(); + BeanUtil.copyProperties(dto, loanVehClearanceApplyCompleteDto); + loanVehClearanceApplyFeign.complete(loanVehClearanceApplyCompleteDto); + return rb.success(); + } + + public ResultBean rejectCreditInfo(VehClearanceTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + LoanVehClearanceApplyTaskQuery taskQuery = new LoanVehClearanceApplyTaskQuery(); + BeanUtil.copyProperties(query, taskQuery); + ResultBean resultBean = loanVehClearanceApplyFeign.reject(taskQuery); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + return rb.success().setData(resultBean.getData()); + } + + public ResultBean recallCreditInfo(VehClearanceTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + LoanVehClearanceApplyTaskQuery taskQuery = new LoanVehClearanceApplyTaskQuery(); + BeanUtil.copyProperties(query, taskQuery); + ResultBean resultBean = loanVehClearanceApplyFeign.revokeProcess(taskQuery); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + return rb.success().setData(resultBean.getData()); + } + + public ResultBean stopCreditInfo(VehClearanceTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + LoanVehClearanceApplyTaskQuery taskQuery = new LoanVehClearanceApplyTaskQuery(); + BeanUtil.copyProperties(query, taskQuery); + ResultBean resultBean = loanVehClearanceApplyFeign.breakProcess(taskQuery); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + return rb.success().setData(resultBean.getData()); + } + + public ResultBean getFlowOperateTitle(VehClearanceQuery query) { + ResultBean rb = ResultBean.fireFail(); + //0 上一环节 1下一环节 + int next = query.getNext(); + LoanVehClearanceApplyNodeQuery getNodeQuery = new LoanVehClearanceApplyNodeQuery(); + BeanUtil.copyProperties(query, getNodeQuery); + String data = ""; + if (next == 0) { + ResultBean> previousNodesForReject = loanVehClearanceApplyFeign.getPreviousNodesForReject(getNodeQuery); + if (previousNodesForReject.getSuccess()) { + previousNodesForReject.getData().removeAll(Collections.singleton(null)); + data = previousNodesForReject.getData().get(0).getName(); + } else { + return rb.setMsg(previousNodesForReject.getMsg()); + } + } else if (next == 1) { + ResultBean> nextNodesForSubmit = loanVehClearanceApplyFeign.getNextNodesForSubmit(getNodeQuery); + if (nextNodesForSubmit.getSuccess()) { + nextNodesForSubmit.getData().removeAll(Collections.singleton(null)); + data = nextNodesForSubmit.getData().get(0).getName(); + } else { + return rb.setMsg(nextNodesForSubmit.getMsg()); + } + } else { + return rb.setMsg("参数错误:next"); + } + return rb.success().setData(data); + } + + public ResultBean delegate(AppVehClearanceDelegateQuery delegateQuery) { + ResultBean rb = ResultBean.fireFail(); + LoanVehClearanceApplyDelegateQuery delegateQuery1 = new + LoanVehClearanceApplyDelegateQuery(); + BeanUtil.copyProperties(delegateQuery, delegateQuery1); + loanVehClearanceApplyFeign.delegate(delegateQuery1); + return rb.success(); + } + + public ResultBean collectionDetail(String sid) { + ResultBean rb = ResultBean.fireFail(); + LoanVehClearanceApplyDetailsVo loanVehClearanceApplyDetailsVo = loanVehClearanceApplyFeign.fetchDetailsBySid(sid).getData(); + AppVehClearanceApplyDetailsVo appVehClearanceApplyDetailsVo = new AppVehClearanceApplyDetailsVo(); + appVehClearanceApplyDetailsVo.setPublishInfo(loanVehClearanceApplyDetailsVo.getDeptName() + "-" + loanVehClearanceApplyDetailsVo.getCreateByName()); + appVehClearanceApplyDetailsVo.setTime(loanVehClearanceApplyDetailsVo.getCreateTime()); + appVehClearanceApplyDetailsVo.setRemarks(loanVehClearanceApplyDetailsVo.getRemarks()); + List files = loanVehClearanceApplyDetailsVo.getFiles(); + List appFiles = new ArrayList<>(); + if (files != null && files.size() > 0){ + for (LoanVehClearanceFileVo file : files) { + appFiles.add(file.getUrl()); + } + } + appVehClearanceApplyDetailsVo.setFiles(appFiles); + appVehClearanceApplyDetailsVo.setTaskId(loanVehClearanceApplyDetailsVo.getTaskId()); + appVehClearanceApplyDetailsVo.setProcInsId(loanVehClearanceApplyDetailsVo.getProcInstSid()); + List loanVehClearanceVehList = loanVehClearanceApplyDetailsVo.getLoanVehClearanceVehList(); + List appVehClearanceVehDetailsVos = new ArrayList<>(); + for (LoanVehClearanceVehDetailsVo loanVehClearanceVehDetailsVo : loanVehClearanceVehList) { + AppVehClearanceVehDetailsVo appVehClearanceVehDetailsVo = new AppVehClearanceVehDetailsVo(); + appVehClearanceVehDetailsVo.setShowDbr(true); + appVehClearanceVehDetailsVo.setSaleVehSid(loanVehClearanceVehDetailsVo.getSaleVehSid()); + appVehClearanceVehDetailsVo.setContractId(loanVehClearanceVehDetailsVo.getLoanContractNo()); + appVehClearanceVehDetailsVo.setVin(loanVehClearanceVehDetailsVo.getVinNo()); + appVehClearanceVehDetailsVo.setCarNum(loanVehClearanceVehDetailsVo.getCarNum()); + appVehClearanceVehDetailsVo.setZf(loanVehClearanceVehDetailsVo.getBankName()); + appVehClearanceVehDetailsVo.setZfNo(loanVehClearanceVehDetailsVo.getLoanContractNo()); + appVehClearanceVehDetailsVo.setCusName(loanVehClearanceVehDetailsVo.getCustomerName()); + appVehClearanceVehDetailsVo.setLoanName(loanVehClearanceVehDetailsVo.getBorrowerName()); + appVehClearanceVehDetailsVo.setFirstBeDate(loanVehClearanceVehDetailsVo.getFirstBeDate()); + appVehClearanceVehDetailsVo.setInstalments(loanVehClearanceVehDetailsVo.getBeOverduePeriod()); + appVehClearanceVehDetailsVo.setBeOverdueMoney(loanVehClearanceVehDetailsVo.getBeOverdueMoney()); + appVehClearanceVehDetailsVo.setBeOverdueMoneyAndPeriod(loanVehClearanceVehDetailsVo.getBeOverdueMoneyAndPeriod()); + appVehClearanceVehDetailsVo.setLockCarMoney(loanVehClearanceVehDetailsVo.getLockCarMoney()); + appVehClearanceVehDetailsVo.setLockCarRealMoney(loanVehClearanceVehDetailsVo.getLockCarRealityMoney()); + List sids = loanVehClearanceVehDetailsVo.getSids(); + List appHkxy = new ArrayList<>(); + for (LoanVehClearanceVehFile loanVehClearanceVehFile : sids) { + if ("还款协议".equals(loanVehClearanceVehFile.getName())){ + List pcFiles = loanVehClearanceVehFile.getFiles(); + if (pcFiles != null && pcFiles.size() > 0){ + for (String file : pcFiles) { + appHkxy.add(file); + } + } + } + if ("月还明细".equals(loanVehClearanceVehFile.getName())){ + appVehClearanceVehDetailsVo.setYhmxSid(loanVehClearanceVehFile.getSid()); + } + if ("金融方案".equals(loanVehClearanceVehFile.getName())){ + LoanSolutions loanSolutions = loanSolutionsFeign.fetchBySid(loanVehClearanceVehFile.getSid()).getData(); + CarModelVo finPage1 = commonService.getLoanSolution(loanSolutions.getSalesOrderSid()).getData(); + AppLoanHomeVisitVo finPage2 = new AppLoanHomeVisitVo(); + BeanUtil.copyProperties(finPage1, finPage2); + appVehClearanceVehDetailsVo.setJrfa(finPage2); + } + if ("家访考察报告".equals(loanVehClearanceVehFile.getName())){ + appVehClearanceVehDetailsVo.setJfkcSid(loanVehClearanceVehFile.getSid()); + } + } + appVehClearanceVehDetailsVo.setAppHkxy(appHkxy); + appVehClearanceVehDetailsVos.add(appVehClearanceVehDetailsVo); + } + appVehClearanceApplyDetailsVo.setRecords(appVehClearanceVehDetailsVos); + return rb.success().setData(appVehClearanceApplyDetailsVo); + } +} \ No newline at end of file