diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java index 986205d5f..e195608a0 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java @@ -900,37 +900,26 @@ public class BpmTaskServiceImpl implements BpmTaskService { Stack stack = new Stack<>(); // 1.1 将根任务ID入栈 stack.push(parentTaskId); - while (!stack.isEmpty()) { + //控制遍历的次数不超过 Byte.MAX_VALUE,避免脏数据造成死循环 + int count = 0; + while (!stack.isEmpty() && count childrenTaskIdList = getChildrenTaskIdList(taskId); - if (childrenTaskIdList != null && !childrenTaskIdList.isEmpty()) { + if (CollUtil.isNotEmpty(childrenTaskIdList)) { for (String childTaskId : childrenTaskIdList) { // 1.5 将子任务ID入栈,以便后续处理 stack.push(childTaskId); } } + count++; } return allChildTaskIds; } - /** - * 递归处理子级任务 - * - * @param taskId 当前任务ID - * @param taskIds 结果 - */ - private void recursiveGetChildTaskIds(String taskId, List taskIds) { - List childrenTaskIdList = getChildrenTaskIdList(taskId); - for (String childTaskId : childrenTaskIdList) { - taskIds.add(childTaskId); // 将子任务的ID添加到集合中 - recursiveGetChildTaskIds(childTaskId, taskIds); // 递归获取子任务的子任务 - } - } - /** * 获取指定父级任务的所有子任务 ID 集合