From c4ac1eac4b48b8383ee1361c79b81b363463448e Mon Sep 17 00:00:00 2001 From: admin <149470858@qq.com> Date: Fri, 19 Apr 2024 23:15:34 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=BC=80=E5=90=AF=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E7=9A=84=E4=BC=9A=E7=AD=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../flowable/service/IFlowTaskService.java | 14 ++++++++- .../service/impl/FlowInstanceServiceImpl.java | 29 ++++++++++++++++++ .../service/impl/FlowTaskServiceImpl.java | 30 ++++++++++++++++++- 3 files changed, 71 insertions(+), 2 deletions(-) diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/IFlowTaskService.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/IFlowTaskService.java index 233d6d0..62527e8 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/IFlowTaskService.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/IFlowTaskService.java @@ -20,6 +20,7 @@ import cn.jyjz.xiaoyao.ocr.vo.OcrTaskChildPictureVo; import cn.jyjz.xiaoyao.ocr.vo.OcrTaskChildPictureVo; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.flowable.bpmn.model.UserTask; import org.flowable.engine.repository.ProcessDefinition; import org.flowable.task.api.Task; @@ -38,7 +39,18 @@ public interface IFlowTaskService { Category viewForm(String processId, HttpServletRequest request); Integer complete(FlowApprove approve, UserToken userToken, List formIds); - + /** + * 获取下一个节点 + * @param processInstanceId + * @return + */ + public UserTask getNextTasks(String processInstanceId ); + /** + * 获取下一个节点 + * @param task + * @return + */ + public UserTask getNextTasks(Task task); /** * 获取当前任务的可回退的流程集合 diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/impl/FlowInstanceServiceImpl.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/impl/FlowInstanceServiceImpl.java index 27a2d46..1c6ba1d 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/impl/FlowInstanceServiceImpl.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/impl/FlowInstanceServiceImpl.java @@ -17,6 +17,8 @@ import cn.jyjz.xiaoyao.common.base.util.StringUtils; import cn.jyjz.xiaoyao.common.base.vo.UserToken; import cn.jyjz.xiaoyao.oa.from.service.UserViewapproeService; import lombok.extern.slf4j.Slf4j; +import org.flowable.bpmn.model.MultiInstanceLoopCharacteristics; +import org.flowable.bpmn.model.UserTask; import org.flowable.engine.RepositoryService; import org.flowable.engine.repository.ProcessDefinition; import org.flowable.engine.runtime.ProcessInstance; @@ -29,6 +31,7 @@ import javax.servlet.http.HttpServletRequest; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; @Slf4j @Service @@ -84,6 +87,19 @@ public class FlowInstanceServiceImpl extends FlowServiceFactory implements IFlow try { variables.put("businessKey", businessKey); + + //获取下一个节点 + UserTask userTask = this.flowTaskService.getNextTasks(procDefId); + if(null != userTask){ + MultiInstanceLoopCharacteristics multiInstance = userTask.getLoopCharacteristics(); + // 会签节点 + if (Objects.nonNull(multiInstance)) { + if(null != userTask.getCandidateUsers() && userTask.getCandidateUsers().size() > 1){ + variables.put("persons",userTask.getCandidateUsers()); + } + } + } + processInstance = runtimeService.startProcessInstanceById(procDefId, businessKey, variables); if (null != iFormCustomService) { @@ -156,6 +172,19 @@ public class FlowInstanceServiceImpl extends FlowServiceFactory implements IFlow try { variables.put("businessKey", businessKey); + + //获取下一个节点 + UserTask userTask = this.flowTaskService.getNextTasks(procDefId); + if(null != userTask){ + MultiInstanceLoopCharacteristics multiInstance = userTask.getLoopCharacteristics(); + // 会签节点 + if (Objects.nonNull(multiInstance)) { + if(null != userTask.getCandidateUsers() && userTask.getCandidateUsers().size() > 1){ + variables.put("persons",userTask.getCandidateUsers()); + } + } + } + processInstance = runtimeService.startProcessInstanceById(procDefId, businessKey, variables); if (null != iFormCustomService) { diff --git a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/impl/FlowTaskServiceImpl.java b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/impl/FlowTaskServiceImpl.java index dd43d66..10ac05d 100644 --- a/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/impl/FlowTaskServiceImpl.java +++ b/jyjz-system/jyjz-system-oa/src/main/java/cn/jyjz/flowable/service/impl/FlowTaskServiceImpl.java @@ -431,7 +431,35 @@ public class FlowTaskServiceImpl extends FlowServiceFactory implements IFlowTask } return result; } - + + + public UserTask getNextTasks(String processDefinitionId ){ + //流程实例id + //String processInstanceId = "5b945750-81db-11e9-a576-1a73f8e23adc"; + + // 获取流程定义 + ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery() + .processDefinitionId(processDefinitionId) + .singleResult(); + + // 获取BpmnModel + BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinition.getId()); + + // 获取所有的FlowElement,包括开始事件、结束事件、用户任务等 + List flowElements = (List) bpmnModel.getMainProcess().getFlowElements(); + + // 遍历FlowElement + for (FlowElement targetFlowElement : flowElements) { + //用户任务 + if (targetFlowElement instanceof UserTask) { + UserTask userTask = (UserTask) targetFlowElement; + return userTask; + } else if (targetFlowElement instanceof ExclusiveGateway) { + setExclusiveGateway(targetFlowElement); + } + } + return null; + } public UserTask getNextTasks(Task task){