diff --git a/yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java b/yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java index a09f48e49c..a02c945fcc 100644 --- a/yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java +++ b/yudao-module-bpm/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java @@ -647,6 +647,13 @@ public class BpmTaskServiceImpl implements BpmTaskService { if (approveUserSelectAssignees == null) { approveUserSelectAssignees = new HashMap<>(); } + // 当多实例任务根据'审批人自选'策略多次选择时,避免审批人被后一次选择覆盖 + List nodeHadAssignees = approveUserSelectAssignees.get(nextFlowNode.getId()); + if (nodeHadAssignees != null){ + assignees = Stream.concat(nodeHadAssignees.stream(), assignees.stream()) + .distinct() + .toList(); + } approveUserSelectAssignees.put(nextFlowNode.getId(), assignees); Map> existingApproveUserSelectAssignees = (Map>) variables.get( BpmnVariableConstants.PROCESS_INSTANCE_VARIABLE_APPROVE_USER_SELECT_ASSIGNEES);