diff --git a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/common/enums/BillTypeEnum.java b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/common/enums/BillTypeEnum.java index b068648ebc..5f7e929326 100644 --- a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/common/enums/BillTypeEnum.java +++ b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/common/enums/BillTypeEnum.java @@ -34,7 +34,8 @@ public enum BillTypeEnum { GCCKSQ("GCCKSQ", "挂车出库申请"), XXTHS("XXTHS", "销售退货单"), JCZLQRD("JCZLQRD", "交车资料确认单"), - JCECQRD("JCECQRD", "交车资料二次确认单"); + JCECQRD("JCECQRD", "交车资料二次确认单"), + HKSQ("HKSQ", "划扣申请单据编号"); private String billType; diff --git a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorderloancontract/LoanOtherReceivablePush.java b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorderloancontract/LoanOtherReceivablePush.java index 283aec2508..b915532e8e 100644 --- a/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorderloancontract/LoanOtherReceivablePush.java +++ b/anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorderloancontract/LoanOtherReceivablePush.java @@ -14,4 +14,5 @@ public class LoanOtherReceivablePush { private String borrowerSid; @ApiModelProperty("销售订单sid") private String saleOrderSid; + private String isCompInvoic; } diff --git a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorderloancontract/BusSalesOrderLoancontractService.java b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorderloancontract/BusSalesOrderLoancontractService.java index 77a39d5c6e..9be8628472 100644 --- a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorderloancontract/BusSalesOrderLoancontractService.java +++ b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorderloancontract/BusSalesOrderLoancontractService.java @@ -416,6 +416,18 @@ public class BusSalesOrderLoancontractService extends MybatisBaseService files = new ArrayList<>(); + private List records = new ArrayList<>(); +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleApplyFeign.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleApplyFeign.java index cf48fae1a4..1a4dc042c9 100644 --- a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleApplyFeign.java +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleApplyFeign.java @@ -1,7 +1,7 @@ package com.yxt.anrui.riskcenter.api.loanbuckleapply; -import com.yxt.anrui.riskcenter.api.loancustomerrecord.*; -import com.yxt.anrui.riskcenter.api.loancustomerrecord.app.*; +import com.yxt.anrui.riskcenter.api.loanbuckleapply.app.AppBuckleDetailsVo; +import com.yxt.anrui.riskcenter.api.loanbuckleapply.flow.*; import com.yxt.anrui.riskcenter.api.loancustomerrecord.flow.*; import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; @@ -31,5 +31,72 @@ import java.util.List; public interface LoanBuckleApplyFeign { + @ApiOperation("根据条件分页查询数据的列表") + @PostMapping("/listPage") + public ResultBean> listPage(@RequestBody PagerQuery pq); + + @ApiOperation("新增初始化") + @GetMapping("/buckleInit") + @ResponseBody + public ResultBean buckleInit(@RequestBody String[] sids); + + @ApiOperation("保存修改") + @PostMapping("/saveBuckle") + @ResponseBody + public ResultBean saveBuckle(@RequestBody LoanBuckleApplyDto dto); + + @ApiOperation("详情查看") + @GetMapping("/buckleDetails") + @ResponseBody + public ResultBean buckleDetails(@RequestParam("sid") String sid); + + @ApiOperation("批量删除") + @DeleteMapping("/deleteBySids") + @ResponseBody + public ResultBean deleteBySids(@RequestBody String[] sids); + + //------------------------------流程接口---------------------------------------------- + + @ApiOperation("提交") + @PostMapping("/submit") + public ResultBean submitRecordApplication(@RequestBody @Valid SubmitBuckleDto dto); + + @ApiOperation(value = "办理(同意)") + @PostMapping("/complete") + public ResultBean complete(@Valid @RequestBody BuckleCompleteDto dto); + + @ApiOperation(value = "撤回流程") + @PostMapping(value = "/revokeProcess") + public ResultBean revokeProcess(@ApiParam(value = "工作流任务相关--请求参数") @RequestBody BuckleTaskQuery query); + + @ApiOperation(value = "驳回任务") + @PostMapping(value = "/reject") + public ResultBean taskReject(@ApiParam(value = "工作流任务相关--请求参数") @RequestBody BuckleTaskQuery query); + + @ApiOperation(value = "终止任务") + @PostMapping(value = "/breakProcess") + public ResultBean breakProcess(@RequestBody BuckleTaskQuery query); + + @ApiOperation(value = "流程历史流转记录") + @GetMapping(value = "/task/flowRecord/{procInsId}/{deployId}") + public ResultBean flowRecord(@ApiParam(value = "流程实例id") @PathVariable(value = "procInsId") String procInsId); + + @ApiOperation(value = "获取下一个环节") + @GetMapping(value = "/getNextNodesForSubmit") + ResultBean> getNextNodesForSubmit(@Valid @SpringQueryMap BuckleGetNodeQuery query); + + @ApiOperation(value = "获取上一个环节") + @GetMapping(value = "/getPreviousNodesForReject") + ResultBean> getPreviousNodesForReject(@Valid @SpringQueryMap BuckleGetNodeQuery query); + + @ApiOperation(value = "加签") + @PostMapping(value = "/delegate") + public ResultBean delegate(@RequestBody BuckleDelegateQuery query); + + //-------------------------app------------------------ + @ApiOperation("划扣申请") + @GetMapping("/appDetail/{sid}") + @ResponseBody + ResultBean appDetail(@PathVariable("sid") String sid); } \ No newline at end of file diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleApplyFeignFallback.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleApplyFeignFallback.java index 45f13442a0..ca32f5a2c5 100644 --- a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleApplyFeignFallback.java +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleApplyFeignFallback.java @@ -1,9 +1,8 @@ package com.yxt.anrui.riskcenter.api.loanbuckleapply; -import com.yxt.anrui.riskcenter.api.loancustomerrecord.*; -import com.yxt.anrui.riskcenter.api.loancustomerrecord.app.*; -import com.yxt.anrui.riskcenter.api.loancustomerrecord.flow.*; +import com.yxt.anrui.riskcenter.api.loanbuckleapply.app.AppBuckleDetailsVo; +import com.yxt.anrui.riskcenter.api.loanbuckleapply.flow.*; import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.vo.PagerVo; @@ -16,4 +15,78 @@ import java.util.List; public class LoanBuckleApplyFeignFallback implements LoanBuckleApplyFeign { + @Override + public ResultBean> listPage(PagerQuery pq) { + return null; + } + + @Override + public ResultBean buckleInit(String[] sids) { + return null; + } + + @Override + public ResultBean saveBuckle(LoanBuckleApplyDto dto) { + return null; + } + + @Override + public ResultBean buckleDetails(String sid) { + return null; + } + + @Override + public ResultBean deleteBySids(String[] sids) { + return null; + } + + @Override + public ResultBean submitRecordApplication(SubmitBuckleDto dto) { + return null; + } + + @Override + public ResultBean complete(BuckleCompleteDto dto) { + return null; + } + + @Override + public ResultBean revokeProcess(BuckleTaskQuery query) { + return null; + } + + @Override + public ResultBean taskReject(BuckleTaskQuery query) { + return null; + } + + @Override + public ResultBean breakProcess(BuckleTaskQuery query) { + return null; + } + + @Override + public ResultBean flowRecord(String procInsId) { + return null; + } + + @Override + public ResultBean> getNextNodesForSubmit(BuckleGetNodeQuery query) { + return null; + } + + @Override + public ResultBean> getPreviousNodesForReject(BuckleGetNodeQuery query) { + return null; + } + + @Override + public ResultBean delegate(BuckleDelegateQuery query) { + return null; + } + + @Override + public ResultBean appDetail(String sid) { + return null; + } } \ No newline at end of file diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleApplyInit.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleApplyInit.java new file mode 100644 index 0000000000..24d09501f2 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleApplyInit.java @@ -0,0 +1,33 @@ +package com.yxt.anrui.riskcenter.api.loanbuckleapply; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author Administrator + * @description + * @date 2023/11/13 13:43 + */ +@Data +public class LoanBuckleApplyInit implements Vo { + + private String sid; + private String userSid; + private String dept; + private String deptSid; + private String applyName; + private String applyDate; + private String remarks; + private String orgPath; + @ApiModelProperty("任务id") + private String taskId; + @ApiModelProperty("实例id") + private String instanceId; + private List files = new ArrayList<>(); + private List records = new ArrayList<>(); + +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleApplyQuery.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleApplyQuery.java new file mode 100644 index 0000000000..6b56fb3ee9 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleApplyQuery.java @@ -0,0 +1,31 @@ +package com.yxt.anrui.riskcenter.api.loanbuckleapply; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author Administrator + * @description + * @date 2023/11/13 13:32 + */ +@Data +public class LoanBuckleApplyQuery implements Query { + + @ApiModelProperty("组织全路径") + private String orgPath; + @ApiModelProperty("菜单sid") + private String menuSid; + @ApiModelProperty("菜单url") + private String menuUrl; + @ApiModelProperty("用户sid") + private String userSid; + @ApiModelProperty("分公司") + private String company; // 使用组织名称 + @ApiModelProperty("申请人") + private String applyName; // 申请人 + private String billNo; + private String applyStartDate; + private String applyEndDate; + +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleApplyVo.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleApplyVo.java new file mode 100644 index 0000000000..71396c25cc --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleApplyVo.java @@ -0,0 +1,36 @@ +package com.yxt.anrui.riskcenter.api.loanbuckleapply; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author Administrator + * @description + * @date 2023/11/13 13:32 + */ +@Data +public class LoanBuckleApplyVo implements Vo { + + private String sid; + @ApiModelProperty("流程状态") + private String nodeState; // 流程状态 + @ApiModelProperty("分公司") + private String company; // 使用组织名称 + @ApiModelProperty("申请人") + private String applyName; // 申请人 + @ApiModelProperty("申请部门") + private String dept; + @ApiModelProperty("申请日期") + private String applyDate; // 申请日期 + @ApiModelProperty("申请编号") + private String billNo; + @ApiModelProperty("流程定义的id") + private String procDefId; // 流程定义的id + @ApiModelProperty("流程实例的sid") + private String procInstId; // 流程实例的sid + @ApiModelProperty("备注") + private String remarks; // 备注 + + +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleHistoryRecord.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleHistoryRecord.java new file mode 100644 index 0000000000..7166f09f7a --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/LoanBuckleHistoryRecord.java @@ -0,0 +1,44 @@ +package com.yxt.anrui.riskcenter.api.loanbuckleapply; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @author Administrator + * @description + * @date 2023/11/13 13:45 + */ +@Data +public class LoanBuckleHistoryRecord { + + private String recordSid; + private String loanContractNo; + private String vinNo; + @ApiModelProperty("资方名称") + private String bankName; + @ApiModelProperty("资方合同") + private String bankContractNo; + @ApiModelProperty("客户") + private String customer; + @ApiModelProperty("借款人名称") + private String borrowerName; + @ApiModelProperty("还款方式") + private String returnWay; + @ApiModelProperty("期数") + private String period; + @ApiModelProperty("应还日期") + private String dueDate; + @ApiModelProperty("应还金额") + private String dueMoney; + @ApiModelProperty("实还金额") + private String actualMoney; + @ApiModelProperty("本期未还金额") + private String outstandingMoney; + @ApiModelProperty("实还日期") + private String actualDate; + +} + diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/app/AppBuckleDetailsVo.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/app/AppBuckleDetailsVo.java new file mode 100644 index 0000000000..6b282a6630 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/app/AppBuckleDetailsVo.java @@ -0,0 +1,23 @@ +package com.yxt.anrui.riskcenter.api.loanbuckleapply.app; + +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author Administrator + * @description + * @date 2023/11/13 15:49 + */ +@Data +public class AppBuckleDetailsVo { + private String sid; + private String publishInfo; + private String time; + private String remarks; + private List files = new ArrayList<>(); + private String taskId; + private String procInsId; + private List records = new ArrayList<>(); +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/app/AppRecordVo.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/app/AppRecordVo.java new file mode 100644 index 0000000000..2a92f8ac3a --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/app/AppRecordVo.java @@ -0,0 +1,23 @@ +package com.yxt.anrui.riskcenter.api.loanbuckleapply.app; + +import lombok.Data; + +/** + * @author Administrator + * @description + * @date 2023/11/13 15:49 + */ +@Data +public class AppRecordVo { + private String contractId; + private String instalments; + private String vin; + private String type; + private String zf; + private String zfNo; + private String cusName; + private String loanName; + private String repaymentDate; + private String info1; + private String info2; +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/flow/BuckleCompleteDto.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/flow/BuckleCompleteDto.java new file mode 100644 index 0000000000..0847a29b41 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/flow/BuckleCompleteDto.java @@ -0,0 +1,41 @@ +package com.yxt.anrui.riskcenter.api.loanbuckleapply.flow; + +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.util.Map; + +/** + * @Author dimengzhe + * @Date 2022/6/28 9:01 + * @Description + */ +@Data +public class BuckleCompleteDto implements Dto { + private static final long serialVersionUID = 3240453987322803352L; + @ApiModelProperty(value = "用户sid") + @NotBlank(message = "参数错误:userSid") + private String userSid; + @ApiModelProperty(value = "用户全路径sid") + private String orgSidPath; + @ApiModelProperty(value = "节点id") + @NotBlank(message = "参数错误:taskDefKey") + private String taskDefKey; + @ApiModelProperty(value = "任务id") + @NotBlank(message = "参数错误:taskId") + private String taskId; + @ApiModelProperty(value = "流程id") + @NotBlank(message = "参数错误:instanceId") + private String instanceId; + @ApiModelProperty(value = "意见") + @NotBlank(message = "参数错误:comment") + private String comment; + @ApiModelProperty(value = "业务sid") + @NotBlank(message = "参数错误:businessSid") + private String businessSid; + @ApiModelProperty(value = "分支字段及业务字段") + private Map formVariables; + +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/flow/BuckleDelegateQuery.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/flow/BuckleDelegateQuery.java new file mode 100644 index 0000000000..080ec02b24 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/flow/BuckleDelegateQuery.java @@ -0,0 +1,26 @@ +package com.yxt.anrui.riskcenter.api.loanbuckleapply.flow; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author Administrator + * @description + * @date 2023/9/28 9:28 + */ +@Data +public class BuckleDelegateQuery { + @ApiModelProperty + private String userSid; + @ApiModelProperty("流程实例id") +// @JsonProperty("procInsId") + private String instanceId; + @ApiModelProperty("任务Id") + private String taskId; + @ApiModelProperty("审批人sid") + private String assignee; + @ApiModelProperty("填写意见") + private String views; + + +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/flow/BuckleGetNodeQuery.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/flow/BuckleGetNodeQuery.java new file mode 100644 index 0000000000..63e3966d09 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/flow/BuckleGetNodeQuery.java @@ -0,0 +1,26 @@ +package com.yxt.anrui.riskcenter.api.loanbuckleapply.flow; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Map; + +/** + * @Author dimengzhe + * @Date 2022/6/28 10:42 + * @Description + */ +@Data +public class BuckleGetNodeQuery implements Query { + private static final long serialVersionUID = -5674867230708197611L; + + @ApiModelProperty(value = "环节定义id") + private String taskDefKey; + @ApiModelProperty(value = "业务sid") + private String businessSid; + + @ApiModelProperty(value = "分支字段及业务字段") + private Map formVariables; + +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/flow/BuckleGetNodeVo.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/flow/BuckleGetNodeVo.java new file mode 100644 index 0000000000..26e9980aeb --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/flow/BuckleGetNodeVo.java @@ -0,0 +1,25 @@ +package com.yxt.anrui.riskcenter.api.loanbuckleapply.flow; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @Author dimengzhe + * @Date 2022/6/28 11:09 + * @Description + */ +@Data +public class BuckleGetNodeVo implements Vo { + private static final long serialVersionUID = 8802774014747063504L; + @ApiModelProperty(value = "节点名称") + private String name; + @ApiModelProperty(value = "节点id") + private String id; + @ApiModelProperty(value = "审批组") + private List candidateGroups; + @ApiModelProperty(value = "是否是最后环节") + private String endTask; +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/flow/BuckleTaskQuery.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/flow/BuckleTaskQuery.java new file mode 100644 index 0000000000..be1d414d8c --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/flow/BuckleTaskQuery.java @@ -0,0 +1,56 @@ +package com.yxt.anrui.riskcenter.api.loanbuckleapply.flow; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Author dimengzhe + * @Date 2022/6/28 17:29 + * @Description 终止、撤回、驳回查询参数 + */ +@Data +public class BuckleTaskQuery implements Query { + private static final long serialVersionUID = -4006020771892400451L; + /** + * 终止、驳回、撤回 + */ + @ApiModelProperty("任务Id") + @NotBlank(message = "参数错误:taskId") + private String taskId; + /** + * 终止、驳回、撤回 + */ + @ApiModelProperty("业务sid") + @NotBlank(message = "参数错误:businessSid") + private String businessSid; + /** + * 终止、驳回 + */ + @ApiModelProperty("任务意见") + private String comment; + /** + * 终止、撤回、驳回 + */ + @ApiModelProperty("用户Sid") + private String userSid; + /** + * 终止 + */ + @ApiModelProperty("流程实例Id") + private String instanceId; + /*@ApiModelProperty("用户Id") + private String userId; + @ApiModelProperty("节点") + private String targetKey; + @ApiModelProperty("流程变量信息") + private Map 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/loanbuckleapply/flow/SubmitBuckleDto.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/flow/SubmitBuckleDto.java new file mode 100644 index 0000000000..fe65af84ef --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbuckleapply/flow/SubmitBuckleDto.java @@ -0,0 +1,21 @@ +package com.yxt.anrui.riskcenter.api.loanbuckleapply.flow; + +import com.yxt.anrui.riskcenter.api.loanbuckleapply.LoanBuckleApplyDto; +import com.yxt.anrui.riskcenter.api.loancustomerrecord.LoanCustomerRecordDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Author dimengzhe + * @Date 2022/6/27 13:38 + * @Description + */ +@Data +public class SubmitBuckleDto extends LoanBuckleApplyDto { + private static final long serialVersionUID = 378585162071125756L; + @ApiModelProperty("流程实例id") + private String instanceId; + @ApiModelProperty("任务id") + private String taskId; + +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loannoguaranteecreditreview/LoanNoGuaranteeCreditReview.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loannoguaranteecreditreview/LoanNoGuaranteeCreditReview.java index c51d4399fa..d9b9b1e856 100644 --- a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loannoguaranteecreditreview/LoanNoGuaranteeCreditReview.java +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loannoguaranteecreditreview/LoanNoGuaranteeCreditReview.java @@ -39,4 +39,7 @@ public class LoanNoGuaranteeCreditReview extends BaseEntity { private String isLoan; @ApiModelProperty("放款日期") private String isLoanDate; + @ApiModelProperty("是否公司开票(0是,1否)") + private String isCompInvoic; + } diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loannoguaranteecreditreview/LoanNoGuaranteeCreditReviewDetailsVo.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loannoguaranteecreditreview/LoanNoGuaranteeCreditReviewDetailsVo.java index 775f8ec443..c55596f3ea 100644 --- a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loannoguaranteecreditreview/LoanNoGuaranteeCreditReviewDetailsVo.java +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loannoguaranteecreditreview/LoanNoGuaranteeCreditReviewDetailsVo.java @@ -47,4 +47,8 @@ public class LoanNoGuaranteeCreditReviewDetailsVo implements Vo { private List creditReviewFiles = new ArrayList<>(); @ApiModelProperty("放款审核结果截图") private List loanReviewFiles = new ArrayList<>(); + @ApiModelProperty("是否有挂车") + private Boolean isHavTrailer = false; + @ApiModelProperty("是否公司开票(0是,1否)") + private String isCompInvoic; } diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loannoguaranteecreditreview/LoanNoGuaranteeCreditReviewDto.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loannoguaranteecreditreview/LoanNoGuaranteeCreditReviewDto.java index 93b8fed92c..f0686cc667 100644 --- a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loannoguaranteecreditreview/LoanNoGuaranteeCreditReviewDto.java +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loannoguaranteecreditreview/LoanNoGuaranteeCreditReviewDto.java @@ -48,5 +48,7 @@ public class LoanNoGuaranteeCreditReviewDto implements Dto { private List creditReviewFiles = new ArrayList<>(); @ApiModelProperty("放款审核结果截图") private List loanReviewFiles = new ArrayList<>(); + @ApiModelProperty("是否公司开票(0是,1否)") + private String isCompInvoic; } diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/LoanRepaymentHistoryFeign.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/LoanRepaymentHistoryFeign.java index 16f5015795..5477dfe31f 100644 --- a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/LoanRepaymentHistoryFeign.java +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/LoanRepaymentHistoryFeign.java @@ -49,6 +49,10 @@ public interface LoanRepaymentHistoryFeign { @ResponseBody public ResultBean updateRecordInfo(@RequestParam("sid") String sid); + @ApiOperation("划扣新增回显") + @GetMapping("/buckleInfo") + @ResponseBody + public ResultBean buckleInfo(@RequestParam("sid") String sid); @ApiOperation("删除还款记录") @DeleteMapping("/deleteHistory") diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/LoanRepaymentHistoryFeignFallback.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/LoanRepaymentHistoryFeignFallback.java index a82b9accc6..078cfab674 100644 --- a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/LoanRepaymentHistoryFeignFallback.java +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/LoanRepaymentHistoryFeignFallback.java @@ -40,6 +40,11 @@ public class LoanRepaymentHistoryFeignFallback implements LoanRepaymentHistoryFe return null; } + @Override + public ResultBean buckleInfo(String sid) { + return null; + } + @Override public ResultBean deleteHistory(String scheduleSid) { return null; diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/LoanRepaymentHistoryRecordVo.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/LoanRepaymentHistoryRecordVo.java new file mode 100644 index 0000000000..d883f9e41b --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymenthistory/LoanRepaymentHistoryRecordVo.java @@ -0,0 +1,38 @@ +package com.yxt.anrui.riskcenter.api.loanrepaymenthistory; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author Administrator + * @description + * @date 2023/11/13 14:02 + */ +@Data +public class LoanRepaymentHistoryRecordVo { + private String recordSid; + private String loanContractNo; + private String vinNo; + @ApiModelProperty("资方名称") + private String bankName; + @ApiModelProperty("资方合同") + private String bankContractNo; + @ApiModelProperty("客户") + private String customer; + @ApiModelProperty("借款人名称") + private String borrowerName; + @ApiModelProperty("还款方式") + private String returnWay; + @ApiModelProperty("期数") + private String period; + @ApiModelProperty("应还日期") + private String dueDate; + @ApiModelProperty("应还金额") + private String dueMoney; + @ApiModelProperty("实还金额") + private String actualMoney; + @ApiModelProperty("本期未还金额") + private String outstandingMoney; + @ApiModelProperty("实还日期") + private String actualDate; +} diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapply/LoanBuckleApplyMapper.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapply/LoanBuckleApplyMapper.java index 2e04ce9b18..026a4a45d4 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapply/LoanBuckleApplyMapper.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapply/LoanBuckleApplyMapper.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Constants; import com.yxt.anrui.riskcenter.api.loanbuckleapply.LoanBuckleApply; +import com.yxt.anrui.riskcenter.api.loanbuckleapply.LoanBuckleApplyVo; import com.yxt.anrui.riskcenter.api.loancustomerrecord.LoanCustomerRecord; import com.yxt.anrui.riskcenter.api.loancustomerrecord.LoanCustomerRecordDetailsVo; import com.yxt.anrui.riskcenter.api.loancustomerrecord.LoanCustomerRecordVo; @@ -19,4 +20,9 @@ import java.util.Map; @Mapper public interface LoanBuckleApplyMapper extends BaseMapper { + IPage listPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + int updateFlowFiled(Map map); + + int selectNum(String bill); } diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapply/LoanBuckleApplyMapper.xml b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapply/LoanBuckleApplyMapper.xml index ed8ee0b353..693b78ebfa 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapply/LoanBuckleApplyMapper.xml +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapply/LoanBuckleApplyMapper.xml @@ -1,5 +1,42 @@ + + UPDATE loan_buckle_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/loanbuckleapply/LoanBuckleApplyRest.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapply/LoanBuckleApplyRest.java index 0646aac5d2..97c810e951 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapply/LoanBuckleApplyRest.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapply/LoanBuckleApplyRest.java @@ -3,9 +3,10 @@ package com.yxt.anrui.riskcenter.biz.loanbuckleapply; import cn.hutool.core.bean.BeanUtil; import com.yxt.anrui.flowable.api.utils.ProcDefEnum; import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables; -import com.yxt.anrui.riskcenter.api.loanbuckleapply.LoanBuckleApplyFeign; -import com.yxt.anrui.riskcenter.api.loancustomerrecord.*; -import com.yxt.anrui.riskcenter.api.loancustomerrecord.app.*; +import com.yxt.anrui.riskcenter.api.loanbuckleapply.*; +import com.yxt.anrui.riskcenter.api.loanbuckleapply.app.AppBuckleDetailsVo; +import com.yxt.anrui.riskcenter.api.loanbuckleapply.flow.*; +import com.yxt.anrui.riskcenter.api.loancustomerrecord.LoanCustomerRecord; import com.yxt.anrui.riskcenter.api.loancustomerrecord.flow.*; import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; @@ -15,7 +16,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.servlet.http.HttpServletResponse; import java.util.List; @@ -24,5 +24,87 @@ import java.util.List; @RequestMapping("v1/loanbuckleapply") public class LoanBuckleApplyRest implements LoanBuckleApplyFeign { + @Autowired + LoanBuckleApplyService loanBuckleApplyService; + + @Override + public ResultBean> listPage(PagerQuery pq) { + ResultBean> rb = ResultBean.fireFail(); + PagerVo pv = loanBuckleApplyService.listPage(pq); + return rb.success().setData(pv); + } + + @Override + public ResultBean buckleInit(String[] sids) { + return loanBuckleApplyService.buckleInit(sids); + } + + @Override + public ResultBean saveBuckle(LoanBuckleApplyDto dto) { + return loanBuckleApplyService.saveBuckle(dto); + } + + @Override + public ResultBean buckleDetails(String sid) { + return loanBuckleApplyService.buckleDetails(sid); + } + + @Override + public ResultBean deleteBySids(String[] sids) { + return loanBuckleApplyService.deleteBySids(sids); + } + + @Override + public ResultBean submitRecordApplication(SubmitBuckleDto dto) { + return loanBuckleApplyService.submitRecordApplication(dto); + } + + @Override + public ResultBean complete(BuckleCompleteDto dto) { + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(dto, bv); + bv.setModelId(ProcDefEnum.LOANBUCKLEAPPLLY.getProDefId()); + return loanBuckleApplyService.complete(bv); + } + + @Override + public ResultBean revokeProcess(BuckleTaskQuery query) { + return loanBuckleApplyService.revokeProcess(query); + } + + @Override + public ResultBean taskReject(BuckleTaskQuery query) { + return loanBuckleApplyService.taskReject(query); + } + + @Override + public ResultBean breakProcess(BuckleTaskQuery query) { + return loanBuckleApplyService.breakProcess(query); + } + + @Override + public ResultBean flowRecord(String procInsId) { + return loanBuckleApplyService.flowRecord(procInsId); + } + + @Override + public ResultBean> getNextNodesForSubmit(BuckleGetNodeQuery query) { + return loanBuckleApplyService.getNextNodesForSubmit(query); + } + + @Override + public ResultBean> getPreviousNodesForReject(BuckleGetNodeQuery query) { + return loanBuckleApplyService.getPreviousNodesForReject(query); + } + + @Override + public ResultBean delegate(BuckleDelegateQuery query) { + return loanBuckleApplyService.delegate(query); + } + + @Override + public ResultBean appDetail(String sid) { + return loanBuckleApplyService.appDetail(sid); + } } diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapply/LoanBuckleApplyService.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapply/LoanBuckleApplyService.java index 093a389f0a..8e749e1a38 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapply/LoanBuckleApplyService.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapply/LoanBuckleApplyService.java @@ -1,19 +1,13 @@ package com.yxt.anrui.riskcenter.biz.loanbuckleapply; import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.google.common.util.concurrent.ThreadFactoryBuilder; -import com.yxt.anrui.base.api.basedistributorapply.BaseDistributorApplyFeign; -import com.yxt.anrui.base.api.basedistributorapply.BaseSalesManger; -import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTemp; -import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempFeign; -import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempVo; -import com.yxt.anrui.fin.api.fincompanyinvoicing.FinCompanyInvoicingDetailsVo; -import com.yxt.anrui.fin.api.fincompanyinvoicing.FinCompanyInvoicingDto; -import com.yxt.anrui.fin.api.fincompanyinvoicing.FinCompanyInvoicingFeign; +import com.yxt.anrui.base.common.enums.BillTypeEnum; +import com.yxt.anrui.base.common.utils.Rule; +import com.yxt.anrui.base.common.utils.domain.BillNo; import com.yxt.anrui.flowable.api.flow.FlowableFeign; import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo; import com.yxt.anrui.flowable.api.flow2.FlowDelegateQuery; @@ -24,25 +18,26 @@ import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo; import com.yxt.anrui.flowable.api.utils.ProcDefEnum; import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables; import com.yxt.anrui.portal.api.sysorganization.*; -import com.yxt.anrui.portal.api.sysparameter.SysParameterEnum; -import com.yxt.anrui.portal.api.sysparameter.SysParameterFeign; import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrg; import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign; import com.yxt.anrui.portal.api.sysuser.PrivilegeQuery; import com.yxt.anrui.portal.api.sysuser.SysUserFeign; import com.yxt.anrui.portal.api.sysuser.SysUserVo; -import com.yxt.anrui.riskcenter.api.loanbuckleapply.LoanBuckleApply; -import com.yxt.anrui.riskcenter.api.loancustomerrecord.*; -import com.yxt.anrui.riskcenter.api.loancustomerrecord.app.*; -import com.yxt.anrui.riskcenter.api.loancustomerrecord.flow.*; -import com.yxt.anrui.riskcenter.api.loancustomerrecordstaff.AppStaffVo; -import com.yxt.anrui.riskcenter.api.loancustomerrecordstaff.LoanCustomerRecordStaff; -import com.yxt.anrui.riskcenter.api.loancustomerrecordstaff.LoanCustomerRecordStaffDto; -import com.yxt.anrui.riskcenter.api.loancustomerrecordstaff.LoanCustomerRecordStaffVo; +import com.yxt.anrui.riskcenter.api.loanbuckleapply.*; +import com.yxt.anrui.riskcenter.api.loanbuckleapply.app.AppBuckleDetailsVo; +import com.yxt.anrui.riskcenter.api.loanbuckleapply.app.AppRecordVo; +import com.yxt.anrui.riskcenter.api.loanbuckleapply.flow.*; +import com.yxt.anrui.riskcenter.api.loanbuckleapplyrecord.LoanBuckleApplyRecord; import com.yxt.anrui.riskcenter.api.loanfile.LoanFile; import com.yxt.anrui.riskcenter.api.loanfile.LoanFileEnum; -import com.yxt.anrui.riskcenter.biz.loancustomerrecordstaff.LoanCustomerRecordStaffService; +import com.yxt.anrui.riskcenter.api.loanfinotherPolicy.LoanFinOtherPolicy; +import com.yxt.anrui.riskcenter.api.loanfinpolicy.LoanFinPolicy; +import com.yxt.anrui.riskcenter.api.loanfinpolicyrecordapply.LoanFinPolicyRecordApply; +import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistory; +import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.LoanRepaymentHistoryRecordVo; +import com.yxt.anrui.riskcenter.biz.loanbuckleapplyrecord.LoanBuckleApplyRecordService; import com.yxt.anrui.riskcenter.biz.loanfile.LoanFileService; +import com.yxt.anrui.riskcenter.biz.loanrepaymenthistory.LoanRepaymentHistoryService; import com.yxt.common.base.config.component.DocPdfComponent; import com.yxt.common.base.config.component.FileUploadComponent; import com.yxt.common.base.service.MybatisBaseService; @@ -71,5 +66,826 @@ import java.util.stream.Collectors; @Service public class LoanBuckleApplyService extends MybatisBaseService { + @Autowired + private MessageFeign messageFeign; + @Autowired + private SysUserFeign sysUserFeign; + @Autowired + private LoanRepaymentHistoryService loanRepaymentHistoryService; + @Autowired + private SysStaffOrgFeign sysStaffOrgFeign; + @Autowired + private SysOrganizationFeign sysOrganizationFeign; + @Autowired + private LoanBuckleApplyRecordService loanBuckleApplyRecordService; + @Autowired + private LoanFileService loanFileService; + @Autowired + private FileUploadComponent fileUploadComponent; + @Autowired + private FlowFeign flowFeign; + @Autowired + private FlowTaskFeign flowTaskFeign; + @Autowired + private FlowableFeign flowableFeign; + public PagerVo listPage(PagerQuery pq) { + IPage page = PagerUtil.queryToPage(pq); + LoanBuckleApplyQuery pagerQuery = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + //======================= + PrivilegeQuery privilegeQuery = new PrivilegeQuery(); + privilegeQuery.setOrgPath(pagerQuery.getOrgPath()); + privilegeQuery.setMenuSid(pagerQuery.getMenuSid()); + privilegeQuery.setMenuUrl(pagerQuery.getMenuUrl()); + privilegeQuery.setUserSid(pagerQuery.getUserSid()); + ResultBean defaultIdReltBean = sysUserFeign.selectPrivilegeLevel(privilegeQuery); + if (StringUtils.isNotBlank(defaultIdReltBean.getData())) { + //数据权限ID(1集团、2事业部、3分公司、4部门、5个人) + String orgSidPath = pagerQuery.getOrgPath(); + orgSidPath = orgSidPath + "/"; + int i1 = orgSidPath.indexOf("/"); + int i2 = orgSidPath.indexOf("/", i1 + 1); + int i3 = orgSidPath.indexOf("/", i2 + 1); + int i4 = orgSidPath.indexOf("/", i3 + 1); + String orgLevelKey = defaultIdReltBean.getData(); + if ("1".equals(orgLevelKey)) { + orgSidPath = orgSidPath.substring(0, i1); + qw.like("orgSidPath", orgSidPath); + } else if ("2".equals(orgLevelKey)) { + orgSidPath = orgSidPath.substring(0, i2); + qw.like("orgSidPath", orgSidPath); + } else if ("3".equals(orgLevelKey)) { + orgSidPath = orgSidPath.substring(0, i3); + qw.like("orgSidPath", orgSidPath); + } else if ("4".equals(orgLevelKey)) { + orgSidPath = orgSidPath.substring(0, i4); + qw.like("orgSidPath", orgSidPath); + } else if ("5".equals(orgLevelKey)) { + qw.eq("createBySid", pagerQuery.getUserSid()); + } else { + PagerVo p = new PagerVo<>(); + return p; + } + } else { + PagerVo p = new PagerVo<>(); + return p; + } + //======================= + //分公司 + if (StringUtils.isNotBlank(pagerQuery.getCompany())) { + qw.like("useOrgName", pagerQuery.getCompany()); + } + //申请人 + if (StringUtils.isNotBlank(pagerQuery.getApplyName())) { + qw.like("applyName", pagerQuery.getApplyName()); + } + //申请编号 + if (StringUtils.isNotBlank(pagerQuery.getBillNo())) { + qw.like("billNo", pagerQuery.getBillNo()); + } + String applyStartTime = pagerQuery.getApplyStartDate(); + String applyEndTime = pagerQuery.getApplyEndDate(); + qw.apply(StringUtils.isNotEmpty(applyStartTime), "date_format (applyDate,'%Y-%m-%d') >= date_format('" + applyStartTime + "','%Y-%m-%d')"). + apply(StringUtils.isNotEmpty(applyEndTime), "date_format (applyDate,'%Y-%m-%d') <= date_format('" + applyEndTime + "','%Y-%m-%d')" + ); + qw.eq("isDelete", 0); + qw.orderByDesc("createTime"); + IPage pagging = baseMapper.listPage(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public ResultBean buckleInit(String[] sids) { + ResultBean rb = ResultBean.fireFail(); + LoanBuckleApplyInit vo = new LoanBuckleApplyInit(); + List historyRecords = new ArrayList<>(); + for (String sid : sids) { + LoanBuckleHistoryRecord record = new LoanBuckleHistoryRecord(); + LoanRepaymentHistoryRecordVo recordVo = loanRepaymentHistoryService.buckleInfo(sid).getData(); + if (null != recordVo) { + BeanUtil.copyProperties(recordVo, record); + } + historyRecords.add(record); + } + vo.setRecords(historyRecords); + return rb.success().setData(vo); + } + + /** + * 生成交车资料确认单单据编号 + * + * @param orgSid + * @return + */ + public String getApplyCode(String orgSid) { + //获取分公司sid + ResultBean resultBean1 = sysOrganizationFeign.fetchBySid(orgSid); + String orgCode = resultBean1.getData().getOrgCode(); + BillNo b = new BillNo(); + b.setOrgCode(orgCode); + b.setBillType(BillTypeEnum.HKSQ.getBillType()); + String bill = Rule.getBill(b); + int i = baseMapper.selectNum(bill); + String billNo = Rule.getBillNo(bill, i); + return billNo; + } + + @Transactional(rollbackFor = Exception.class) + public ResultBean saveBuckle(LoanBuckleApplyDto dto) { + ResultBean rb = ResultBean.fireFail(); + String sid = ""; + if (StringUtils.isNotBlank(dto.getSid())) { + sid = dto.getSid(); + LoanBuckleApply updateEntity = fetchBySid(sid); + if (null != updateEntity) { + BeanUtil.copyProperties(dto, updateEntity, "id", "sid"); + baseMapper.updateById(updateEntity); + loanBuckleApplyRecordService.deleteByMainSid(sid); + //删除附件表中关于该linkSid的文件 + loanFileService.deleteByLinkSid(sid); + List files = dto.getFiles(); + if (!files.isEmpty()) { + loanFileService.saveAll(sid, files, LoanFileEnum.BUCKLE_APPLY.getAttachType()); + } + List records = dto.getRecords(); + if (!records.isEmpty()) { + for (LoanBuckleHistoryRecord record : records) { + LoanBuckleApplyRecord applyRecord = new LoanBuckleApplyRecord(); + applyRecord.setMainSid(sid); + applyRecord.setRepaymentHistorySid(record.getRecordSid()); + loanBuckleApplyRecordService.insert(applyRecord); + } + } + } + } else { + LoanBuckleApply loanBuckleApply = new LoanBuckleApply(); + sid = loanBuckleApply.getSid(); + BeanUtil.copyProperties(dto, loanBuckleApply, "id", "sid"); + loanBuckleApply.setCreateBySid(dto.getUserSid()); + loanBuckleApply.setOrgSidPath(dto.getOrgPath()); + ResultBean orgSidByPath = sysStaffOrgFeign.getOrgSidByPath(dto.getOrgPath()); + if (orgSidByPath.getSuccess()) { + String userOrgSid = orgSidByPath.getData(); + loanBuckleApply.setUseOrgSid(userOrgSid); + String billNo = getApplyCode(userOrgSid); + loanBuckleApply.setBillNo(billNo); + ResultBean organizationVo = sysOrganizationFeign.fetchBySid(userOrgSid); + if (organizationVo.getSuccess()) { + SysOrganizationVo organizationVoData = organizationVo.getData(); + if (null != organizationVoData) { + loanBuckleApply.setUseOrgName(organizationVoData.getName()); + } + } + } + loanBuckleApply.setNodeState("待提交"); + baseMapper.insert(loanBuckleApply); + List records = dto.getRecords(); + if (!records.isEmpty()) { + for (LoanBuckleHistoryRecord record : records) { + LoanBuckleApplyRecord applyRecord = new LoanBuckleApplyRecord(); + applyRecord.setMainSid(sid); + applyRecord.setRepaymentHistorySid(record.getRecordSid()); + loanBuckleApplyRecordService.insert(applyRecord); + LoanRepaymentHistory repaymentHistory = loanRepaymentHistoryService.fetchBySid(record.getRecordSid()); + if (null != repaymentHistory) { + repaymentHistory.setBuckle("申请中"); + repaymentHistory.setBuckleKey("002"); + loanRepaymentHistoryService.updateById(repaymentHistory); + } + } + } + List files = dto.getFiles(); + if (!files.isEmpty()) { + loanFileService.saveAll(sid, files, LoanFileEnum.BUCKLE_APPLY.getAttachType()); + } + } + return rb.success().setData(sid); + } + + public ResultBean buckleDetails(String sid) { + ResultBean rb = ResultBean.fireFail(); + LoanBuckleApplyInit initVo = new LoanBuckleApplyInit(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + LoanBuckleApply loanBuckleApply = fetchBySid(sid); + if (null != loanBuckleApply) { + BeanUtil.copyProperties(loanBuckleApply, initVo); + initVo.setUserSid(loanBuckleApply.getCreateBySid()); + initVo.setOrgPath(loanBuckleApply.getOrgSidPath()); + if (StringUtils.isNotBlank(loanBuckleApply.getProcInstId())) { + initVo.setInstanceId(loanBuckleApply.getProcInstId()); + } + if (null != loanBuckleApply.getApplyDate()) { + initVo.setApplyDate(sdf.format(loanBuckleApply.getApplyDate())); + } + List fileList = loanFileService.selectByLinkSid(sid, LoanFileEnum.BUCKLE_APPLY.getAttachType()); + fileList.removeAll(Collections.singleton(null)); + if (!fileList.isEmpty()) { + List files = fileList.stream().map(c -> fileUploadComponent.getUrlPrefix() + c.getFilePath()). + collect(Collectors.toList()); + initVo.setFiles(files); + } + List records = loanBuckleApplyRecordService.selByMainSid(sid); + List recordList = new ArrayList<>(); + if (!records.isEmpty()) { + for (LoanBuckleApplyRecord record : records) { + String historySid = record.getRepaymentHistorySid(); + LoanBuckleHistoryRecord historyRecord = new LoanBuckleHistoryRecord(); + LoanRepaymentHistoryRecordVo recordVo = loanRepaymentHistoryService.buckleInfo(historySid).getData(); + if (null != recordVo) { + BeanUtil.copyProperties(recordVo, historyRecord); + } + recordList.add(historyRecord); + } + } + initVo.setRecords(recordList); + } + return rb.success().setData(initVo); + } + + //-------------------------------------流程------------------------------------------------/ + + /** + * 判断提交的流程是否被允许 + * + * @param dto + * @return + */ + private synchronized int submitBusinessData(SubmitBuckleDto dto, LoanBuckleApply loanBuckleApply) { + int r = 0; + if (StringUtils.isBlank(dto.getSid())) { + r = 1; + } else { + if (loanBuckleApply != null) { + String businessTaskId = loanBuckleApply.getTaskId(); + if (StringUtils.isBlank(businessTaskId) && StringUtils.isBlank(dto.getTaskId())) { + //新提交 + r = 1; + } else if (StringUtils.isNotBlank(businessTaskId) && businessTaskId.equals(dto.getTaskId())) { + //二次提交//只有数据一致的时候才能进行下一步 + r = 2; + } + } else { + r = 3; + } + } + return r; + } + + /** + * 更新流程相关的状态 + * + * @param map + * @return + */ + private int updateFlowFiled(Map map) { + return baseMapper.updateFlowFiled(map); + } + + public ResultBean submitRecordApplication(SubmitBuckleDto dto) { + ResultBean rb = ResultBean.fireFail(); + LoanBuckleApply loanBuckleApply = fetchBySid(dto.getSid()); + int r = submitBusinessData(dto, loanBuckleApply); + if (r == 3) { + return rb.setMsg("该申请不存在"); + } + if (r == 0) { + return rb.setMsg("操作失败!提交的数据不一致"); + } + String businessSid = ""; + //新增修改保存 + ResultBean resultBean = saveBuckle(dto); + if (resultBean.getSuccess()) { + businessSid = resultBean.getData(); + } + LoanBuckleApply entity = fetchBySid(businessSid); + String orgSidPath = ""; + if (StringUtils.isNotBlank(entity.getOrgSidPath())) { + orgSidPath = entity.getOrgSidPath(); + } else { + SysUserVo data = sysUserFeign.fetchBySid(entity.getCreateBySid()).getData(); + if (null != data) { + //根据staffSid获取用户的组织全路径 + ResultBean 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); + LoanBuckleApply loanBuckleApply1 = fetchBySid(businessSid); + String msgBusinessSid = loanBuckleApply1.getSid(); + //用户的部门全路径sid + bv.setOrgSidPath(loanBuckleApply1.getOrgSidPath()); + //业务sid + bv.setBusinessSid(businessSid); + //用户sid + bv.setUserSid(dto.getUserSid()); + bv.setFormVariables(variables); +// String nextNodeUserSids_ = sysOrganization.getManagerSid(); +// if (isTure) { +// bv.setNextNodeUserSids(nextNodeUserSids_); +// } else { +// bv.setNextNodeUserSids(entity.getSalesUserSid()); +// } + //流程定义id + bv.setModelId(ProcDefEnum.LOANBUCKLEAPPLLY.getProDefId()); + if (r == 1) { + //流程定义id + bv.setModelId(ProcDefEnum.LOANBUCKLEAPPLLY.getProDefId()); + ResultBean 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(loanBuckleApply1.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"); + } + LoanBuckleApply loanBuckleApply2 = fetchBySid(dto.getSid()); + bv.setTaskId(dto.getTaskId()); + bv.setTaskDefKey(loanBuckleApply2.getNodeSid()); + bv.setComment("重新提交"); + bv.setInstanceId(dto.getInstanceId()); + return complete(bv); + } + return rb; + } + + public ResultBean complete(BusinessVariables bv) { + ResultBean rb = ResultBean.fireFail(); + String businessSid = bv.getBusinessSid(); + LoanBuckleApply loanBuckleApply = this.fetchBySid(businessSid); + if (bv.getTaskId().equals(loanBuckleApply.getTaskId())) { + bv.setOrgSidPath(loanBuckleApply.getOrgSidPath()); + //流程中的参数赋值 + Map 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()); + } + int i = updateFlowFiled(BeanUtil.beanToMap(resultBean.getData())); + if ("Event_end".equals(resultBean.getData().getTaskDefKey())) { + List applyRecords = loanBuckleApplyRecordService.selByMainSid(businessSid); + if (!applyRecords.isEmpty()) { + for (LoanBuckleApplyRecord applyRecord : applyRecords) { + LoanRepaymentHistory repaymentHistory = loanRepaymentHistoryService.fetchBySid(applyRecord.getRepaymentHistorySid()); + if (null != repaymentHistory) { + repaymentHistory.setBuckle("审核通过"); + repaymentHistory.setBuckleKey("003"); + loanRepaymentHistoryService.updateById(repaymentHistory); + } + } + } + + } + return rb.success().setData(resultBean.getData()); + } else { + return rb.setMsg("操作失败!提交的数据不一致"); + } + } + + + public ResultBean revokeProcess(BuckleTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + if (StringUtils.isBlank(query.getUserSid())) { + return rb.setMsg("参数错误:userSid"); + } + LoanBuckleApply loanBuckleApply = fetchBySid(query.getBusinessSid()); + String businessTaskId = loanBuckleApply.getTaskId(); + if (StringUtils.isNotBlank(businessTaskId)) { + if (businessTaskId.equals(query.getTaskId())) { + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + ResultBean resultBean = flowableFeign.revokeProcess(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + updateFlowFiled(BeanUtil.beanToMap(resultBean.getData())); + return rb.success().setData(resultBean.getData()); + } + } + return rb.setMsg("操作失败,提交的数据不一致!"); + } + + public ResultBean taskReject(BuckleTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + String businessSid = query.getBusinessSid(); + LoanBuckleApply loanBuckleApply = fetchBySid(businessSid); + if (loanBuckleApply == null) { + return rb.setMsg("该申请不存在"); + } + String businessTaskId = loanBuckleApply.getTaskId(); + if (StringUtils.isNotBlank(businessTaskId)) { + if (businessTaskId.equals(query.getTaskId())) { + if (StringUtils.isBlank(query.getComment())) { + return rb.setMsg("请填写意见"); + } + if (org.apache.commons.lang3.StringUtils.isBlank(query.getUserSid())) { + return rb.setMsg("参数错误:userSid"); + } + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + Map 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); + //极光推送 + loanBuckleApply = fetchBySid(businessSid); + MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); + MessageFlowVo messageFlowVo = new MessageFlowVo(); + BeanUtil.copyProperties(ufVo, messageFlowVo); + String procId = loanBuckleApply.getProcInstId(); + messageFlowVo.setProcInsId(procId); + messageFlowVo.setProcDefId(loanBuckleApply.getProcDefId()); + messageFlowableQuery.setUfVo(messageFlowVo); + messageFlowableQuery.setAppMap(appMap); + messageFlowableQuery.setBusinessSid(businessSid); + messageFlowableQuery.setModuleName("划扣申请"); + ResultBean> 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(loanBuckleApply.getCreateBySid()).getData(); + if (userVo != null) { + if (org.apache.commons.lang3.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(BuckleTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + if (org.apache.commons.lang3.StringUtils.isBlank(query.getInstanceId())) { + return rb.setMsg("参数错误:instanceId"); + } + if (org.apache.commons.lang3.StringUtils.isBlank(query.getUserSid())) { + return rb.setMsg("参数错误:userSid"); + } + if (org.apache.commons.lang3.StringUtils.isBlank(query.getComment())) { + return rb.setMsg("请填写意见"); + } + LoanBuckleApply loanBuckleApply = fetchBySid(query.getBusinessSid()); + String businessTaskId = loanBuckleApply.getTaskId(); + if (StringUtils.isNotBlank(businessTaskId)) { + if (query.getUserSid().equals(loanBuckleApply.getCreateBySid())) { + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + ResultBean resultBean = flowableFeign.breakProcess(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + Map map = BeanUtil.beanToMap(resultBean.getData()); + updateFlowFiled(map); + //终止任务后划扣状态改完未通过 + LoanBuckleApply entity = fetchBySid(query.getBusinessSid()); + if (entity.getNodeState().equals("终止")) { + List applyRecords = loanBuckleApplyRecordService.selByMainSid(query.getBusinessSid()); + if (!applyRecords.isEmpty()) { + for (LoanBuckleApplyRecord applyRecord : applyRecords) { + LoanRepaymentHistory repaymentHistory = loanRepaymentHistoryService.fetchBySid(applyRecord.getRepaymentHistorySid()); + if (null != repaymentHistory) { + repaymentHistory.setBuckle("审核未通过"); + repaymentHistory.setBuckleKey("004"); + loanRepaymentHistoryService.updateById(repaymentHistory); + } + } + } + } + return rb.success().setData(resultBean.getData()); + } else { + if (businessTaskId.equals(query.getTaskId())) { + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + ResultBean resultBean = flowableFeign.breakProcess(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + Map map = BeanUtil.beanToMap(resultBean.getData()); + updateFlowFiled(map); + //终止任务后划扣状态改完未通过 + LoanBuckleApply entity = fetchBySid(query.getBusinessSid()); + if (entity.getNodeState().equals("终止")) { + List applyRecords = loanBuckleApplyRecordService.selByMainSid(query.getBusinessSid()); + if (!applyRecords.isEmpty()) { + for (LoanBuckleApplyRecord applyRecord : applyRecords) { + LoanRepaymentHistory repaymentHistory = loanRepaymentHistoryService.fetchBySid(applyRecord.getRepaymentHistorySid()); + if (null != repaymentHistory) { + repaymentHistory.setBuckle("审核未通过"); + repaymentHistory.setBuckleKey("004"); + loanRepaymentHistoryService.updateById(repaymentHistory); + } + } + } + } + + return rb.success().setData(resultBean.getData()); + } + } + + } + return rb.setMsg("操作失败!提交的数据不一致!"); + } + + public ResultBean flowRecord(String procInsId) { + return flowTaskFeign.businessFlowRecord(procInsId); + } + + public ResultBean> getNextNodesForSubmit(BuckleGetNodeQuery query) { + ResultBean> rb = ResultBean.fireFail(); + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + //流程中的参数赋值、若有网关,则赋值网关中判断的字段。 + Map variables = new HashMap<>(); + + //根据业务sid查询排产信息 + LoanBuckleApply loanBuckleApply = fetchBySid(query.getBusinessSid()); + //若有网关,则赋值网关中判断的字段。 +// boolean isTure = true; +// //去查询是否同意 +// if (StringUtils.isNotBlank(loanCustomerRecord.getSalesUserSid())) { +// if (!loanCustomerRecord.getCreateBySid().equals(loanCustomerRecord.getSalesUserSid())) { +// isTure = false; +// } +// } +// variables.put("isTure", isTure); + bv.setFormVariables(variables); + bv.setModelId(loanBuckleApply.getProcDefId()); + ResultBean>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv); + //判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo + List voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), BuckleGetNodeVo.class)).collect(Collectors.toList()); + return rb.success().setData(voList); + } + + public ResultBean> getPreviousNodesForReject(BuckleGetNodeQuery query) { + ResultBean> rb = ResultBean.fireFail(); + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + //流程中的参数赋值、若有网关,则赋值网关中判断的字段。 + Map variables = new HashMap<>(); + //根据业务sid查询排产信息 + LoanBuckleApply loanBuckleApply = fetchBySid(query.getBusinessSid()); +// //若有网关,则赋值网关中判断的字段。 +// boolean isTure = true; +// //去查询是否同意 +// if (StringUtils.isNotBlank(loanCustomerRecord.getSalesUserSid())) { +// if (!loanCustomerRecord.getCreateBySid().equals(loanCustomerRecord.getSalesUserSid())) { +// isTure = false; +// } +// } +// variables.put("isTure", isTure); + bv.setFormVariables(variables); + bv.setModelId(loanBuckleApply.getProcDefId()); + ResultBean>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv); + //判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo + List voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), BuckleGetNodeVo.class)).collect(Collectors.toList()); + return rb.success().setData(voList); + } + + public ResultBean delegate(BuckleDelegateQuery query) { + ResultBean rb = ResultBean.fireFail(); + FlowDelegateQuery delegateQuery = new FlowDelegateQuery(); + BeanUtil.copyProperties(query, delegateQuery); + flowFeign.delegate(delegateQuery); + return rb.success(); + } + + + public ResultBean appDetail(String sid) { + ResultBean rb = ResultBean.fireFail(); + AppBuckleDetailsVo vo = new AppBuckleDetailsVo(); + LoanBuckleApply loanBuckleApply = fetchBySid(sid); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + if (null != loanBuckleApply) { + vo.setSid(sid); + String dept = ""; + String applyName = ""; + if (StringUtils.isNotBlank(loanBuckleApply.getRemarks())) { + vo.setRemarks(loanBuckleApply.getRemarks()); + } + if (StringUtils.isNotBlank(loanBuckleApply.getProcInstId())) { + vo.setProcInsId(loanBuckleApply.getProcInstId()); + } + if (StringUtils.isNotBlank(loanBuckleApply.getTaskId())) { + vo.setTaskId(loanBuckleApply.getTaskId()); + } + if (null != loanBuckleApply.getApplyDate()) { + vo.setTime(sdf.format(loanBuckleApply.getApplyDate())); + } + if (StringUtils.isNotBlank(loanBuckleApply.getDept())) { + dept = loanBuckleApply.getDept(); + } + if (StringUtils.isNotBlank(loanBuckleApply.getApplyName())) { + applyName = loanBuckleApply.getApplyName(); + } + vo.setPublishInfo(dept + "-" + applyName); + List fileList = loanFileService.selectByLinkSid(sid, LoanFileEnum.BUCKLE_APPLY.getAttachType()); + fileList.removeAll(Collections.singleton(null)); + if (!fileList.isEmpty()) { + List files = fileList.stream().map(c -> fileUploadComponent.getUrlPrefix() + c.getFilePath()). + collect(Collectors.toList()); + vo.setFiles(files); + } + List applyRecords = loanBuckleApplyRecordService.selByMainSid(sid); + List records = new ArrayList<>(); + if (!applyRecords.isEmpty()) { + for (LoanBuckleApplyRecord applyRecord : applyRecords) { + String historySid = applyRecord.getRepaymentHistorySid(); + LoanRepaymentHistoryRecordVo data = loanRepaymentHistoryService.buckleInfo(historySid).getData(); + if (null != data) { + AppRecordVo appRecordVo = new AppRecordVo(); + if (StringUtils.isNotBlank(data.getLoanContractNo())) { + appRecordVo.setContractId(data.getLoanContractNo()); + } + if (StringUtils.isNotBlank(data.getPeriod())) { + appRecordVo.setInstalments("期数:" + data.getPeriod()); + } + if (StringUtils.isNotBlank(data.getVinNo())) { + appRecordVo.setVin("车架号:" + data.getVinNo()); + } + if (StringUtils.isNotBlank(data.getReturnWay())) { + appRecordVo.setType(data.getReturnWay()); + } + if (StringUtils.isNotBlank(data.getBankName())) { + appRecordVo.setZf(data.getBankName()); + } + if (StringUtils.isNotBlank(data.getBankContractNo())) { + appRecordVo.setZfNo(data.getBankContractNo()); + } + if (StringUtils.isNotBlank(data.getCustomer())) { + appRecordVo.setCusName(data.getCustomer()); + } + if (StringUtils.isNotBlank(data.getBorrowerName())) { + appRecordVo.setLoanName(data.getBorrowerName()); + } + if (StringUtils.isNotBlank(data.getDueDate())) { + appRecordVo.setRepaymentDate(data.getDueDate()); + } + String yinghuan = ""; + String weihuan = ""; + String shihuan = ""; + String shihuandate = ""; + if (StringUtils.isNotBlank(data.getDueMoney())) { + yinghuan = data.getDueMoney(); + } + if (StringUtils.isNotBlank(data.getOutstandingMoney())) { + weihuan = data.getOutstandingMoney(); + } + if (StringUtils.isNotBlank(data.getActualDate())) { + shihuandate = data.getActualDate(); + } + if (StringUtils.isNotBlank(data.getActualMoney())) { + shihuan = data.getActualMoney(); + } + appRecordVo.setInfo1("本期应还:" + yinghuan + ",本期未还:" + weihuan); + appRecordVo.setInfo2("实还日期:" + shihuandate + ",实还金额:" + shihuan); + records.add(appRecordVo); + } + } + } + vo.setRecords(records); + } + return rb.success().setData(vo); + } + + public ResultBean deleteBySids(String[] sids) { + ResultBean rb = ResultBean.fireFail(); + for (String sid : sids) { + LoanBuckleApply loanBuckleApply = fetchBySid(sid); + if (null != loanBuckleApply) { + if (!loanBuckleApply.getNodeState().equals("待提交")) { + return rb.setMsg("删除的数据中包含已经提交审批的数据,删除失败"); + } + } + loanBuckleApply.setIsDelete(1); + int i = baseMapper.updateById(loanBuckleApply); + if (i == 0) { + return rb.setMsg("删除失败"); + } + List applyRecords = loanBuckleApplyRecordService.selByMainSid(sid); + if (!applyRecords.isEmpty()) { + for (LoanBuckleApplyRecord applyRecord : applyRecords) { + LoanRepaymentHistory repaymentHistory = loanRepaymentHistoryService.fetchBySid(applyRecord.getRepaymentHistorySid()); + if (null != repaymentHistory) { + repaymentHistory.setBuckle("未申请"); + repaymentHistory.setBuckleKey("001"); + loanRepaymentHistoryService.updateById(repaymentHistory); + } + } + } + } + return ResultBean.fireSuccess().setMsg("删除成功"); + } } diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapplyrecord/LoanBuckleApplyRecordMapper.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapplyrecord/LoanBuckleApplyRecordMapper.java index 1b628691f5..97a3e5d7c2 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapplyrecord/LoanBuckleApplyRecordMapper.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapplyrecord/LoanBuckleApplyRecordMapper.java @@ -4,9 +4,15 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.yxt.anrui.riskcenter.api.loanbuckleapply.LoanBuckleApply; import com.yxt.anrui.riskcenter.api.loanbuckleapplyrecord.LoanBuckleApplyRecord; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; @Mapper public interface LoanBuckleApplyRecordMapper extends BaseMapper { + int deleteByMainSid(@Param("mainSid") String mainSid); + + List selByMainSid(String sid); } diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapplyrecord/LoanBuckleApplyRecordMapper.xml b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapplyrecord/LoanBuckleApplyRecordMapper.xml index ff8e6ff6bf..e3d025acc1 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapplyrecord/LoanBuckleApplyRecordMapper.xml +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapplyrecord/LoanBuckleApplyRecordMapper.xml @@ -2,4 +2,15 @@ + + DELETE + FROM loan_buckle_apply_record + WHERE mainSid = #{mainSid} + + \ No newline at end of file diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapplyrecord/LoanBuckleApplyRecordService.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapplyrecord/LoanBuckleApplyRecordService.java index 174ab2ef92..e8ce7318a7 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapplyrecord/LoanBuckleApplyRecordService.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbuckleapplyrecord/LoanBuckleApplyRecordService.java @@ -5,6 +5,8 @@ import com.yxt.anrui.riskcenter.api.loanbuckleapplyrecord.LoanBuckleApplyRecord; import com.yxt.common.base.service.MybatisBaseService; import org.springframework.stereotype.Service; +import java.util.List; + /** * @description: * @author: fzz @@ -13,5 +15,12 @@ import org.springframework.stereotype.Service; @Service public class LoanBuckleApplyRecordService extends MybatisBaseService { + public int deleteByMainSid(String mainSid) { + return baseMapper.deleteByMainSid(mainSid); + } + + public List selByMainSid(String sid) { + return baseMapper.selByMainSid(sid); + } } diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loancapitalcreditresult/LoanCapitalCreditResultService.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loancapitalcreditresult/LoanCapitalCreditResultService.java index 1fca5db352..71baa91ffb 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loancapitalcreditresult/LoanCapitalCreditResultService.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loancapitalcreditresult/LoanCapitalCreditResultService.java @@ -193,11 +193,11 @@ public class LoanCapitalCreditResultService extends MybatisBaseService pagging = baseMapper.selectPageVo(page, qw); for (LoanCapitalCreditResultVo record : pagging.getRecords()) { String linkSid = record.getLinkSid(); - if (StringUtils.isNotBlank(linkSid)){ + if (StringUtils.isNotBlank(linkSid)) { String[] vehSids = linkSid.split(","); for (String vehSid : vehSids) { List baseTrailers = baseTrailerFeign.getByVehSid(vehSid).getData(); - if (baseTrailers != null && baseTrailers.size() > 0){ + if (baseTrailers != null && baseTrailers.size() > 0) { record.setIsHavTrailer(true); } } @@ -240,6 +240,13 @@ public class LoanCapitalCreditResultService extends MybatisBaseService details(String salesOrderSid) { ResultBean rb = ResultBean.fireFail(); @@ -59,6 +63,7 @@ public class LoanNoGuaranteeCreditReviewService extends MybatisBaseService vehicles = busSalesOrderVehicleFeign.selectListByOrderSidAndDkrSid(orderSid, borrowerSid).getData(); + if (!vehicles.isEmpty()) { + for (BusSalesOrderVehicle vehicle : vehicles) { + if (StringUtils.isNotBlank(vehicle.getLinkSid())) { + String vehicleLinkSid = vehicle.getLinkSid(); + List baseTrailers = baseTrailerFeign.getByVehSid(vehicleLinkSid).getData(); + if (baseTrailers != null && baseTrailers.size() > 0) { + vo.setIsHavTrailer(true); + } + } + } + } //家访考察结果截图 List fileList = loanFileService.selectByLinkSid(sid, LoanFileEnum.HOME_VISIT_FILES.getAttachType()); fileList.removeAll(Collections.singleton(null)); @@ -147,6 +166,13 @@ public class LoanNoGuaranteeCreditReviewService extends MybatisBaseService monthListPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); List selByBankNoAndActDate(@Param("bankContractNo") String bankContractNo, @Param("realReturnTime") String realReturnTime); + + LoanRepaymentHistoryRecordVo buckleInfo(String sid); } diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryMapper.xml b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryMapper.xml index 872a0100d4..866dc7b672 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryMapper.xml +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryMapper.xml @@ -70,4 +70,25 @@ WHERE p.bankContractNo = #{bankContractNo} AND h.actualDate = #{realReturnTime} + \ No newline at end of file diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryRest.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryRest.java index d20165f7d4..81e467cda5 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryRest.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryRest.java @@ -61,6 +61,11 @@ public class LoanRepaymentHistoryRest implements LoanRepaymentHistoryFeign { return loanRepaymentHistoryService.updateRecordInfo(sid); } + @Override + public ResultBean buckleInfo(String sid) { + return loanRepaymentHistoryService.buckleInfo(sid); + } + @Override public ResultBean deleteHistory(String scheduleSid) { return loanRepaymentHistoryService.deleteHistory(scheduleSid); diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryService.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryService.java index 4686b64171..014d6bbce6 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryService.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryService.java @@ -611,4 +611,10 @@ public class LoanRepaymentHistoryService extends MybatisBaseService buckleInfo(String sid) { + ResultBean rb = ResultBean.fireFail(); + LoanRepaymentHistoryRecordVo vo = baseMapper.buckleInfo(sid); + return rb.success().setData(vo); + } } diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/buckle/BuckleDetailsVo.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/buckle/BuckleDetailsVo.java new file mode 100644 index 0000000000..84ee94bd1f --- /dev/null +++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/buckle/BuckleDetailsVo.java @@ -0,0 +1,24 @@ +package com.yxt.anrui.terminal.api.risk.buckle; + +import com.yxt.common.core.vo.Vo; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author Administrator + * @description + * @date 2023/11/13 15:38 + */ +@Data +public class BuckleDetailsVo implements Vo { + private String sid; + private String publishInfo; + private String time; + private String remarks; + private List files = new ArrayList<>(); + private String taskId; + private String procInsId; + private List records = new ArrayList<>(); +} diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/buckle/BuckleFeign.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/buckle/BuckleFeign.java new file mode 100644 index 0000000000..d987b6e21c --- /dev/null +++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/buckle/BuckleFeign.java @@ -0,0 +1,71 @@ +package com.yxt.anrui.terminal.api.risk.buckle; + + +import com.yxt.anrui.terminal.api.risk.buckle.flow.AppBuckleTaskQuery; +import com.yxt.anrui.terminal.api.risk.buckle.flow.BuckleFlowableQuery; +import com.yxt.anrui.terminal.api.risk.buckle.flow.CompleteBuckleDto; +import com.yxt.anrui.terminal.api.risk.loancustomerrecord.*; +import com.yxt.anrui.terminal.api.risk.loancustomerrecord.flow.*; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.cloud.openfeign.SpringQueryMap; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; + +/** + * @description: + * @author: fzz + * @date: 2023/8/8 + **/ +@Api(tags = "划扣申请") +@FeignClient( + contextId = "terminal-Buckle", + name = "anrui-terminal", + path = "/riskcenter/v1/buckle", + fallback = BuckleFeignFallback.class) +public interface BuckleFeign { + + + @ApiOperation("划扣申请") + @GetMapping("/detail/{sid}") + @ResponseBody + ResultBean detail(@PathVariable("sid") String sid); + + //-------------------------流程----------------------------------------- + + @ApiOperation("办理") + @PutMapping("/agreeCreditInfo") + @ResponseBody + ResultBean agreeCreditInfo(@Valid @RequestBody CompleteBuckleDto dto); + + @ApiOperation("驳回") + @PutMapping("/rejectCreditInfo") + @ResponseBody + ResultBean rejectCreditInfo(@Valid @RequestBody AppBuckleTaskQuery query); + + @ApiOperation("撤回") + @PutMapping("/recallCreditInfo") + @ResponseBody + ResultBean recallCreditInfo(@Valid @RequestBody AppBuckleTaskQuery query); + + @ApiOperation("终止") + @PutMapping("/stopCreditInfo") + @ResponseBody + ResultBean stopCreditInfo(@Valid @RequestBody AppBuckleTaskQuery query); + + @ApiOperation("获取流程操作标题") + @GetMapping("/getFlowOperateTitle") + @ResponseBody + ResultBean getFlowOperateTitle(@Valid @SpringQueryMap BuckleFlowableQuery query); + +// @ApiOperation(value = "加签") +// @PutMapping(value = "/delegate") +// @ResponseBody +// public ResultBean delegate(@RequestBody AppCustomerRecordDelegateQuery delegateQuery); +} diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/buckle/BuckleFeignFallback.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/buckle/BuckleFeignFallback.java new file mode 100644 index 0000000000..c332c09702 --- /dev/null +++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/buckle/BuckleFeignFallback.java @@ -0,0 +1,52 @@ +package com.yxt.anrui.terminal.api.risk.buckle; + +import com.yxt.anrui.terminal.api.risk.buckle.flow.AppBuckleTaskQuery; +import com.yxt.anrui.terminal.api.risk.buckle.flow.BuckleFlowableQuery; +import com.yxt.anrui.terminal.api.risk.buckle.flow.CompleteBuckleDto; +import com.yxt.anrui.terminal.api.risk.loancustomerrecord.*; +import com.yxt.anrui.terminal.api.risk.loancustomerrecord.flow.*; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * @description: + * @author: fzz + * @date: + **/ +@Component +public class BuckleFeignFallback implements BuckleFeign { + + @Override + public ResultBean detail(String sid) { + return null; + } + + @Override + public ResultBean agreeCreditInfo(CompleteBuckleDto dto) { + return null; + } + + @Override + public ResultBean rejectCreditInfo(AppBuckleTaskQuery query) { + return null; + } + + @Override + public ResultBean recallCreditInfo(AppBuckleTaskQuery query) { + return null; + } + + @Override + public ResultBean stopCreditInfo(AppBuckleTaskQuery query) { + return null; + } + + @Override + public ResultBean getFlowOperateTitle(BuckleFlowableQuery query) { + return null; + } +} diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/buckle/RecordVo.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/buckle/RecordVo.java new file mode 100644 index 0000000000..72b6052ced --- /dev/null +++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/buckle/RecordVo.java @@ -0,0 +1,23 @@ +package com.yxt.anrui.terminal.api.risk.buckle; + +import lombok.Data; + +/** + * @author Administrator + * @description + * @date 2023/11/13 15:45 + */ +@Data +public class RecordVo { + private String contractId; + private String instalments; + private String vin; + private String type; + private String zf; + private String zfNo; + private String cusName; + private String loanName; + private String repaymentDate; + private String info1; + private String info2; +} diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/buckle/flow/AppBuckleDelegateQuery.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/buckle/flow/AppBuckleDelegateQuery.java new file mode 100644 index 0000000000..bb045f7b44 --- /dev/null +++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/buckle/flow/AppBuckleDelegateQuery.java @@ -0,0 +1,25 @@ +package com.yxt.anrui.terminal.api.risk.buckle.flow; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author Administrator + * @description + * @date 2023/9/28 10:16 + */ +@Data +public class AppBuckleDelegateQuery { + @ApiModelProperty + private String userSid; + @ApiModelProperty("流程实例id") + @JsonProperty("procInsId") + private String instanceId; + @ApiModelProperty("任务Id") + private String taskId; + @ApiModelProperty("审批人sid") + private String assignee; + @ApiModelProperty("填写意见") + private String views; +} diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/buckle/flow/AppBuckleTaskQuery.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/buckle/flow/AppBuckleTaskQuery.java new file mode 100644 index 0000000000..63bc539d00 --- /dev/null +++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/buckle/flow/AppBuckleTaskQuery.java @@ -0,0 +1,46 @@ +package com.yxt.anrui.terminal.api.risk.buckle.flow; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @author Administrator + * @description + * @date 2023/10/17 9:14 + */ +@Data +public class AppBuckleTaskQuery implements Query { + /** + * 终止、驳回、撤回 + */ + @ApiModelProperty("任务Id") + @NotBlank(message = "参数错误:taskId") + private String taskId; + /** + * 终止、驳回、撤回 + */ + @ApiModelProperty("业务sid") + @NotBlank(message = "参数错误:businessSid") + private String businessSid; + /** + * 终止、驳回 + */ + @ApiModelProperty("任务意见") + private String comment; + /** + * 终止、撤回、驳回 + */ + @ApiModelProperty("用户Sid") + private String userSid; + /** + * 终止 + */ + @ApiModelProperty("流程实例Id") + @JsonProperty("procInsId") + private String instanceId; + +} diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/buckle/flow/BuckleFlowableQuery.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/buckle/flow/BuckleFlowableQuery.java new file mode 100644 index 0000000000..fe7f7cffa6 --- /dev/null +++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/buckle/flow/BuckleFlowableQuery.java @@ -0,0 +1,21 @@ +package com.yxt.anrui.terminal.api.risk.buckle.flow; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +public class BuckleFlowableQuery implements Query { + private static final long serialVersionUID = -5879668616710833830L; + + @ApiModelProperty(value = "节点key") + private String taskDefKey; + @ApiModelProperty(value = "业务sid") + private String businessSid; + @ApiModelProperty(value = "0 上一环节 1下一环节") + @NotNull(message = "参数错误:next") + private Integer next; + +} diff --git a/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/buckle/flow/CompleteBuckleDto.java b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/buckle/flow/CompleteBuckleDto.java new file mode 100644 index 0000000000..fbe4b6c931 --- /dev/null +++ b/anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/buckle/flow/CompleteBuckleDto.java @@ -0,0 +1,35 @@ +package com.yxt.anrui.terminal.api.risk.buckle.flow; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @author Administrator + * @description + * @date 2023/10/17 9:13 + */ +@Data +public class CompleteBuckleDto implements Dto { + @ApiModelProperty(value = "任务id") + @NotBlank(message = "参数错误:taskId") + private String taskId; + @ApiModelProperty(value = "流程id") + @NotBlank(message = "参数错误:procInsId") + @JsonProperty("procInsId") + private String instanceId; + @ApiModelProperty(value = "意见") + private String comment; + @ApiModelProperty(value = "业务sid") + @NotBlank(message = "参数错误:businessSid") + private String businessSid; + @ApiModelProperty(value = "用户sid") + @NotBlank(message = "参数错误:userSid") + private String userSid; + @ApiModelProperty(value = "节点id") + @NotBlank(message = "参数错误:taskDefKey") + private String taskDefKey; +} diff --git a/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/buckle/BuckleRest.java b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/buckle/BuckleRest.java new file mode 100644 index 0000000000..f31cbbe243 --- /dev/null +++ b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/buckle/BuckleRest.java @@ -0,0 +1,62 @@ +package com.yxt.anrui.terminal.biz.risk.buckle; + + +import com.yxt.anrui.terminal.api.risk.buckle.BuckleDetailsVo; +import com.yxt.anrui.terminal.api.risk.buckle.BuckleFeign; +import com.yxt.anrui.terminal.api.risk.buckle.flow.AppBuckleTaskQuery; +import com.yxt.anrui.terminal.api.risk.buckle.flow.BuckleFlowableQuery; +import com.yxt.anrui.terminal.api.risk.buckle.flow.CompleteBuckleDto; +import com.yxt.anrui.terminal.api.risk.loancustomerrecord.*; +import com.yxt.anrui.terminal.api.risk.loancustomerrecord.flow.*; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; + +import java.util.List; + +/** + * @description: + * @author: fzz + * @date: + **/ +@Controller +@RequestMapping("/riskcenter/v1/buckle") +public class BuckleRest implements BuckleFeign { + + @Autowired + private BuckleService buckleService; + + + @Override + public ResultBean detail(String sid) { + return buckleService.detail(sid); + } + + @Override + public ResultBean agreeCreditInfo(CompleteBuckleDto dto) { + return buckleService.agreeCreditInfo(dto); + } + + @Override + public ResultBean rejectCreditInfo(AppBuckleTaskQuery query) { + return buckleService.rejectCreditInfo(query); + } + + @Override + public ResultBean recallCreditInfo(AppBuckleTaskQuery query) { + return buckleService.recallCreditInfo(query); + } + + @Override + public ResultBean stopCreditInfo(AppBuckleTaskQuery query) { + return buckleService.stopCreditInfo(query); + } + + @Override + public ResultBean getFlowOperateTitle(BuckleFlowableQuery query) { + return buckleService.getFlowOperateTitle(query); + } +} diff --git a/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/buckle/BuckleService.java b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/buckle/BuckleService.java new file mode 100644 index 0000000000..16b5f0bec9 --- /dev/null +++ b/anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/buckle/BuckleService.java @@ -0,0 +1,163 @@ +package com.yxt.anrui.terminal.biz.risk.buckle; + + +import cn.hutool.core.bean.BeanUtil; +import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrg; +import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign; +import com.yxt.anrui.portal.api.sysuser.SysUserFeign; +import com.yxt.anrui.portal.api.sysuser.SysUserVo; +import com.yxt.anrui.riskcenter.api.loanbuckleapply.LoanBuckleApplyFeign; +import com.yxt.anrui.riskcenter.api.loanbuckleapply.app.AppBuckleDetailsVo; +import com.yxt.anrui.riskcenter.api.loanbuckleapply.flow.BuckleCompleteDto; +import com.yxt.anrui.riskcenter.api.loanbuckleapply.flow.BuckleGetNodeQuery; +import com.yxt.anrui.riskcenter.api.loanbuckleapply.flow.BuckleGetNodeVo; +import com.yxt.anrui.riskcenter.api.loanbuckleapply.flow.BuckleTaskQuery; +import com.yxt.anrui.riskcenter.api.loancustomerrecord.LoanCustomerRecordFeign; +import com.yxt.anrui.riskcenter.api.loancustomerrecord.app.*; +import com.yxt.anrui.riskcenter.api.loancustomerrecord.flow.CustomerRecordCompleteDto; +import com.yxt.anrui.riskcenter.api.loancustomerrecord.flow.CustomerRecordDelegateQuery; +import com.yxt.anrui.riskcenter.api.loancustomerrecord.flow.CustomerRecordTaskQuery; +import com.yxt.anrui.terminal.api.risk.buckle.BuckleDetailsVo; +import com.yxt.anrui.terminal.api.risk.buckle.flow.AppBuckleTaskQuery; +import com.yxt.anrui.terminal.api.risk.buckle.flow.BuckleFlowableQuery; +import com.yxt.anrui.terminal.api.risk.buckle.flow.CompleteBuckleDto; +import com.yxt.anrui.terminal.api.risk.loancustomerrecord.*; +import com.yxt.anrui.terminal.api.risk.loancustomerrecord.flow.*; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +/** + * @description: + * @author: fzz + * @date: + **/ +@Service +public class BuckleService { + + @Autowired + private SysUserFeign sysUserFeign; + @Autowired + private SysStaffOrgFeign sysStaffOrgFeign; + @Autowired + private LoanBuckleApplyFeign loanBuckleApplyFeign; + + public ResultBean detail(String sid) { + ResultBean rb = ResultBean.fireFail(); + BuckleDetailsVo vo = new BuckleDetailsVo(); + AppBuckleDetailsVo data = loanBuckleApplyFeign.appDetail(sid).getData(); + if (null != data) { + BeanUtil.copyProperties(data, vo); + } + return rb.success().setData(vo); + } + + + public ResultBean agreeCreditInfo(CompleteBuckleDto dto) { + ResultBean rb = ResultBean.fireFail(); + //根据用户sid获取staffSid + ResultBean 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(); + BuckleCompleteDto buckleCompleteDto = new + BuckleCompleteDto(); + BeanUtil.copyProperties(dto, buckleCompleteDto); + buckleCompleteDto.setOrgSidPath(orgSidPath); + ResultBean resultBean = loanBuckleApplyFeign.complete(buckleCompleteDto); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + return rb.success().setData(resultBean.getData()); + } + + public ResultBean rejectCreditInfo(AppBuckleTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + BuckleTaskQuery taskQuery = new + BuckleTaskQuery(); + BeanUtil.copyProperties(query, taskQuery); + ResultBean resultBean = loanBuckleApplyFeign.taskReject(taskQuery); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + return rb.success().setData(resultBean.getData()); + } + + public ResultBean recallCreditInfo(AppBuckleTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + BuckleTaskQuery taskQuery = new + BuckleTaskQuery(); + BeanUtil.copyProperties(query, taskQuery); + ResultBean resultBean = loanBuckleApplyFeign.revokeProcess(taskQuery); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + return rb.success().setData(resultBean.getData()); + } + + public ResultBean stopCreditInfo(AppBuckleTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + BuckleTaskQuery taskQuery = new + BuckleTaskQuery(); + BeanUtil.copyProperties(query, taskQuery); + ResultBean resultBean = loanBuckleApplyFeign.breakProcess(taskQuery); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + return rb.success().setData(resultBean.getData()); + } + + public ResultBean getFlowOperateTitle(BuckleFlowableQuery query) { + ResultBean rb = ResultBean.fireFail(); + //0 上一环节 1下一环节 + int next = query.getNext(); + BuckleGetNodeQuery getNodeQuery = new + BuckleGetNodeQuery(); + BeanUtil.copyProperties(query, getNodeQuery); + String data = ""; + if (next == 0) { + ResultBean> getPreviousNodesForReject = loanBuckleApplyFeign.getPreviousNodesForReject(getNodeQuery); + if (getPreviousNodesForReject.getSuccess()) { + getPreviousNodesForReject.getData().removeAll(Collections.singleton(null)); + data = getPreviousNodesForReject.getData().get(0).getName(); + } else { + return rb.setMsg(getPreviousNodesForReject.getMsg()); + } + } else if (next == 1) { + ResultBean> getNextNodesForSubmit = loanBuckleApplyFeign.getNextNodesForSubmit(getNodeQuery); + if (getNextNodesForSubmit.getSuccess()) { + getNextNodesForSubmit.getData().removeAll(Collections.singleton(null)); + data = getNextNodesForSubmit.getData().get(0).getName(); + } else { + return rb.setMsg(getNextNodesForSubmit.getMsg()); + } + } else { + return rb.setMsg("参数错误:next"); + } + return rb.success().setData(data); + } +// +// public ResultBean delegate(AppCustomerRecordDelegateQuery delegateQuery) { +// ResultBean rb = ResultBean.fireFail(); +// CustomerRecordDelegateQuery delegateQuery1 = new +// CustomerRecordDelegateQuery(); +// BeanUtil.copyProperties(delegateQuery, delegateQuery1); +// ResultBean delegate = loanCustomerRecordFeign.delegate(delegateQuery1); +// return rb.success(); +// } + + +}