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 2f3d374370..38fd50bfab 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 @@ -63,6 +63,7 @@ public enum ProcDefEnum { BUSSOLUTIONSCHANGE("金融方案变更", "process_x6edjfoj:2:6055008"), LOANBUCKLEAPPLLY("划扣申请", "process_50xtaucg:1:6757504"), COLLECTIONPAYMENT("代收代付申请", "process_6upfyv8i:1:6972504"), + BEPADSINCEREAPPLY("逾期垫款申请", "process_h1mcb548:1:6712504"), /******************************测试流程id*********************************************/ diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbepadsincereapply/LoanBePadsincereApplyFeign.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbepadsincereapply/LoanBePadsincereApplyFeign.java index 65a689b7c3..e7732a79bd 100644 --- a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbepadsincereapply/LoanBePadsincereApplyFeign.java +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbepadsincereapply/LoanBePadsincereApplyFeign.java @@ -25,6 +25,8 @@ *********************************************************/ package com.yxt.anrui.riskcenter.api.loanbepadsincereapply; +import com.yxt.anrui.buscenter.api.busvalcustfiling.flowable.*; +import com.yxt.anrui.riskcenter.api.loanbepadsincereapply.flowable.*; import com.yxt.anrui.riskcenter.api.loanbepadsincereveh.LoanBePadsincereVehDetailsVo; import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.RepaymentExcelInfo; import io.swagger.annotations.Api; @@ -33,10 +35,12 @@ import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.vo.PagerVo; import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.cloud.openfeign.SpringQueryMap; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; +import javax.validation.Valid; import java.io.IOException; import java.text.ParseException; import java.util.List; @@ -86,4 +90,32 @@ public interface LoanBePadsincereApplyFeign { @PostMapping("/getExcelInfo") @ResponseBody public ResultBean> getExcelInfo(@RequestParam(value = "file") MultipartFile file, HttpServletRequest request) throws IOException, ParseException; + + @ApiOperation("提交审批流程") + @PostMapping("/submit") + public ResultBean submit(@RequestBody @Valid SubmitLoanBePadsincereDto dto); + + @ApiOperation(value = "办理(同意)") + @PostMapping("/complete") + public ResultBean complete(@Valid @RequestBody LoanBePadsincereCompleteDto query); + + @ApiOperation(value = "获取上一个环节") + @GetMapping(value = "/getPreviousNodesForReject") + ResultBean> getPreviousNodesForReject(@Valid @SpringQueryMap LoanBePadsincereNodeQuery query); + + @ApiOperation(value = "获取下一个环节") + @GetMapping(value = "/getNextNodesForSubmit") + ResultBean> getNextNodesForSubmit(@Valid @SpringQueryMap LoanBePadsincereNodeQuery query); + + @ApiOperation(value = "驳回任务") + @PostMapping(value = "/reject") + public ResultBean reject(@Valid @RequestBody LoanBePadsincereTaskQuery query); + + @ApiOperation(value = "撤回流程") + @PostMapping(value = "/revokeProcess") + public ResultBean revokeProcess(@Valid @RequestBody LoanBePadsincereTaskQuery query); + + @ApiOperation(value = "终止任务") + @PostMapping(value = "/breakProcess") + public ResultBean breakProcess(@Valid @RequestBody LoanBePadsincereTaskQuery query); } \ No newline at end of file diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbepadsincereapply/flowable/LoanBePadsincereCompleteDto.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbepadsincereapply/flowable/LoanBePadsincereCompleteDto.java new file mode 100644 index 0000000000..ce9db365b1 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbepadsincereapply/flowable/LoanBePadsincereCompleteDto.java @@ -0,0 +1,37 @@ +package com.yxt.anrui.riskcenter.api.loanbepadsincereapply.flowable; + +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Author dimengzhe + * @Date 2022/9/6 14:57 + * @Description + */ +@Data +public class LoanBePadsincereCompleteDto implements Dto { + private static final long serialVersionUID = 6378752532534735663L; + + @ApiModelProperty(value = "用户sid") + private String userSid; + @ApiModelProperty(value = "节点id") + @NotBlank(message = "参数错误:taskDefKey") + private String taskDefKey; + @ApiModelProperty(value = "任务id") + @NotBlank(message = "参数错误:taskId") + private String taskId; + @ApiModelProperty(value = "流程id(PC)") + private String instanceId; + @ApiModelProperty(value = "流程id(移动)") + private String procInsId; + @ApiModelProperty(value = "意见") + private String comment; + @ApiModelProperty(value = "业务sid") + @NotBlank(message = "参数错误:businessSid") + private String businessSid; + + private String orgPath; +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbepadsincereapply/flowable/LoanBePadsincereNodeQuery.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbepadsincereapply/flowable/LoanBePadsincereNodeQuery.java new file mode 100644 index 0000000000..aa3d40e49d --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbepadsincereapply/flowable/LoanBePadsincereNodeQuery.java @@ -0,0 +1,25 @@ +package com.yxt.anrui.riskcenter.api.loanbepadsincereapply.flowable; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Author dimengzhe + * @Date 2022/9/6 15:04 + * @Description + */ +@Data +public class LoanBePadsincereNodeQuery implements Query { + private static final long serialVersionUID = 9117613683840483366L; + + @ApiModelProperty(value = "环节定义id") + @NotBlank(message = "参数错误:taskDefKey") + private String taskDefKey; + @ApiModelProperty(value = "业务sid") + private String businessSid; + @ApiModelProperty(value = "0 上一环节 1下一环节") + private Integer next; +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbepadsincereapply/flowable/LoanBePadsincereNodeVo.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbepadsincereapply/flowable/LoanBePadsincereNodeVo.java new file mode 100644 index 0000000000..a4c1f64613 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbepadsincereapply/flowable/LoanBePadsincereNodeVo.java @@ -0,0 +1,26 @@ +package com.yxt.anrui.riskcenter.api.loanbepadsincereapply.flowable; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @Author dimengzhe + * @Date 2022/9/6 15:03 + * @Description + */ +@Data +public class LoanBePadsincereNodeVo implements Vo { + private static final long serialVersionUID = -833419512294877848L; + + @ApiModelProperty(value = "节点名称") + private String name; + @ApiModelProperty(value = "节点id") + private String id; + @ApiModelProperty(value = "审批组") + private List candidateGroups; + @ApiModelProperty(value = "是否是最后环节") + private String endTask; +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbepadsincereapply/flowable/LoanBePadsincereTaskQuery.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbepadsincereapply/flowable/LoanBePadsincereTaskQuery.java new file mode 100644 index 0000000000..a010a9e4ca --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbepadsincereapply/flowable/LoanBePadsincereTaskQuery.java @@ -0,0 +1,48 @@ +package com.yxt.anrui.riskcenter.api.loanbepadsincereapply.flowable; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Author dimengzhe + * @Date 2022/9/6 15:06 + * @Description + */ +@Data +public class LoanBePadsincereTaskQuery implements Query { + private static final long serialVersionUID = 1288615499873178778L; + + /** + * 终止、驳回、撤回 + */ + @ApiModelProperty("任务Id") + @NotBlank(message = "参数错误:taskId") + private String taskId; + /** + * 终止、驳回、撤回 + */ + @ApiModelProperty("业务sid") + @NotBlank(message = "参数错误:businessSid") + private String businessSid; + /** + * 终止、驳回 + */ + @ApiModelProperty("任务意见") + private String comment; + /** + * 终止、撤回、驳回 + */ + @ApiModelProperty("用户Sid") + private String userSid; + /** + * 终止 + */ + @ApiModelProperty("流程实例Id(PC)") + private String instanceId; + + @ApiModelProperty("流程实例Id(移动)") + private String procInsId; +} diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbepadsincereapply/flowable/SubmitLoanBePadsincereDto.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbepadsincereapply/flowable/SubmitLoanBePadsincereDto.java new file mode 100644 index 0000000000..afacf51c05 --- /dev/null +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanbepadsincereapply/flowable/SubmitLoanBePadsincereDto.java @@ -0,0 +1,25 @@ +package com.yxt.anrui.riskcenter.api.loanbepadsincereapply.flowable; + +import com.yxt.anrui.buscenter.api.busvalcustfiling.BusValcustFilingDto; +import com.yxt.anrui.riskcenter.api.loanbepadsincereapply.LoanBePadsincereApplyDto; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author liuguohui + * @version 1.0 + * @description + * @date 2022/04/13 + */ +@ApiModel("提交") +@Data +public class SubmitLoanBePadsincereDto extends LoanBePadsincereApplyDto { + + @ApiModelProperty("意见") + private String comment; + @ApiModelProperty("流程实例id") + private String instanceId; + @ApiModelProperty("任务id") + private String taskId; +} diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbepadsincereapply/LoanBePadsincereApplyMapper.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbepadsincereapply/LoanBePadsincereApplyMapper.java index e6c6934652..f6749a33e1 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbepadsincereapply/LoanBePadsincereApplyMapper.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbepadsincereapply/LoanBePadsincereApplyMapper.java @@ -36,6 +36,7 @@ import com.yxt.anrui.riskcenter.api.loanbepadsincereapply.LoanBePadsincereApply; import com.yxt.anrui.riskcenter.api.loanbepadsincereapply.LoanBePadsincereApplyVo; import java.util.List; +import java.util.Map; /** * Project: anrui-riskcenter(垫款申请)
@@ -62,4 +63,6 @@ public interface LoanBePadsincereApplyMapper extends BaseMapper selectListVo(); + + int updateFlowFiled(Map map); } \ No newline at end of file diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbepadsincereapply/LoanBePadsincereApplyMapper.xml b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbepadsincereapply/LoanBePadsincereApplyMapper.xml index 0930b216f9..1b18d20732 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbepadsincereapply/LoanBePadsincereApplyMapper.xml +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbepadsincereapply/LoanBePadsincereApplyMapper.xml @@ -10,4 +10,19 @@ + + + UPDATE loan_be_padsincere_apply + SET nodeState=#{nodeState}, nodeSid=#{taskDefKey} + + , procDefId=#{procDefId} + + + , procInstSid=#{procInsId} + + + , taskId=#{taskId} + + WHERE sid=#{sid} + \ No newline at end of file diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbepadsincereapply/LoanBePadsincereApplyRest.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbepadsincereapply/LoanBePadsincereApplyRest.java index 41946e51c0..4077bcc8b6 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbepadsincereapply/LoanBePadsincereApplyRest.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbepadsincereapply/LoanBePadsincereApplyRest.java @@ -25,9 +25,13 @@ *********************************************************/ package com.yxt.anrui.riskcenter.biz.loanbepadsincereapply; +import cn.hutool.core.bean.BeanUtil; import com.yxt.anrui.base.api.basevehicle.BaseVehicle; import com.yxt.anrui.base.api.basevehiclecertificate.BaseVehicleCertificate; +import com.yxt.anrui.flowable.api.utils.ProcDefEnum; +import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables; import com.yxt.anrui.riskcenter.api.loanbepadsincereapply.*; +import com.yxt.anrui.riskcenter.api.loanbepadsincereapply.flowable.*; import com.yxt.anrui.riskcenter.api.loanbepadsincereveh.LoanBePadsincereVeh; import com.yxt.anrui.riskcenter.api.loanbepadsincereveh.LoanBePadsincereVehDetailsVo; import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.RepaymentExcelInfo; @@ -119,4 +123,42 @@ public class LoanBePadsincereApplyRest implements LoanBePadsincereApplyFeign { public ResultBean> getExcelInfo(MultipartFile file, HttpServletRequest request) throws IOException { return loanBePadsincereApplyService.getExcelInfo(file, request); } + + @Override + public ResultBean submit(SubmitLoanBePadsincereDto dto) { + return loanBePadsincereApplyService.submit(dto); + } + + @Override + public ResultBean complete(LoanBePadsincereCompleteDto query) { + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + bv.setModelId(ProcDefEnum.BEPADSINCEREAPPLY.getProDefId()); + return loanBePadsincereApplyService.complete(bv); + } + + @Override + public ResultBean> getPreviousNodesForReject(LoanBePadsincereNodeQuery query) { + return loanBePadsincereApplyService.getPreviousNodesForReject(query); + } + + @Override + public ResultBean> getNextNodesForSubmit(LoanBePadsincereNodeQuery query) { + return loanBePadsincereApplyService.getNextNodesForSubmit(query); + } + + @Override + public ResultBean reject(LoanBePadsincereTaskQuery query) { + return loanBePadsincereApplyService.reject(query); + } + + @Override + public ResultBean revokeProcess(LoanBePadsincereTaskQuery query) { + return loanBePadsincereApplyService.revokeProcess(query); + } + + @Override + public ResultBean breakProcess(LoanBePadsincereTaskQuery query) { + return loanBePadsincereApplyService.breakProcess(query); + } } diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbepadsincereapply/LoanBePadsincereApplyService.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbepadsincereapply/LoanBePadsincereApplyService.java index f78a00b725..84a40a729e 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbepadsincereapply/LoanBePadsincereApplyService.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanbepadsincereapply/LoanBePadsincereApplyService.java @@ -26,19 +26,34 @@ package com.yxt.anrui.riskcenter.biz.loanbepadsincereapply; 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.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrder; import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrderFeign; +import com.yxt.anrui.buscenter.api.busvalcustfiling.flowable.BusValcustFilingNodeVo; +import com.yxt.anrui.flowable.api.flow.FlowProcessMapQuery; +import com.yxt.anrui.flowable.api.flow.FlowableFeign; +import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo; +import com.yxt.anrui.flowable.api.flowtask.FlowTaskFeign; +import com.yxt.anrui.flowable.api.flowtask.FlowTaskVo; +import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo; +import com.yxt.anrui.flowable.api.utils.ProcDefEnum; +import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables; import com.yxt.anrui.portal.api.sysuser.PrivilegeQuery; import com.yxt.anrui.portal.api.sysuser.SysUserFeign; import com.yxt.anrui.riskcenter.api.loanbepadsincereapply.*; +import com.yxt.anrui.riskcenter.api.loanbepadsincereapply.flowable.LoanBePadsincereNodeQuery; +import com.yxt.anrui.riskcenter.api.loanbepadsincereapply.flowable.LoanBePadsincereNodeVo; +import com.yxt.anrui.riskcenter.api.loanbepadsincereapply.flowable.LoanBePadsincereTaskQuery; +import com.yxt.anrui.riskcenter.api.loanbepadsincereapply.flowable.SubmitLoanBePadsincereDto; import com.yxt.anrui.riskcenter.api.loanbepadsincereveh.LoanBePadsincereVehDetailsVo; -import com.yxt.anrui.riskcenter.api.loanrepaymenthistory.RepaymentExcelInfo; -import com.yxt.anrui.riskcenter.api.loanrepaymentschedule.LoanCreateScheduleVinsVo; import com.yxt.anrui.riskcenter.api.loanrepaymentschedule.LoanRepaymentScheduleDetailsVo; import com.yxt.anrui.riskcenter.biz.loanrepaymentplandetails.LoanRepaymentPlanDetailsService; import com.yxt.anrui.riskcenter.biz.loanrepaymentschedule.LoanRepaymentScheduleService; +import com.yxt.messagecenter.api.message.MessageFeign; +import com.yxt.messagecenter.api.message.MessageFlowVo; +import com.yxt.messagecenter.api.message.MessageFlowableQuery; import org.apache.commons.lang3.StringUtils; import com.yxt.common.base.service.MybatisBaseService; import com.yxt.common.base.utils.PagerUtil; @@ -60,13 +75,10 @@ import javax.servlet.http.HttpServletRequest; import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.math.BigDecimal; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import java.util.regex.Matcher; -import java.util.regex.Pattern; +import java.util.*; +import java.util.stream.Collectors; /** * Project: anrui-riskcenter(垫款申请)
@@ -92,6 +104,12 @@ public class LoanBePadsincereApplyService extends MybatisBaseService listPageVo(PagerQuery pq) { LoanBePadsincereApplyQuery query = pq.getParams(); @@ -154,19 +172,22 @@ public class LoanBePadsincereApplyService extends MybatisBaseService saveOrUpdateDto(LoanBePadsincereApplyDto dto) { + ResultBean rb = ResultBean.fireFail(); String dtoSid = dto.getSid(); if (StringUtils.isBlank(dtoSid)) { - this.insertByDto(dto); - return; + String sid = this.insertByDto(dto); + return rb.success().setData(sid); } this.updateByDto(dto); + return rb.success().setData(dtoSid); } - public void insertByDto(LoanBePadsincereApplyDto dto) { + public String insertByDto(LoanBePadsincereApplyDto dto) { LoanBePadsincereApply entity = new LoanBePadsincereApply(); BeanUtil.copyProperties(dto, entity, "id", "sid"); baseMapper.insert(entity); + return entity.getSid(); } public void updateByDto(LoanBePadsincereApplyDto dto) { @@ -423,4 +444,291 @@ public class LoanBePadsincereApplyService extends MybatisBaseService resultBean = saveOrUpdateDto(dto); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + String businessSid = resultBean.getData(); + loanBePadsincereApply = fetchBySid(businessSid); + //创建BusinessVariables实体对象 + BusinessVariables bv = new BusinessVariables(); + //流程中的参数赋值、若有网关,则赋值网关中判断的字段。 + Map variables = new HashMap<>(); + //用户的部门全路径sid + bv.setOrgSidPath(loanBePadsincereApply.getOrgPath()); + //业务sid + bv.setBusinessSid(businessSid); + //用户sid + bv.setUserSid(loanBePadsincereApply.getCreateBySid()); + //若app移动端有此功能,则传递appMap参数 + Map appMap = new HashMap<>(); + appMap.put("sid", businessSid); + //需和移动端沟通业务sid保存的属性具体值:appMap中sid不是固定的。移动端提供具体字段。 + variables.put("app", appMap); + //流程定义id + bv.setModelId(ProcDefEnum.BEPADSINCEREAPPLY.getProDefId()); + bv.setFormVariables(variables); + if (r == 1) { + ResultBean voResultBean = flowableFeign.startProcess(bv); + UpdateFlowFieldVo ufVo = voResultBean.getData(); + updateFlowFiled(BeanUtil.beanToMap(ufVo)); + //极光推送 + loanBePadsincereApply = fetchBySid(businessSid); + MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); + MessageFlowVo messageFlowVo = new MessageFlowVo(); + BeanUtil.copyProperties(ufVo, messageFlowVo); + messageFlowableQuery.setUfVo(messageFlowVo); + messageFlowableQuery.setAppMap(appMap); + messageFlowableQuery.setBusinessSid(businessSid); + messageFlowableQuery.setModuleName("逾期垫款申请"); + messageFlowableQuery.setMsgContent(loanBePadsincereApply.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); + messageFlowableQuery.setMsgTitle("逾期垫款申请"); + messageFeign.pushMessage(messageFlowableQuery); + return voResultBean; + } + if (r == 2) { + // ToDo:驳回到发起人后再次提交 + if (StringUtils.isBlank(dto.getInstanceId())) { + return rb.setMsg("参数错误:instanceId"); + } + bv.setTaskId(loanBePadsincereApply.getTaskId()); + bv.setTaskDefKey(loanBePadsincereApply.getNodeSid()); + bv.setComment(StringUtils.isNotBlank(dto.getComment()) ? dto.getComment() : "重新提交"); + bv.setInstanceId(dto.getInstanceId()); + return complete(bv); + } + return rb; + } + + private synchronized int submitBusinessData(SubmitLoanBePadsincereDto dto, LoanBePadsincereApply loanBePadsincereApply) { + int r = 0; + if (StringUtils.isBlank(dto.getSid())) { + r = 1; + } else { + if (loanBePadsincereApply != null) { + String businessTaskId = loanBePadsincereApply.getTaskId(); + if (StringUtils.isBlank(businessTaskId) && StringUtils.isBlank(dto.getTaskId())) { + //新提交 + r = 1; + } else if (StringUtils.isNotBlank(businessTaskId) && businessTaskId.equals(dto.getTaskId())) { + //二次提交//只有数据一致的时候才能进行下一步 + r = 2; + } + } else { + r = 3; + } + + } + return r; + } + + private int updateFlowFiled(Map map) { + return baseMapper.updateFlowFiled(map); + } + + public ResultBean> getPreviousNodesForReject(LoanBePadsincereNodeQuery query) { + ResultBean> rb = ResultBean.fireFail(); + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + bv.setModelId(ProcDefEnum.BEPADSINCEREAPPLY.getProDefId()); + ResultBean>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv); + //判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo + List voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), LoanBePadsincereNodeVo.class)).collect(Collectors.toList()); + return rb.success().setData(voList); + } + + public ResultBean> getNextNodesForSubmit(LoanBePadsincereNodeQuery query) { + ResultBean> rb = ResultBean.fireFail(); + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + bv.setModelId(ProcDefEnum.BEPADSINCEREAPPLY.getProDefId()); + ResultBean>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv); + //判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo + List voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), LoanBePadsincereNodeVo.class)).collect(Collectors.toList()); + return rb.success().setData(voList); + } + + public ResultBean reject(LoanBePadsincereTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + String businessSid = query.getBusinessSid(); + LoanBePadsincereApply loanBePadsincereApply = fetchBySid(businessSid); + if (loanBePadsincereApply == null) { + return rb.setMsg("该申请不存在"); + } + String businessTaskId = loanBePadsincereApply.getTaskId(); + if (StringUtils.isNotBlank(businessTaskId)) { + if (businessTaskId.equals(query.getTaskId())) { + if (StringUtils.isBlank(query.getComment())) { + return rb.setMsg("请填写意见"); + } + if (StringUtils.isBlank(query.getUserSid())) { + return rb.setMsg("参数错误:userSid"); + } + FlowTaskVo flowTaskVo = new FlowTaskVo(); + BeanUtil.copyProperties(query, flowTaskVo); + Map variables = new HashMap<>(); + Map appMap = new HashMap<>(); + appMap.put("sid", businessSid); + variables.put("app", appMap); + flowTaskVo.setValues(variables); + ResultBean resultBean = flowableFeign.taskReject(flowTaskVo); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + UpdateFlowFieldVo ufVo = resultBean.getData(); + Map map = BeanUtil.beanToMap(ufVo); + //更新业务中的流程相关的参数 + updateFlowFiled(map); + //极光推送 + loanBePadsincereApply = fetchBySid(businessSid); + MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); + MessageFlowVo messageFlowVo = new MessageFlowVo(); + BeanUtil.copyProperties(ufVo, messageFlowVo); + String procId = loanBePadsincereApply.getProcInstSid(); + ufVo.setProcInsId(procId); + ufVo.setProcDefId(loanBePadsincereApply.getProcDefId()); + messageFlowableQuery.setUfVo(messageFlowVo); + messageFlowableQuery.setAppMap(appMap); + messageFlowableQuery.setBusinessSid(businessSid); + messageFlowableQuery.setModuleName("逾期垫款申请"); + ResultBean> listResultBean = flowTaskFeign.getLatestTasks(procId); + String nextNodeUserSids = listResultBean.getData().get(0).getASSIGNEE_(); + List receiveSidList = Arrays.asList(nextNodeUserSids.split(",")); + if (receiveSidList.size() == 1 && receiveSidList.get(0).equals(loanBePadsincereApply.getCreateBySid())) { + messageFlowableQuery.setMsgContent("您提交的" + messageFlowableQuery.getModuleName() + "已被驳回,请重新提交"); + } else { + messageFlowableQuery.setMsgContent(loanBePadsincereApply.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); + } + messageFlowableQuery.setMsgTitle("逾期垫款申请"); + messageFeign.pushMessage(messageFlowableQuery); + return rb.success(); + } + } + return rb.setMsg("操作失败!提交的数据不一致!"); + } + + public ResultBean revokeProcess(LoanBePadsincereTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + if (StringUtils.isBlank(query.getUserSid())) { + return rb.setMsg("参数错误:userSid"); + } + LoanBePadsincereApply loanBePadsincereApply = fetchBySid(query.getBusinessSid()); + String businessTaskId = loanBePadsincereApply.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 complete(BusinessVariables bv) { + ResultBean rb = ResultBean.fireFail(); + String businessSid = bv.getBusinessSid(); + LoanBePadsincereApply loanBePadsincereApply = fetchBySid(businessSid); + Map variables = new HashMap<>(); + Map appMap = new HashMap<>(); + appMap.put("sid", businessSid); + variables.put("app", appMap); + FlowProcessMapQuery flowProcessMapQuery = new FlowProcessMapQuery(); + if (StringUtils.isBlank(loanBePadsincereApply.getProcDefId())) { + flowProcessMapQuery.setProDefKey(bv.getModelId()); + } else { + flowProcessMapQuery.setProDefKey(loanBePadsincereApply.getProcDefId()); + } + flowProcessMapQuery.setVariables(variables); + variables = flowableFeign.getMap(flowProcessMapQuery).getData(); + //======================================= + bv.setFormVariables(variables); + bv.setOrgSidPath(loanBePadsincereApply.getOrgPath()); + if (bv.getTaskId().equals(loanBePadsincereApply.getTaskId())) { + ResultBean resultBean = flowableFeign.handleProsess(bv); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + UpdateFlowFieldVo ufVo = resultBean.getData(); + updateFlowFiled(BeanUtil.beanToMap(resultBean.getData())); + if ("Event_end".equals(resultBean.getData().getTaskDefKey())) { + } else { + //极光推送 + loanBePadsincereApply = fetchBySid(businessSid); + MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); + MessageFlowVo messageFlowVo = new MessageFlowVo(); + BeanUtil.copyProperties(ufVo, messageFlowVo); + ufVo.setProcDefId(loanBePadsincereApply.getProcDefId()); + ufVo.setProcInsId(loanBePadsincereApply.getProcInstSid()); + messageFlowableQuery.setUfVo(messageFlowVo); + messageFlowableQuery.setAppMap(appMap); + messageFlowableQuery.setBusinessSid(businessSid); + messageFlowableQuery.setModuleName("逾期垫款申请"); + messageFlowableQuery.setMsgContent(loanBePadsincereApply.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批"); + messageFlowableQuery.setMsgTitle("逾期垫款申请"); + messageFeign.pushMessage(messageFlowableQuery); + } + return rb.success().setData(resultBean.getData()); + } else { + return rb.setMsg("操作失败!提交的数据不一致"); + } + } + + public ResultBean breakProcess(LoanBePadsincereTaskQuery 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("请填写意见"); + } + LoanBePadsincereApply loanBePadsincereApply = fetchBySid(query.getBusinessSid()); + String businessTaskId = loanBePadsincereApply.getTaskId(); + if (StringUtils.isNotBlank(businessTaskId)) { + if (query.getUserSid().equals(loanBePadsincereApply.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("操作失败!提交的数据不一致!"); + } } \ No newline at end of file diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanhomevisitprep/LoanHomevisitPrepService.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanhomevisitprep/LoanHomevisitPrepService.java index 57ae848d3c..8992bdce7f 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanhomevisitprep/LoanHomevisitPrepService.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanhomevisitprep/LoanHomevisitPrepService.java @@ -362,10 +362,10 @@ public class LoanHomevisitPrepService extends MybatisBaseService filesList = new ArrayList<>(); //贷款人生成车辆买卖合同 - /*List xcmmContractUrls = commonContractFeign.xcmmContract(printConfirmDto).getData(); + List xcmmContractUrls = commonContractFeign.xcmmContract(printConfirmDto).getData(); for (File xcmmContractUrl : xcmmContractUrls) { filesList.add(xcmmContractUrl); - }*/ + } if (conSetUpKey.equals("001")) {//一车一合同 for (BusSalesOrderVehicle busSalesOrderVehicle : busSalesOrderVehicles) { List salesOrderVehicles = new ArrayList<>(); @@ -392,7 +392,7 @@ public class LoanHomevisitPrepService extends MybatisBaseService salesOrderVehicles = new ArrayList<>(); @@ -452,7 +452,7 @@ public class LoanHomevisitPrepService extends MybatisBaseService 0) {