Commit 76d8906748839807cc50261bcb79b09a73aadca8

Authored by jason
1 parent 97cec289

fix: [BPM 工作流] 获取下个审批任务节点问题修复。

yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceServiceImpl.java
@@ -6,6 +6,7 @@ import cn.hutool.core.date.DateUtil; @@ -6,6 +6,7 @@ import cn.hutool.core.date.DateUtil;
6 import cn.hutool.core.lang.Assert; 6 import cn.hutool.core.lang.Assert;
7 import cn.hutool.core.util.*; 7 import cn.hutool.core.util.*;
8 import cn.iocoder.yudao.framework.common.pojo.PageResult; 8 import cn.iocoder.yudao.framework.common.pojo.PageResult;
  9 +import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
9 import cn.iocoder.yudao.framework.common.util.date.DateUtils; 10 import cn.iocoder.yudao.framework.common.util.date.DateUtils;
10 import cn.iocoder.yudao.framework.common.util.json.JsonUtils; 11 import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
11 import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; 12 import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
@@ -66,6 +67,7 @@ import java.util.*; @@ -66,6 +67,7 @@ import java.util.*;
66 67
67 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; 68 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
68 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*; 69 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*;
  70 +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
69 import static cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmApprovalDetailRespVO.ActivityNode; 71 import static cn.iocoder.yudao.module.bpm.controller.admin.task.vo.instance.BpmApprovalDetailRespVO.ActivityNode;
70 import static cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants.*; 72 import static cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants.*;
71 import static cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmnModelConstants.START_USER_NODE_ID; 73 import static cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmnModelConstants.START_USER_NODE_ID;
@@ -263,7 +265,9 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService @@ -263,7 +265,9 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
263 // 3. 获取下一个将要执行的节点集合 265 // 3. 获取下一个将要执行的节点集合
264 FlowElement flowElement = bpmnModel.getFlowElement(task.getTaskDefinitionKey()); 266 FlowElement flowElement = bpmnModel.getFlowElement(task.getTaskDefinitionKey());
265 List<FlowNode> nextFlowNodes = BpmnModelUtils.getNextFlowNodes(flowElement, bpmnModel, processVariables); 267 List<FlowNode> nextFlowNodes = BpmnModelUtils.getNextFlowNodes(flowElement, bpmnModel, processVariables);
266 - List<ActivityNode> nextActivityNodes = convertList(nextFlowNodes, node -> new ActivityNode().setId(node.getId()) 268 + // 仅仅获取 UserTask 节点 TODO:如果网关节点和网关节点相连,获取下个 UserTask. 貌似有点不准。
  269 + List<FlowNode> nextUserTaskList = CollectionUtils.filterList(nextFlowNodes, node -> node instanceof UserTask);
  270 + List<ActivityNode> nextActivityNodes = convertList(nextUserTaskList, node -> new ActivityNode().setId(node.getId())
267 .setName(node.getName()).setNodeType(BpmSimpleModelNodeTypeEnum.APPROVE_NODE.getType()) 271 .setName(node.getName()).setNodeType(BpmSimpleModelNodeTypeEnum.APPROVE_NODE.getType())
268 .setStatus(BpmTaskStatusEnum.RUNNING.getStatus()) 272 .setStatus(BpmTaskStatusEnum.RUNNING.getStatus())
269 .setCandidateStrategy(BpmnModelUtils.parseCandidateStrategy(node)) 273 .setCandidateStrategy(BpmnModelUtils.parseCandidateStrategy(node))