From d777a9e3b7dd8a5759cfdbc9ec14872d4e9025c5 Mon Sep 17 00:00:00 2001 From: dimengzhe Date: Tue, 14 Nov 2023 14:23:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=BE=E6=AC=BE=E5=B7=AE=E9=A2=9D=E7=A1=AE?= =?UTF-8?q?=E8=AE=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../FinCollectionConfirmationService.java | 12 + .../FinSelectedReceivablesDetailedMapper.java | 2 + .../FinSelectedReceivablesDetailedMapper.xml | 5 + ...FinSelectedReceivablesDetailedService.java | 4 + .../anrui/flowable/api/utils/ProcDefEnum.java | 1 + .../riskcenter/api/loandiff/LoanDiff.java | 41 ++ .../riskcenter/api/loandiff/LoanDiffDto.java | 20 + .../api/loandiff/LoanDiffFeign.java | 66 +++ .../api/loandiff/LoanDiffFeignFallback.java | 9 + .../api/loandiff/LoanDiffQuery.java | 30 ++ .../riskcenter/api/loandiff/LoanDiffVo.java | 34 ++ .../riskcenter/api/loandiff/LoanDiffsDto.java | 34 ++ .../loandiff/flowable/DiffApplyNodeQuery.java | 18 + .../loandiff/flowable/DiffApplyNodeVo.java | 24 + .../loandiff/flowable/DiffApplyTaskQuery.java | 43 ++ .../loandiff/flowable/DiffCompleteDto.java | 38 ++ .../api/loandiff/flowable/SubmitDiffDto.java | 19 + .../api/loandiffdetails/LoanDiffDetails.java | 65 +++ .../loandiffdetails/LoanDiffDetailsDto.java | 25 + .../loandiffdetails/LoanDiffDetailssDto.java | 44 ++ .../biz/loandiff/LoanDiffMapper.java | 24 + .../biz/loandiff/LoanDiffMapper.xml | 39 ++ .../riskcenter/biz/loandiff/LoanDiffRest.java | 81 ++++ .../biz/loandiff/LoanDiffService.java | 429 ++++++++++++++++++ .../LoanDiffDetailsMapper.java | 14 + .../loandiffdetails/LoanDiffDetailsMapper.xml | 4 + .../loandiffdetails/LoanDiffDetailsRest.java | 9 + .../LoanDiffDetailsService.java | 16 + .../biz/loantemplate/LoanTemplateService.java | 15 +- 29 files changed, 1159 insertions(+), 6 deletions(-) create mode 100644 anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/LoanDiff.java create mode 100644 anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/LoanDiffDto.java create mode 100644 anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/LoanDiffFeign.java create mode 100644 anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/LoanDiffFeignFallback.java create mode 100644 anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/LoanDiffQuery.java create mode 100644 anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/LoanDiffVo.java create mode 100644 anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/LoanDiffsDto.java create mode 100644 anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/flowable/DiffApplyNodeQuery.java create mode 100644 anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/flowable/DiffApplyNodeVo.java create mode 100644 anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/flowable/DiffApplyTaskQuery.java create mode 100644 anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/flowable/DiffCompleteDto.java create mode 100644 anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/flowable/SubmitDiffDto.java create mode 100644 anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiffdetails/LoanDiffDetails.java create mode 100644 anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiffdetails/LoanDiffDetailsDto.java create mode 100644 anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiffdetails/LoanDiffDetailssDto.java create mode 100644 anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiff/LoanDiffMapper.java create mode 100644 anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiff/LoanDiffMapper.xml create mode 100644 anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiff/LoanDiffRest.java create mode 100644 anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiff/LoanDiffService.java create mode 100644 anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiffdetails/LoanDiffDetailsMapper.java create mode 100644 anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiffdetails/LoanDiffDetailsMapper.xml create mode 100644 anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiffdetails/LoanDiffDetailsRest.java create mode 100644 anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiffdetails/LoanDiffDetailsService.java diff --git a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincollectionconfirmation/FinCollectionConfirmationService.java b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincollectionconfirmation/FinCollectionConfirmationService.java index 2e0ea151d8..f21359ae0b 100644 --- a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincollectionconfirmation/FinCollectionConfirmationService.java +++ b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincollectionconfirmation/FinCollectionConfirmationService.java @@ -107,6 +107,7 @@ 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.loandiff.LoanDiffsDto; import com.yxt.anrui.riskcenter.api.loansolutions.LoanSolutionsFeign; import com.yxt.anrui.riskcenter.api.loansolutions.app.SolutionsDetailsVo; import com.yxt.common.base.config.component.FileUploadComponent; @@ -1550,6 +1551,7 @@ public class FinCollectionConfirmationService extends MybatisBaseService dtoList = new ArrayList<>(); //查询该申请下的所有待审核的款项明细 + BigDecimal subscriptionMoneyAll = new BigDecimal("0"); List finSelectedReceivablesDetailedVos = finSelectedReceivablesDetailedService.fetchByAuditState(sid, 1); if (finSelectedReceivablesDetailedVos.size() > 0) { @@ -1652,6 +1654,16 @@ public class FinCollectionConfirmationService extends MybatisBaseService finLi = finSelectedReceivablesDetailedService.selectLiBy(sid); + finLi.removeAll(Collections.singleton(null)); + if(!finLi.isEmpty()){ + //根据车辆sid查询金融方案 + for (int i = 0; i < finLi.size(); i++) { + + } + + } return rb.success().setMsg("款项确认成功"); } diff --git a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finselectedreceivablesdetailed/FinSelectedReceivablesDetailedMapper.java b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finselectedreceivablesdetailed/FinSelectedReceivablesDetailedMapper.java index b836e050d8..0507c8fce8 100644 --- a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finselectedreceivablesdetailed/FinSelectedReceivablesDetailedMapper.java +++ b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finselectedreceivablesdetailed/FinSelectedReceivablesDetailedMapper.java @@ -155,4 +155,6 @@ public interface FinSelectedReceivablesDetailedMapper extends BaseMapper selectByOneCollSid(String sid); String getBalance(String busSid); + + List selectLiBy(String sid); } \ No newline at end of file diff --git a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finselectedreceivablesdetailed/FinSelectedReceivablesDetailedMapper.xml b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finselectedreceivablesdetailed/FinSelectedReceivablesDetailedMapper.xml index 5a80227954..5bf8db855b 100644 --- a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finselectedreceivablesdetailed/FinSelectedReceivablesDetailedMapper.xml +++ b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finselectedreceivablesdetailed/FinSelectedReceivablesDetailedMapper.xml @@ -546,4 +546,9 @@ ON ffc.`busSid` = ferd.`sid` WHERE ferd.sid = #{busSid} + + \ No newline at end of file diff --git a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finselectedreceivablesdetailed/FinSelectedReceivablesDetailedService.java b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finselectedreceivablesdetailed/FinSelectedReceivablesDetailedService.java index c7890d1d36..a703d18e32 100644 --- a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finselectedreceivablesdetailed/FinSelectedReceivablesDetailedService.java +++ b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finselectedreceivablesdetailed/FinSelectedReceivablesDetailedService.java @@ -868,4 +868,8 @@ public class FinSelectedReceivablesDetailedService extends MybatisBaseService selectLiBy(String sid) { + return baseMapper.selectLiBy(sid); + } } \ No newline at end of file diff --git a/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/utils/ProcDefEnum.java b/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/utils/ProcDefEnum.java index bfb7e2e165..e0c921ef26 100644 --- a/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/utils/ProcDefEnum.java +++ b/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/utils/ProcDefEnum.java @@ -56,6 +56,7 @@ public enum ProcDefEnum { LOANCREDITAPPEALAPPLY("信用审核申诉", "process_gygvxw8k:2:5212504"), DEALERFILINGAPPLY("经销商备案", "process_jdu35cog:9:6652504"), LOANTEMPLATEAPPLY("定制金融方案", "process_9q5omebi:2:2685008"), + LOANDIFFAPPLY("放款差额确认", ""), LOANHOMEVISITAPPEALAPPLY("家访考察申诉", "process_8ujil3h3:1:3665004"), BUSVALCUSTFILING("价值客户备案申请", "process_n8fwpitk:2:5085004"), LOANCUSTOMERRECORD("欠款客户备案", "process_x6o0chx9:4:6055004"), diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/LoanDiff.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/LoanDiff.java new file mode 100644 index 0000000000..f58090ecbe --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/LoanDiff.java @@ -0,0 +1,41 @@ +package com.yxt.anrui.riskcenter.api.loandiff; + +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/11/13 + **/ +@Data +public class LoanDiff extends BaseEntity { + private static final long serialVersionUID = 5447301533409285441L; + + private String createByName; + @ApiModelProperty("申请部门sid") + private String createDeptSid; + @ApiModelProperty("申请部门") + private String createDept; + @ApiModelProperty("编号") + private String billNo; + @ApiModelProperty("附件") + private String files; + @ApiModelProperty("组织全路径") + private String orgSidPath; + @ApiModelProperty("流程状态") + private String nodeState; + @ApiModelProperty("环节key") + private String nodeId; + @ApiModelProperty("流程实例id") + private String procDefId; + @ApiModelProperty("实例id") + private String procInstId; + @ApiModelProperty("任务id") + private String taskId; + @ApiModelProperty("分公司sid") + private String useOrgSid; + @ApiModelProperty("分公司名称") + private String useOrgName; +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/LoanDiffDto.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/LoanDiffDto.java new file mode 100644 index 0000000000..d38d6be462 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/LoanDiffDto.java @@ -0,0 +1,20 @@ +package com.yxt.anrui.riskcenter.api.loandiff; + +import com.yxt.anrui.riskcenter.api.loandiffdetails.LoanDiffDetailsDto; +import com.yxt.common.core.dto.Dto; +import lombok.Data; + +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/11/14 + **/ +@Data +public class LoanDiffDto implements Dto { + private static final long serialVersionUID = 3046052875256156498L; + private String sid; + private String userSid; + private List loanDiffDetails; +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/LoanDiffFeign.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/LoanDiffFeign.java new file mode 100644 index 0000000000..2472dda787 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/LoanDiffFeign.java @@ -0,0 +1,66 @@ +package com.yxt.anrui.riskcenter.api.loandiff; + +import com.yxt.anrui.riskcenter.api.loandiff.flowable.*; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.cloud.openfeign.SpringQueryMap; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +import javax.validation.Valid; +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/11/13 + **/ +@Api(tags = "放款确认申请") +@FeignClient( + contextId = "anrui-riskcenter-LoanDiff", + name = "anrui-riskcenter", + path = "v1/LoanDiff", + fallback = LoanDiffFeignFallback.class) +public interface LoanDiffFeign { + @ApiOperation("融资放款确认推送数据") + @PostMapping("/save") + ResultBean save(@RequestBody LoanDiffsDto dto); + + @ApiOperation("分页列表") + @PostMapping("/listPage") + public ResultBean> listPage(@RequestBody PagerQuery pq); + + @ApiOperation("提交") + @PostMapping("/submitDiffApply") + public ResultBean submitDiffApply(@Valid @RequestBody SubmitDiffDto dto); + + @ApiOperation(value = "办理(同意)") + @PostMapping("/complete") + public ResultBean complete(@Valid @RequestBody DiffCompleteDto query); + + @ApiOperation(value = "获取上一个环节") + @GetMapping(value = "/getPreviousNodesForReject") + ResultBean> getPreviousNodesForReject(@Valid @SpringQueryMap DiffApplyNodeQuery query); + + @ApiOperation(value = "获取下一个环节") + @GetMapping(value = "/getNextNodesForSubmit") + ResultBean> getNextNodesForSubmit(@Valid @SpringQueryMap DiffApplyNodeQuery query); + + @ApiOperation(value = "驳回任务") + @PostMapping(value = "/reject") + public ResultBean taskReject(@Valid @RequestBody DiffApplyTaskQuery query); + + @ApiOperation(value = "撤回流程") + @PostMapping(value = "/revokeProcess") + public ResultBean revokeProcess(@Valid @RequestBody DiffApplyTaskQuery query); + + @ApiOperation(value = "终止任务") + @PostMapping(value = "/breakProcess") + public ResultBean breakProcess(@Valid @RequestBody DiffApplyTaskQuery query); + +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/LoanDiffFeignFallback.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/LoanDiffFeignFallback.java new file mode 100644 index 0000000000..2826f944db --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/LoanDiffFeignFallback.java @@ -0,0 +1,9 @@ +package com.yxt.anrui.riskcenter.api.loandiff; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/11/14 + **/ +public class LoanDiffFeignFallback { +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/LoanDiffQuery.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/LoanDiffQuery.java new file mode 100644 index 0000000000..30cc800263 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/LoanDiffQuery.java @@ -0,0 +1,30 @@ +package com.yxt.anrui.riskcenter.api.loandiff; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/11/14 + **/ +@Data +public class LoanDiffQuery implements Query { + private static final long serialVersionUID = 7002305390491310057L; + @ApiModelProperty("分公司") + private String useOrgName; + @ApiModelProperty("申请部门") + private String createDept; + @ApiModelProperty("申请人") + private String createByName; + @ApiModelProperty("申请日期开始时间") + private String createTimeStart; + @ApiModelProperty("申请日期结束时间") + private String createTimeEnd; + + private String orgPath; + private String menuUrl; + + +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/LoanDiffVo.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/LoanDiffVo.java new file mode 100644 index 0000000000..37ad002ac0 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/LoanDiffVo.java @@ -0,0 +1,34 @@ +package com.yxt.anrui.riskcenter.api.loandiff; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/11/14 + **/ +@Data +public class LoanDiffVo implements Vo { + private static final long serialVersionUID = -7935993141002359582L; + + private String sid; + @ApiModelProperty("流程状态") + private String nodeState; + @ApiModelProperty("分公司") + private String useOrgName; + @ApiModelProperty("申请部门") + private String createDept; + @ApiModelProperty("申请人") + private String createByName; + @ApiModelProperty("申请日期") + private String createTime; + @ApiModelProperty("申请编号") + private String billNo; + @ApiModelProperty("备注") + private String remarks; + + private String procDefId; + private String procInstId; +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/LoanDiffsDto.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/LoanDiffsDto.java new file mode 100644 index 0000000000..e1779f6026 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/LoanDiffsDto.java @@ -0,0 +1,34 @@ +package com.yxt.anrui.riskcenter.api.loandiff; + +import com.yxt.anrui.riskcenter.api.loandiffdetails.LoanDiffDetails; +import com.yxt.anrui.riskcenter.api.loandiffdetails.LoanDiffDetailssDto; +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/11/14 + **/ +@Data +public class LoanDiffsDto implements Dto { + private static final long serialVersionUID = 7160584186871507179L; + @ApiModelProperty("申请人") + private String createBySid; + @ApiModelProperty("分公司sid") + private String useOrgSid; + @ApiModelProperty("分公司名称") + private String useOrgName; + private String createByName; + @ApiModelProperty("申请部门") + private String createDept; + @ApiModelProperty("申请部门sid") + private String createDeptSid; + + private List loanDiffDetailssDtos; + + +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/flowable/DiffApplyNodeQuery.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/flowable/DiffApplyNodeQuery.java new file mode 100644 index 0000000000..72e1910f79 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/flowable/DiffApplyNodeQuery.java @@ -0,0 +1,18 @@ +package com.yxt.anrui.riskcenter.api.loandiff.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/11/14 + **/ +@Data +public class DiffApplyNodeQuery { + + @ApiModelProperty(value = "环节定义id") + private String taskDefKey; + @ApiModelProperty(value = "业务sid") + private String businessSid; +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/flowable/DiffApplyNodeVo.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/flowable/DiffApplyNodeVo.java new file mode 100644 index 0000000000..ce4de0177e --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/flowable/DiffApplyNodeVo.java @@ -0,0 +1,24 @@ +package com.yxt.anrui.riskcenter.api.loandiff.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/11/14 + **/ +@Data +public class DiffApplyNodeVo { + + @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/loandiff/flowable/DiffApplyTaskQuery.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/flowable/DiffApplyTaskQuery.java new file mode 100644 index 0000000000..1613dc5fd0 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/flowable/DiffApplyTaskQuery.java @@ -0,0 +1,43 @@ +package com.yxt.anrui.riskcenter.api.loandiff.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/11/14 + **/ +@Data +public class DiffApplyTaskQuery { + + /** + * 终止、驳回、撤回 + */ + @ApiModelProperty("任务Id") + @NotBlank(message = "参数错误:taskId") + private String taskId; + /** + * 终止、驳回、撤回 + */ + @ApiModelProperty("业务sid") + @NotBlank(message = "参数错误:businessSid") + private String businessSid; + /** + * 终止、驳回 + */ + @ApiModelProperty("任务意见") + private String comment; + /** + * 终止、撤回、驳回 + */ + @ApiModelProperty("用户Sid") + private String userSid; + /** + * 终止 + */ + @ApiModelProperty("流程实例Id") + private String instanceId; +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/flowable/DiffCompleteDto.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/flowable/DiffCompleteDto.java new file mode 100644 index 0000000000..ae1d4760d9 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/flowable/DiffCompleteDto.java @@ -0,0 +1,38 @@ +package com.yxt.anrui.riskcenter.api.loandiff.flowable; + +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/11/14 + **/ +@Data +public class DiffCompleteDto implements Dto { + + private static final long serialVersionUID = -1137187204046560845L; + @ApiModelProperty(value = "用户sid") + @NotBlank(message = "参数错误:userSid") + private String userSid; + @ApiModelProperty(value = "用户全路径sid") + private String orgSidPath; + @ApiModelProperty(value = "节点id") + @NotBlank(message = "参数错误:taskDefKey") + private String taskDefKey; + @ApiModelProperty(value = "任务id") + @NotBlank(message = "参数错误:taskId") + private String taskId; + @ApiModelProperty(value = "流程id") + @NotBlank(message = "参数错误:instanceId") + private String instanceId; + @ApiModelProperty(value = "意见") + private String comment; + @ApiModelProperty(value = "业务sid") + @NotBlank(message = "参数错误:businessSid") + private String businessSid; + +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/flowable/SubmitDiffDto.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/flowable/SubmitDiffDto.java new file mode 100644 index 0000000000..224024c218 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiff/flowable/SubmitDiffDto.java @@ -0,0 +1,19 @@ +package com.yxt.anrui.riskcenter.api.loandiff.flowable; + +import com.yxt.anrui.riskcenter.api.loandiff.LoanDiffDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/11/14 + **/ +@Data +public class SubmitDiffDto extends LoanDiffDto { + + @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/loandiffdetails/LoanDiffDetails.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiffdetails/LoanDiffDetails.java new file mode 100644 index 0000000000..2c8283317c --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiffdetails/LoanDiffDetails.java @@ -0,0 +1,65 @@ +package com.yxt.anrui.riskcenter.api.loandiffdetails; + +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/11/13 + **/ +@Data +public class LoanDiffDetails extends BaseEntity { + private static final long serialVersionUID = 2569023626756288954L; + @ApiModelProperty("主申请sid") + private String mainSid; + @ApiModelProperty("资方sid") + private String bankSid; + @ApiModelProperty("资方") + private String bankName; + @ApiModelProperty("销售订单车辆sid") + private String busVinSid; + @ApiModelProperty("车架号") + private String vinNo; + @ApiModelProperty("车辆sid") + private String vinSid; + @ApiModelProperty("贷款人sid") + private String borrowSid; + @ApiModelProperty("贷款人") + private String borrowName; + @ApiModelProperty("放款金额:应放") + private BigDecimal makeLoan; + @ApiModelProperty("放款金额:实放") + private BigDecimal realityLoan; + private BigDecimal diffLoan; + @ApiModelProperty("主产品厂家贴息:预计") + private BigDecimal makeDiscount; + + @ApiModelProperty("主产品厂家贴息:实际") + private BigDecimal realityDiscount; + private BigDecimal diffDiscount; + + @ApiModelProperty("其他融厂家贴息:预计") + private BigDecimal makeOtherDiscount; + + @ApiModelProperty("其他融厂家贴息:实际") + private BigDecimal realityOtherDiscount; + private BigDecimal diffOtherDiscount; + + @ApiModelProperty("固定贷款保证金:预计") + private BigDecimal makeLoanMargin; + + @ApiModelProperty("固定贷款保证金:实际") + private BigDecimal realityLoanMargin; + private BigDecimal diffLoanMargin; + + @ApiModelProperty("意外险:已收") + private BigDecimal receivedPremium; + + @ApiModelProperty("意外险:实扣") + private BigDecimal realityPremium; + private BigDecimal diffPremium; +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiffdetails/LoanDiffDetailsDto.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiffdetails/LoanDiffDetailsDto.java new file mode 100644 index 0000000000..8e853cbbf1 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiffdetails/LoanDiffDetailsDto.java @@ -0,0 +1,25 @@ +package com.yxt.anrui.riskcenter.api.loandiffdetails; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/11/14 + **/ +@Data +public class LoanDiffDetailsDto { + private String sid; + private String busVinSid; + @ApiModelProperty("实放") + private String realityLoan; + @ApiModelProperty("主产品厂家贴息:实际") + private String realityDiscount; + @ApiModelProperty("其他融厂家贴息:实际") + private String realityOtherDiscount; + @ApiModelProperty("固定贷款保证金:实际") + private String realityLoanMargin; + @ApiModelProperty("实扣意外险") + private String realityPremium; +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiffdetails/LoanDiffDetailssDto.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiffdetails/LoanDiffDetailssDto.java new file mode 100644 index 0000000000..9d03ea00d6 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loandiffdetails/LoanDiffDetailssDto.java @@ -0,0 +1,44 @@ +package com.yxt.anrui.riskcenter.api.loandiffdetails; + +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/11/14 + **/ +@Data +public class LoanDiffDetailssDto implements Dto { + private static final long serialVersionUID = -2530442143507437830L; + @ApiModelProperty("销售订单车辆sid") + private String busVinSid; + @ApiModelProperty("车辆sid") + private String vinSid; + @ApiModelProperty("车架号") + private String vinNo; + @ApiModelProperty("资方sid") + private String bankSid; + @ApiModelProperty("资方名称") + private String bankName; + @ApiModelProperty("贷款人sid") + private String borrowSid; + @ApiModelProperty("贷款人") + private String borrowName; + + @ApiModelProperty("放款金额:应放") + private String makeLoan; + @ApiModelProperty("主产品厂家贴息:预计") + private BigDecimal makeDiscount; + @ApiModelProperty("其他融厂家贴息:预计") + private BigDecimal makeOtherDiscount; + @ApiModelProperty("固定贷款保证金:预计") + private BigDecimal makeLoanMargin; + @ApiModelProperty("意外险:已收") + private BigDecimal receivedPremium; + + +} diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiff/LoanDiffMapper.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiff/LoanDiffMapper.java new file mode 100644 index 0000000000..49ef8359fd --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiff/LoanDiffMapper.java @@ -0,0 +1,24 @@ +package com.yxt.anrui.riskcenter.biz.loandiff; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.yxt.anrui.riskcenter.api.loandiff.LoanDiff; +import com.yxt.anrui.riskcenter.api.loandiff.LoanDiffVo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.Map; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/11/13 + **/ +@Mapper +public interface LoanDiffMapper extends BaseMapper { + int updateFlowFiled(Map map); + + IPage listPageVo(IPage page, @Param(Constants.WRAPPER)QueryWrapper qw); +} diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiff/LoanDiffMapper.xml b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiff/LoanDiffMapper.xml new file mode 100644 index 0000000000..0156969b1c --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiff/LoanDiffMapper.xml @@ -0,0 +1,39 @@ + + + + + UPDATE loan_diff + SET nodeState=#{nodeState} + + , nodeId=#{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/loandiff/LoanDiffRest.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiff/LoanDiffRest.java new file mode 100644 index 0000000000..158f2ee9c3 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiff/LoanDiffRest.java @@ -0,0 +1,81 @@ +package com.yxt.anrui.riskcenter.biz.loandiff; + +import cn.hutool.core.bean.BeanUtil; +import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables; +import com.yxt.anrui.riskcenter.api.loandiff.LoanDiffFeign; +import com.yxt.anrui.riskcenter.api.loandiff.LoanDiffQuery; +import com.yxt.anrui.riskcenter.api.loandiff.LoanDiffVo; +import com.yxt.anrui.riskcenter.api.loandiff.LoanDiffsDto; +import com.yxt.anrui.riskcenter.api.loandiff.flowable.*; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/11/13 + **/ +@RestController +@RequestMapping("v1/LoanDiff") +public class LoanDiffRest implements LoanDiffFeign { + + @Autowired + private LoanDiffService loanDiffService; + + + @Override + public ResultBean save(LoanDiffsDto dto) { + return loanDiffService.saveDiff(dto); + } + + @Override + public ResultBean> listPage(PagerQuery pq) { + ResultBean> rb = ResultBean.fireFail(); + PagerVo pv = loanDiffService.listPageVo(pq); + return rb.success().setData(pv); + } + + @Override + public ResultBean submitDiffApply(SubmitDiffDto dto) { + return loanDiffService.submitDiffApply(dto); + } + + @Override + public ResultBean complete(DiffCompleteDto query) { + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + bv.setModelId(""); + return loanDiffService.complete(bv); + } + + @Override + public ResultBean> getPreviousNodesForReject(DiffApplyNodeQuery query) { + return loanDiffService.getPreviousNodesForReject(query); + } + + @Override + public ResultBean> getNextNodesForSubmit(DiffApplyNodeQuery query) { + return loanDiffService.getNextNodesForSubmit(query); + } + + @Override + public ResultBean taskReject(DiffApplyTaskQuery query) { + return loanDiffService.taskReject(query); + } + + @Override + public ResultBean revokeProcess(DiffApplyTaskQuery query) { + return loanDiffService.revokeProcess(query); + } + + @Override + public ResultBean breakProcess(DiffApplyTaskQuery query) { + return loanDiffService.breakProcess(query); + } +} diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiff/LoanDiffService.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiff/LoanDiffService.java new file mode 100644 index 0000000000..03a077f28d --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiff/LoanDiffService.java @@ -0,0 +1,429 @@ +package com.yxt.anrui.riskcenter.biz.loandiff; + +import cn.hutool.core.bean.BeanUtil; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.google.common.util.concurrent.ThreadFactoryBuilder; +import com.yxt.anrui.flowable.api.flow.FlowableFeign; +import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo; +import com.yxt.anrui.flowable.api.flow2.FlowFeign; +import com.yxt.anrui.flowable.api.flowtask.FlowTaskFeign; +import com.yxt.anrui.flowable.api.flowtask.FlowTaskVo; +import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo; +import com.yxt.anrui.flowable.api.utils.ProcDefEnum; +import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables; +import com.yxt.anrui.riskcenter.api.loandiff.LoanDiff; +import com.yxt.anrui.riskcenter.api.loandiff.LoanDiffQuery; +import com.yxt.anrui.riskcenter.api.loandiff.LoanDiffVo; +import com.yxt.anrui.riskcenter.api.loandiff.LoanDiffsDto; +import com.yxt.anrui.riskcenter.api.loandiff.flowable.*; +import com.yxt.anrui.riskcenter.api.loandiffdetails.LoanDiffDetails; +import com.yxt.anrui.riskcenter.api.loandiffdetails.LoanDiffDetailssDto; +import com.yxt.anrui.riskcenter.api.loantemplate.LoanTemplate; +import com.yxt.anrui.riskcenter.api.loantemplate.LoanTemplateQuery; +import com.yxt.anrui.riskcenter.api.loantemplate.LoanTemplateVo; +import com.yxt.anrui.riskcenter.api.loantemplate.flowable.SubmitTemplateDto; +import com.yxt.anrui.riskcenter.api.loantemplate.flowable.TemplateApplyNodeVo; +import com.yxt.anrui.riskcenter.biz.loandiffdetails.LoanDiffDetailsService; +import com.yxt.anrui.riskcenter.biz.loantemplate.LoanTemplateMapper; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.base.utils.StringUtils; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.messagecenter.api.message.MessageFeign; +import com.yxt.messagecenter.api.message.MessageFlowVo; +import com.yxt.messagecenter.api.message.MessageFlowableQuery; +import org.apache.tomcat.util.threads.ThreadPoolExecutor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.*; +import java.util.concurrent.*; +import java.util.stream.Collectors; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/11/13 + **/ +@Service +public class LoanDiffService extends MybatisBaseService { + + @Autowired + private FlowableFeign flowableFeign; + + @Autowired + private FlowFeign flowFeign; + + @Autowired + private FlowTaskFeign flowTaskFeign; + @Autowired + private MessageFeign messageFeign; + @Autowired + private LoanDiffDetailsService loanDiffDetailsService; + + /** + * 判断提交的流程是否被允许 + * + * @param dto + * @return + */ + private synchronized int submitBusinessData(SubmitDiffDto dto, LoanDiff loanDiff) { + int r = 0; + if (StringUtils.isBlank(dto.getSid())) { + r = 1; + } else { + if (loanDiff != null) { + String businessTaskId = loanDiff.getTaskId(); + if (StringUtils.isBlank(businessTaskId) && StringUtils.isBlank(dto.getTaskId())) { + //新提交 + r = 1; + } else if (StringUtils.isNotBlank(businessTaskId) && businessTaskId.equals(dto.getTaskId())) { + //二次提交//只有数据一致的时候才能进行下一步 + r = 2; + } + } else { + r = 3; + } + + } + return r; + } + + public ResultBean submitDiffApply(SubmitDiffDto dto) { + ResultBean rb = ResultBean.fireFail(); + LoanDiff loanDiff = fetchBySid(dto.getSid()); + int r = submitBusinessData(dto, loanDiff); + if (r == 3) { + return rb.setMsg("该申请不存在"); + } + if (r == 0) { + return rb.setMsg("操作失败!提交的数据不一致"); + } + ResultBean resultBean = updateApply(dto); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + + String businessSid = resultBean.getData(); + loanDiff = fetchBySid(businessSid); + //创建BusinessVariables实体对象 + BusinessVariables bv = new BusinessVariables(); + //流程中的参数赋值、若有网关,则赋值网关中判断的字段。 + Map variables = new HashMap<>(); + Map appMap = new HashMap<>(); + appMap.put("sid", businessSid); + variables.put("app", appMap); + //用户的部门全路径sid + bv.setOrgSidPath(loanDiff.getOrgSidPath()); + bv.setBusinessSid(businessSid); + bv.setUserSid(dto.getUserSid()); + bv.setFormVariables(variables); + if (r == 1) { + //ToDo:流程定义id + bv.setModelId(ProcDefEnum.LOANDIFFAPPLY.getProDefId()); + ResultBean voResultBean = flowFeign.startProcess(bv); + if (!voResultBean.getSuccess()) { + return rb.setMsg(voResultBean.getMsg()); + } + UpdateFlowFieldVo ufVo = voResultBean.getData(); + updateFlowFiled(BeanUtil.beanToMap(ufVo)); + loanDiff = fetchBySid(businessSid); + //==================================添加线程 + try { + ThreadFactory namedThreadFactory = new ThreadFactoryBuilder() + .setNameFormat("demo-pool-%d").build(); + ExecutorService pool = new ThreadPoolExecutor(2, 100, + 0L, TimeUnit.MILLISECONDS, + new LinkedBlockingQueue(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy()); + LoanDiff finalLoanDiff = loanDiff; + Future future1 = pool.submit(() -> { + //极光推送 + MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); + MessageFlowVo messageFlowVo = new MessageFlowVo(); + BeanUtil.copyProperties(ufVo, messageFlowVo); + messageFlowableQuery.setUfVo(messageFlowVo); + messageFlowableQuery.setAppMap(appMap); + messageFlowableQuery.setBusinessSid(businessSid); + messageFlowableQuery.setModuleName("放款差额确认申请"); + messageFlowableQuery.setMsgContent(finalLoanDiff.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); + messageFlowableQuery.setMsgTitle("放款差额确认"); + ResultBean stringResultBean = messageFeign.pushMessage(messageFlowableQuery); + }); + } catch (Exception e) { + e.printStackTrace(); + } + //==================================添加线程 + return voResultBean; + } + if (r == 2) { + // ToDo:驳回到发起人后再次提交 + if (StringUtils.isBlank(dto.getInstanceId())) { + return rb.setMsg("参数错误:instanceId"); + } + bv.setTaskId(loanDiff.getTaskId()); + bv.setTaskDefKey(loanDiff.getNodeId()); + bv.setComment("重新提交"); + bv.setInstanceId(dto.getInstanceId()); + return complete(bv); + } + return rb; + } + + private ResultBean updateApply(SubmitDiffDto dto) { + return null; + } + + public ResultBean complete(BusinessVariables bv) { + ResultBean rb = ResultBean.fireFail(); + String businessSid = bv.getBusinessSid(); + LoanDiff loanDiff = fetchBySid(businessSid); + Map variables = new HashMap<>(); + Map appMap = new HashMap<>(); + appMap.put("sid", businessSid); + variables.put("app", appMap); + bv.setFormVariables(variables); + bv.setOrgSidPath(loanDiff.getOrgSidPath()); + bv.setModelId(loanDiff.getProcDefId()); + if (bv.getTaskId().equals(loanDiff.getTaskId())) { + ResultBean resultBean = flowFeign.handleProsess(bv); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + UpdateFlowFieldVo ufVo = resultBean.getData(); + updateFlowFiled(BeanUtil.beanToMap(resultBean.getData())); + if ("Event_end".equals(resultBean.getData().getTaskDefKey())) { + + } else { + //极光推送 + loanDiff = fetchBySid(businessSid); + MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); + MessageFlowVo messageFlowVo = new MessageFlowVo(); + BeanUtil.copyProperties(ufVo, messageFlowVo); + messageFlowVo.setProcDefId(loanDiff.getProcDefId()); + messageFlowVo.setProcInsId(loanDiff.getProcInstId()); + messageFlowableQuery.setUfVo(messageFlowVo); + messageFlowableQuery.setAppMap(appMap); + messageFlowableQuery.setBusinessSid(businessSid); + messageFlowableQuery.setModuleName("放款差额确认申请"); + messageFlowableQuery.setMsgContent(loanDiff.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); + messageFlowableQuery.setMsgTitle("放款差额确认"); + ResultBean stringResultBean = messageFeign.pushMessage(messageFlowableQuery); + } + return rb.success().setData(resultBean.getData()); + } else { + return rb.setMsg("操作失败!提交的数据不一致"); + } + } + + public ResultBean> getPreviousNodesForReject(DiffApplyNodeQuery query) { + ResultBean> rb = ResultBean.fireFail(); + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + LoanDiff loanDiff = fetchBySid(query.getBusinessSid()); + bv.setModelId(loanDiff.getProcDefId()); + ResultBean>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv); + //判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给TemplateApplyNodeVo + List voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), DiffApplyNodeVo.class)).collect(Collectors.toList()); + return rb.success().setData(voList); + } + + public ResultBean> getNextNodesForSubmit(DiffApplyNodeQuery query) { + ResultBean> rb = ResultBean.fireFail(); + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + LoanDiff loanDiff = fetchBySid(query.getBusinessSid()); + bv.setModelId(loanDiff.getProcDefId()); + ResultBean>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv); + //判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给TemplateApplyNodeVo + List voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), DiffApplyNodeVo.class)).collect(Collectors.toList()); + return rb.success().setData(voList); + } + + public ResultBean taskReject(DiffApplyTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + String businessSid = query.getBusinessSid(); + LoanDiff loanDiff = fetchBySid(businessSid); + if (loanDiff == null) { + return rb.setMsg("该申请不存在"); + } + String businessTaskId = loanDiff.getTaskId(); + if (StringUtils.isNotBlank(businessTaskId)) { + if (businessTaskId.equals(query.getTaskId())) { + if (StringUtils.isBlank(query.getComment())) { + return rb.setMsg("请填写意见"); + } + if (StringUtils.isBlank(query.getUserSid())) { + return rb.setMsg("参数错误:userSid"); + } + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + Map variables = new HashMap<>(); + Map appMap = new HashMap<>(); + appMap.put("sid", businessSid); + variables.put("app", appMap); + ResultBean resultBean = flowableFeign.taskReject(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + UpdateFlowFieldVo ufVo = resultBean.getData(); + Map map = BeanUtil.beanToMap(ufVo); + //更新业务中的流程相关的参数 + updateFlowFiled(map); + //极光推送 + loanDiff = fetchBySid(businessSid); + MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); + MessageFlowVo messageFlowVo = new MessageFlowVo(); + BeanUtil.copyProperties(ufVo, messageFlowVo); + String procId = loanDiff.getProcInstId(); + messageFlowVo.setProcInsId(procId); + messageFlowVo.setProcDefId(loanDiff.getProcDefId()); + messageFlowableQuery.setUfVo(messageFlowVo); + messageFlowableQuery.setAppMap(appMap); + messageFlowableQuery.setBusinessSid(businessSid); + messageFlowableQuery.setModuleName("放款差额确认申请"); + ResultBean> listResultBean = flowTaskFeign.getLatestTasks(procId); + String nextName = listResultBean.getData().get(0).getName_(); + String nextNodeUserSids = listResultBean.getData().get(0).getASSIGNEE_(); + if ("发起申请".equals(nextName)) { + messageFlowableQuery.setMsgContent("您提交的" + messageFlowableQuery.getModuleName() + "已被驳回,请重新提交"); + } else { + messageFlowableQuery.setMsgContent(loanDiff.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); + } + + messageFlowableQuery.setMsgTitle("放款差额确认"); + ResultBean stringResultBean = messageFeign.pushMessage(messageFlowableQuery); + return rb.success(); + } + } + return rb.setMsg("操作失败!提交的数据不一致!"); + } + + public ResultBean revokeProcess(DiffApplyTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + if (StringUtils.isBlank(query.getUserSid())) { + return rb.setMsg("参数错误:userSid"); + } + LoanDiff loanDiff = fetchBySid(query.getBusinessSid()); + String businessTaskId = loanDiff.getTaskId(); + if (StringUtils.isNotBlank(businessTaskId)) { + if (businessTaskId.equals(query.getTaskId())) { + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + ResultBean resultBean = flowableFeign.revokeProcess(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + updateFlowFiled(BeanUtil.beanToMap(resultBean.getData())); + return rb.success().setData(resultBean.getData()); + } + } + return rb.setMsg("操作失败,提交的数据不一致!"); + } + + public ResultBean breakProcess(DiffApplyTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + if (StringUtils.isBlank(query.getInstanceId())) { + return rb.setMsg("参数错误:instanceId"); + } + if (StringUtils.isBlank(query.getUserSid())) { + return rb.setMsg("参数错误:userSid"); + } + if (StringUtils.isBlank(query.getComment())) { + return rb.setMsg("请填写意见"); + } + LoanDiff loanDiff = fetchBySid(query.getBusinessSid()); + String businessTaskId = loanDiff.getTaskId(); + if (StringUtils.isNotBlank(businessTaskId)) { + if (query.getUserSid().equals(loanDiff.getCreateBySid())) { + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + ResultBean resultBean = flowableFeign.breakProcess(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + Map map = BeanUtil.beanToMap(resultBean.getData()); + updateFlowFiled(map); + return rb.success().setData(resultBean.getData()); + } else { + if (businessTaskId.equals(query.getTaskId())) { + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + ResultBean resultBean = flowableFeign.breakProcess(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + Map map = BeanUtil.beanToMap(resultBean.getData()); + updateFlowFiled(map); + return rb.success().setData(resultBean.getData()); + } + } + + } + return rb.setMsg("操作失败!提交的数据不一致!"); + } + + /** + * 更新流程的状态 + * + * @param map + * @return + */ + private int updateFlowFiled(Map map) { + return baseMapper.updateFlowFiled(map); + } + + public PagerVo listPageVo(PagerQuery pq) { + LoanDiffQuery query = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + if (query != null) { + //分公司 + if (StringUtils.isNotBlank(query.getUseOrgName())) { + qw.like("ld.useOrgName", query.getUseOrgName()); + } + //申请部门 + if (StringUtils.isNotBlank(query.getCreateDept())) { + qw.like("ld.createDept", query.getCreateDept()); + } + if (StringUtils.isNotBlank(query.getCreateByName())) { + qw.like("ld.createByName", query.getCreateByName()); + } + //数据授权 + + + //申请日期开始时间 + String createTimeStart = query.getCreateTimeStart(); + //申请日期结束时间 + String createTimeEnd = query.getCreateTimeEnd(); + qw.apply(StringUtils.isNotBlank(createTimeStart), "date_format (ld.createTime,'%Y-%m-%d') >= date_format('" + createTimeStart + "','%Y-%m-%d')"). + apply(StringUtils.isNotBlank(createTimeEnd), "date_format (ld.createTime,'%Y-%m-%d') <= date_format('" + createTimeEnd + "','%Y-%m-%d')" + ); + + } + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.listPageVo(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public ResultBean saveDiff(LoanDiffsDto dto) { + ResultBean rb = ResultBean.fireFail(); + LoanDiff loanDiff = new LoanDiff(); + BeanUtil.copyProperties(dto, loanDiff); + List loanDiffDetailssDtos = dto.getLoanDiffDetailssDtos(); + loanDiffDetailssDtos.removeAll(Collections.singleton(null)); + if (!loanDiffDetailssDtos.isEmpty()) { + for (int i = 0; i < loanDiffDetailssDtos.size(); i++) { + LoanDiffDetailssDto loanDiffDetailssDto = loanDiffDetailssDtos.get(i); + LoanDiffDetails loanDiffDetails = new LoanDiffDetails(); + BeanUtil.copyProperties(loanDiffDetailssDto, loanDiffDetails); + loanDiffDetailsService.insert(loanDiffDetails); + } + } + baseMapper.insert(loanDiff); + return rb.success(); + } +} diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiffdetails/LoanDiffDetailsMapper.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiffdetails/LoanDiffDetailsMapper.java new file mode 100644 index 0000000000..80fb6ede34 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiffdetails/LoanDiffDetailsMapper.java @@ -0,0 +1,14 @@ +package com.yxt.anrui.riskcenter.biz.loandiffdetails; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.yxt.anrui.riskcenter.api.loandiffdetails.LoanDiffDetails; +import org.apache.ibatis.annotations.Mapper; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/11/14 + **/ +@Mapper +public interface LoanDiffDetailsMapper extends BaseMapper { +} diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiffdetails/LoanDiffDetailsMapper.xml b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiffdetails/LoanDiffDetailsMapper.xml new file mode 100644 index 0000000000..b8f8f47955 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiffdetails/LoanDiffDetailsMapper.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiffdetails/LoanDiffDetailsRest.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiffdetails/LoanDiffDetailsRest.java new file mode 100644 index 0000000000..fd9e9e3257 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiffdetails/LoanDiffDetailsRest.java @@ -0,0 +1,9 @@ +package com.yxt.anrui.riskcenter.biz.loandiffdetails; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/11/14 + **/ +public class LoanDiffDetailsRest { +} diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiffdetails/LoanDiffDetailsService.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiffdetails/LoanDiffDetailsService.java new file mode 100644 index 0000000000..a8c83a0caa --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loandiffdetails/LoanDiffDetailsService.java @@ -0,0 +1,16 @@ +package com.yxt.anrui.riskcenter.biz.loandiffdetails; + +import com.yxt.anrui.riskcenter.api.loandiff.LoanDiff; +import com.yxt.anrui.riskcenter.api.loandiffdetails.LoanDiffDetails; +import com.yxt.anrui.riskcenter.biz.loandiff.LoanDiffMapper; +import com.yxt.common.base.service.MybatisBaseService; +import org.springframework.stereotype.Service; + +/** + * @description: + * @author: dimengzhe + * @date: 2023/11/14 + **/ +@Service +public class LoanDiffDetailsService extends MybatisBaseService { +} diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantemplate/LoanTemplateService.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantemplate/LoanTemplateService.java index 20a2877ded..173747346c 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantemplate/LoanTemplateService.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantemplate/LoanTemplateService.java @@ -16,6 +16,7 @@ import com.yxt.anrui.buscenter.api.busvehicledatahandover.BusDataListPdfVo; import com.yxt.anrui.buscenter.api.busvehicledatahandover.BusVehicleDataHandoverPdfVo; import com.yxt.anrui.flowable.api.flow.FlowableFeign; import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo; +import com.yxt.anrui.flowable.api.flow2.FlowFeign; import com.yxt.anrui.flowable.api.flowtask.FlowTaskFeign; import com.yxt.anrui.flowable.api.flowtask.FlowTaskVo; import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo; @@ -99,6 +100,8 @@ public class LoanTemplateService extends MybatisBaseService voResultBean = flowableFeign.startProcess(bv); + ResultBean voResultBean = flowFeign.startProcess(bv); if (!voResultBean.getSuccess()) { return rb.setMsg(voResultBean.getMsg()); } @@ -399,7 +402,7 @@ public class LoanTemplateService extends MybatisBaseService resultBean = flowableFeign.handleProsess(bv); + ResultBean resultBean = flowFeign.handleProsess(bv); if (!resultBean.getSuccess()) { return rb.setMsg(resultBean.getMsg()); } @@ -911,7 +914,7 @@ public class LoanTemplateService extends MybatisBaseService templateQuotationCreatePdf(LoanTemplateQuotationQuery query) { ResultBean rb = ResultBean.fireFail(); - // String template = "/template/"; + // String template = "/template/"; String s = templateQuotation(query); String filePath = s.substring(docPdfComponent.getUploadTemplateUrl().length()); return rb.success().setData(filePath); @@ -1009,13 +1012,13 @@ public class LoanTemplateService extends MybatisBaseService qw = new QueryWrapper<>(); if (query != null) { - if(StringUtils.isNotBlank(query.getOrgPath())){ + if (StringUtils.isNotBlank(query.getOrgPath())) { String useOrgSid = sysStaffOrgFeign.getOrgSidByPath(query.getOrgPath()).getData(); - qw.eq("lfp.useOrgSid",useOrgSid); + qw.eq("lfp.useOrgSid", useOrgSid); } // qw.eq("lfp.orgSidPath", query.getOrgPath()); qw.eq("lfp.nodeState", "已办结"); - qw.eq("lfp.useState",0); + qw.eq("lfp.useState", 0); } IPage page = PagerUtil.queryToPage(pagerQuery); IPage pagging = baseMapper.getCustomizedList(page, qw, query.getName());