feat(REQ-4418) - 自动过审添加日志

This commit is contained in:
wangli 2025-08-28 14:52:00 +08:00
parent eb1b4e8e78
commit 3cb82baf65

View File

@ -90,56 +90,56 @@ public class CheckApproverServiceImpl implements CheckApproverService {
} }
ProcessEngineConfigurationImpl processEngineConfiguration = CommandContextUtil.getProcessEngineConfiguration(); ProcessEngineConfigurationImpl processEngineConfiguration = CommandContextUtil.getProcessEngineConfiguration();
processEngineConfiguration.getActivityInstanceEntityManager() processEngineConfiguration.getActivityInstanceEntityManager()
.findActivityInstancesByProcessInstanceId(delegateTask.getProcessInstanceId(), false) .findActivityInstancesByProcessInstanceId(delegateTask.getProcessInstanceId(), false)
.stream() .stream()
.filter(i -> !Objects.equals(i.getActivityId(), userTask.getId())) .filter(i -> !Objects.equals(i.getActivityId(), userTask.getId()))
.filter(i -> !Objects.equals(i.getActivityType(), "exclusiveGateway")) .filter(i -> !Objects.equals(i.getActivityType(), "exclusiveGateway"))
.filter(i -> !Objects.equals(i.getActivityType(), "sequenceFlow")) .filter(i -> !Objects.equals(i.getActivityType(), "sequenceFlow"))
.filter(i -> !Objects.equals(i.getActivityType(), "startEvent")) .filter(i -> !Objects.equals(i.getActivityType(), "startEvent"))
.max(Comparator.comparing(ActivityInstanceEntity::getEndTime)) .max(Comparator.comparing(ActivityInstanceEntity::getEndTime))
.ifPresent(i -> { .ifPresent(i -> {
log.info("CheckApproverServiceImpl#checkApproverExists...上一个节点ID:{},类型:{}", i.getActivityId(), i.getActivityType()); log.info("CheckApproverServiceImpl#checkApproverExists...上一个节点ID:{},类型:{}", i.getActivityId(), i.getActivityType());
// 与发起人比对 // 与发起人比对
if (Objects.equals(NODE_STARTER.getType(), i.getActivityId())) { if (Objects.equals(NODE_STARTER.getType(), i.getActivityId())) {
log.info("CheckApproverServiceImpl#checkApproverExists...与发起人比对"); log.info("CheckApproverServiceImpl#checkApproverExists...与发起人比对");
BpmnTaskDelegateAssigner initiator = BpmnTaskDelegateAssigner.toObjectCompatible(delegateTask.getVariable(INTERNAL_INITIATOR)); BpmnTaskDelegateAssigner initiator = BpmnTaskDelegateAssigner.toObjectCompatible(delegateTask.getVariable(INTERNAL_INITIATOR));
if (Objects.nonNull(initiator) && initiator.comparePersonIdToOther(delegateTask.getAssignee())) { if (Objects.nonNull(initiator) && initiator.comparePersonIdToOther(delegateTask.getAssignee())) {
exists.compareAndSet(false, true); exists.compareAndSet(false, true);
}
} else {
log.info("CheckApproverServiceImpl#checkApproverExists...与历史审批人比对, 上节点ID{}", i.getActivityId());
FlowElement flowElement = mainProcess.getFlowElement(i.getActivityId());
BpmnMetaParserHelper.getNodeType(flowElement).ifPresent(j -> {
log.info("CheckApproverServiceImpl#checkApproverExists...上一个节点类型:{}", j);
//上一节点如果是业务节点,但是是人员审批,也需要加入到自动过审
if (Objects.equals(NODE_TASK, j) || (Objects.equals(NODE_BUSINESS, j) && flowElement.getClass().isAssignableFrom(UserTask.class))) {
ExtHiTaskSearchDTO searchDTO = new ExtHiTaskSearchDTO();
searchDTO.setProcessInstanceId(delegateTask.getProcessInstanceId());
List<ExtAxHiTaskInst> extAxHiTaskInsts = extAxHiTaskInstService.queryList(searchDTO);
extAxHiTaskInsts.sort(Comparator.comparing(ExtAxHiTaskInst::getCreateAt));
log.info("CheckApproverServiceImpl#checkApproverExists...历史审批任务列表:{}", JSON.toJSONString(extAxHiTaskInsts));
List<ExtAxHiTaskInst> previousTasks = new ArrayList<>();
for (int k = extAxHiTaskInsts.size() - 1; k > 0; k--) {
ExtAxHiTaskInst extAxHiTaskInst = extAxHiTaskInsts.get(k);
if (!extAxHiTaskInst.getTaskDefinitionKey().equals(i.getActivityId()) && !CollectionUtils.isEmpty(previousTasks)) {
break;
}
if (extAxHiTaskInst.getTaskDefinitionKey().equals(i.getActivityId())) {
previousTasks.add(extAxHiTaskInst);
}
}
log.info("CheckApproverServiceImpl#checkApproverExists...待比对的历史审批任务列表:{}", JSON.toJSONString(previousTasks));
previousTasks.stream()
.filter(e -> Objects.equals(e.getStatus(), APPROVED.getStatus()))
.map(ExtAxHiTaskInst::getAssignee)
.filter(Objects::nonNull)
.filter(StringUtils::hasText)
.filter(k -> specialApproverComparison(k, delegateTask.getAssignee()))
.findAny().ifPresent(k -> exists.compareAndSet(false, true));
} }
}); } else {
} log.info("CheckApproverServiceImpl#checkApproverExists...与历史审批人比对, 上节点ID{}", i.getActivityId());
}); FlowElement flowElement = mainProcess.getFlowElement(i.getActivityId());
BpmnMetaParserHelper.getNodeType(flowElement).ifPresent(j -> {
log.info("CheckApproverServiceImpl#checkApproverExists...上一个节点类型:{}", j);
//上一节点如果是业务节点,但是是人员审批,也需要加入到自动过审
if (Objects.equals(NODE_TASK, j) || (Objects.equals(NODE_BUSINESS, j) && flowElement.getClass().isAssignableFrom(UserTask.class))) {
ExtHiTaskSearchDTO searchDTO = new ExtHiTaskSearchDTO();
searchDTO.setProcessInstanceId(delegateTask.getProcessInstanceId());
List<ExtAxHiTaskInst> extAxHiTaskInsts = extAxHiTaskInstService.queryList(searchDTO);
extAxHiTaskInsts.sort(Comparator.comparing(ExtAxHiTaskInst::getCreateAt));
log.info("CheckApproverServiceImpl#checkApproverExists...历史审批任务列表:{}", JSON.toJSONString(extAxHiTaskInsts));
List<ExtAxHiTaskInst> previousTasks = new ArrayList<>();
for (int k = extAxHiTaskInsts.size() - 1; k > 0; k--) {
ExtAxHiTaskInst extAxHiTaskInst = extAxHiTaskInsts.get(k);
if (!extAxHiTaskInst.getTaskDefinitionKey().equals(i.getActivityId()) && !CollectionUtils.isEmpty(previousTasks)) {
break;
}
if (extAxHiTaskInst.getTaskDefinitionKey().equals(i.getActivityId())) {
previousTasks.add(extAxHiTaskInst);
}
}
log.info("CheckApproverServiceImpl#checkApproverExists...待比对的历史审批任务列表:{}", JSON.toJSONString(previousTasks));
previousTasks.stream()
.filter(e -> Objects.equals(e.getStatus(), APPROVED.getStatus()))
.map(ExtAxHiTaskInst::getAssignee)
.filter(Objects::nonNull)
.filter(StringUtils::hasText)
.filter(k -> specialApproverComparison(k, delegateTask.getAssignee()))
.findAny().ifPresent(k -> exists.compareAndSet(false, true));
}
});
}
});
return exists.get(); return exists.get();
} }