Commit 629bf284959cafbdb8f8e454759faa250b6219bb
1 parent
f70a5047
fix:修复审批接口,校验任务规则为发起人自选时,先从历史变量中查询审批人。
Showing
1 changed file
with
8 additions
and
6 deletions
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmTaskServiceImpl.java
| ... | ... | @@ -613,16 +613,17 @@ public class BpmTaskServiceImpl implements BpmTaskService { |
| 613 | 613 | Integer candidateStrategy = parseCandidateStrategy(nextFlowNode); |
| 614 | 614 | // 2.1 情况一:如果节点中的审批人策略为 发起人自选 |
| 615 | 615 | if (ObjUtil.equals(candidateStrategy, BpmTaskCandidateStrategyEnum.START_USER_SELECT.getStrategy())) { |
| 616 | - // 如果节点存在,但未配置审批人 | |
| 617 | - List<Long> assignees = nextAssignees != null ? nextAssignees.get(nextFlowNode.getId()) : null; | |
| 618 | - if (CollUtil.isEmpty(assignees)) { | |
| 619 | - throw exception(PROCESS_INSTANCE_START_USER_SELECT_ASSIGNEES_NOT_CONFIG, nextFlowNode.getName()); | |
| 620 | - } | |
| 616 | + // 先从历史中获取审批人,在发起人会把所有的审批人保存到历史中,这里从历史中获取 | |
| 621 | 617 | processVariables = FlowableUtils.getStartUserSelectAssignees(processInstance.getProcessVariables()); |
| 622 | 618 | // 特殊:如果当前节点已经存在审批人,则不允许覆盖 |
| 623 | 619 | if (processVariables != null && CollUtil.isNotEmpty(processVariables.get(nextFlowNode.getId()))) { |
| 624 | 620 | continue; |
| 625 | 621 | } |
| 622 | + // 如果节点存在,但未配置审批人 | |
| 623 | + List<Long> assignees = nextAssignees != null ? nextAssignees.get(nextFlowNode.getId()) : null; | |
| 624 | + if (CollUtil.isEmpty(assignees)) { | |
| 625 | + throw exception(PROCESS_INSTANCE_START_USER_SELECT_ASSIGNEES_NOT_CONFIG, nextFlowNode.getName()); | |
| 626 | + } | |
| 626 | 627 | // 设置 PROCESS_INSTANCE_VARIABLE_START_USER_SELECT_ASSIGNEES |
| 627 | 628 | if (processVariables == null) { |
| 628 | 629 | processVariables = new HashMap<>(); |
| ... | ... | @@ -632,12 +633,13 @@ public class BpmTaskServiceImpl implements BpmTaskService { |
| 632 | 633 | } |
| 633 | 634 | // 2.2 情况二:如果节点中的审批人策略为 审批人,在审批时选择下一个节点的审批人,并且该节点的审批人为空 |
| 634 | 635 | if (ObjUtil.equals(candidateStrategy, BpmTaskCandidateStrategyEnum.APPROVE_USER_SELECT.getStrategy())) { |
| 636 | + // 获取审批人自选的历史变量 | |
| 637 | + processVariables = FlowableUtils.getApproveUserSelectAssignees(processInstance.getProcessVariables()); | |
| 635 | 638 | // 如果节点存在,但未配置审批人 |
| 636 | 639 | List<Long> assignees = nextAssignees != null ? nextAssignees.get(nextFlowNode.getId()) : null; |
| 637 | 640 | if (CollUtil.isEmpty(assignees)) { |
| 638 | 641 | throw exception(PROCESS_INSTANCE_APPROVE_USER_SELECT_ASSIGNEES_NOT_CONFIG, nextFlowNode.getName()); |
| 639 | 642 | } |
| 640 | - processVariables = FlowableUtils.getApproveUserSelectAssignees(processInstance.getProcessVariables()); | |
| 641 | 643 | if (processVariables == null) { |
| 642 | 644 | processVariables = new HashMap<>(); |
| 643 | 645 | } | ... | ... |