Commit 6dfef298342cfb2a87e52ac3189a8e7b7d0f0ace

Authored by kehaiyou
1 parent aca65a66

feat: 控制查找子任务次数和清除递归代码

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 {
900 900 Stack<String> stack = new Stack<>();
901 901 // 1.1 将根任务ID入栈
902 902 stack.push(parentTaskId);
903   - while (!stack.isEmpty()) {
  903 + //控制遍历的次数不超过 Byte.MAX_VALUE,避免脏数据造成死循环
  904 + int count = 0;
  905 + while (!stack.isEmpty() && count<Byte.MAX_VALUE) {
904 906 // 1.2 弹出栈顶任务ID
905 907 String taskId = stack.pop();
906 908 // 1.3 将任务ID添加到结果集合中
907 909 allChildTaskIds.add(taskId);
908 910 // 1.4 获取该任务的子任务列表
909 911 List<String> childrenTaskIdList = getChildrenTaskIdList(taskId);
910   - if (childrenTaskIdList != null && !childrenTaskIdList.isEmpty()) {
  912 + if (CollUtil.isNotEmpty(childrenTaskIdList)) {
911 913 for (String childTaskId : childrenTaskIdList) {
912 914 // 1.5 将子任务ID入栈,以便后续处理
913 915 stack.push(childTaskId);
914 916 }
915 917 }
  918 + count++;
916 919 }
917 920 return allChildTaskIds;
918 921 }
919 922  
920   - /**
921   - * 递归处理子级任务
922   - *
923   - * @param taskId 当前任务ID
924   - * @param taskIds 结果
925   - */
926   - private void recursiveGetChildTaskIds(String taskId, List<String> taskIds) {
927   - List<String> childrenTaskIdList = getChildrenTaskIdList(taskId);
928   - for (String childTaskId : childrenTaskIdList) {
929   - taskIds.add(childTaskId); // 将子任务的ID添加到集合中
930   - recursiveGetChildTaskIds(childTaskId, taskIds); // 递归获取子任务的子任务
931   - }
932   - }
933   -
934 923  
935 924 /**
936 925 * 获取指定父级任务的所有子任务 ID 集合
... ...