diff --git a/ruoyi-system/src/main/java/com/ruoyi/workflow/service/impl/WfTaskServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/workflow/service/impl/WfTaskServiceImpl.java index 27601909..e939c234 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/workflow/service/impl/WfTaskServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/workflow/service/impl/WfTaskServiceImpl.java @@ -867,25 +867,22 @@ public class WfTaskServiceImpl extends FlowServiceFactory implements IWfTaskServ Set rejectedTaskSet = new LinkedHashSet<>(); Set sourceTaskSet = unfinishedTaskSet; - while (true) { + while (CollUtil.isNotEmpty(sourceTaskSet)) { Set nextIdSet = new HashSet<>(); for (String previousId : sourceTaskSet) { List nextIdList = sequenceElementMap.get(previousId); if (CollUtil.isEmpty(nextIdList)) { continue; } - for (String childId : nextIdList) { - String rejectedSequenceFlow = sequenceFlowMap.get(previousId + childId); - if (finishedTaskSet.contains(childId)) { - nextIdSet.add(childId); + nextIdList.forEach(nextId -> { + if (finishedTaskSet.contains(nextId)) { + nextIdSet.add(nextId); + String rejectedSequenceFlow = sequenceFlowMap.get(previousId + nextId); if (finishedSequenceFlowSet.contains(rejectedSequenceFlow)) { - nextIdSet.add(sequenceFlowMap.get(previousId + childId)); + nextIdSet.add(rejectedSequenceFlow); } } - } - } - if (CollUtil.isEmpty(nextIdSet)) { - break; + }); } rejectedTaskSet.addAll(nextIdSet); sourceTaskSet = nextIdSet;