feat(REQ-4468) - 调整因为提级审批导致节点选人会异常的问题

This commit is contained in:
wangli 2025-07-06 23:31:59 +08:00
parent 56be5232bb
commit 7753f11fc0

View File

@ -22,6 +22,7 @@ import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static cn.axzo.workflow.common.constant.BpmnConstants.COMMENT_TYPE_ADVICE;
import static cn.axzo.workflow.common.constant.BpmnConstants.COMMENT_TYPE_OPERATION_DESC;
@ -85,12 +86,11 @@ public class CustomResetTaskApproversCmd extends AbstractCommand<Void> implement
validTask(historicTaskInstance, task, originTaskAssignee, null);
resolveOriginTask(commandContext, taskService, task);
batchAddAttachment(commandContext, task.getProcessInstanceId(), task, attachmentList,
originTaskAssignee);
resetActivityApprovers(commandContext, task, targetTaskAssigneeList, taskService);
resolveOriginTask(commandContext, taskService, task);
return null;
}
@ -105,7 +105,10 @@ public class CustomResetTaskApproversCmd extends AbstractCommand<Void> implement
// 这个节点下所有审批人快照
String activityListSnapshot =
INTERNAL_ACTIVITY_RELATION_ASSIGNEE_LIST_INFO_SNAPSHOT + taskEntity.getTaskDefinitionKey();
runtimeService.setVariable(taskEntity.getProcessInstanceId(), activityListSnapshot, taskDelegateAssigners);
Map<String, Object> variables = new HashMap<>();
variables.put(activityListSnapshot, taskDelegateAssigners);
variables.put(INTERNAL_TASK_RELATION_ASSIGNEE_LIST_INFO + taskEntity.getTaskDefinitionKey(), taskDelegateAssigners.stream().map(BpmnTaskDelegateAssigner::buildAssigneeId).collect(Collectors.toList()));
runtimeService.setVariables(taskEntity.getProcessInstanceId(), variables);
log.info("正在进行提级任务:{},提级审批人列表:{}", taskEntity.getId(), JSONUtil.toJsonStr(taskDelegateAssigners));
// 将提级审批人加签
@ -115,7 +118,6 @@ public class CustomResetTaskApproversCmd extends AbstractCommand<Void> implement
CustomTaskHelper.deleteMultiTasks(commandContext, tasks);
// 移除引擎内部用于确定人的快照变量
runtimeService.removeVariable(taskEntity.getProcessInstanceId(), INTERNAL_TASK_RELATION_ASSIGNEE_LIST_INFO + taskEntity.getTaskDefinitionKey());
}
private void resolveOriginTask(CommandContext commandContext, TaskService taskService, TaskEntity task) {