fix: scc流程人员信息左侧节点修正

This commit is contained in:
2024-07-18 10:04:13 +08:00
parent d55ddecc67
commit b7e9f7d363
2 changed files with 27 additions and 28 deletions
@@ -8,13 +8,8 @@ import com.fasterxml.jackson.databind.node.ObjectNode;
import com.jero.common.api.vo.Result;
import com.jero.common.util.MessageUtils;
import com.jero.modules.activiti.entity.ProcessModelNode;
import com.jero.modules.activiti.listener.CompleteListener;
import com.jero.modules.activiti.listener.CreateListener;
import com.jero.modules.activiti.listener.EndListener;
import com.jero.modules.activiti.listener.StartListener;
import com.jero.modules.activiti.service.ProcessNodeService;
import com.jero.modules.activiti.service.ProcessModelNodeService;
import com.jero.modules.activiti.util.CreatedTools;
import com.jero.modules.activiti.vo.AddTaskVO;
import com.jero.common.api.vo.ResultCommon;
import io.swagger.annotations.Api;
@@ -28,8 +23,6 @@ import org.activiti.bpmn.model.Process;
import org.activiti.editor.constants.ModelDataJsonConstants;
import org.activiti.editor.language.json.converter.BpmnJsonConverter;
import org.activiti.engine.*;
import org.activiti.engine.delegate.BaseExecutionListener;
import org.activiti.engine.delegate.TaskListener;
import org.activiti.engine.repository.*;
import org.activiti.engine.runtime.ProcessInstance;
import org.apache.commons.lang3.StringUtils;
@@ -1,15 +1,17 @@
package com.jero.modules.activiti.service;
import cn.hutool.core.collection.CollStreamUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.constant.enums.YesOrNoEnum;
import com.jero.modules.activiti.common.ActivitiCommon;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.entity.ProcessModelNode;
import com.jero.modules.activiti.entity.ProcessNode;
import com.jero.modules.activiti.mapper.ProcessModelNodeMapper;
import com.jero.modules.activiti.mapper.ProcessNodeMapper;
import lombok.extern.slf4j.Slf4j;
import org.activiti.engine.RuntimeService;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
@@ -21,6 +23,9 @@ import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static com.jero.modules.activiti.common.ActivitiCommon.*;
import static com.jero.modules.activiti.process.standardComplianceCheck.common.ProcessStandardComplianceCheckConstants.*;
/**
* @author liJiaRao
* @date 2023-09-26 15:12
@@ -34,6 +39,12 @@ public class ProcessNodeService extends ServiceImpl<ProcessNodeMapper, ProcessNo
@Resource
private ProcessNodeMapper processNodeMapper;
@Resource
private RuntimeService runtimeService;
@Resource
private ProcessApprovalRecordService parService;
public void copyNodeFromModel(String modelId, String processDefinitionId) {
LambdaQueryWrapper<ProcessModelNode> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ProcessModelNode::getNodeType, "userTask");
@@ -114,30 +125,25 @@ public class ProcessNodeService extends ServiceImpl<ProcessNodeMapper, ProcessNo
// 过滤掉自动处理任务节点
processNodeList = processNodeList.stream().filter(v -> !"123".equals(v.getVariableName()))
.collect(Collectors.toList());
specialProcessScc(processNodeList, processInstanceId);
return processNodeList;
}
private void specialProcessEsRecheck(List<ProcessNode> processNodeList, String processInstanceId) {
// 如果有标准化发起节点,但是没有人员,则删除标准化发起节点
ProcessNode firstNode = processNodeList.get(0);
ProcessNode secondNode = processNodeList.get(1);
if (StrUtil.isNotBlank(secondNode.getLinkUserIds())) {
if (StrUtil.isBlank(firstNode.getLinkUserIds())) {
processNodeList.remove(0);
}
private void specialProcessScc(List<ProcessNode> processNodeList, String processInstanceId) {
// 如果没分发 则不显示 主排查人单线审核 主排查人汇总节点
String mainInstanceId = (String) runtimeService.getVariable(processInstanceId, ActivitiCommon.MAIN_INSTANCE_ID);
boolean distribute = (boolean) runtimeService.getVariable(mainInstanceId, DISTRIBUTE);
if (!distribute) {
processNodeList.removeIf( v -> v.getXmlNodeId().equals(MAIN_CHECK_USER_APPROVAL)
|| v.getXmlNodeId().equals(MAIN_CHECK_USER_COLLECT));
}
}
private void specialProcessEsMiniProcessEnd(List<ProcessNode> processNodeList) {
// 如果第三个节点有选人信息,则判断相关人员会签节点是否有人,如果没人,则删除相关人员会签节点
if (processNodeList.size() >= 3) {
ProcessNode processNode = processNodeList.get(2);
if (StrUtil.isNotBlank(processNode.getLinkUserIds())) {
ProcessNode processNode1 = processNodeList.get(1);
if (StrUtil.isBlank(processNode1.getLinkUserIds())) {
processNodeList.remove(1);
}
}
// 判断有没有 主排查人重新分批下发 节点
LambdaQueryWrapper<ProcessApprovalRecord> parWrapper = new LambdaQueryWrapper<>();
parWrapper.eq(ProcessApprovalRecord::getProcessInstanceId, processInstanceId);
parWrapper.eq(ProcessApprovalRecord::getNodeId, MAIN_CHECK_USER_REDISTRIBUTE);
List<ProcessApprovalRecord> list = parService.list(parWrapper);
if (CollectionUtils.isEmpty(list)) {
processNodeList.removeIf( v -> v.getXmlNodeId().equals(MAIN_CHECK_USER_REDISTRIBUTE));
}
}
}