diff --git a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/CommonContract.java b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/CommonContract.java index 20b30954fc..f3fe6ba7b4 100644 --- a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/CommonContract.java +++ b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/CommonContract.java @@ -96,4 +96,15 @@ public class CommonContract extends BaseEntity { private BigDecimal price; @ApiModelProperty("单台订金") private BigDecimal oneDeposit; + + @ApiModelProperty(value = "节点状态") + private String nodeState; + @ApiModelProperty(value = "节点id") + private String nodeId; + @ApiModelProperty(value = "流程id") + private String procDefId; + @ApiModelProperty(value = "实例id") + private String procInstId; + @ApiModelProperty(value = "任务id") + private String taskId; } diff --git a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/CommonContractFeign.java b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/CommonContractFeign.java index df430a3ac2..6a69810848 100644 --- a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/CommonContractFeign.java +++ b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/CommonContractFeign.java @@ -1,11 +1,16 @@ package com.yxt.anrui.base.api.commoncontract; +import com.yxt.anrui.base.api.commoncontract.flowable.CommonContractCompleteDto; +import com.yxt.anrui.base.api.commoncontract.flowable.CommonContractNodeQuery; +import com.yxt.anrui.base.api.commoncontract.flowable.CommonContractNodeVo; +import com.yxt.anrui.base.api.commoncontract.flowable.CommonContractTaskQuery; 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 org.springframework.web.multipart.MultipartFile; @@ -159,4 +164,30 @@ public interface CommonContractFeign { @ResponseBody public ResultBean saveContractInfo(@RequestBody AppCrmCustomerFileDto dto); + //====================移动端合同审核流程 + + @ApiOperation(value = "办理(同意)") + @PostMapping("/complete") + public ResultBean complete(@Valid @RequestBody CommonContractCompleteDto query); + + @ApiOperation(value = "获取上一个环节") + @GetMapping(value = "/getPreviousNodesForReject") + ResultBean> getPreviousNodesForReject(@Valid @SpringQueryMap CommonContractNodeQuery query); + + @ApiOperation(value = "获取下一个环节") + @GetMapping(value = "/getNextNodesForSubmit") + ResultBean> getNextNodesForSubmit(@Valid @SpringQueryMap CommonContractNodeQuery query); + + @ApiOperation(value = "驳回任务") + @PostMapping(value = "/reject") + public ResultBean taskReject(@Valid @RequestBody CommonContractTaskQuery query); + + @ApiOperation(value = "撤回流程") + @PostMapping(value = "/revokeProcess") + public ResultBean revokeProcess(@Valid @RequestBody CommonContractTaskQuery query); + + @ApiOperation(value = "终止任务") + @PostMapping(value = "/breakProcess") + public ResultBean breakProcess(@Valid @RequestBody CommonContractTaskQuery query); + } \ No newline at end of file diff --git a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/CommonContractFeignFallback.java b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/CommonContractFeignFallback.java index 3eef59cd0f..cee966c3b4 100644 --- a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/CommonContractFeignFallback.java +++ b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/CommonContractFeignFallback.java @@ -1,5 +1,10 @@ package com.yxt.anrui.base.api.commoncontract; +import com.yxt.anrui.base.api.busvehicleapply.flow.GetNodeVo; +import com.yxt.anrui.base.api.commoncontract.flowable.CommonContractCompleteDto; +import com.yxt.anrui.base.api.commoncontract.flowable.CommonContractNodeQuery; +import com.yxt.anrui.base.api.commoncontract.flowable.CommonContractNodeVo; +import com.yxt.anrui.base.api.commoncontract.flowable.CommonContractTaskQuery; import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.vo.PagerVo; @@ -8,6 +13,7 @@ import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.text.ParseException; +import java.util.List; import java.util.Map; /** @@ -165,4 +171,34 @@ public class CommonContractFeignFallback implements CommonContractFeign { public ResultBean saveContractInfo(AppCrmCustomerFileDto dto) { return null; } + + @Override + public ResultBean complete(CommonContractCompleteDto query) { + return null; + } + + @Override + public ResultBean> getPreviousNodesForReject(CommonContractNodeQuery query) { + return null; + } + + @Override + public ResultBean> getNextNodesForSubmit(CommonContractNodeQuery query) { + return null; + } + + @Override + public ResultBean taskReject(CommonContractTaskQuery query) { + return null; + } + + @Override + public ResultBean revokeProcess(CommonContractTaskQuery query) { + return null; + } + + @Override + public ResultBean breakProcess(CommonContractTaskQuery query) { + return null; + } } \ No newline at end of file diff --git a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/flowable/CommonContractCompleteDto.java b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/flowable/CommonContractCompleteDto.java new file mode 100644 index 0000000000..8417533229 --- /dev/null +++ b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/flowable/CommonContractCompleteDto.java @@ -0,0 +1,38 @@ +package com.yxt.anrui.base.api.commoncontract.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/8/30 15:00 + * @Description + */ +@Data +public class CommonContractCompleteDto implements Dto { + private static final long serialVersionUID = -1577957348084710482L; + + @ApiModelProperty(value = "用户sid") + @NotBlank(message = "参数错误:userSid") + private String userSid; + @ApiModelProperty(value = "用户全路径sid") + @NotBlank(message = "参数错误:orgSidPath") + 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-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/flowable/CommonContractNodeQuery.java b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/flowable/CommonContractNodeQuery.java new file mode 100644 index 0000000000..f74b8a0b19 --- /dev/null +++ b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/flowable/CommonContractNodeQuery.java @@ -0,0 +1,24 @@ +package com.yxt.anrui.base.api.commoncontract.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/8/30 15:02 + * @Description + */ +@Data +public class CommonContractNodeQuery implements Query { + private static final long serialVersionUID = 2719079015837709118L; + + @ApiModelProperty(value = "环节定义id") + @NotBlank(message = "参数错误:taskDefKey") + private String taskDefKey; + @ApiModelProperty(value = "业务sid") + private String businessSid; + +} diff --git a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/flowable/CommonContractNodeVo.java b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/flowable/CommonContractNodeVo.java new file mode 100644 index 0000000000..150710637f --- /dev/null +++ b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/flowable/CommonContractNodeVo.java @@ -0,0 +1,26 @@ +package com.yxt.anrui.base.api.commoncontract.flowable; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @Author dimengzhe + * @Date 2022/8/30 15:09 + * @Description + */ +@Data +public class CommonContractNodeVo implements Vo { + private static final long serialVersionUID = -3011038115113343705L; + + @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-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/flowable/CommonContractTaskQuery.java b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/flowable/CommonContractTaskQuery.java new file mode 100644 index 0000000000..79a6fd6c2c --- /dev/null +++ b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/flowable/CommonContractTaskQuery.java @@ -0,0 +1,45 @@ +package com.yxt.anrui.base.api.commoncontract.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/8/30 15:03 + * @Description + */ +@Data +public class CommonContractTaskQuery implements Query { + private static final long serialVersionUID = 4020176288666396111L; + + /** + * 终止、驳回、撤回 + */ + @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-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractMapper.java b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractMapper.java index 954e47126b..239c39c7c1 100644 --- a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractMapper.java +++ b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractMapper.java @@ -9,6 +9,7 @@ import com.yxt.anrui.base.api.commoncontract.*; import org.apache.ibatis.annotations.*; import java.util.List; +import java.util.Map; /** * Project: anrui-base(安瑞基础)
@@ -79,4 +80,6 @@ public interface CommonContractMapper extends BaseMapper { AppCommonContractInitVo getContractInfo(@Param("contractSid") String contractSid, @Param("staffSid") String staffSid); int selectNum(String bill); + + int updateFlowFiled(Map map); } \ No newline at end of file diff --git a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractMapper.xml b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractMapper.xml index 5be8045b03..d502005615 100644 --- a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractMapper.xml +++ b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractMapper.xml @@ -114,4 +114,20 @@ from common_contract where contractNo LIKE concat(#{bill}, '%') + + + UPDATE common_contract + SET nodeState=#{nodeState} + , nodeId=#{taskDefKey} + + , procDefId=#{procDefId} + + + , procInstId=#{procInsId} + + + , taskId=#{taskId} + + WHERE sid = #{sid} + \ No newline at end of file diff --git a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractRest.java b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractRest.java index 43e098afcc..162df4edfd 100644 --- a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractRest.java +++ b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractRest.java @@ -1,11 +1,18 @@ package com.yxt.anrui.base.biz.commoncontract; +import cn.hutool.core.bean.BeanUtil; import com.yxt.anrui.base.api.commonappendix.CommonAppendixVo; import com.yxt.anrui.base.api.commonappendix.CommonAttachTypeEnum; import com.yxt.anrui.base.api.commonappendix.PcCommonAppendixDto; import com.yxt.anrui.base.api.commoncontract.*; +import com.yxt.anrui.base.api.commoncontract.flowable.CommonContractCompleteDto; +import com.yxt.anrui.base.api.commoncontract.flowable.CommonContractNodeQuery; +import com.yxt.anrui.base.api.commoncontract.flowable.CommonContractNodeVo; +import com.yxt.anrui.base.api.commoncontract.flowable.CommonContractTaskQuery; import com.yxt.anrui.base.biz.commonappendix.CommonAppendixService; import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailed.FinUncollectedReceivablesDetailedFeign; +import com.yxt.anrui.flowable.api.utils.ProcDefEnum; +import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables; import com.yxt.common.base.config.component.FileUploadComponent; import com.yxt.common.base.utils.ExportExcelUtils; import com.yxt.common.base.utils.StringUtils; @@ -524,4 +531,37 @@ public class CommonContractRest implements CommonContractFeign { ResultBean resultBean = commonContractService.saveContractInfo(dto); return rb.success(); } + + @Override + public ResultBean complete(CommonContractCompleteDto query) { + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + bv.setModelId(ProcDefEnum.CONTRACTAPPLY.getProDefId()); + return commonContractService.complete(bv); + } + + @Override + public ResultBean> getPreviousNodesForReject(CommonContractNodeQuery query) { + return commonContractService.getPreviousNodesForReject(query); + } + + @Override + public ResultBean> getNextNodesForSubmit(CommonContractNodeQuery query) { + return commonContractService.getNextNodesForSubmit(query); + } + + @Override + public ResultBean taskReject(CommonContractTaskQuery query) { + return commonContractService.taskReject(query); + } + + @Override + public ResultBean revokeProcess(CommonContractTaskQuery query) { + return commonContractService.revokeProcess(query); + } + + @Override + public ResultBean breakProcess(CommonContractTaskQuery query) { + return commonContractService.breakProcess(query); + } } diff --git a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractService.java b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractService.java index 381510bcd7..cd58d16298 100644 --- a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractService.java +++ b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractService.java @@ -1,11 +1,15 @@ package com.yxt.anrui.base.biz.commoncontract; 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.base.api.commonappendix.CommonAppendix; import com.yxt.anrui.base.api.commoncontract.*; +import com.yxt.anrui.base.api.commoncontract.flowable.CommonContractNodeQuery; +import com.yxt.anrui.base.api.commoncontract.flowable.CommonContractNodeVo; +import com.yxt.anrui.base.api.commoncontract.flowable.CommonContractTaskQuery; import com.yxt.anrui.base.biz.basemodelszconfig.BaseModelSzconfigService; import com.yxt.anrui.base.biz.basetrailer.BaseTrailerService; import com.yxt.anrui.base.biz.basevehiclebrand.BaseVehicleBrandService; @@ -25,8 +29,15 @@ import com.yxt.anrui.crm.api.crmcustomer.CrmCustomerFeign; import com.yxt.anrui.crm.api.crmcustomerfile.CrmCustomerFileFeign; import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempFeign; import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempVo; +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.sysformlink.SysFormLinkFeign; import com.yxt.anrui.flowable.api.sysformlink.SysFormStateVo; +import com.yxt.anrui.flowable.api.utils.ProcDefEnum; +import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables; import com.yxt.anrui.portal.api.dictcommon.DictCommonFeign; import com.yxt.anrui.portal.api.dictcommon.DictCommonVo; import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign; @@ -46,6 +57,9 @@ import com.yxt.common.base.utils.PagerUtil; import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.vo.PagerVo; +import com.yxt.messagecenter.api.message.MessageFeign; +import com.yxt.messagecenter.api.message.MessageFlowVo; +import com.yxt.messagecenter.api.message.MessageFlowableQuery; import org.apache.commons.lang3.StringUtils; import org.apache.tomcat.util.threads.ThreadPoolExecutor; import org.springframework.beans.factory.annotation.Autowired; @@ -130,6 +144,12 @@ public class CommonContractService extends MybatisBaseService createQueryWrapper(CommonContractQuery query) { // todo: 这里根据具体业务调整查询条件 @@ -1290,4 +1310,183 @@ public class CommonContractService extends MybatisBaseService variables = new HashMap<>(); + Map appMap = new HashMap<>(); + appMap.put("sid", businessSid); + variables.put("app", appMap); + bv.setFormVariables(variables); + if (bv.getTaskId().equals(commonContract.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())) { + //极光推送 + commonContract = fetchBySid(businessSid); + MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); + MessageFlowVo messageFlowVo = new MessageFlowVo(); + BeanUtil.copyProperties(ufVo,messageFlowVo); + ufVo.setProcInsId(commonContract.getProcInstId()); + messageFlowableQuery.setUfVo(messageFlowVo); + messageFlowableQuery.setAppMap(appMap); + messageFlowableQuery.setBusinessSid(businessSid); + messageFlowableQuery.setModuleName("合同审核申请"); + messageFlowableQuery.setMsgContent(commonContract.getStaffName()+"提交的"+messageFlowableQuery.getModuleName()+",请审批"); + messageFlowableQuery.setMsgTitle("业务中心"); + ResultBean stringResultBean = messageFeign.pushMessage(messageFlowableQuery); + } + return rb.success().setData(resultBean.getData()); + } else { + return rb.setMsg("操作失败!提交的数据不一致"); + } + + } + + private int updateFlowFiled(Map map) { + return baseMapper.updateFlowFiled(map); + } + + public ResultBean> getPreviousNodesForReject(CommonContractNodeQuery query) { + ResultBean> rb = ResultBean.fireFail(); + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + //流程中的参数赋值、若有网关,则赋值网关中判断的字段。 + Map variables = new HashMap<>(); + bv.setFormVariables(variables); + bv.setModelId(ProcDefEnum.CONTRACTAPPLY.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), CommonContractNodeVo.class)).collect(Collectors.toList()); + return rb.success().setData(voList); + } + + public ResultBean> getNextNodesForSubmit(CommonContractNodeQuery query) { + ResultBean> rb = ResultBean.fireFail(); + BusinessVariables bv = new BusinessVariables(); + BeanUtil.copyProperties(query, bv); + //流程中的参数赋值、若有网关,则赋值网关中判断的字段。 + Map variables = new HashMap<>(); + bv.setFormVariables(variables); + bv.setModelId(ProcDefEnum.CONTRACTAPPLY.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), CommonContractNodeVo.class)).collect(Collectors.toList()); + return rb.success().setData(voList); + } + + public ResultBean taskReject(CommonContractTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + String businessSid = query.getBusinessSid(); + CommonContract commonContract = fetchBySid(businessSid); + if (commonContract == null) { + return rb.setMsg("该申请不存在"); + } + String businessTaskId = commonContract.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); + //极光推送 + commonContract = fetchBySid(businessSid); + MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery(); + MessageFlowVo messageFlowVo = new MessageFlowVo(); + BeanUtil.copyProperties(ufVo,messageFlowVo); + String procId = commonContract.getProcInstId(); + ufVo.setProcInsId(procId); + 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(commonContract.getStaffSid())){ + messageFlowableQuery.setMsgContent("您提交的"+messageFlowableQuery.getModuleName()+"已被驳回,请重新提交"); + }else{ + messageFlowableQuery.setMsgContent(commonContract.getStaffName()+"提交的"+messageFlowableQuery.getModuleName()+",请审批"); + } + messageFlowableQuery.setMsgTitle("业务中心"); + ResultBean stringResultBean = messageFeign.pushMessage(messageFlowableQuery); + return rb.success(); + } + } + return rb.setMsg("操作失败!提交的数据不一致!"); + } + + public ResultBean revokeProcess(CommonContractTaskQuery query) { + ResultBean rb = ResultBean.fireFail(); + if (StringUtils.isBlank(query.getUserSid())) { + return rb.setMsg("参数错误:userSid"); + } + CommonContract commonContract = fetchBySid(query.getBusinessSid()); + String businessTaskId = commonContract.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(CommonContractTaskQuery 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("请填写意见"); + } + CommonContract commonContract = fetchBySid(query.getBusinessSid()); + String businessTaskId = commonContract.getTaskId(); + if (StringUtils.isNotBlank(businessTaskId)) { + 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-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 928eee5e8b..a67f71ac73 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 @@ -31,6 +31,7 @@ public enum ProcDefEnum { BASESHUNINVOICAPPLY("调车开票申请","process_u4xrvaso:1:400008"), BASEVEHINSTALLMODPRICE("上装调价申请","process_s0a0svth:1:492508"), SCMVEHREBATEWITHAPPLY("单车返利预提申请","process_qegarc7r:1:535004"), + CONTRACTAPPLY("合同审核","process_gd8c9xd5:1:545008"), ; ProcDefEnum(String proDefName, String proDefId) {