From b0e9b835cb6f313656824a93fd3aae89050ec127 Mon Sep 17 00:00:00 2001 From: dimengzhe Date: Wed, 12 Feb 2025 10:43:28 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../anrui/flowable/api/flow3/Flow3Feign.java | 34 +++++++++++++++++++ .../flowable/api/flow3/Flow3Feignback.java | 12 +++++++ .../anrui/flowable/biz/flow3/Flow3Rest.java | 6 +++- .../flowable/biz/flow3/Flow3Service.java | 25 +++++++++----- .../oa/feign/flowable/flow3/Flow3Feign.java | 24 +++++++++++++ 5 files changed, 92 insertions(+), 9 deletions(-) create mode 100644 anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow3/Flow3Feign.java create mode 100644 anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow3/Flow3Feignback.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow3/Flow3Feign.java diff --git a/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow3/Flow3Feign.java b/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow3/Flow3Feign.java new file mode 100644 index 0000000000..dab2b4ae9a --- /dev/null +++ b/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow3/Flow3Feign.java @@ -0,0 +1,34 @@ +package com.yxt.anrui.flowable.api.flow3; + +import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo; +import com.yxt.anrui.flowable.api.flow2.FlowFeignback; +import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables; +import com.yxt.common.core.result.ResultBean; +import io.swagger.annotations.ApiOperation; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * @description: + * @author: dimengzhe + * @date: 2025/2/12 + **/ +@FeignClient( + contextId = "anrui-flowable-Flow3", + name = "anrui-flowable", + path = "v3/flow", + fallback = Flow3Feignback.class) +public interface Flow3Feign { + + @ApiOperation(value = "启动流程") + @PostMapping(value = "/startProcess") + @ResponseBody + ResultBean startProcess(@RequestBody BusinessVariables dto); + + @ApiOperation(value = "处理流程") + @PostMapping(value = "/handleProsess") + @ResponseBody + ResultBean handleProsess(@RequestBody BusinessVariables bv); +} diff --git a/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow3/Flow3Feignback.java b/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow3/Flow3Feignback.java new file mode 100644 index 0000000000..00634fe6a1 --- /dev/null +++ b/anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow3/Flow3Feignback.java @@ -0,0 +1,12 @@ +package com.yxt.anrui.flowable.api.flow3; + +import org.springframework.stereotype.Component; + +/** + * @description: + * @author: dimengzhe + * @date: 2025/2/12 + **/ +@Component +public class Flow3Feignback { +} diff --git a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow3/Flow3Rest.java b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow3/Flow3Rest.java index af5ed8881b..811b48190e 100644 --- a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow3/Flow3Rest.java +++ b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow3/Flow3Rest.java @@ -3,6 +3,8 @@ package com.yxt.anrui.flowable.biz.flow3; import com.alibaba.fastjson.JSONObject; import com.google.common.util.concurrent.ThreadFactoryBuilder; import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo; +import com.yxt.anrui.flowable.api.flow2.FlowFeign; +import com.yxt.anrui.flowable.api.flow3.Flow3Feign; import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables; import com.yxt.common.base.utils.StringUtils; import com.yxt.common.core.result.ResultBean; @@ -26,13 +28,14 @@ import java.util.concurrent.*; **/ @RestController @RequestMapping("v3/flow") -public class Flow3Rest { +public class Flow3Rest implements Flow3Feign { Logger log = LoggerFactory.getLogger(Flow3Rest.class); @Autowired private Flow3Service flowService; @PostMapping("/startProcess") + @Override public ResultBean startProcess(@RequestBody BusinessVariables bv) { ResultBean rb = ResultBean.fireFail(); //获取表单中的参数 @@ -54,6 +57,7 @@ public class Flow3Rest { } @PostMapping("/handleProsess") + @Override public ResultBean handleProsess(@RequestBody BusinessVariables bv) { ResultBean rb = ResultBean.fireFail(); ResultBean updateFlowFieldVoResultBean = flowService.handleProsess(bv, true); diff --git a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow3/Flow3Service.java b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow3/Flow3Service.java index 730cf2b86b..cb7e2ce5b3 100644 --- a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow3/Flow3Service.java +++ b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow3/Flow3Service.java @@ -106,13 +106,11 @@ public class Flow3Service extends MybatisBaseService { // 获取传入的变量 Map variables = bv.getFormVariables(); Map variablesSeconds = bv.getFormVariables(); - String nextNodeUserSids = ""; + String nextNodeUserSids = bv.getNextNodeUserSids(); List userSidForNextNode = new ArrayList<>(); if (StringUtils.isBlank(nextNodeUserSids)) { userSidForNextNode = getNextNodeUser(bv).getData(); variables.put("approvers", userSidForNextNode); - } else { - nextNodeUserSids = bv.getNextNodeUserSids(); } @@ -155,21 +153,30 @@ public class Flow3Service extends MybatisBaseService { for (int i = 0; i < tasks.size(); i++) { Task task2 = tasks.get(i); String isMultiInstanceTask = isMultiInstanceTask(task2); + id_ = task2.getId(); + task_def_key_ = task2.getTaskDefinitionKey(); + name_ = task2.getName(); if ("会签任务".equals(isMultiInstanceTask) || "或签任务".equals(isMultiInstanceTask)) { String approver = getApproverForTask(userSidForNextNode, i); + approver = change(approver, bv.getInstanceId()); taskService.claim(task2.getId(), approver); } else { nextNodeUserSids = userSidForNextNode.get(0); + //查询下一环节是否有转办并添加评论 + nextNodeUserSids = change(nextNodeUserSids, processInstance.getProcessInstanceId()); + taskService.setAssignee(id_, nextNodeUserSids); + taskService.setVariablesLocal(id_, variables); } - id_ = task2.getId(); - task_def_key_ = task2.getTaskDefinitionKey(); - name_ = task2.getName(); } } else { Task task2 = tasks.get(0); id_ = task2.getId(); task_def_key_ = task2.getTaskDefinitionKey(); name_ = task2.getName(); + //查询下一环节是否有转办并添加评论 + nextNodeUserSids = change(nextNodeUserSids, processInstance.getProcessInstanceId()); + taskService.setAssignee(id_, nextNodeUserSids); + taskService.setVariablesLocal(id_, variables); } //提交前传入下一环节待办人 @@ -234,7 +241,7 @@ public class Flow3Service extends MybatisBaseService { nextUserSid = ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId(); adminContains = true; } else { - if(!listResultBean.getData().isEmpty()){ + if(listResultBean.getData() != null){ userSidForNextNode = listResultBean.getData(); formVariables.put("approvers", listResultBean.getData()); } @@ -277,7 +284,9 @@ public class Flow3Service extends MybatisBaseService { Task task2 = tasks.get(i); isMultiInstanceTask = isMultiInstanceTask(task2); if ("会签任务".equals(isMultiInstanceTask) || "或签任务".equals(isMultiInstanceTask)) { - taskService.claim(task2.getId(), userSidForNextNode.get(i)); // 由候选人认领任务 + String nextUserSidNext = userSidForNextNode.get(i); + nextUserSidNext = change(nextUserSidNext, bv.getInstanceId()); + taskService.claim(task2.getId(), nextUserSidNext); // 由候选人认领任务 isMultiInstanceTaskNext = true; } else { diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow3/Flow3Feign.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow3/Flow3Feign.java new file mode 100644 index 0000000000..2ce0131bea --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow3/Flow3Feign.java @@ -0,0 +1,24 @@ +package com.yxt.anrui.oa.feign.flowable.flow3; + +import com.yxt.anrui.oa.feign.flowable.flow.BusinessVariables; +import com.yxt.anrui.oa.feign.flowable.flow.UpdateFlowFieldVo; +import com.yxt.anrui.oa.feign.flowable.flow2.FlowDelegateQuery; +import com.yxt.common.core.result.ResultBean; +import io.swagger.annotations.ApiOperation; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.ResponseBody; + +@FeignClient( + contextId = "anrui-flowable-Flow3", + name = "anrui-flowable", + path = "v3/flow") +public interface Flow3Feign { + + @ApiOperation(value = "启动流程") + @PostMapping(value = "/startProcess2") + @ResponseBody + ResultBean startProcess2(@RequestBody BusinessVariables dto); + +} \ No newline at end of file