feat(REQ-4418) - 自动过审添加日志
This commit is contained in:
parent
f0d4c528aa
commit
eb1b4e8e78
@ -1,5 +1,6 @@
|
||||
package cn.axzo.workflow.server.controller.listener.task.service.impl;
|
||||
|
||||
import cn.axzo.framework.jackson.utility.JSON;
|
||||
import cn.axzo.workflow.common.enums.BpmnButtonEnum;
|
||||
import cn.axzo.workflow.common.enums.BpmnFlowNodeType;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.BpmnButtonConf;
|
||||
@ -12,6 +13,7 @@ import cn.axzo.workflow.core.repository.entity.ExtAxHiTaskInst;
|
||||
import cn.axzo.workflow.core.service.ExtAxHiTaskInstService;
|
||||
import cn.axzo.workflow.server.controller.listener.task.service.CheckApproverService;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
|
||||
import org.flowable.bpmn.model.FlowElement;
|
||||
import org.flowable.bpmn.model.Process;
|
||||
@ -45,6 +47,7 @@ import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.APPROV
|
||||
* b. 连续节点
|
||||
* c. 当前节点有同意按钮
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@AllArgsConstructor
|
||||
public class CheckApproverServiceImpl implements CheckApproverService {
|
||||
@ -60,15 +63,18 @@ public class CheckApproverServiceImpl implements CheckApproverService {
|
||||
if (!(Objects.equals(currentNodeType, NODE_TASK) || Objects.equals(currentNodeType, NODE_BUSINESS)) ||
|
||||
!StringUtils.hasText(delegateTask.getAssignee()) ||
|
||||
delegateTask.getAssignee().equals(NO_ASSIGNEE)) {
|
||||
log.info("CheckApproverServiceImpl#checkApproverExists...节点类型:{},审批人:{}", currentNodeType, delegateTask.getAssignee());
|
||||
return exists.get();
|
||||
}
|
||||
Optional<BpmnButtonConf> optConfig = BpmnMetaParserHelper.getButtonConfig(mainProcess, delegateTask.getTaskDefinitionKey());
|
||||
if (!optConfig.isPresent()) {
|
||||
log.info("CheckApproverServiceImpl#checkApproverExists...节点未配置按钮,节点ID:{}", delegateTask.getTaskDefinitionKey());
|
||||
return exists.get();
|
||||
}
|
||||
BpmnButtonConf bpmnButtonConf = optConfig.get();
|
||||
List<BpmnButtonMetaInfo> currentButtons = bpmnButtonConf.getCurrent();
|
||||
if (CollectionUtils.isEmpty(currentButtons)) {
|
||||
log.info("CheckApproverServiceImpl#checkApproverExists...节点按钮配置为空,节点ID:{}", delegateTask.getTaskDefinitionKey());
|
||||
return exists.get();
|
||||
}
|
||||
Optional<BpmnButtonMetaInfo> agreeButton = currentButtons.stream()
|
||||
@ -79,6 +85,7 @@ public class CheckApproverServiceImpl implements CheckApproverService {
|
||||
.findFirst();
|
||||
//不存在同意按钮
|
||||
if (!agreeButton.isPresent()) {
|
||||
log.info("CheckApproverServiceImpl#checkApproverExists...节点未配置同意按钮,节点ID:{}", delegateTask.getTaskDefinitionKey());
|
||||
return exists.get();
|
||||
}
|
||||
ProcessEngineConfigurationImpl processEngineConfiguration = CommandContextUtil.getProcessEngineConfiguration();
|
||||
@ -91,21 +98,26 @@ public class CheckApproverServiceImpl implements CheckApproverService {
|
||||
.filter(i -> !Objects.equals(i.getActivityType(), "startEvent"))
|
||||
.max(Comparator.comparing(ActivityInstanceEntity::getEndTime))
|
||||
.ifPresent(i -> {
|
||||
log.info("CheckApproverServiceImpl#checkApproverExists...上一个节点ID:{},类型:{}", i.getActivityId(), i.getActivityType());
|
||||
// 与发起人比对
|
||||
if (Objects.equals(NODE_STARTER.getType(), i.getActivityId())) {
|
||||
log.info("CheckApproverServiceImpl#checkApproverExists...与发起人比对");
|
||||
BpmnTaskDelegateAssigner initiator = BpmnTaskDelegateAssigner.toObjectCompatible(delegateTask.getVariable(INTERNAL_INITIATOR));
|
||||
if (Objects.nonNull(initiator) && initiator.comparePersonIdToOther(delegateTask.getAssignee())) {
|
||||
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);
|
||||
@ -116,6 +128,7 @@ public class CheckApproverServiceImpl implements CheckApproverService {
|
||||
previousTasks.add(extAxHiTaskInst);
|
||||
}
|
||||
}
|
||||
log.info("CheckApproverServiceImpl#checkApproverExists...待比对的历史审批任务列表:{}", JSON.toJSONString(previousTasks));
|
||||
previousTasks.stream()
|
||||
.filter(e -> Objects.equals(e.getStatus(), APPROVED.getStatus()))
|
||||
.map(ExtAxHiTaskInst::getAssignee)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user