feat(REQ-4418) - 处理上节点审批人的逻辑

This commit is contained in:
wangli 2025-08-25 18:27:48 +08:00
parent 7e08c6a233
commit 88936feb50

View File

@ -186,11 +186,8 @@ public class EngineExecutionStartListener implements ExecutionListener {
assigners.addAll(approverSelect(specify.getType(), userTask, execution, true));
});
// 只有老版本的配置会走这里, 新版本配置会直接在找过的过程中直接由人岗架接口内部处理超管
if (categoryVersion < 2) {
// 审批候选人为空时的兜底,
emptyAssigneeHandle(assigners, userTask, execution);
}
// 审批候选人为空时的兜底,
emptyAssigneeHandle(assigners, userTask, execution, categoryVersion);
List<BpmnTaskDelegateAssigner> resultAssigners = getLimitedElementList(assigners, APPROVAL_ASSIGNER_LIMIT_NUMBER);
for (BpmnTaskDelegateAssigner user : resultAssigners) {
assigneeIdList.add(user.buildAssigneeId());
@ -216,7 +213,7 @@ public class EngineExecutionStartListener implements ExecutionListener {
* @param execution 当前执行实例
*/
private void emptyAssigneeHandle(List<BpmnTaskDelegateAssigner> assigners, UserTask userTask,
DelegateExecution execution) {
DelegateExecution execution, Integer categoryVersion) {
// 审批人为空并且当前节点设置了自动跳过条件
if (!CollectionUtils.isEmpty(assigners)) {
return;
@ -231,8 +228,10 @@ public class EngineExecutionStartListener implements ExecutionListener {
// 自动通过和驳回, 统一由 cn.axzo.workflow.server.controller.listener.task.AutoOperatorEventListener 来处理
break;
case transferToAdmin:
assigners.addAll(approverSelect(ApproverEmptyHandleTypeEnum.transferToAdmin.getType(), userTask,
execution, true));
if (categoryVersion < 2) {
assigners.addAll(approverSelect(ApproverEmptyHandleTypeEnum.transferToAdmin.getType(), userTask,
execution, true));
}
finalEmptyAssigneeHandle(assigners, userTask, execution, "未找到审批人且转交管理员失败,自动中止", "karma: " + (refreshProperties.getUseNewToAdminApi() ? "api/flow/listTaskAssignerAdmin/v2" : "api/flow/listTaskAssignerAdmin"));
break;