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 c06ef005ee..3e32edf537 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 @@ -75,6 +75,7 @@ public enum ProcDefEnum { LOANSUBLETAPPLY("交回车辆二次转租申请", "process_lu7pdwzs:1:7940004"), LOANOUTBOUNDVEHAPPLY("交回车辆出库申请", "process_14spbdx8:1:7982504"), LOANSECONDSALEAPPLY("交车车辆二次销售申请", "process_6kb1z0pe:4:8110004"), + LOANSETTLEAPPLY("结清申请", ""), LOANREPURCHASEAPPLY("回购申请", "process_1ozjarxl:1:8207504"), /******************************测试流程id*********************************************/ diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansecondarysalesveh/SalesVehVo.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansecondarysalesveh/SalesVehVo.java new file mode 100644 index 0000000000..6fad942083 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansecondarysalesveh/SalesVehVo.java @@ -0,0 +1,25 @@ +package com.yxt.anrui.riskcenter.api.loansecondarysalesveh; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/2/6 + **/ +@Data +public class SalesVehVo { + @ApiModelProperty("车辆台账sid") + private String ledgerSid; + @ApiModelProperty("车架号") + private String vinNo; + @ApiModelProperty("车牌号") + private String vehMark; + @ApiModelProperty("类型") + private String vehType; + @ApiModelProperty("车型名称") + private String vehModel; + @ApiModelProperty("销售订单车辆sid") + private String busVinSid; +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApply.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApply.java new file mode 100644 index 0000000000..334c91562f --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApply.java @@ -0,0 +1,72 @@ +package com.yxt.anrui.riskcenter.api.loansettleapply; + +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/2/5 + **/ +@Data +public class LoanSettleApply extends BaseEntity { + private static final long serialVersionUID = -7535762549485962120L; + @ApiModelProperty("申请人") + private String createByName; + @ApiModelProperty("申请部门") + private String createDept; + @ApiModelProperty("申请部门sid") + private String createDeptSid; + @ApiModelProperty("车架号") + private String vinNo; + @ApiModelProperty("车牌号") + private String vehMark; + @ApiModelProperty("销售订单车辆sid") + private String busVinSid; + @ApiModelProperty("销售订单sid") + private String saleOrderSid; + @ApiModelProperty("客户名称") + private String customerName; + @ApiModelProperty("客户sid") + private String customerSid; + @ApiModelProperty("贷款人") + private String loanName; + @ApiModelProperty("贷款人sid") + private String loanSid; + @ApiModelProperty("贷款合同编号") + private String loanContractNo; + @ApiModelProperty("资方") + private String bankName; + @ApiModelProperty("资方合同编号") + private String bankContractNo; + @ApiModelProperty("结清日期") + private String settingDate; + @ApiModelProperty("公司当前逾期月还") + private BigDecimal overdueMonthPrice; + @ApiModelProperty("公司当期未到期月还") + private BigDecimal currentNotDuePrice; + @ApiModelProperty("公司未到期月还") + private BigDecimal notDuePrice; + @ApiModelProperty("分公司sid") + private String useOrgSid; + @ApiModelProperty("分公司") + private String useOrgName; + @ApiModelProperty("机构全路径四大") + private String orgSidPath; + @ApiModelProperty("办结日期") + private String closeDate; + @ApiModelProperty("实例id") + private String procInstId; + @ApiModelProperty("流程定义id") + private String procDefId; + @ApiModelProperty("任务id") + private String taskId; + @ApiModelProperty("环节id") + private String taskDefKey; + @ApiModelProperty("流程状态") + private String nodeState; + +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApplyDetailsQuery.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApplyDetailsQuery.java new file mode 100644 index 0000000000..1d9100857c --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApplyDetailsQuery.java @@ -0,0 +1,14 @@ +package com.yxt.anrui.riskcenter.api.loansettleapply; + +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/2/6 + **/ +@Data +public class LoanSettleApplyDetailsQuery { + + private String sid; +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApplyDetailsVo.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApplyDetailsVo.java new file mode 100644 index 0000000000..b98a2f5a76 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApplyDetailsVo.java @@ -0,0 +1,12 @@ +package com.yxt.anrui.riskcenter.api.loansettleapply; + +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/2/6 + **/ +@Data +public class LoanSettleApplyDetailsVo { +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApplyDto.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApplyDto.java new file mode 100644 index 0000000000..856bb3956c --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApplyDto.java @@ -0,0 +1,17 @@ +package com.yxt.anrui.riskcenter.api.loansettleapply; + +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/2/6 + **/ +@Data +public class LoanSettleApplyDto { + + + private String sid; + private String userSid; + private String orgPath; +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApplyFeign.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApplyFeign.java new file mode 100644 index 0000000000..b13d9c5d86 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApplyFeign.java @@ -0,0 +1,78 @@ +package com.yxt.anrui.riskcenter.api.loansettleapply; + +import com.yxt.anrui.riskcenter.api.loansettleapply.flowable.*; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import io.swagger.annotations.ApiOperation; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.cloud.openfeign.SpringQueryMap; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/2/5 + **/ +@FeignClient( + contextId = "anrui-riskcenter-LoanSettleApply", + name = "anrui-riskcenter", + path = "v1/LoanSettleApply", + fallback = LoanSettleApplyFeignFallback.class) +public interface LoanSettleApplyFeign { + + @ApiOperation("分页列表") + @PostMapping("/listPage") + ResultBean> listPage(@RequestBody PagerQuery pq); + + @ApiOperation("新增或修改") + @PostMapping("/saveOrUpdate") + ResultBean saveOrUpdate(@RequestBody LoanSettleApplyDto dto); + + @ApiOperation("详情初始化") + @PostMapping("/details") + ResultBean details(@RequestBody LoanSettleApplyDetailsQuery query); + + @ApiOperation("删除/批量删除") + @DeleteMapping("/delBySids") + ResultBean delBySids(@RequestBody String[] sids); + + @ApiOperation("提交") + @PostMapping("/submitApply") + public ResultBean submitApply(@Valid @RequestBody SubmitSettleApplyDto dto); + + @ApiOperation(value = "办理(同意)") + @PostMapping("/complete") + public ResultBean complete(@Valid @RequestBody CompleteLoanSettleApplyDto query); + + @ApiOperation(value = "获取上一个环节") + @GetMapping(value = "/getPreviousNodesForReject") + ResultBean> getPreviousNodesForReject(@Valid @SpringQueryMap LoanSettleApplyNodeQuery query); + + @ApiOperation(value = "获取下一个环节") + @GetMapping(value = "/getNextNodesForSubmit") + ResultBean> getNextNodesForSubmit(@Valid @SpringQueryMap LoanSettleApplyNodeQuery query); + + @ApiOperation(value = "驳回任务") + @PostMapping(value = "/reject") + public ResultBean taskReject(@Valid @RequestBody LoanSettleApplyTaskQuery query); + + @ApiOperation(value = "撤回流程") + @PostMapping(value = "/revokeProcess") + public ResultBean revokeProcess(@Valid @RequestBody LoanSettleApplyTaskQuery query); + + @ApiOperation(value = "终止任务") + @PostMapping(value = "/breakProcess") + public ResultBean breakProcess(@Valid @RequestBody LoanSettleApplyTaskQuery query); + + @ApiOperation(value = "加签") + @PostMapping(value = "/delegate") + public ResultBean delegate(@RequestBody LoanSettleApplyDelegateQuery query); + + @ApiOperation(value = "移动端详情") + @PostMapping(value = "/getAppDetails") + ResultBean getAppDetails(@RequestParam("sid") String sid); +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApplyFeignFallback.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApplyFeignFallback.java new file mode 100644 index 0000000000..71ab2bda5d --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApplyFeignFallback.java @@ -0,0 +1,12 @@ +package com.yxt.anrui.riskcenter.api.loansettleapply; + +import org.springframework.stereotype.Component; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/2/5 + **/ +@Component +public class LoanSettleApplyFeignFallback { +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApplyQuery.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApplyQuery.java new file mode 100644 index 0000000000..aa233984a7 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApplyQuery.java @@ -0,0 +1,20 @@ +package com.yxt.anrui.riskcenter.api.loansettleapply; + +import com.yxt.common.core.query.Query; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/2/6 + **/ +@Data +public class LoanSettleApplyQuery implements Query { + private static final long serialVersionUID = 3208806288091280521L; + + private String menuUrl; + + private String orgPath; + + private String userSid; +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApplyVo.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApplyVo.java new file mode 100644 index 0000000000..f5b5e860c0 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/LoanSettleApplyVo.java @@ -0,0 +1,16 @@ +package com.yxt.anrui.riskcenter.api.loansettleapply; + +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/2/6 + **/ +@Data +public class LoanSettleApplyVo { + + private String createBySid; + + private boolean allowModify; +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/SettleApplyAppVo.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/SettleApplyAppVo.java new file mode 100644 index 0000000000..44523bec64 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/SettleApplyAppVo.java @@ -0,0 +1,12 @@ +package com.yxt.anrui.riskcenter.api.loansettleapply; + +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/2/6 + **/ +@Data +public class SettleApplyAppVo { +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/flowable/CompleteLoanSettleApplyDto.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/flowable/CompleteLoanSettleApplyDto.java new file mode 100644 index 0000000000..74b39f6187 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/flowable/CompleteLoanSettleApplyDto.java @@ -0,0 +1,35 @@ +package com.yxt.anrui.riskcenter.api.loansettleapply.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/2/5 + **/ +@Data +public class CompleteLoanSettleApplyDto { + + @ApiModelProperty(value = "用户sid") + @NotBlank(message = "参数错误:userSid") + private String userSid; + @ApiModelProperty(value = "用户全路径sid") + private String orgSidPath; + @ApiModelProperty(value = "节点id") + @NotBlank(message = "参数错误:taskDefKey") + private String taskDefKey; + @ApiModelProperty(value = "任务id") + @NotBlank(message = "参数错误:taskId") + private String taskId; + @ApiModelProperty(value = "流程id") + @NotBlank(message = "参数错误:instanceId") + private String instanceId; + @ApiModelProperty(value = "意见") + private String comment; + @ApiModelProperty(value = "业务sid") + @NotBlank(message = "参数错误:businessSid") + private String businessSid; +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/flowable/LoanSettleApplyDelegateQuery.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/flowable/LoanSettleApplyDelegateQuery.java new file mode 100644 index 0000000000..30fb408c34 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/flowable/LoanSettleApplyDelegateQuery.java @@ -0,0 +1,26 @@ +package com.yxt.anrui.riskcenter.api.loansettleapply.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/2/5 + **/ +@Data +public class LoanSettleApplyDelegateQuery { + + @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/loansettleapply/flowable/LoanSettleApplyNodeQuery.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/flowable/LoanSettleApplyNodeQuery.java new file mode 100644 index 0000000000..76b2e39777 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/flowable/LoanSettleApplyNodeQuery.java @@ -0,0 +1,18 @@ +package com.yxt.anrui.riskcenter.api.loansettleapply.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/2/5 + **/ +@Data +public class LoanSettleApplyNodeQuery { + + @ApiModelProperty(value = "环节定义id") + private String taskDefKey; + @ApiModelProperty(value = "业务sid") + private String businessSid; +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/flowable/LoanSettleApplyNodeVo.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/flowable/LoanSettleApplyNodeVo.java new file mode 100644 index 0000000000..9e0ee2bea2 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/flowable/LoanSettleApplyNodeVo.java @@ -0,0 +1,24 @@ +package com.yxt.anrui.riskcenter.api.loansettleapply.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/2/5 + **/ +@Data +public class LoanSettleApplyNodeVo { + + @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/loansettleapply/flowable/LoanSettleApplyTaskQuery.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/flowable/LoanSettleApplyTaskQuery.java new file mode 100644 index 0000000000..9969b0123e --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/flowable/LoanSettleApplyTaskQuery.java @@ -0,0 +1,43 @@ +package com.yxt.anrui.riskcenter.api.loansettleapply.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/2/5 + **/ +@Data +public class LoanSettleApplyTaskQuery { + + /** + * 终止、驳回、撤回 + */ + @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; +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/flowable/SubmitSettleApplyDto.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/flowable/SubmitSettleApplyDto.java new file mode 100644 index 0000000000..15d0d1ab91 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansettleapply/flowable/SubmitSettleApplyDto.java @@ -0,0 +1,20 @@ +package com.yxt.anrui.riskcenter.api.loansettleapply.flowable; + +import com.yxt.anrui.riskcenter.api.loansettleapply.LoanSettleApplyDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/2/6 + **/ +@Data +public class SubmitSettleApplyDto extends LoanSettleApplyDto { + + @ApiModelProperty("流程实例id") + private String instanceId; + @ApiModelProperty("任务id") + private String taskId; + +} diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesapply/LoanSecondarySalesApplyMapper.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesapply/LoanSecondarySalesApplyMapper.java index 4b31e21e0e..8124ab9faf 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesapply/LoanSecondarySalesApplyMapper.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesapply/LoanSecondarySalesApplyMapper.java @@ -4,6 +4,7 @@ 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.loanreturnvehledger.LoanReturnVehLedger; import com.yxt.anrui.riskcenter.api.loansecondarysalesapply.LoanSecondarySalesApply; import com.yxt.anrui.riskcenter.api.loansecondarysalesapply.LoanSecondarySalesApplyDetailsVo; import com.yxt.anrui.riskcenter.api.loansecondarysalesapply.LoanSecondarySalesApplyVo; @@ -29,4 +30,6 @@ public interface LoanSecondarySalesApplyMapper extends BaseMapper + + \ No newline at end of file diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesapply/LoanSecondarySalesApplyService.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesapply/LoanSecondarySalesApplyService.java index ec3f859f36..37250ec5ac 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesapply/LoanSecondarySalesApplyService.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesapply/LoanSecondarySalesApplyService.java @@ -26,6 +26,8 @@ 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.loanoutboundapply.LoanOutboundApplyDto; +import com.yxt.anrui.riskcenter.api.loanoutboundapply.OutboundVinListDto; import com.yxt.anrui.riskcenter.api.loanoverduefin.UrlQuery; import com.yxt.anrui.riskcenter.api.loanrestorereportapply.AlrepaidAndArrVo; import com.yxt.anrui.riskcenter.api.loanreturninboundapply.LoanReturnInboundApply; @@ -43,8 +45,12 @@ import com.yxt.anrui.riskcenter.api.loansecondarysalescost.LoanSecondarySalesCos import com.yxt.anrui.riskcenter.api.loansecondarysalescost.LoanSecondarySalesCostVo; import com.yxt.anrui.riskcenter.api.loansecondarysalesveh.LoanSecondarySalesVeh; import com.yxt.anrui.riskcenter.api.loansecondarysalesveh.LoanSecondarySalesVehVo; +import com.yxt.anrui.riskcenter.api.loansecondarysalesveh.SalesVehVo; import com.yxt.anrui.riskcenter.api.loansolutions.LoanSolutions; import com.yxt.anrui.riskcenter.api.loansolutionsdetail.LoanSolutionsDetail; +import com.yxt.anrui.riskcenter.api.loansubletapply.LoanSubletApply; +import com.yxt.anrui.riskcenter.api.loansubletapply.SubletVinList; +import com.yxt.anrui.riskcenter.biz.loanoutboundapply.LoanOutboundApplyService; import com.yxt.anrui.riskcenter.biz.loanrestorereportapply.LoanRestoreReportApplyService; import com.yxt.anrui.riskcenter.biz.loanreturninboundapply.LoanReturnInboundApplyService; import com.yxt.anrui.riskcenter.biz.loanreturnvehledger.LoanReturnVehLedgerService; @@ -121,6 +127,8 @@ public class LoanSecondarySalesApplyService extends MybatisBaseService listPageVo(PagerQuery pq) { LoanSecondarySalesApplyQuery query = pq.getParams(); @@ -480,6 +488,17 @@ public class LoanSecondarySalesApplyService extends MybatisBaseService list = loanSecondarySalesVehService.selectByMainSids(businessSid); + list.removeAll(Collections.singleton(null)); + if (!list.isEmpty()) { + for (int i = 0; i < list.size(); i++) { + LoanSecondarySalesVeh loanSecondarySalesVeh = list.get(i); + LoanReturnVehLedger loanReturnVehLedger = loanReturnVehLedgerService.fetchBySid(loanSecondarySalesVeh.getBusSid()); + loanReturnVehLedger.setDisposal("二次销售"); + loanReturnVehLedger.setDisposalKey("03"); + loanReturnVehLedgerService.updateById(loanReturnVehLedger); + } + } DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); String closeDates = ""; @@ -523,6 +542,7 @@ public class LoanSecondarySalesApplyService extends MybatisBaseService vinList = new ArrayList<>(); + BeanUtil.copyProperties(loanSecondarySalesApply, dto); + dto.setApplySid(loanSecondarySalesApply.getSid()); + dto.setBorrowerName(loanSecondarySalesApply.getLoanName()); + dto.setBorrowerSid(loanSecondarySalesApply.getLoanSid()); + dto.setCustomer(loanSecondarySalesApply.getCustomerName()); + dto.setDisposalKey("03"); + dto.setDisposal("二次销售"); + List vinLists = loanSecondarySalesVehService.selByMainSid(loanSecondarySalesApply.getSid()); + if (!vinLists.isEmpty()) { + vinLists.forEach(v -> { + OutboundVinListDto outboundVinListDto = new OutboundVinListDto(); + BeanUtil.copyProperties(v, outboundVinListDto); + LoanReturnVehLedger loanReturnVehLedger = baseMapper.selVehLedgerBySid(v.getLedgerSid()); + if (null != loanReturnVehLedger) { + if (StringUtils.isNotBlank(loanReturnVehLedger.getLocation())) { + outboundVinListDto.setLocation(loanReturnVehLedger.getLocation()); + } + } + vinList.add(outboundVinListDto); + }); + } + dto.setVinList(vinList); + loanOutboundApplyService.saveOutbound(dto); + }*/ + public ResultBean submitApply(SubmitLoanSecondarySalesApplyDto dto) { ResultBean rb = ResultBean.fireFail(); LoanSecondarySalesApply loanSecondarySalesApply = fetchBySid(dto.getSid()); @@ -861,7 +909,7 @@ public class LoanSecondarySalesApplyService extends MybatisBaseService selectByMainSid(String sid); List selectByMainSidApp(String sid); + + List selByMainSid(String sid); + + List selectByMainSids(String businessSid); } diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesveh/LoanSecondarySalesVehMapper.xml b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesveh/LoanSecondarySalesVehMapper.xml index 309dfde1cf..3a5a613747 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesveh/LoanSecondarySalesVehMapper.xml +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesveh/LoanSecondarySalesVehMapper.xml @@ -18,7 +18,7 @@ lv.configSid, lv.busSid from loan_secondary_sales_veh lv - where mainSid = #{sid} + where lv.mainSid = #{sid} + select lv.busSid ledgerSid, + lv.vinNo, + lv.vehMark, + lv.vehType, + lv.modelName vehModel, + lv.busVinSid + from loan_secondary_sales_veh lv + where lv.mainSid = #{sid} + + + \ No newline at end of file diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesveh/LoanSecondarySalesVehService.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesveh/LoanSecondarySalesVehService.java index a4528f1e63..51a3cf6a67 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesveh/LoanSecondarySalesVehService.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesveh/LoanSecondarySalesVehService.java @@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil; import com.yxt.anrui.riskcenter.api.loansecondarysalesapply.LoanSecondarySalesVehAppVo; import com.yxt.anrui.riskcenter.api.loansecondarysalesveh.LoanSecondarySalesVeh; import com.yxt.anrui.riskcenter.api.loansecondarysalesveh.LoanSecondarySalesVehVo; +import com.yxt.anrui.riskcenter.api.loansecondarysalesveh.SalesVehVo; import com.yxt.common.base.service.MybatisBaseService; import org.springframework.stereotype.Service; @@ -40,4 +41,12 @@ public class LoanSecondarySalesVehService extends MybatisBaseService selectByMainSidApp(String sid) { return baseMapper.selectByMainSidApp(sid); } + + public List selByMainSid(String sid) { + return baseMapper.selByMainSid(sid); + } + + public List selectByMainSids(String businessSid) { + return baseMapper.selectByMainSids(businessSid); + } } diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyMapper.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyMapper.java new file mode 100644 index 0000000000..78e67a592c --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyMapper.java @@ -0,0 +1,26 @@ +package com.yxt.anrui.riskcenter.biz.loansettleapply; + +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.loansettleapply.LoanSettleApply; +import com.yxt.anrui.riskcenter.api.loansettleapply.LoanSettleApplyVo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Map; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/2/5 + **/ +@Mapper +public interface LoanSettleApplyMapper extends BaseMapper { + int updateFlowFiled(Map beanToMap); + + IPage selectPageVo(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + int selectBySid(String join); +} diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyMapper.xml b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyMapper.xml new file mode 100644 index 0000000000..6de88b62e4 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyMapper.xml @@ -0,0 +1,31 @@ + + + + + UPDATE loan_settle_apply + SET nodeState=#{nodeState} + + , taskDefKey=#{taskDefKey} + + + , procDefId=#{procDefId} + + + , procInstId=#{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/loansettleapply/LoanSettleApplyRest.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyRest.java new file mode 100644 index 0000000000..bfe18e6818 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyRest.java @@ -0,0 +1,100 @@ +package com.yxt.anrui.riskcenter.biz.loansettleapply; + +import cn.hutool.core.bean.BeanUtil; +import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables; +import com.yxt.anrui.riskcenter.api.loansecondarysalesapply.LoanSecondarySalesApplyVo; +import com.yxt.anrui.riskcenter.api.loansettleapply.*; +import com.yxt.anrui.riskcenter.api.loansettleapply.flowable.*; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import io.swagger.annotations.Api; +import 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: 2024/2/5 + **/ +@RestController +@RequestMapping("v1/LoanSettleApply") +@Api(tags = "结清申请") +public class LoanSettleApplyRest implements LoanSettleApplyFeign { + + @Autowired + private LoanSettleApplyService loanSettleApplyService; + + @Override + public ResultBean> listPage(PagerQuery pq) { + ResultBean> rb = ResultBean.fireFail(); + PagerVo pv = loanSettleApplyService.listPageVo(pq); + return rb.success().setData(pv); + } + + @Override + public ResultBean saveOrUpdate(LoanSettleApplyDto dto) { + return loanSettleApplyService.saveOrUpdateSettleApply(dto); + } + + @Override + public ResultBean details(LoanSettleApplyDetailsQuery query) { + return loanSettleApplyService.details(query); + } + + @Override + public ResultBean delBySids(String[] sids) { + return loanSettleApplyService.delAllBySids(sids); + } + + @Override + public ResultBean submitApply(SubmitSettleApplyDto dto) { + return loanSettleApplyService.submitApply(dto); + } + + @Override + public ResultBean complete(CompleteLoanSettleApplyDto query) { + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + bv.setModelId(""); + return loanSettleApplyService.complete(bv); + } + + @Override + public ResultBean> getPreviousNodesForReject(LoanSettleApplyNodeQuery query) { + return loanSettleApplyService.getPreviousNodesForReject(query); + } + + @Override + public ResultBean> getNextNodesForSubmit(LoanSettleApplyNodeQuery query) { + return loanSettleApplyService.getNextNodesForSubmit(query); + } + + @Override + public ResultBean taskReject(LoanSettleApplyTaskQuery query) { + return loanSettleApplyService.taskReject(query); + } + + @Override + public ResultBean revokeProcess(LoanSettleApplyTaskQuery query) { + return loanSettleApplyService.revokeProcess(query); + } + + @Override + public ResultBean breakProcess(LoanSettleApplyTaskQuery query) { + return loanSettleApplyService.breakProcess(query); + } + + @Override + public ResultBean delegate(LoanSettleApplyDelegateQuery query) { + return loanSettleApplyService.delegate(query); + } + + @Override + public ResultBean getAppDetails(String sid) { + return loanSettleApplyService.getAppDetails(sid); + } +} diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyService.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyService.java new file mode 100644 index 0000000000..05dfc43a19 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansettleapply/LoanSettleApplyService.java @@ -0,0 +1,480 @@ +package com.yxt.anrui.riskcenter.biz.loansettleapply; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.google.common.util.concurrent.ThreadFactoryBuilder; +import com.yxt.anrui.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.SysOrganizationVo; +import com.yxt.anrui.portal.api.sysuser.PrivilegeQuery; +import com.yxt.anrui.portal.api.sysuser.SysUserFeign; +import com.yxt.anrui.riskcenter.api.loanreturnvehledger.LoanReturnVehLedger; +import com.yxt.anrui.riskcenter.api.loansecondarysalesapply.LoanSecondarySalesApply; +import com.yxt.anrui.riskcenter.api.loansecondarysalesapply.LoanSecondarySalesApplyQuery; +import com.yxt.anrui.riskcenter.api.loansecondarysalesapply.LoanSecondarySalesApplyVo; +import com.yxt.anrui.riskcenter.api.loansecondarysalesveh.LoanSecondarySalesVehVo; +import com.yxt.anrui.riskcenter.api.loansettleapply.*; +import com.yxt.anrui.riskcenter.api.loansettleapply.flowable.*; +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: 2024/2/5 + **/ +@Service +public class LoanSettleApplyService extends MybatisBaseService { + + @Autowired + private FlowFeign flowFeign; + @Autowired + private MessageFeign messageFeign; + @Autowired + private FlowTaskFeign flowTaskFeign; + @Autowired + private FlowableFeign flowableFeign; + @Autowired + private SysUserFeign sysUserFeign; + + + public PagerVo listPageVo(PagerQuery pq) { + LoanSettleApplyQuery query = pq.getParams(); + QueryWrapper 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 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("la.orgSidPath", orgSidPath); + } else if ("2".equals(orgLevelKey)) { + orgSidPath = orgSidPath.substring(0, i2); + qw.like("la.orgSidPath", orgSidPath); + } else if ("3".equals(orgLevelKey)) { + orgSidPath = orgSidPath.substring(0, i3); + qw.like("la.orgSidPath", orgSidPath); + } else if ("4".equals(orgLevelKey)) { + orgSidPath = orgSidPath.substring(0, i4); + qw.like("la.orgSidPath", orgSidPath); + } else if ("5".equals(orgLevelKey)) { + qw.eq("la.createBySid", query.getUserSid()); + } else { + PagerVo p = new PagerVo<>(); + return p; + } + } else { + PagerVo p = new PagerVo<>(); + return p; + } + } + } + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPageVo(page, qw); + List paggingRecords = pagging.getRecords(); + paggingRecords.removeAll(Collections.singleton(null)); + if (!paggingRecords.isEmpty()) { + for (LoanSettleApplyVo record : pagging.getRecords()) { + if (query.getUserSid().equals(record.getCreateBySid())) { + record.setAllowModify(true); + } else { + record.setAllowModify(false); + } + } + } + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public ResultBean saveOrUpdateSettleApply(LoanSettleApplyDto dto) { + ResultBean rb = ResultBean.fireFail(); + String sid = dto.getSid(); + if (StringUtils.isBlank(sid)) {//新增 + + } else {//修改 + + } + return rb.success().setData(sid); + } + + public ResultBean details(LoanSettleApplyDetailsQuery query) { + ResultBean rb = ResultBean.fireFail(); + String sid = query.getSid(); + if (StringUtils.isBlank(sid)) {//新增初始化 + + } else {//编辑初始化 + LoanSettleApply loanSettleApply = fetchBySid(sid); + if (loanSettleApply == null) { + return rb.setMsg("该申请不存在"); + } + + } + + return null; + } + + public ResultBean delAllBySids(String[] sids) { + ResultBean rb = ResultBean.fireFail(); + //查询该sid中是否有流程不是待提交的 + int count = baseMapper.selectBySid(StringUtils.join(sids, ",")); + if (count > 0) { + return rb.setMsg("删除的数据中包含已经提交审批的数据,删除失败"); + } + List sidss = Arrays.asList(sids); + for (int i = 0; i < sidss.size(); i++) {//删除相关表 + + } + delBySids(sids); + return rb.success().setMsg("删除成功"); + } + + public ResultBean submitApply(SubmitSettleApplyDto dto) { + ResultBean rb = ResultBean.fireFail(); + LoanSettleApply loanSettleApply = fetchBySid(dto.getSid()); + int r = submitBusinessData(dto, loanSettleApply); + if (r == 3) { + return rb.setMsg("该申请不存在"); + } + if (r == 0) { + return rb.setMsg("操作失败!提交的数据不一致"); + } + ResultBean resultBean = saveOrUpdateSettleApply(dto); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + String businessSid = resultBean.getData(); + loanSettleApply = fetchBySid(businessSid); + //创建BusinessVariables实体对象 + BusinessVariables bv = new BusinessVariables(); + //流程中的参数赋值、若有网关,则赋值网关中判断的字段。 + Map variables = new HashMap<>(); + Map appMap = new HashMap<>(); + appMap.put("sid", businessSid); + variables.put("app", appMap); + //用户的部门全路径sid + bv.setOrgSidPath(loanSettleApply.getOrgSidPath()); + bv.setBusinessSid(businessSid); + bv.setUserSid(dto.getUserSid()); + bv.setFormVariables(variables); + if (r == 1) { + //ToDo:流程定义id + bv.setModelId(ProcDefEnum.LOANSETTLEAPPLY.getProDefId()); + ResultBean voResultBean = flowFeign.startProcess(bv); + if (!voResultBean.getSuccess()) { + return rb.setMsg(voResultBean.getMsg()); + } + UpdateFlowFieldVo ufVo = voResultBean.getData(); + updateFlowFiled(BeanUtil.beanToMap(ufVo)); + loanSettleApply = fetchBySid(businessSid); + //==================================添加线程 + try { + ThreadFactory namedThreadFactory = new ThreadFactoryBuilder() + .setNameFormat("demo-pool-%d").build(); + ExecutorService pool = new ThreadPoolExecutor(2, 100, + 0L, TimeUnit.MILLISECONDS, + new LinkedBlockingQueue(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy()); + LoanSettleApply finalLoanSettleApply = loanSettleApply; + Future future1 = pool.submit(() -> { + //极光推送 + MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); + MessageFlowVo messageFlowVo = new MessageFlowVo(); + BeanUtil.copyProperties(ufVo, messageFlowVo); + messageFlowableQuery.setUfVo(messageFlowVo); + messageFlowableQuery.setAppMap(appMap); + messageFlowableQuery.setBusinessSid(businessSid); + messageFlowableQuery.setModuleName("结清申请"); + messageFlowableQuery.setMsgContent(finalLoanSettleApply.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); + messageFlowableQuery.setMsgTitle("结清申请"); + ResultBean 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(loanSettleApply.getTaskId()); + bv.setTaskDefKey(loanSettleApply.getTaskDefKey()); + bv.setComment("重新提交"); + bv.setInstanceId(dto.getInstanceId()); + return complete(bv); + } + return rb; + } + + private int submitBusinessData(SubmitSettleApplyDto dto, LoanSettleApply loanSettleApply) { + int r = 0; + if (StringUtils.isBlank(dto.getSid())) { + r = 1; + } else { + if (loanSettleApply != null) { + String businessTaskId = loanSettleApply.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 complete(BusinessVariables bv) { + ResultBean rb = ResultBean.fireFail(); + String businessSid = bv.getBusinessSid(); + LoanSettleApply loanSettleApply = fetchBySid(businessSid); + Map variables = new HashMap<>(); + Map appMap = new HashMap<>(); + appMap.put("sid", businessSid); + variables.put("app", appMap); + bv.setFormVariables(variables); + bv.setOrgSidPath(loanSettleApply.getOrgSidPath()); + bv.setModelId(loanSettleApply.getProcDefId()); + if (bv.getTaskId().equals(loanSettleApply.getTaskId())) { + ResultBean resultBean = flowFeign.handleProsess(bv); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + UpdateFlowFieldVo ufVo = resultBean.getData(); + updateFlowFiled(BeanUtil.beanToMap(resultBean.getData())); + if ("Event_end".equals(resultBean.getData().getTaskDefKey())) { + loanSettleApply = fetchBySid(businessSid); + loanSettleApply.setCloseDate(DateUtil.today()); + baseMapper.updateById(loanSettleApply); + } else { + //极光推送 + loanSettleApply = fetchBySid(businessSid); + MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); + MessageFlowVo messageFlowVo = new MessageFlowVo(); + BeanUtil.copyProperties(ufVo, messageFlowVo); + messageFlowVo.setProcDefId(loanSettleApply.getProcDefId()); + messageFlowVo.setProcInsId(loanSettleApply.getProcInstId()); + messageFlowableQuery.setUfVo(messageFlowVo); + messageFlowableQuery.setAppMap(appMap); + messageFlowableQuery.setBusinessSid(businessSid); + messageFlowableQuery.setModuleName("结清申请"); + messageFlowableQuery.setMsgContent(loanSettleApply.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); + messageFlowableQuery.setMsgTitle("结清申请"); + ResultBean stringResultBean = messageFeign.pushMessage(messageFlowableQuery); + } + return rb.success().setData(resultBean.getData()); + } else { + return rb.setMsg("操作失败!提交的数据不一致"); + } + } + + private int updateFlowFiled(Map beanToMap) { + return baseMapper.updateFlowFiled(beanToMap); + } + + public ResultBean> getPreviousNodesForReject(LoanSettleApplyNodeQuery query) { + ResultBean> rb = ResultBean.fireFail(); + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + LoanSettleApply loanSettleApply = fetchBySid(query.getBusinessSid()); + bv.setModelId(loanSettleApply.getProcDefId()); + ResultBean>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv); + //判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给TemplateApplyNodeVo + List voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), LoanSettleApplyNodeVo.class)).collect(Collectors.toList()); + return rb.success().setData(voList); + } + + public ResultBean> getNextNodesForSubmit(LoanSettleApplyNodeQuery query) { + ResultBean> rb = ResultBean.fireFail(); + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + LoanSettleApply loanSettleApply = fetchBySid(query.getBusinessSid()); + bv.setModelId(loanSettleApply.getProcDefId()); + ResultBean>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv); + //判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给TemplateApplyNodeVo + List voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), LoanSettleApplyNodeVo.class)).collect(Collectors.toList()); + return rb.success().setData(voList); + } + + public ResultBean taskReject(LoanSettleApplyTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + String businessSid = query.getBusinessSid(); + LoanSettleApply loanSettleApply = fetchBySid(businessSid); + if (loanSettleApply == null) { + return rb.setMsg("该申请不存在"); + } + String businessTaskId = loanSettleApply.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); + ResultBean resultBean = flowableFeign.taskReject(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + UpdateFlowFieldVo ufVo = resultBean.getData(); + Map map = BeanUtil.beanToMap(ufVo); + //更新业务中的流程相关的参数 + updateFlowFiled(map); + //极光推送 + loanSettleApply = fetchBySid(businessSid); + MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); + MessageFlowVo messageFlowVo = new MessageFlowVo(); + BeanUtil.copyProperties(ufVo, messageFlowVo); + String procId = loanSettleApply.getProcInstId(); + messageFlowVo.setProcInsId(procId); + messageFlowVo.setProcDefId(loanSettleApply.getProcDefId()); + messageFlowableQuery.setUfVo(messageFlowVo); + messageFlowableQuery.setAppMap(appMap); + messageFlowableQuery.setBusinessSid(businessSid); + messageFlowableQuery.setModuleName("结清申请"); + ResultBean> listResultBean = flowTaskFeign.getLatestTasks(procId); + String nextName = listResultBean.getData().get(0).getName_(); + String nextNodeUserSids = listResultBean.getData().get(0).getASSIGNEE_(); + if ("发起申请".equals(nextName)) { + messageFlowableQuery.setMsgContent("您提交的" + messageFlowableQuery.getModuleName() + "已被驳回,请重新提交"); + } else { + messageFlowableQuery.setMsgContent(loanSettleApply.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); + } + + messageFlowableQuery.setMsgTitle("结清申请"); + ResultBean stringResultBean = messageFeign.pushMessage(messageFlowableQuery); + return rb.success(); + } + } + return rb.setMsg("操作失败!提交的数据不一致!"); + } + + public ResultBean revokeProcess(LoanSettleApplyTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + if (StringUtils.isBlank(query.getUserSid())) { + return rb.setMsg("参数错误:userSid"); + } + LoanSettleApply loanSettleApply = fetchBySid(query.getBusinessSid()); + String businessTaskId = loanSettleApply.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(LoanSettleApplyTaskQuery 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("请填写意见"); + } + LoanSettleApply loanSettleApply = fetchBySid(query.getBusinessSid()); + String businessTaskId = loanSettleApply.getTaskId(); + if (StringUtils.isNotBlank(businessTaskId)) { + if (query.getUserSid().equals(loanSettleApply.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(LoanSettleApplyDelegateQuery query) { + ResultBean rb = ResultBean.fireFail(); + FlowDelegateQuery delegateQuery = new FlowDelegateQuery(); + BeanUtil.copyProperties(query, delegateQuery); + flowFeign.delegate(delegateQuery); + return rb.success(); + } + + public ResultBean getAppDetails(String sid) { + ResultBean rb = ResultBean.fireFail(); + LoanSettleApply loanSettleApply = fetchBySid(sid); + if (loanSettleApply == null) { + return rb.setMsg("该申请不存在"); + } + return null; + } + + +} diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/settleapply/SettleApplyAppVos.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/settleapply/SettleApplyAppVos.java new file mode 100644 index 0000000000..a39ec9afd3 --- /dev/null +++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/settleapply/SettleApplyAppVos.java @@ -0,0 +1,12 @@ +package com.yxt.anrui.terminal.api.risk.settleapply; + +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/2/6 + **/ +@Data +public class SettleApplyAppVos { +} diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/settleapply/SettleApplyFeign.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/settleapply/SettleApplyFeign.java new file mode 100644 index 0000000000..15d6bdec61 --- /dev/null +++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/settleapply/SettleApplyFeign.java @@ -0,0 +1,60 @@ +package com.yxt.anrui.terminal.api.risk.settleapply; + +import com.yxt.anrui.terminal.api.risk.settleapply.flowable.SettleApplyDelegateQuery; +import com.yxt.anrui.terminal.api.risk.settleapply.flowable.SettleApplyDto; +import com.yxt.anrui.terminal.api.risk.settleapply.flowable.SettleApplyQuery; +import com.yxt.anrui.terminal.api.risk.settleapply.flowable.SettleApplyTaskQuery; +import com.yxt.common.core.result.ResultBean; +import io.swagger.annotations.ApiOperation; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.cloud.openfeign.SpringQueryMap; +import org.springframework.web.bind.annotation.*; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/2/6 + **/ +@FeignClient( + contextId = "terminal-SettleApply", + name = "anrui-terminal", + path = "/risk/v1/SettleApply", + fallback = SettleApplyFeignFallback.class) +public interface SettleApplyFeign { + + + @ApiOperation("办理") + @PutMapping("/agreeSettleApply") + @ResponseBody + ResultBean agreeSettleApply(@RequestBody SettleApplyDto dto); + + @ApiOperation("驳回") + @PutMapping("/rejectSettleApply") + @ResponseBody + ResultBean rejectSettleApply(@RequestBody SettleApplyTaskQuery query); + + @ApiOperation("撤回") + @PutMapping("/recallSettleApply") + @ResponseBody + ResultBean recallSettleApply(@RequestBody SettleApplyTaskQuery query); + + @ApiOperation("终止") + @PutMapping("/stopSettleApply") + @ResponseBody + ResultBean stopSettleApply(@RequestBody SettleApplyTaskQuery query); + + @ApiOperation("获取流程操作标题") + @GetMapping("/getFlowOperateTitle") + @ResponseBody + ResultBean getFlowOperateTitle(@SpringQueryMap SettleApplyQuery query); + + @ApiOperation("详情") + @GetMapping("/getSettleApply/{sid}") + @ResponseBody + ResultBean getSettleApply(@PathVariable("sid") String sid); + + @ApiOperation(value = "加签") + @PutMapping(value = "/delegate") + @ResponseBody + public ResultBean delegate(@RequestBody SettleApplyDelegateQuery delegateQuery); +} diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/settleapply/SettleApplyFeignFallback.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/settleapply/SettleApplyFeignFallback.java new file mode 100644 index 0000000000..c972d2bcb8 --- /dev/null +++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/settleapply/SettleApplyFeignFallback.java @@ -0,0 +1,12 @@ +package com.yxt.anrui.terminal.api.risk.settleapply; + +import org.springframework.stereotype.Component; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/2/6 + **/ +@Component +public class SettleApplyFeignFallback { +} diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/settleapply/flowable/SettleApplyDelegateQuery.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/settleapply/flowable/SettleApplyDelegateQuery.java new file mode 100644 index 0000000000..a5a081b20d --- /dev/null +++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/settleapply/flowable/SettleApplyDelegateQuery.java @@ -0,0 +1,25 @@ +package com.yxt.anrui.terminal.api.risk.settleapply.flowable; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/2/6 + **/ +@Data +public class SettleApplyDelegateQuery { + + 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/settleapply/flowable/SettleApplyDto.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/settleapply/flowable/SettleApplyDto.java new file mode 100644 index 0000000000..8616d7d091 --- /dev/null +++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/settleapply/flowable/SettleApplyDto.java @@ -0,0 +1,35 @@ +package com.yxt.anrui.terminal.api.risk.settleapply.flowable; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/2/6 + **/ +@Data +public class SettleApplyDto { + + @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; +} diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/settleapply/flowable/SettleApplyQuery.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/settleapply/flowable/SettleApplyQuery.java new file mode 100644 index 0000000000..94d5d24cba --- /dev/null +++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/settleapply/flowable/SettleApplyQuery.java @@ -0,0 +1,23 @@ +package com.yxt.anrui.terminal.api.risk.settleapply.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/2/6 + **/ +@Data +public class SettleApplyQuery { + + @ApiModelProperty(value = "节点key") + private String taskDefKey; + @ApiModelProperty(value = "业务sid") + private String businessSid; + @ApiModelProperty(value = "0 上一环节 1下一环节") + @NotNull(message = "参数错误:next") + private Integer next; +} diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/settleapply/flowable/SettleApplyTaskQuery.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/settleapply/flowable/SettleApplyTaskQuery.java new file mode 100644 index 0000000000..f621189a58 --- /dev/null +++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/settleapply/flowable/SettleApplyTaskQuery.java @@ -0,0 +1,45 @@ +package com.yxt.anrui.terminal.api.risk.settleapply.flowable; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/2/6 + **/ +@Data +public class SettleApplyTaskQuery { + + /** + * 终止、驳回、撤回 + */ + @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/settleapply/SettleApplyRest.java b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/settleapply/SettleApplyRest.java new file mode 100644 index 0000000000..9c69159bbc --- /dev/null +++ b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/settleapply/SettleApplyRest.java @@ -0,0 +1,62 @@ +package com.yxt.anrui.terminal.biz.risk.settleapply; + +import com.yxt.anrui.terminal.api.risk.settleapply.SettleApplyAppVos; +import com.yxt.anrui.terminal.api.risk.settleapply.SettleApplyFeign; +import com.yxt.anrui.terminal.api.risk.settleapply.flowable.SettleApplyDelegateQuery; +import com.yxt.anrui.terminal.api.risk.settleapply.flowable.SettleApplyDto; +import com.yxt.anrui.terminal.api.risk.settleapply.flowable.SettleApplyQuery; +import com.yxt.anrui.terminal.api.risk.settleapply.flowable.SettleApplyTaskQuery; +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; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/2/6 + **/ +@Controller +@RequestMapping("/risk/v1/SettleApply") +@Api(tags = "结清申请") +public class SettleApplyRest implements SettleApplyFeign { + + @Autowired + private SettleApplyService settleApplyService; + + @Override + public ResultBean agreeSettleApply(SettleApplyDto dto) { + return settleApplyService.agreeSettleApply(dto); + } + + @Override + public ResultBean rejectSettleApply(SettleApplyTaskQuery query) { + return settleApplyService.rejectSettleApply(query); + } + + @Override + public ResultBean recallSettleApply(SettleApplyTaskQuery query) { + return settleApplyService.recallSettleApply(query); + } + + @Override + public ResultBean stopSettleApply(SettleApplyTaskQuery query) { + return settleApplyService.stopSettleApply(query); + } + + @Override + public ResultBean getFlowOperateTitle(SettleApplyQuery query) { + return settleApplyService.getFlowOperateTitle(query); + } + + @Override + public ResultBean getSettleApply(String sid) { + return settleApplyService.getSettleApply(sid); + } + + @Override + public ResultBean delegate(SettleApplyDelegateQuery delegateQuery) { + return settleApplyService.delegate(delegateQuery); + } +} diff --git a/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/settleapply/SettleApplyService.java b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/settleapply/SettleApplyService.java new file mode 100644 index 0000000000..1fd7a8208b --- /dev/null +++ b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/settleapply/SettleApplyService.java @@ -0,0 +1,130 @@ +package com.yxt.anrui.terminal.biz.risk.settleapply; + +import cn.hutool.core.bean.BeanUtil; +import com.yxt.anrui.riskcenter.api.loansecondarysalesapply.SecondarySalesAppVo; +import com.yxt.anrui.riskcenter.api.loansecondarysalesapply.flowable.*; +import com.yxt.anrui.riskcenter.api.loansettleapply.LoanSettleApply; +import com.yxt.anrui.riskcenter.api.loansettleapply.LoanSettleApplyFeign; +import com.yxt.anrui.riskcenter.api.loansettleapply.SettleApplyAppVo; +import com.yxt.anrui.riskcenter.api.loansettleapply.flowable.*; +import com.yxt.anrui.terminal.api.base.common.CarModelVo; +import com.yxt.anrui.terminal.api.risk.secondarysales.SecondarySalesAppVos; +import com.yxt.anrui.terminal.api.risk.secondarysales.SecondarySalesCostAppVo; +import com.yxt.anrui.terminal.api.risk.settleapply.SettleApplyAppVos; +import com.yxt.anrui.terminal.api.risk.settleapply.flowable.SettleApplyDelegateQuery; +import com.yxt.anrui.terminal.api.risk.settleapply.flowable.SettleApplyDto; +import com.yxt.anrui.terminal.api.risk.settleapply.flowable.SettleApplyQuery; +import com.yxt.anrui.terminal.api.risk.settleapply.flowable.SettleApplyTaskQuery; +import com.yxt.common.core.result.ResultBean; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Collections; +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/2/6 + **/ +@Service +public class SettleApplyService { + + @Autowired + private LoanSettleApplyFeign loanSettleApplyFeign; + + public ResultBean agreeSettleApply(SettleApplyDto dto) { + ResultBean rb = ResultBean.fireFail(); + CompleteLoanSettleApplyDto completeDto = new CompleteLoanSettleApplyDto(); + BeanUtil.copyProperties(dto, completeDto); + ResultBean resultBean = loanSettleApplyFeign.complete(completeDto); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + return rb.success().setData(resultBean.getData()); + } + + public ResultBean rejectSettleApply(SettleApplyTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + LoanSettleApplyTaskQuery loanSettleApplyTaskQuery = new LoanSettleApplyTaskQuery(); + BeanUtil.copyProperties(query, loanSettleApplyTaskQuery); + ResultBean resultBean = loanSettleApplyFeign.taskReject(loanSettleApplyTaskQuery); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + return rb.success().setData(resultBean.getData()); + } + + public ResultBean recallSettleApply(SettleApplyTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + LoanSettleApplyTaskQuery loanSettleApplyTaskQuery = new LoanSettleApplyTaskQuery(); + BeanUtil.copyProperties(query, loanSettleApplyTaskQuery); + ResultBean resultBean = loanSettleApplyFeign.revokeProcess(loanSettleApplyTaskQuery); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + return rb.success().setData(resultBean.getData()); + } + + public ResultBean stopSettleApply(SettleApplyTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + LoanSettleApplyTaskQuery loanSettleApplyTaskQuery = new LoanSettleApplyTaskQuery(); + BeanUtil.copyProperties(query, loanSettleApplyTaskQuery); + ResultBean resultBean = loanSettleApplyFeign.breakProcess(loanSettleApplyTaskQuery); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + return rb.success().setData(resultBean.getData()); + } + + public ResultBean getFlowOperateTitle(SettleApplyQuery query) { + ResultBean rb = ResultBean.fireFail(); + //0 上一环节 1下一环节 + int next = query.getNext(); + LoanSettleApplyNodeQuery getNodeQuery = new LoanSettleApplyNodeQuery(); + BeanUtil.copyProperties(query, getNodeQuery); + String data = ""; + if (next == 0) { + ResultBean> getPreviousNodesForReject = loanSettleApplyFeign.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> getNextNodesForSubmit = loanSettleApplyFeign.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 getSettleApply(String sid) { + ResultBean rb = ResultBean.fireFail(); + ResultBean resultBean = loanSettleApplyFeign.getAppDetails(sid); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + SettleApplyAppVos settleApplyAppVos = new SettleApplyAppVos(); + BeanUtil.copyProperties(resultBean.getData(), settleApplyAppVos); + + return rb.success().setData(settleApplyAppVos); + } + + public ResultBean delegate(SettleApplyDelegateQuery delegateQuery) { + ResultBean rb = ResultBean.fireFail(); + LoanSettleApplyDelegateQuery delegateQuery1 = new + LoanSettleApplyDelegateQuery(); + BeanUtil.copyProperties(delegateQuery, delegateQuery1); + ResultBean delegate = loanSettleApplyFeign.delegate(delegateQuery1); + return rb.success(); + } +} diff --git a/doc/databases/risk_center.sql b/doc/databases/risk_center.sql index fa772d77a0..90b7eadf7b 100644 --- a/doc/databases/risk_center.sql +++ b/doc/databases/risk_center.sql @@ -1724,6 +1724,142 @@ CREATE TABLE `loan_secondary_sales_bidding` DEFAULT CHARSET = utf8 COMMENT ='二次销售公示竞价'; +DROP TABLE IF EXISTS `loan_settle_apply`; +CREATE TABLE `loan_settle_apply` +( + `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', + `createByName` varchar(64) DEFAULT NULL COMMENT '申请人', + `createDept` varchar(64) DEFAULT NULL COMMENT '申请部门', + `createDeptSid` varchar(64) DEFAULT NULL COMMENT '申请部门sid', + `vinNo` varchar(500) DEFAULT NULL COMMENT '车架号', + `vehMark` varchar(64) DEFAULT NULL COMMENT '车牌号', + `busVinSid` varchar(64) DEFAULT NULL COMMENT '销售订单车辆sid', + `saleOrderSid` varchar(64) DEFAULT NULL COMMENT '销售订单sid', + `customerName` varchar(200) DEFAULT NULL COMMENT '客户名称', + `customerSid` varchar(64) DEFAULT NULL COMMENT '客户sid', + `loanName` varchar(200) DEFAULT NULL COMMENT '贷款人', + `loanSid` varchar(200) DEFAULT NULL COMMENT '贷款人sid', + `loanContractNo` varchar(200) DEFAULT NULL COMMENT '贷款合同编号', + `bankName` varchar(200) DEFAULT NULL COMMENT '资方', + `bankContractNo` varchar(200) DEFAULT NULL COMMENT '资方合同编号', + `settingDate` varchar(200) DEFAULT NULL COMMENT '结清日期', + `overdueMonthPrice` decimal(10, 2) DEFAULT NULL COMMENT '公司当前逾期月还', + `currentNotDuePrice` decimal(10, 2) DEFAULT NULL COMMENT '公司当期未到期月还', + `notDuePrice` decimal(10, 2) DEFAULT NULL COMMENT '公司未到期月还', + `useOrgSid` varchar(64) DEFAULT NULL COMMENT '分公司sid', + `useOrgName` varchar(64) DEFAULT NULL COMMENT '分公司名称', + `orgSidPath` text DEFAULT NULL COMMENT '机构全路径sid', + `closeDate` varchar(64) DEFAULT NULL COMMENT '办结日期', + `procInstId` varchar(64) DEFAULT NULL COMMENT '实例id', + `procDefId` varchar(64) DEFAULT NULL COMMENT '流程定义id', + `taskId` varchar(64) DEFAULT NULL COMMENT '任务id', + `taskDefKey` varchar(64) DEFAULT NULL COMMENT '环节id', + `nodeState` varchar(64) DEFAULT NULL COMMENT '流程状态', + PRIMARY KEY (`id`), + KEY `id` (`id`) +) ENGINE = INNODB + DEFAULT CHARSET = utf8 COMMENT ='结清申请'; + +DROP TABLE IF EXISTS `loan_settle_bank_cost`; +CREATE TABLE `loan_settle_bank_cost` +( + `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', + `mainSid` varchar(64) DEFAULT NULL COMMENT '主表sid', + `price` decimal(10, 2) DEFAULT NULL COMMENT '资方逾期月还', + `currentNotDuePrice` decimal(10, 2) DEFAULT NULL COMMENT '资方当期未到期月还', + `notDuePrice` decimal(10, 2) DEFAULT NULL COMMENT '资方未到期金额', + `bankInterest` decimal(10, 2) DEFAULT NULL COMMENT '资方逾期利息', + `bankNominalPrice` decimal(10, 2) DEFAULT NULL COMMENT '资方名义价', + `bankContractLiquidated` decimal(10, 2) DEFAULT NULL COMMENT '资方合同违约金', + `bankOtherReceivable` decimal(10, 2) DEFAULT NULL COMMENT '资方其他应收', + `otherReceivableRemarks` text DEFAULT NULL COMMENT '其他应收说明', + `bankSettlePrice` decimal(10, 2) DEFAULT NULL COMMENT '资方结清金额', + `files` text DEFAULT NULL COMMENT '附件', + PRIMARY KEY (`id`), + KEY `id` (`id`) +) ENGINE = INNODB + DEFAULT CHARSET = utf8 COMMENT ='资方结清费用'; + +DROP TABLE IF EXISTS `loan_settle_company_cost`; +CREATE TABLE `loan_settle_company_cost` +( + `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', + `mainSid` varchar(64) DEFAULT NULL COMMENT '主表sid', + `loanDeposit` decimal(10, 2) DEFAULT NULL COMMENT '贷款保证金', + `overduePrice` decimal(10, 2) DEFAULT NULL COMMENT '公司逾期月还', + `putBankInterest` decimal(10, 2) DEFAULT NULL COMMENT '垫资方逾期利息', + `funfCost` decimal(10, 2) DEFAULT NULL COMMENT '资金占用费', + `bankOverInterest` decimal(10, 2) DEFAULT NULL COMMENT '资方逾期利息', + `companyCurrentNotPrice` decimal(10, 2) DEFAULT NULL COMMENT '公司当期未到期月还', + `bankNotPrice` decimal(10, 2) DEFAULT NULL COMMENT '资方未到期金额', + `deductionAmount` decimal(10, 2) DEFAULT NULL COMMENT '贷款保证金扣罚金额', + `companyNominalPrice` decimal(10, 2) DEFAULT NULL COMMENT '名义价', + `contractLiquidated` decimal(10, 2) DEFAULT NULL COMMENT '合同违约金', + `companyOtherPrice` decimal(10, 2) DEFAULT NULL COMMENT '公司其他费用', + `otherCostRemarks` text DEFAULT NULL COMMENT '其他费用说明', + `settleAll` decimal(10, 2) DEFAULT NULL COMMENT '公司正常结清合计', + PRIMARY KEY (`id`), + KEY `id` (`id`) +) ENGINE = INNODB + DEFAULT CHARSET = utf8 COMMENT ='公司结清费用'; + +DROP TABLE IF EXISTS `loan_settle_company_reduction`; +CREATE TABLE `loan_settle_company_reduction` +( + `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', + `mainSid` varchar(64) DEFAULT NULL COMMENT '主表sid', + `fundPenalty` decimal(10, 2) DEFAULT NULL COMMENT '资金占用费减免', + `depositPenalty` decimal(10, 2) DEFAULT NULL COMMENT '贷款保证金扣罚减免', + `otherCost` decimal(10, 2) DEFAULT NULL COMMENT '其他费用减免', + `amountTo` decimal(10, 2) DEFAULT NULL COMMENT '公司减免后结清合计', + `profit` decimal(10, 2) DEFAULT NULL COMMENT '结清利润', + PRIMARY KEY (`id`), + KEY `id` (`id`) +) ENGINE = INNODB + DEFAULT CHARSET = utf8 COMMENT ='公司结清费用减免情况'; + + +