update - 自动驳回功能,利用现有的 rejectionCmd 的能力,并调整其内部逻辑

This commit is contained in:
wangli 2024-08-09 15:31:57 +08:00
parent 78a381f5ee
commit d5d8b1eb8f
2 changed files with 18 additions and 16 deletions

View File

@ -102,14 +102,12 @@ public class CustomRejectionTaskCmd extends AbstractCommand<Void> implements Ser
validTask(historicTaskInstance, (TaskEntity) task, approver, nodeTypes);
((TaskEntity) task).setTransientVariable(TASK_COMPLETE_OPERATION_TYPE + task.getId(), REJECTED.getStatus());
if (!Objects.equals(operationDesc, "自动驳回")) {
task = createVirtualTask(commandContext, extAxHiTaskInstService, task.getProcessInstanceId(), task.getName(),
task.getTaskDefinitionKey(), advice, approver, REJECTED.getStatus());
}
Task virtualTask = createVirtualTask(commandContext, extAxHiTaskInstService, task.getProcessInstanceId(), task.getName(),
task.getTaskDefinitionKey(), advice, Objects.equals(operationDesc, "自动驳回") ? null : approver, REJECTED.getStatus());
addComment(commandContext, task, COMMENT_TYPE_OPERATION_DESC, operationDesc);
addComment(commandContext, virtualTask, COMMENT_TYPE_OPERATION_DESC, operationDesc);
batchAddAttachment(commandContext, task.getProcessInstanceId(), task.getId(), attachmentList, approver);
batchAddAttachment(commandContext, task.getProcessInstanceId(), virtualTask.getId(), attachmentList, approver);
RuntimeService runtimeService = processEngineConfiguration.getRuntimeService();
finishProcessInstance(commandContext, runtimeService, task, advice);

View File

@ -339,6 +339,7 @@ public class CustomTaskHelper {
// 创建临时节点
taskService.saveTask(task);
if (Objects.nonNull(assigner)) {
CommandContextUtil.getEntityCache().findInCache(TaskEntity.class).stream()
.filter(i -> Objects.equals(i.getId(), task.getId())).findAny()
.ifPresent(i -> i.setAssignee(assigner.buildAssigneeId()));
@ -346,16 +347,19 @@ public class CustomTaskHelper {
CommandContextUtil.getEntityCache().findInCache(HistoricTaskInstanceEntity.class).stream()
.filter(i -> Objects.equals(i.getId(), task.getId())).findAny()
.ifPresent(i -> i.setAssignee(assigner.buildAssigneeId()));
}
// 添加审批意见
addAdvice(commandContext, task, advice, assigner.buildAssigneeId());
addAdvice(commandContext, task, advice, Objects.nonNull(assigner) ? assigner.buildAssigneeId() : null);
CustomTaskHelper.createExtTaskInst(extAxHiTaskInstService, task.getProcessInstanceId(), task.getId(),
task.getTaskDefinitionKey(), assigner, extTaskInstStatus);
task.setTransientVariable(TASK_COMPLETE_OPERATION_TYPE + task.getId(), extTaskInstStatus);
if (Objects.nonNull(assigner)) {
// 设置快照信息
task.setVariable(INTERNAL_TASK_RELATION_ASSIGNEE_INFO + task.getId(), assigner.toJson());
}
// 完成临时节点
taskService.complete(task.getId());
@ -384,7 +388,7 @@ public class CustomTaskHelper {
entity.setTaskDefinitionKey(taskDefinitionKey);
entity.setTaskId(taskId);
entity.setStatus(StringUtils.hasLength(status) ? status : PROCESSING.getStatus());
entity.setAssignee(assignee.buildAssigneeId());
entity.setAssignee(Objects.nonNull(assignee) ? assignee.buildAssigneeId() : null);
extAxHiTaskInstService.save(entity);
}
}