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 dc097ca83e..b9ed86729b 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 @@ -80,6 +80,7 @@ public enum ProcDefEnum { LOANCASEAPPEALAPPLY("案件上诉申请", "process_0r2ruoxm:1:8215004"), LOANCASEEXECUTEAPPLY("案件执行立案申请", "process_aeho48ap:1:8220004"), LOANCASECLOSEAPPLY("案件结案申请", "process_llaxpwkd:1:8220008"), + LOANLAWSUITAPPLY("诉讼申请", "process_xc4lp97d:1:8380004"), /******************************测试流程id*********************************************/ diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanlawsuitapply/LoanLawsuitApplyFeign.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanlawsuitapply/LoanLawsuitApplyFeign.java index e3425e79d6..5b527ae336 100644 --- a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanlawsuitapply/LoanLawsuitApplyFeign.java +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanlawsuitapply/LoanLawsuitApplyFeign.java @@ -1,15 +1,24 @@ package com.yxt.anrui.riskcenter.api.loanlawsuitapply; +import com.yxt.anrui.riskcenter.api.loanlawsuitapply.app.AppLawsuitDetailsVo; +import com.yxt.anrui.riskcenter.api.loanlawsuitapply.flow.*; import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.LoanMonthlyAccrualApplyQuery; import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.LoanMonthlyAccrualApplyVo; +import com.yxt.anrui.riskcenter.api.loanrepurchaseapply.app.AppRepurchaseDetailsVo; +import com.yxt.anrui.riskcenter.api.loanrepurchaseapply.flow.*; import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.vo.PagerVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.cloud.openfeign.SpringQueryMap; import org.springframework.web.bind.annotation.*; +import javax.validation.Valid; +import java.util.List; + /** * @description: 诉讼案件管理 @@ -52,5 +61,51 @@ public interface LoanLawsuitApplyFeign { public ResultBean deleteBySids(@RequestBody String[] sids); + //---------------------------flow------------------------------ + + @ApiOperation("提交") + @PostMapping("/submit") + public ResultBean submitRecordApplication(@RequestBody @Valid SubmitLawsuitDto dto); + + @ApiOperation(value = "办理(同意)") + @PostMapping("/complete") + public ResultBean complete(@Valid @RequestBody LawsuitCompleteDto dto); + + @ApiOperation(value = "撤回流程") + @PostMapping(value = "/revokeProcess") + public ResultBean revokeProcess(@ApiParam(value = "工作流任务相关--请求参数") @RequestBody LawsuitTaskQuery query); + + @ApiOperation(value = "驳回任务") + @PostMapping(value = "/reject") + public ResultBean taskReject(@ApiParam(value = "工作流任务相关--请求参数") @RequestBody LawsuitTaskQuery query); + + @ApiOperation(value = "终止任务") + @PostMapping(value = "/breakProcess") + public ResultBean breakProcess(@RequestBody LawsuitTaskQuery query); + + @ApiOperation(value = "流程历史流转记录") + @GetMapping(value = "/task/flowRecord/{procInsId}/{deployId}") + public ResultBean flowRecord(@ApiParam(value = "流程实例id") @PathVariable(value = "procInsId") String procInsId); + + @ApiOperation(value = "获取下一个环节") + @GetMapping(value = "/getNextNodesForSubmit") + ResultBean> getNextNodesForSubmit(@Valid @SpringQueryMap LawsuitGetNodeQuery query); + + @ApiOperation(value = "获取上一个环节") + @GetMapping(value = "/getPreviousNodesForReject") + ResultBean> getPreviousNodesForReject(@Valid @SpringQueryMap LawsuitGetNodeQuery query); + + @ApiOperation(value = "加签") + @PostMapping(value = "/delegate") + public ResultBean delegate(@RequestBody LawsuitDelegateQuery query); + + //-----------------------------app---------------------------- + @ApiOperation("app详情") + @GetMapping("/appDetail/{sid}") + @ResponseBody + public ResultBean appDetail(@PathVariable("sid") String sid); + + + } diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanlawsuitapply/LoanLawsuitApplyFeignFallback.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanlawsuitapply/LoanLawsuitApplyFeignFallback.java index a667d89bba..85d5754943 100644 --- a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanlawsuitapply/LoanLawsuitApplyFeignFallback.java +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanlawsuitapply/LoanLawsuitApplyFeignFallback.java @@ -1,10 +1,14 @@ package com.yxt.anrui.riskcenter.api.loanlawsuitapply; +import com.yxt.anrui.riskcenter.api.loanlawsuitapply.app.AppLawsuitDetailsVo; +import com.yxt.anrui.riskcenter.api.loanlawsuitapply.flow.*; import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.vo.PagerVo; import org.springframework.stereotype.Component; +import java.util.List; + /** * @author Administrator * @description @@ -43,4 +47,54 @@ public class LoanLawsuitApplyFeignFallback implements LoanLawsuitApplyFeign { public ResultBean deleteBySids(String[] sids) { return null; } + + @Override + public ResultBean submitRecordApplication(SubmitLawsuitDto dto) { + return null; + } + + @Override + public ResultBean complete(LawsuitCompleteDto dto) { + return null; + } + + @Override + public ResultBean revokeProcess(LawsuitTaskQuery query) { + return null; + } + + @Override + public ResultBean taskReject(LawsuitTaskQuery query) { + return null; + } + + @Override + public ResultBean breakProcess(LawsuitTaskQuery query) { + return null; + } + + @Override + public ResultBean flowRecord(String procInsId) { + return null; + } + + @Override + public ResultBean> getNextNodesForSubmit(LawsuitGetNodeQuery query) { + return null; + } + + @Override + public ResultBean> getPreviousNodesForReject(LawsuitGetNodeQuery query) { + return null; + } + + @Override + public ResultBean delegate(LawsuitDelegateQuery query) { + return null; + } + + @Override + public ResultBean appDetail(String sid) { + return null; + } } diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanlawsuitapply/app/AppLawsuitDetailsVo.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanlawsuitapply/app/AppLawsuitDetailsVo.java new file mode 100644 index 0000000000..5afb7567d8 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanlawsuitapply/app/AppLawsuitDetailsVo.java @@ -0,0 +1,40 @@ +package com.yxt.anrui.riskcenter.api.loanlawsuitapply.app; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author Fan + * @description + * @date 2024/2/7 11:15 + */ +@Data +public class AppLawsuitDetailsVo { + + private String sid; + private String publishInfo; // 发起部门-发起人 + private String time; //申请日期 + private String taskId; + private String procInsId; + @ApiModelProperty("客户名称") + private String custName; + @ApiModelProperty("资方合同号") + private String bankContractNo; + @ApiModelProperty("贷款人") + private String borrName; + @ApiModelProperty("贷款合同号") + private String loanContractNo; + @ApiModelProperty("资方") + private String bankName; + @ApiModelProperty("销售订单sid") + private String salesOrderSid; + @ApiModelProperty("风控进展描述") + private String progress; + @ApiModelProperty("欠款合计") + private String amountAll; + private List vehListVos = new ArrayList<>(); + +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanlawsuitapply/app/AppVehListVo.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanlawsuitapply/app/AppVehListVo.java new file mode 100644 index 0000000000..57acaaf6b0 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanlawsuitapply/app/AppVehListVo.java @@ -0,0 +1,49 @@ +package com.yxt.anrui.riskcenter.api.loanlawsuitapply.app; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author Fan + * @description + * @date 2024/2/22 10:15 + */ +@Data +public class AppVehListVo { + + @ApiModelProperty("车牌号") + private String vehMark; + @ApiModelProperty("车架号") + private String vinNo; + //费用 + @ApiModelProperty("已还金额") + private String alRepaidMoney; // 已还金额 + @ApiModelProperty("当前逾期金额") + private String currentBeMoney; // 当前逾期金额 + @ApiModelProperty("其中资金占用费") + private String wheFundOccMoney; // 资金占用费 + @ApiModelProperty("未到期金额") + private String unexpiredMoney; // 未到期金额 + @ApiModelProperty("总期数") + private String nper; // 总期数 + @ApiModelProperty("当前期数") + private String currentPeriod; // 当前期数 + @ApiModelProperty("已还金额换算期数") + private String alRepaidMoneyConPeriod; // 已还金额换算期数 + @ApiModelProperty("逾期金额换算期数") + private String beOverdueMoneyAndPeriod; // 逾期金额换算期数 + @ApiModelProperty("垫资方月还") + private String price; + @ApiModelProperty("垫资方逾期利息") + private String bankInterest; + @ApiModelProperty("车辆处置金额") + private String amount; + @ApiModelProperty("欠款小计") + private String owedTotal; + @ApiModelProperty("贷款保证金") + private String deposit; + @ApiModelProperty("是否回购") + private String repo; + + +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanlawsuitapply/flow/LawsuitCompleteDto.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanlawsuitapply/flow/LawsuitCompleteDto.java new file mode 100644 index 0000000000..73a3834aab --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanlawsuitapply/flow/LawsuitCompleteDto.java @@ -0,0 +1,41 @@ +package com.yxt.anrui.riskcenter.api.loanlawsuitapply.flow; + +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.util.Map; + +/** + * @Author dimengzhe + * @Date 2022/6/28 9:01 + * @Description + */ +@Data +public class LawsuitCompleteDto implements Dto { + private static final long serialVersionUID = 3240453987322803352L; + @ApiModelProperty(value = "用户sid") + @NotBlank(message = "参数错误:userSid") + private String userSid; + @ApiModelProperty(value = "用户全路径sid") + private String orgSidPath; + @ApiModelProperty(value = "节点id") + @NotBlank(message = "参数错误:taskDefKey") + private String taskDefKey; + @ApiModelProperty(value = "任务id") + @NotBlank(message = "参数错误:taskId") + private String taskId; + @ApiModelProperty(value = "流程id") + @NotBlank(message = "参数错误:instanceId") + private String instanceId; + @ApiModelProperty(value = "意见") + @NotBlank(message = "参数错误:comment") + private String comment; + @ApiModelProperty(value = "业务sid") + @NotBlank(message = "参数错误:businessSid") + private String businessSid; + @ApiModelProperty(value = "分支字段及业务字段") + private Map formVariables; + +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanlawsuitapply/flow/LawsuitDelegateQuery.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanlawsuitapply/flow/LawsuitDelegateQuery.java new file mode 100644 index 0000000000..04b0e21834 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanlawsuitapply/flow/LawsuitDelegateQuery.java @@ -0,0 +1,26 @@ +package com.yxt.anrui.riskcenter.api.loanlawsuitapply.flow; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author Administrator + * @description + * @date 2023/9/28 9:28 + */ +@Data +public class LawsuitDelegateQuery { + @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/loanlawsuitapply/flow/LawsuitGetNodeQuery.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanlawsuitapply/flow/LawsuitGetNodeQuery.java new file mode 100644 index 0000000000..20ac566d58 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanlawsuitapply/flow/LawsuitGetNodeQuery.java @@ -0,0 +1,26 @@ +package com.yxt.anrui.riskcenter.api.loanlawsuitapply.flow; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Map; + +/** + * @Author dimengzhe + * @Date 2022/6/28 10:42 + * @Description + */ +@Data +public class LawsuitGetNodeQuery implements Query { + private static final long serialVersionUID = -5674867230708197611L; + + @ApiModelProperty(value = "环节定义id") + private String taskDefKey; + @ApiModelProperty(value = "业务sid") + private String businessSid; + + @ApiModelProperty(value = "分支字段及业务字段") + private Map formVariables; + +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanlawsuitapply/flow/LawsuitGetNodeVo.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanlawsuitapply/flow/LawsuitGetNodeVo.java new file mode 100644 index 0000000000..7bba8278ac --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanlawsuitapply/flow/LawsuitGetNodeVo.java @@ -0,0 +1,25 @@ +package com.yxt.anrui.riskcenter.api.loanlawsuitapply.flow; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @Author dimengzhe + * @Date 2022/6/28 11:09 + * @Description + */ +@Data +public class LawsuitGetNodeVo implements Vo { + private static final long serialVersionUID = 8802774014747063504L; + @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/loanlawsuitapply/flow/LawsuitTaskQuery.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanlawsuitapply/flow/LawsuitTaskQuery.java new file mode 100644 index 0000000000..ddbf82777e --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanlawsuitapply/flow/LawsuitTaskQuery.java @@ -0,0 +1,56 @@ +package com.yxt.anrui.riskcenter.api.loanlawsuitapply.flow; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Author dimengzhe + * @Date 2022/6/28 17:29 + * @Description 终止、撤回、驳回查询参数 + */ +@Data +public class LawsuitTaskQuery implements Query { + private static final long serialVersionUID = -4006020771892400451L; + /** + * 终止、驳回、撤回 + */ + @ApiModelProperty("任务Id") + @NotBlank(message = "参数错误:taskId") + private String taskId; + /** + * 终止、驳回、撤回 + */ + @ApiModelProperty("业务sid") + @NotBlank(message = "参数错误:businessSid") + private String businessSid; + /** + * 终止、驳回 + */ + @ApiModelProperty("任务意见") + private String comment; + /** + * 终止、撤回、驳回 + */ + @ApiModelProperty("用户Sid") + private String userSid; + /** + * 终止 + */ + @ApiModelProperty("流程实例Id") + private String instanceId; + /*@ApiModelProperty("用户Id") + private String userId; + @ApiModelProperty("节点") + private String targetKey; + @ApiModelProperty("流程变量信息") + private Map values = new HashMap<>(); + @ApiModelProperty("审批人") + private String assignee; + @ApiModelProperty("候选人") + private List candidateUsers = new ArrayList<>(); + @ApiModelProperty("审批组") + private List candidateGroups = new ArrayList<>();*/ +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanlawsuitapply/flow/SubmitLawsuitDto.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanlawsuitapply/flow/SubmitLawsuitDto.java new file mode 100644 index 0000000000..ca7c3da67c --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanlawsuitapply/flow/SubmitLawsuitDto.java @@ -0,0 +1,21 @@ +package com.yxt.anrui.riskcenter.api.loanlawsuitapply.flow; + +import com.yxt.anrui.riskcenter.api.loanlawsuitapply.LoanLawsuitApplyDto; +import com.yxt.anrui.riskcenter.api.loanrepurchaseapply.LoanRepurchaseApplyDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Author dimengzhe + * @Date 2022/6/27 13:38 + * @Description + */ +@Data +public class SubmitLawsuitDto extends LoanLawsuitApplyDto { + private static final long serialVersionUID = 378585162071125756L; + @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/loanlawsuitapply/LoanLawsuitApplyMapper.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanlawsuitapply/LoanLawsuitApplyMapper.java index 1dbddbdd6a..16825c09a7 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanlawsuitapply/LoanLawsuitApplyMapper.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanlawsuitapply/LoanLawsuitApplyMapper.java @@ -5,11 +5,13 @@ 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.loanlawsuitapply.*; +import com.yxt.anrui.riskcenter.api.loanlawsuitapply.app.AppLawsuitDetailsVo; import com.yxt.anrui.riskcenter.api.loanrepurchaseapply.LoanRepurchaseApply; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Map; /** @@ -40,4 +42,10 @@ public interface LoanLawsuitApplyMapper extends BaseMapper { int selectBySid(String join); IPage listPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + int updateFlowFiled(Map map); + + int selCountByBusVinSid(@Param("busVinSids") List busVinSids); + + AppLawsuitDetailsVo appDetail(@Param("sid") String sid); } diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanlawsuitapply/LoanLawsuitApplyMapper.xml b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanlawsuitapply/LoanLawsuitApplyMapper.xml index 3309d63344..946f06bb17 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanlawsuitapply/LoanLawsuitApplyMapper.xml +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanlawsuitapply/LoanLawsuitApplyMapper.xml @@ -1,6 +1,21 @@ + + UPDATE loan_lawsuit_apply + SET nodeState=#{nodeState} + , nodeSid=#{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/loanlawsuitapply/LoanLawsuitApplyRest.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanlawsuitapply/LoanLawsuitApplyRest.java index 8c6f07d17e..30eab25f44 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanlawsuitapply/LoanLawsuitApplyRest.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanlawsuitapply/LoanLawsuitApplyRest.java @@ -1,9 +1,15 @@ package com.yxt.anrui.riskcenter.biz.loanlawsuitapply; +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.loanlawsuitapply.*; +import com.yxt.anrui.riskcenter.api.loanlawsuitapply.app.AppLawsuitDetailsVo; +import com.yxt.anrui.riskcenter.api.loanlawsuitapply.flow.*; import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.LoanMonthlyAccrualApplyVo; import com.yxt.anrui.riskcenter.api.loanrepurchaseapply.LoanRepurchaseApplyFeign; +import com.yxt.anrui.riskcenter.api.loanrepurchaseapply.flow.*; import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.vo.PagerVo; @@ -12,6 +18,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.List; + /** * @description: * @author: fan @@ -59,4 +67,57 @@ public class LoanLawsuitApplyRest implements LoanLawsuitApplyFeign { public ResultBean deleteBySids(String[] sids) { return loanLawsuitApplyService.deleteBySids(sids); } + + @Override + public ResultBean submitRecordApplication(SubmitLawsuitDto dto) { + return loanLawsuitApplyService.submitRecordApplication(dto); + } + + @Override + public ResultBean complete(LawsuitCompleteDto dto) { + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(dto, bv); + bv.setModelId(ProcDefEnum.LOANLAWSUITAPPLY.getProDefId()); + return loanLawsuitApplyService.complete(bv); + } + + @Override + public ResultBean revokeProcess(LawsuitTaskQuery query) { + return loanLawsuitApplyService.revokeProcess(query); + } + + @Override + public ResultBean taskReject(LawsuitTaskQuery query) { + return loanLawsuitApplyService.taskReject(query); + } + + @Override + public ResultBean breakProcess(LawsuitTaskQuery query) { + return loanLawsuitApplyService.breakProcess(query); + } + + @Override + public ResultBean flowRecord(String procInsId) { + return loanLawsuitApplyService.flowRecord(procInsId); + } + + @Override + public ResultBean> getNextNodesForSubmit(LawsuitGetNodeQuery query) { + return loanLawsuitApplyService.getNextNodesForSubmit(query); + } + + @Override + public ResultBean> getPreviousNodesForReject(LawsuitGetNodeQuery query) { + return loanLawsuitApplyService.getPreviousNodesForReject(query); + } + + @Override + public ResultBean delegate(LawsuitDelegateQuery query) { + return loanLawsuitApplyService.delegate(query); + } + + @Override + public ResultBean appDetail(String sid) { + return loanLawsuitApplyService.appDetail(sid); + } } diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanlawsuitapply/LoanLawsuitApplyService.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanlawsuitapply/LoanLawsuitApplyService.java index 43935afb12..87dbe3c6a4 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanlawsuitapply/LoanLawsuitApplyService.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanlawsuitapply/LoanLawsuitApplyService.java @@ -1,16 +1,34 @@ package com.yxt.anrui.riskcenter.biz.loanlawsuitapply; 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.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.SysOrganizationFeign; import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo; +import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrg; import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign; import com.yxt.anrui.portal.api.sysuser.PrivilegeQuery; import com.yxt.anrui.portal.api.sysuser.SysUserFeign; import com.yxt.anrui.portal.api.sysuser.SysUserVo; +import com.yxt.anrui.riskcenter.api.loanfile.LoanFile; +import com.yxt.anrui.riskcenter.api.loanfile.LoanFileEnum; import com.yxt.anrui.riskcenter.api.loanlawsuitapply.*; +import com.yxt.anrui.riskcenter.api.loanlawsuitapply.app.AppLawsuitDetailsVo; +import com.yxt.anrui.riskcenter.api.loanlawsuitapply.app.AppVehListVo; +import com.yxt.anrui.riskcenter.api.loanlawsuitapply.flow.*; import com.yxt.anrui.riskcenter.api.loanlawsuitveh.LoanLawsuitVeh; import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.LoanMonthlyAccrualApply; import com.yxt.anrui.riskcenter.api.loanmonthlyaccrualapply.LoanMonthlyAccrualApplyQuery; @@ -19,6 +37,8 @@ import com.yxt.anrui.riskcenter.api.loanrepaymentschedule.LoanSolutionsDetailsss import com.yxt.anrui.riskcenter.api.loanrepurchaseapply.LoanRepurchaseApply; import com.yxt.anrui.riskcenter.api.loanrepurchaseapply.LoanRepurchaseApplyQuery; import com.yxt.anrui.riskcenter.api.loanrepurchaseapply.LoanRepurchaseApplyVo; +import com.yxt.anrui.riskcenter.api.loanrepurchaseapply.app.AppRepurchaseDetailsVo; +import com.yxt.anrui.riskcenter.api.loanrepurchaseapply.flow.*; import com.yxt.anrui.riskcenter.api.loanrestorereportapply.AlrepaidAndArrVo; import com.yxt.anrui.riskcenter.api.loansolutions.LoanSolutions; import com.yxt.anrui.riskcenter.api.loansolutions.app.SolutionsDetailsVo; @@ -30,6 +50,9 @@ 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.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -37,9 +60,9 @@ import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; +import java.util.*; +import java.util.concurrent.*; +import java.util.stream.Collectors; /** @@ -50,6 +73,14 @@ import java.util.List; @Service public class LoanLawsuitApplyService extends MybatisBaseService { + @Autowired + private FlowFeign flowFeign; + @Autowired + private FlowTaskFeign flowTaskFeign; + @Autowired + private FlowableFeign flowableFeign; + @Autowired + private MessageFeign messageFeign; @Autowired private SysUserFeign sysUserFeign; @Autowired @@ -270,6 +301,10 @@ public class LoanLawsuitApplyService extends MybatisBaseService saveLawsuit(LoanLawsuitApplyDto dto) { ResultBean rb = ResultBean.fireFail(); String sid = ""; + List vehList1 = dto.getVehList(); + if (vehList1.isEmpty()) { + return rb.setMsg("诉讼车辆列表不能为空!"); + } if (StringUtils.isNotBlank(dto.getSid())) { sid = dto.getSid(); LoanLawsuitApply updateEntity = fetchBySid(sid); @@ -423,4 +458,496 @@ public class LoanLawsuitApplyService extends MybatisBaseService p = PagerUtil.pageToVo(pagging, null); return p; } + + //-----------------------------------flow--------------------------------- + + /** + * 判断提交的流程是否被允许 + * + * @param dto + * @return + */ + private synchronized int submitBusinessData(SubmitLawsuitDto dto, LoanLawsuitApply loanLawsuitApply) { + int r = 0; + if (StringUtils.isBlank(dto.getSid())) { + r = 1; + } else { + if (loanLawsuitApply != null) { + String businessTaskId = loanLawsuitApply.getTaskId(); + if (StringUtils.isBlank(businessTaskId) && StringUtils.isBlank(dto.getTaskId())) { + //新提交 + r = 1; + } else if (StringUtils.isNotBlank(businessTaskId) && businessTaskId.equals(dto.getTaskId())) { + //二次提交//只有数据一致的时候才能进行下一步 + r = 2; + } + } else { + r = 3; + } + } + return r; + } + + /** + * 更新流程相关的状态 + * + * @param map + * @return + */ + private int updateFlowFiled(Map map) { + return baseMapper.updateFlowFiled(map); + } + + public ResultBean submitRecordApplication(SubmitLawsuitDto dto) { + ResultBean rb = ResultBean.fireFail(); + LoanLawsuitApply loanLawsuitApply = fetchBySid(dto.getSid()); + int r = submitBusinessData(dto, loanLawsuitApply); + if (r == 3) { + return rb.setMsg("该申请不存在"); + } + if (r == 0) { + return rb.setMsg("操作失败!提交的数据不一致"); + } + List vehList1 = dto.getVehList(); + if (vehList1.isEmpty()) { + return rb.setMsg("诉讼车辆列表不能为空!"); + } + List busVinSids = new ArrayList<>(); + for (LoanLawsuitVehVo loanLawsuitVehVo : vehList1) { + busVinSids.add(loanLawsuitVehVo.getBusVinSid()); + } + //判断当前车辆是否已在审批中 + int count = baseMapper.selCountByBusVinSid(busVinSids); + if (count > 0) { + return rb.setMsg("当前所选车辆已经处于诉讼申请审批状态,无法提交!"); + } + String businessSid = ""; + //新增修改保存 + ResultBean resultBean = saveLawsuit(dto); + if (resultBean.getSuccess()) { + businessSid = resultBean.getData(); + } else { + return rb.setMsg(resultBean.getMsg()); + } + LoanLawsuitApply entity = fetchBySid(businessSid); + String orgSidPath = ""; + if (StringUtils.isNotBlank(entity.getOrgSidPath())) { + orgSidPath = entity.getOrgSidPath(); + } else { + SysUserVo data = sysUserFeign.fetchBySid(entity.getCreateBySid()).getData(); + if (null != data) { + //根据staffSid获取用户的组织全路径 + ResultBean staffOrgResultBean = sysStaffOrgFeign.getOrgByStaffSid(data.getStaffSid()); + if (!staffOrgResultBean.getSuccess()) { + return rb.setMsg(staffOrgResultBean.getMsg()); + } + //用户的组织全路径 + orgSidPath = staffOrgResultBean.getData().getOrgSidPath(); + } + } + List orgPathList = Arrays.asList(orgSidPath.split("/")); + SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(orgPathList.get(orgPathList.size() - 1)).getData(); + if (sysOrganization == null) { + return rb.setMsg("当前所在的组织机构不存在"); + } + if (StringUtils.isBlank(sysOrganization.getManagerSid())) { +// return rb.setMsg("当前所在的组织机构未设置主管人员"); + sysOrganization.setManagerSid(ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId()); + } + //创建BusinessVariables实体对象 + BusinessVariables bv = new BusinessVariables(); + //流程中的参数赋值 + Map variables = BeanUtil.beanToMap(dto); + Map appMap = new HashMap<>(); + //若有网关,则赋值网关中判断的字段。 +// boolean isTure = true; +// //去查询是否同意 +// if (StringUtils.isNotBlank(entity.getSalesUserSid())) { +// if (!entity.getCreateBySid().equals(entity.getSalesUserSid())) { +// isTure = false; +// } +// } +// variables.put("isTure", isTure); + variables.put("businessSid", businessSid); + appMap.put("sid", businessSid); + variables.put("app", appMap); +// String orderNames = "<" + entity.getCustomer() + ">" + "欠款客户备案"; +// variables.put("orderNames", orderNames); + LoanLawsuitApply loanLawsuitApply1 = fetchBySid(businessSid); + String msgBusinessSid = loanLawsuitApply1.getSid(); + //用户的部门全路径sid + bv.setOrgSidPath(loanLawsuitApply1.getOrgSidPath()); + //业务sid + bv.setBusinessSid(businessSid); + //用户sid + bv.setUserSid(dto.getUserSid()); + bv.setFormVariables(variables); +// String nextNodeUserSids_ = sysOrganization.getManagerSid(); +// bv.setNextNodeUserSids(nextNodeUserSids_); +// if (isTure) { +// bv.setNextNodeUserSids(nextNodeUserSids_); +// } else { +// bv.setNextNodeUserSids(entity.getSalesUserSid()); +// } + //流程定义id + bv.setModelId(ProcDefEnum.LOANLAWSUITAPPLY.getProDefId()); + if (r == 1) { + //流程定义id + bv.setModelId(ProcDefEnum.LOANLAWSUITAPPLY.getProDefId()); + ResultBean voResultBean = flowFeign.startProcess(bv); + if (!voResultBean.getSuccess()) { + return rb.setMsg(voResultBean.getMsg()); + } + UpdateFlowFieldVo ufVo = voResultBean.getData(); + int i = updateFlowFiled(BeanUtil.beanToMap(ufVo)); + //==================================添加线程 + try { + ThreadFactory namedThreadFactory = new ThreadFactoryBuilder() + .setNameFormat("demo-pool-%d").build(); + ExecutorService pool = new ThreadPoolExecutor(2, 100, + 0L, TimeUnit.MILLISECONDS, + new LinkedBlockingQueue(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy()); + Future future1 = pool.submit(() -> { + //极光推送 + MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); + MessageFlowVo messageFlowVo = new MessageFlowVo(); + BeanUtil.copyProperties(ufVo, messageFlowVo); + messageFlowableQuery.setUfVo(messageFlowVo); + messageFlowableQuery.setAppMap(appMap); + messageFlowableQuery.setBusinessSid(msgBusinessSid); + messageFlowableQuery.setModuleName("诉讼申请"); + SysUserVo userVo = sysUserFeign.fetchBySid(loanLawsuitApply1.getCreateBySid()).getData(); + if (userVo != null) { + if (StringUtils.isNotBlank(userVo.getName())) { + messageFlowableQuery.setMsgContent(userVo.getName() + "提交的" + 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"); + } + LoanLawsuitApply loanLawsuitApply2 = fetchBySid(dto.getSid()); + bv.setTaskId(dto.getTaskId()); + bv.setTaskDefKey(loanLawsuitApply2.getNodeSid()); + bv.setComment("重新提交"); + bv.setInstanceId(dto.getInstanceId()); + return complete(bv); + } + return rb; + } + + public ResultBean complete(BusinessVariables bv) { + ResultBean rb = ResultBean.fireFail(); + String businessSid = bv.getBusinessSid(); + LoanLawsuitApply loanLawsuitApply = this.fetchBySid(businessSid); + if (bv.getTaskId().equals(loanLawsuitApply.getTaskId())) { + bv.setOrgSidPath(loanLawsuitApply.getOrgSidPath()); + //流程中的参数赋值 + Map variables = new HashMap<>(); + Map appMap = new HashMap<>(); + //若有网关,则赋值网关中判断的字段。 +// boolean isTure = true; +// //去查询是否同意 +// if (StringUtils.isNotBlank(loanCustomerRecord.getSalesUserSid())) { +// if (!loanCustomerRecord.getCreateBySid().equals(loanCustomerRecord.getSalesUserSid())) { +// isTure = false; +// } +// } +// variables.put("isTure", isTure); +// if (bv.getTaskDefKey().equals("Activity_1078xxs")) { +// if (StringUtils.isNotBlank(loanCustomerRecord.getManageSid())) { +// bv.setNextNodeUserSids(loanCustomerRecord.getManageSid()); +// } else { +// bv.setNextNodeUserSids(ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId()); +// } +// } + variables.put("businessSid", businessSid); + appMap.put("sid", businessSid); + variables.put("app", appMap); + bv.setFormVariables(variables); + ResultBean resultBean = flowFeign.handleProsess(bv); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + UpdateFlowFieldVo ufVo = resultBean.getData(); + int i = updateFlowFiled(BeanUtil.beanToMap(resultBean.getData())); + if ("Event_end".equals(resultBean.getData().getTaskDefKey())) { + LoanLawsuitApply lawsuitApply = fetchBySid(businessSid); + lawsuitApply.setCloseDate(new DateTime()); + baseMapper.updateById(lawsuitApply); + + } else { + //极光推送 + loanLawsuitApply = fetchBySid(businessSid); + MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); + MessageFlowVo messageFlowVo = new MessageFlowVo(); + BeanUtil.copyProperties(ufVo, messageFlowVo); + messageFlowVo.setProcDefId(loanLawsuitApply.getProcDefId()); + messageFlowVo.setProcInsId(loanLawsuitApply.getProcInstId()); + messageFlowableQuery.setUfVo(messageFlowVo); + messageFlowableQuery.setAppMap(appMap); + messageFlowableQuery.setBusinessSid(businessSid); + messageFlowableQuery.setModuleName("诉讼申请"); + messageFlowableQuery.setMsgContent(loanLawsuitApply.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); + messageFlowableQuery.setMsgTitle("诉讼申请"); + ResultBean stringResultBean = messageFeign.pushMessage(messageFlowableQuery); + } + return rb.success().setData(resultBean.getData()); + } else { + return rb.setMsg("操作失败!提交的数据不一致"); + } + } + + + /** + * 撤回 + * + * @param query + * @return + */ + public ResultBean revokeProcess(LawsuitTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + if (StringUtils.isBlank(query.getUserSid())) { + return rb.setMsg("参数错误:userSid"); + } + LoanLawsuitApply loanLawsuitApply = fetchBySid(query.getBusinessSid()); + String businessTaskId = loanLawsuitApply.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())); + loanLawsuitApply = fetchBySid(query.getBusinessSid()); + String procId = loanLawsuitApply.getProcInstId(); + ResultBean> listResultBean = flowTaskFeign.getLatestTasks(procId); + String nextNodeUserSids = listResultBean.getData().get(0).getASSIGNEE_(); + String nextName = listResultBean.getData().get(0).getName_(); + List receiveSidList = Arrays.asList(nextNodeUserSids.split(",")); + if ("发起申请".equals(nextName)) { + } + return rb.success().setData(resultBean.getData()); + } + } + return rb.setMsg("操作失败,提交的数据不一致!"); + } + + public ResultBean taskReject(LawsuitTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + String businessSid = query.getBusinessSid(); + LoanLawsuitApply loanLawsuitApply = fetchBySid(businessSid); + if (loanLawsuitApply == null) { + return rb.setMsg("该申请不存在"); + } + String businessTaskId = loanLawsuitApply.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); + //若有网关,则赋值网关中判断的字段。 +// boolean isTure = true; +// //去查询是否同意 +// if (StringUtils.isNotBlank(loanCustomerRecord.getSalesUserSid())) { +// if (!loanCustomerRecord.getCreateBySid().equals(loanCustomerRecord.getSalesUserSid())) { +// isTure = false; +// } +// } +// variables.put("isTure", isTure); + 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); + //极光推送 + loanLawsuitApply = fetchBySid(businessSid); + MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); + MessageFlowVo messageFlowVo = new MessageFlowVo(); + BeanUtil.copyProperties(ufVo, messageFlowVo); + String procId = loanLawsuitApply.getProcInstId(); + messageFlowVo.setProcInsId(procId); + messageFlowVo.setProcDefId(loanLawsuitApply.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_(); + List receiveSidList = Arrays.asList(nextNodeUserSids.split(",")); +// if (receiveSidList.size() == 1 && receiveSidList.get(0).equals(busVehicleApply.getCreateBySid())) { + if ("发起申请".equals(nextName)) { + messageFlowableQuery.setMsgContent("您提交的" + messageFlowableQuery.getModuleName() + "已被驳回,请重新提交"); + + } else { + SysUserVo userVo = sysUserFeign.fetchBySid(loanLawsuitApply.getCreateBySid()).getData(); + if (userVo != null) { + if (StringUtils.isNotBlank(userVo.getName())) { + messageFlowableQuery.setMsgContent(userVo.getName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); + } + } + } + messageFlowableQuery.setMsgTitle("诉讼申请"); + ResultBean stringResultBean = messageFeign.pushMessage(messageFlowableQuery); + return rb.success(); + } + } + return rb.setMsg("操作失败!提交的数据不一致!"); + } + + public ResultBean breakProcess(LawsuitTaskQuery 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("请填写意见"); + } + LoanLawsuitApply loanLawsuitApply = fetchBySid(query.getBusinessSid()); + String businessTaskId = loanLawsuitApply.getTaskId(); + if (StringUtils.isNotBlank(businessTaskId)) { + if (query.getUserSid().equals(loanLawsuitApply.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 flowRecord(String procInsId) { + return flowTaskFeign.businessFlowRecord(procInsId); + } + + public ResultBean> getNextNodesForSubmit(LawsuitGetNodeQuery query) { + ResultBean> rb = ResultBean.fireFail(); + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + //流程中的参数赋值、若有网关,则赋值网关中判断的字段。 + Map variables = new HashMap<>(); + + //根据业务sid查询排产信息 + LoanLawsuitApply lawsuitApply = fetchBySid(query.getBusinessSid()); + //若有网关,则赋值网关中判断的字段。 +// boolean isTure = true; +// //去查询是否同意 +// if (StringUtils.isNotBlank(loanCustomerRecord.getSalesUserSid())) { +// if (!loanCustomerRecord.getCreateBySid().equals(loanCustomerRecord.getSalesUserSid())) { +// isTure = false; +// } +// } +// variables.put("isTure", isTure); + bv.setFormVariables(variables); + bv.setModelId(lawsuitApply.getProcDefId()); + ResultBean>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv); + //判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo + List voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), LawsuitGetNodeVo.class)).collect(Collectors.toList()); + return rb.success().setData(voList); + + } + + public ResultBean> getPreviousNodesForReject(LawsuitGetNodeQuery query) { + ResultBean> rb = ResultBean.fireFail(); + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + //流程中的参数赋值、若有网关,则赋值网关中判断的字段。 + Map variables = new HashMap<>(); + //根据业务sid查询排产信息 + LoanLawsuitApply lawsuitApply = fetchBySid(query.getBusinessSid()); +// //若有网关,则赋值网关中判断的字段。 +// boolean isTure = true; +// //去查询是否同意 +// if (StringUtils.isNotBlank(loanCustomerRecord.getSalesUserSid())) { +// if (!loanCustomerRecord.getCreateBySid().equals(loanCustomerRecord.getSalesUserSid())) { +// isTure = false; +// } +// } +// variables.put("isTure", isTure); + bv.setFormVariables(variables); + bv.setModelId(lawsuitApply.getProcDefId()); + ResultBean>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv); + //判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo + List voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), LawsuitGetNodeVo.class)).collect(Collectors.toList()); + return rb.success().setData(voList); + + } + + public ResultBean delegate(LawsuitDelegateQuery query) { + ResultBean rb = ResultBean.fireFail(); + FlowDelegateQuery delegateQuery = new FlowDelegateQuery(); + BeanUtil.copyProperties(query, delegateQuery); + flowFeign.delegate(delegateQuery); + return rb.success(); + } + + + public ResultBean appDetail(String sid) { + ResultBean rb = ResultBean.fireFail(); + AppLawsuitDetailsVo vo = baseMapper.appDetail(sid); + if (null != vo) { + List voList = loanLawsuitVehService.selByMainSid(sid); + List vehListVos = new ArrayList<>(); + if (!voList.isEmpty()) { + for (LoanLawsuitVehVo loanLawsuitVehVo : voList) { + AppVehListVo appVehListVo = new AppVehListVo(); + BeanUtil.copyProperties(loanLawsuitVehVo, appVehListVo); + vehListVos.add(appVehListVo); + } + vo.setVehListVos(vehListVos); + } + } + return rb.success().setData(vo); + } + + } diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/lawsuit/LawsuitDetailsVo.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/lawsuit/LawsuitDetailsVo.java new file mode 100644 index 0000000000..ba32d830c3 --- /dev/null +++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/lawsuit/LawsuitDetailsVo.java @@ -0,0 +1,43 @@ +package com.yxt.anrui.terminal.api.risk.lawsuit; + +import com.yxt.anrui.terminal.api.base.common.CarModelVo; +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author Administrator + * @description + * @date 2023/11/13 15:38 + */ +@Data +public class LawsuitDetailsVo implements Vo { + + + private String sid; + private String publishInfo; // 发起部门-发起人 + private String time; //申请日期 + private String taskId; + private String procInsId; + @ApiModelProperty("客户名称") + private String custName; + @ApiModelProperty("资方合同号") + private String bankContractNo; + @ApiModelProperty("贷款人") + private String borrName; + @ApiModelProperty("贷款合同号") + private String loanContractNo; + @ApiModelProperty("资方") + private String bankName; + @ApiModelProperty("销售订单sid") + private String salesOrderSid; + @ApiModelProperty("风控进展描述") + private String progress; + @ApiModelProperty("欠款合计") + private String amountAll; + private List vehListVos = new ArrayList<>(); + private CarModelVo jrfa;//金融方案 +} diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/lawsuit/LawsuitFeign.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/lawsuit/LawsuitFeign.java new file mode 100644 index 0000000000..da9805c435 --- /dev/null +++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/lawsuit/LawsuitFeign.java @@ -0,0 +1,67 @@ +package com.yxt.anrui.terminal.api.risk.lawsuit; + + +import com.yxt.anrui.terminal.api.risk.lawsuit.flow.AppLawsuitDelegateQuery; +import com.yxt.anrui.terminal.api.risk.lawsuit.flow.AppLawsuitTaskQuery; +import com.yxt.anrui.terminal.api.risk.lawsuit.flow.CompleteLawsuitDto; +import com.yxt.anrui.terminal.api.risk.lawsuit.flow.LawsuitFlowableQuery; +import com.yxt.common.core.result.ResultBean; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.cloud.openfeign.SpringQueryMap; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; + +/** + * @description: + * @author: fzz + * @date: 2023/8/8 + **/ +@Api(tags = "诉讼申请") +@FeignClient( + contextId = "terminal-Lawsuit", + name = "anrui-terminal", + path = "/riskcenter/v1/Lawsuit", + fallback = LawsuitFeignFallback.class) +public interface LawsuitFeign { + + + @ApiOperation("详情") + @GetMapping("/appDetail/{sid}") + @ResponseBody + ResultBean detail(@PathVariable("sid") String sid); + + //-------------------------流程----------------------------------------- + + @ApiOperation("办理") + @PutMapping("/agreeCreditInfo") + @ResponseBody + ResultBean agreeCreditInfo(@Valid @RequestBody CompleteLawsuitDto dto); + + @ApiOperation("驳回") + @PutMapping("/rejectCreditInfo") + @ResponseBody + ResultBean rejectCreditInfo(@Valid @RequestBody AppLawsuitTaskQuery query); + + @ApiOperation("撤回") + @PutMapping("/recallCreditInfo") + @ResponseBody + ResultBean recallCreditInfo(@Valid @RequestBody AppLawsuitTaskQuery query); + + @ApiOperation("终止") + @PutMapping("/stopCreditInfo") + @ResponseBody + ResultBean stopCreditInfo(@Valid @RequestBody AppLawsuitTaskQuery query); + + @ApiOperation("获取流程操作标题") + @GetMapping("/getFlowOperateTitle") + @ResponseBody + ResultBean getFlowOperateTitle(@Valid @SpringQueryMap LawsuitFlowableQuery query); + + @ApiOperation(value = "加签") + @PutMapping(value = "/delegate") + @ResponseBody + public ResultBean delegate(@RequestBody AppLawsuitDelegateQuery delegateQuery); +} diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/lawsuit/LawsuitFeignFallback.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/lawsuit/LawsuitFeignFallback.java new file mode 100644 index 0000000000..3f2dbebc8d --- /dev/null +++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/lawsuit/LawsuitFeignFallback.java @@ -0,0 +1,53 @@ +package com.yxt.anrui.terminal.api.risk.lawsuit; + +import com.yxt.anrui.terminal.api.risk.lawsuit.flow.AppLawsuitDelegateQuery; +import com.yxt.anrui.terminal.api.risk.lawsuit.flow.AppLawsuitTaskQuery; +import com.yxt.anrui.terminal.api.risk.lawsuit.flow.CompleteLawsuitDto; +import com.yxt.anrui.terminal.api.risk.lawsuit.flow.LawsuitFlowableQuery; +import com.yxt.common.core.result.ResultBean; +import org.springframework.stereotype.Component; + +/** + * @description: + * @author: fzz + * @date: + **/ +@Component +public class LawsuitFeignFallback implements LawsuitFeign { + + + @Override + public ResultBean detail(String sid) { + return null; + } + + @Override + public ResultBean agreeCreditInfo(CompleteLawsuitDto dto) { + return null; + } + + @Override + public ResultBean rejectCreditInfo(AppLawsuitTaskQuery query) { + return null; + } + + @Override + public ResultBean recallCreditInfo(AppLawsuitTaskQuery query) { + return null; + } + + @Override + public ResultBean stopCreditInfo(AppLawsuitTaskQuery query) { + return null; + } + + @Override + public ResultBean getFlowOperateTitle(LawsuitFlowableQuery query) { + return null; + } + + @Override + public ResultBean delegate(AppLawsuitDelegateQuery delegateQuery) { + return null; + } +} diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/lawsuit/LawsuitVehVo.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/lawsuit/LawsuitVehVo.java new file mode 100644 index 0000000000..3388bd613e --- /dev/null +++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/lawsuit/LawsuitVehVo.java @@ -0,0 +1,46 @@ +package com.yxt.anrui.terminal.api.risk.lawsuit; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author Fan + * @description + * @date 2024/2/22 10:32 + */ +@Data +public class LawsuitVehVo { + @ApiModelProperty("车牌号") + private String vehMark; + @ApiModelProperty("车架号") + private String vinNo; + //费用 + @ApiModelProperty("已还金额") + private String alRepaidMoney; // 已还金额 + @ApiModelProperty("当前逾期金额") + private String currentBeMoney; // 当前逾期金额 + @ApiModelProperty("其中资金占用费") + private String wheFundOccMoney; // 资金占用费 + @ApiModelProperty("未到期金额") + private String unexpiredMoney; // 未到期金额 + @ApiModelProperty("总期数") + private String nper; // 总期数 + @ApiModelProperty("当前期数") + private String currentPeriod; // 当前期数 + @ApiModelProperty("已还金额换算期数") + private String alRepaidMoneyConPeriod; // 已还金额换算期数 + @ApiModelProperty("逾期金额换算期数") + private String beOverdueMoneyAndPeriod; // 逾期金额换算期数 + @ApiModelProperty("垫资方月还") + private String price; + @ApiModelProperty("垫资方逾期利息") + private String bankInterest; + @ApiModelProperty("车辆处置金额") + private String amount; + @ApiModelProperty("欠款小计") + private String owedTotal; + @ApiModelProperty("贷款保证金") + private String deposit; + @ApiModelProperty("是否回购") + private String repo; +} diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/lawsuit/flow/AppLawsuitDelegateQuery.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/lawsuit/flow/AppLawsuitDelegateQuery.java new file mode 100644 index 0000000000..9223baf2e3 --- /dev/null +++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/lawsuit/flow/AppLawsuitDelegateQuery.java @@ -0,0 +1,25 @@ +package com.yxt.anrui.terminal.api.risk.lawsuit.flow; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author Administrator + * @description + * @date 2023/9/28 10:16 + */ +@Data +public class AppLawsuitDelegateQuery { + @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/lawsuit/flow/AppLawsuitTaskQuery.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/lawsuit/flow/AppLawsuitTaskQuery.java new file mode 100644 index 0000000000..ba44165517 --- /dev/null +++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/lawsuit/flow/AppLawsuitTaskQuery.java @@ -0,0 +1,46 @@ +package com.yxt.anrui.terminal.api.risk.lawsuit.flow; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @author Administrator + * @description + * @date 2023/10/17 9:14 + */ +@Data +public class AppLawsuitTaskQuery implements Query { + /** + * 终止、驳回、撤回 + */ + @ApiModelProperty("任务Id") + @NotBlank(message = "参数错误:taskId") + private String taskId; + /** + * 终止、驳回、撤回 + */ + @ApiModelProperty("业务sid") + @NotBlank(message = "参数错误:businessSid") + private String businessSid; + /** + * 终止、驳回 + */ + @ApiModelProperty("任务意见") + private String comment; + /** + * 终止、撤回、驳回 + */ + @ApiModelProperty("用户Sid") + private String userSid; + /** + * 终止 + */ + @ApiModelProperty("流程实例Id") + @JsonProperty("procInsId") + private String instanceId; + +} diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/lawsuit/flow/CompleteLawsuitDto.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/lawsuit/flow/CompleteLawsuitDto.java new file mode 100644 index 0000000000..ade339102c --- /dev/null +++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/lawsuit/flow/CompleteLawsuitDto.java @@ -0,0 +1,35 @@ +package com.yxt.anrui.terminal.api.risk.lawsuit.flow; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @author Administrator + * @description + * @date 2023/10/17 9:13 + */ +@Data +public class CompleteLawsuitDto implements Dto { + @ApiModelProperty(value = "任务id") + @NotBlank(message = "参数错误:taskId") + private String taskId; + @ApiModelProperty(value = "流程id") + @NotBlank(message = "参数错误:procInsId") + @JsonProperty("procInsId") + private String instanceId; + @ApiModelProperty(value = "意见") + private String comment; + @ApiModelProperty(value = "业务sid") + @NotBlank(message = "参数错误:businessSid") + private String businessSid; + @ApiModelProperty(value = "用户sid") + @NotBlank(message = "参数错误:userSid") + private String userSid; + @ApiModelProperty(value = "节点id") + @NotBlank(message = "参数错误:taskDefKey") + private String taskDefKey; +} diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/lawsuit/flow/LawsuitFlowableQuery.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/lawsuit/flow/LawsuitFlowableQuery.java new file mode 100644 index 0000000000..3d4deba667 --- /dev/null +++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/lawsuit/flow/LawsuitFlowableQuery.java @@ -0,0 +1,21 @@ +package com.yxt.anrui.terminal.api.risk.lawsuit.flow; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +public class LawsuitFlowableQuery implements Query { + private static final long serialVersionUID = -5879668616710833830L; + + @ApiModelProperty(value = "节点key") + private String taskDefKey; + @ApiModelProperty(value = "业务sid") + private String businessSid; + @ApiModelProperty(value = "0 上一环节 1下一环节") + @NotNull(message = "参数错误:next") + private Integer next; + +} diff --git a/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/lawsuit/LawsuitRest.java b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/lawsuit/LawsuitRest.java new file mode 100644 index 0000000000..79e04d1f12 --- /dev/null +++ b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/lawsuit/LawsuitRest.java @@ -0,0 +1,68 @@ +package com.yxt.anrui.terminal.biz.risk.lawsuit; + + +import com.yxt.anrui.terminal.api.risk.lawsuit.LawsuitDetailsVo; +import com.yxt.anrui.terminal.api.risk.lawsuit.LawsuitFeign; +import com.yxt.anrui.terminal.api.risk.lawsuit.flow.AppLawsuitDelegateQuery; +import com.yxt.anrui.terminal.api.risk.lawsuit.flow.AppLawsuitTaskQuery; +import com.yxt.anrui.terminal.api.risk.lawsuit.flow.CompleteLawsuitDto; +import com.yxt.anrui.terminal.api.risk.lawsuit.flow.LawsuitFlowableQuery; +import com.yxt.anrui.terminal.api.risk.repurchase.RepurchaseDetailsVo; +import com.yxt.anrui.terminal.api.risk.repurchase.RepurchaseFeign; +import com.yxt.anrui.terminal.api.risk.repurchase.flow.AppRepurchaseDelegateQuery; +import com.yxt.anrui.terminal.api.risk.repurchase.flow.AppRepurchaseTaskQuery; +import com.yxt.anrui.terminal.api.risk.repurchase.flow.CompleteRepurchaseDto; +import com.yxt.anrui.terminal.api.risk.repurchase.flow.RepurchaseFlowableQuery; +import com.yxt.common.core.result.ResultBean; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; + +/** + * @description: + * @author: fzz + * @date: + **/ +@Controller +@RequestMapping("/riskcenter/v1/Lawsuit") +public class LawsuitRest implements LawsuitFeign { + + @Autowired + private LawsuitService lawsuitService; + + + @Override + public ResultBean detail(String sid) { + return lawsuitService.detail(sid); + } + + @Override + public ResultBean agreeCreditInfo(CompleteLawsuitDto dto) { + return lawsuitService.agreeCreditInfo(dto); + } + + @Override + public ResultBean rejectCreditInfo(AppLawsuitTaskQuery query) { + return lawsuitService.rejectCreditInfo(query); + } + + @Override + public ResultBean recallCreditInfo(AppLawsuitTaskQuery query) { + return lawsuitService.recallCreditInfo(query); + } + + @Override + public ResultBean stopCreditInfo(AppLawsuitTaskQuery query) { + return lawsuitService.stopCreditInfo(query); + } + + @Override + public ResultBean getFlowOperateTitle(LawsuitFlowableQuery query) { + return lawsuitService.getFlowOperateTitle(query); + } + + @Override + public ResultBean delegate(AppLawsuitDelegateQuery delegateQuery) { + return lawsuitService.delegate(delegateQuery); + } +} diff --git a/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/lawsuit/LawsuitService.java b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/lawsuit/LawsuitService.java new file mode 100644 index 0000000000..edb7bbf2ab --- /dev/null +++ b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/lawsuit/LawsuitService.java @@ -0,0 +1,164 @@ +package com.yxt.anrui.terminal.biz.risk.lawsuit; + + +import cn.hutool.core.bean.BeanUtil; +import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrg; +import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign; +import com.yxt.anrui.portal.api.sysuser.SysUserFeign; +import com.yxt.anrui.portal.api.sysuser.SysUserVo; +import com.yxt.anrui.riskcenter.api.loanlawsuitapply.LoanLawsuitApplyFeign; +import com.yxt.anrui.riskcenter.api.loanlawsuitapply.app.AppLawsuitDetailsVo; +import com.yxt.anrui.riskcenter.api.loanlawsuitapply.flow.*; +import com.yxt.anrui.riskcenter.api.loanrepurchaseapply.LoanRepurchaseApplyFeign; +import com.yxt.anrui.riskcenter.api.loanrepurchaseapply.app.AppRepurchaseDetailsVo; +import com.yxt.anrui.riskcenter.api.loanrepurchaseapply.flow.*; +import com.yxt.anrui.terminal.api.base.common.CarModelVo; +import com.yxt.anrui.terminal.api.risk.lawsuit.LawsuitDetailsVo; +import com.yxt.anrui.terminal.api.risk.lawsuit.flow.AppLawsuitDelegateQuery; +import com.yxt.anrui.terminal.api.risk.lawsuit.flow.AppLawsuitTaskQuery; +import com.yxt.anrui.terminal.api.risk.lawsuit.flow.CompleteLawsuitDto; +import com.yxt.anrui.terminal.api.risk.lawsuit.flow.LawsuitFlowableQuery; +import com.yxt.anrui.terminal.api.risk.repurchase.RepurchaseDetailsVo; +import com.yxt.anrui.terminal.api.risk.repurchase.flow.AppRepurchaseDelegateQuery; +import com.yxt.anrui.terminal.api.risk.repurchase.flow.AppRepurchaseTaskQuery; +import com.yxt.anrui.terminal.api.risk.repurchase.flow.CompleteRepurchaseDto; +import com.yxt.anrui.terminal.api.risk.repurchase.flow.RepurchaseFlowableQuery; +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.Collections; +import java.util.List; + +/** + * @description: + * @author: fzz + * @date: + **/ +@Service +public class LawsuitService { + + @Autowired + private SysUserFeign sysUserFeign; + @Autowired + private SysStaffOrgFeign sysStaffOrgFeign; + @Autowired + private LoanLawsuitApplyFeign loanLawsuitApplyFeign; + @Autowired + private CommonService commonService; + + public ResultBean detail(String sid) { + ResultBean rb = ResultBean.fireFail(); + LawsuitDetailsVo vo = new LawsuitDetailsVo(); + AppLawsuitDetailsVo data = loanLawsuitApplyFeign.appDetail(sid).getData(); + if (null != data) { + BeanUtil.copyProperties(data, vo); + ResultBean getLoanSolution = commonService.getLoanSolution(data.getSalesOrderSid()); + CarModelVo carModelVo = getLoanSolution.getData(); + vo.setJrfa(carModelVo); + } + return rb.success().setData(vo); + } + + + public ResultBean agreeCreditInfo(CompleteLawsuitDto dto) { + ResultBean rb = ResultBean.fireFail(); + //根据用户sid获取staffSid + ResultBean userVoResultBean = sysUserFeign.fetchBySid(dto.getUserSid()); + if (!userVoResultBean.getSuccess()) { + return rb.setMsg(userVoResultBean.getMsg()); + } + //根据staffSid获取用户的组织全路径 + ResultBean staffOrgResultBean = sysStaffOrgFeign.getOrgByStaffSid(userVoResultBean.getData().getStaffSid()); + if (!staffOrgResultBean.getSuccess()) { + return rb.setMsg(staffOrgResultBean.getMsg()); + } + //用户的组织全路径 + String orgSidPath = staffOrgResultBean.getData().getOrgSidPath(); + LawsuitCompleteDto completeDto = new + LawsuitCompleteDto(); + BeanUtil.copyProperties(dto, completeDto); + completeDto.setOrgSidPath(orgSidPath); + ResultBean resultBean = loanLawsuitApplyFeign.complete(completeDto); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + return rb.success().setData(resultBean.getData()); + } + + public ResultBean rejectCreditInfo(AppLawsuitTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + LawsuitTaskQuery taskQuery = new + LawsuitTaskQuery(); + BeanUtil.copyProperties(query, taskQuery); + ResultBean resultBean = loanLawsuitApplyFeign.taskReject(taskQuery); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + return rb.success().setData(resultBean.getData()); + } + + public ResultBean recallCreditInfo(AppLawsuitTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + LawsuitTaskQuery taskQuery = new + LawsuitTaskQuery(); + BeanUtil.copyProperties(query, taskQuery); + ResultBean resultBean = loanLawsuitApplyFeign.revokeProcess(taskQuery); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + return rb.success().setData(resultBean.getData()); + } + + public ResultBean stopCreditInfo(AppLawsuitTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + LawsuitTaskQuery taskQuery = new + LawsuitTaskQuery(); + BeanUtil.copyProperties(query, taskQuery); + ResultBean resultBean = loanLawsuitApplyFeign.breakProcess(taskQuery); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + return rb.success().setData(resultBean.getData()); + } + + public ResultBean getFlowOperateTitle(LawsuitFlowableQuery query) { + ResultBean rb = ResultBean.fireFail(); + //0 上一环节 1下一环节 + int next = query.getNext(); + LawsuitGetNodeQuery getNodeQuery = new + LawsuitGetNodeQuery(); + BeanUtil.copyProperties(query, getNodeQuery); + String data = ""; + if (next == 0) { + ResultBean> getPreviousNodesForReject = loanLawsuitApplyFeign.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 = loanLawsuitApplyFeign.getNextNodesForSubmit(getNodeQuery); + if (getNextNodesForSubmit.getSuccess()) { + getNextNodesForSubmit.getData().removeAll(Collections.singleton(null)); + data = getNextNodesForSubmit.getData().get(0).getName(); + } else { + return rb.setMsg(getNextNodesForSubmit.getMsg()); + } + } else { + return rb.setMsg("参数错误:next"); + } + return rb.success().setData(data); + } + + public ResultBean delegate(AppLawsuitDelegateQuery delegateQuery) { + ResultBean rb = ResultBean.fireFail(); + LawsuitDelegateQuery delegateQuery1 = new + LawsuitDelegateQuery(); + BeanUtil.copyProperties(delegateQuery, delegateQuery1); + ResultBean delegate = loanLawsuitApplyFeign.delegate(delegateQuery1); + return rb.success(); + } +}