hotfix - 调整任务状态处理逻辑

This commit is contained in:
wangli 2023-11-06 17:04:44 +08:00
parent 57d812d509
commit 3c89d19667

View File

@ -74,8 +74,6 @@ import static cn.axzo.workflow.core.common.enums.BpmErrorCode.PROCESS_INSTANCE_I
import static cn.axzo.workflow.core.common.enums.BpmErrorCode.PROCESS_INSTANCE_NOT_EXISTS;
import static cn.axzo.workflow.core.common.enums.BpmErrorCode.TASK_COMPLETE_FAIL_ASSIGN_NOT_SELF;
import static cn.axzo.workflow.core.common.enums.BpmErrorCode.TASK_COMPLETE_FAIL_NOT_EXISTS;
import static cn.axzo.workflow.core.common.enums.BpmProcessInstanceResultEnum.APPROVED;
import static cn.axzo.workflow.core.common.enums.BpmProcessInstanceResultEnum.CANCELLED;
import static cn.axzo.workflow.core.common.enums.BpmProcessInstanceResultEnum.REJECTED;
import static cn.axzo.workflow.core.common.enums.BpmProcessInstanceResultEnum.valueOfStatus;
import static cn.axzo.workflow.core.common.utils.BpmCollectionUtils.convertSet;
@ -389,20 +387,19 @@ public class BpmnTaskServiceImpl implements BpmnTaskService {
Set<String> taskDefinitionKeys = new HashSet<>();
int count = 0;
BpmProcessInstanceResultEnum finalBusinessStatus = valueOfStatus(instance.getBusinessStatus());
BpmProcessInstanceResultEnum processBusinessStatus = valueOfStatus(instance.getBusinessStatus());
for (BpmnHistoricTaskInstanceVO vo : vos) {
if (count == 0 || taskDefinitionKeys.contains(vo.getTaskDefinitionKey())) {
vo.setResult(finalBusinessStatus);
if (Objects.nonNull(vo.getEndTime())) {
vo.setResult((BpmProcessInstanceResultEnum) instance.getProcessVariables().getOrDefault(TASK_COMPLETE_OPERATION_TYPE + vo.getTaskId(), APPROVED));
}
if (Objects.nonNull(vo.getEndTime()) && !Objects.equals(finalBusinessStatus, REJECTED)
&& !Objects.equals(finalBusinessStatus, CANCELLED)) {
vo.setResult(APPROVED);
}
} else {
vo.setResult(APPROVED);
vo.setResult(processBusinessStatus);
if (Objects.nonNull(vo.getEndTime())) {
// 只有拒绝时, 为指定的 taskId 设置过拒绝变量
vo.setResult((BpmProcessInstanceResultEnum) instance.getProcessVariables().getOrDefault(TASK_COMPLETE_OPERATION_TYPE + vo.getTaskId(), processBusinessStatus));
}
// if (count == 0 || taskDefinitionKeys.contains(vo.getTaskDefinitionKey())) {
// vo.setResult(processBusinessStatus);
//
// } else {
// vo.setResult(APPROVED);
// }
taskDefinitionKeys.add(vo.getTaskDefinitionKey());
List<Comment> taskComments = commentByTaskIdMap.getOrDefault(vo.getTaskId(), Collections.emptyList());