From 5c85105cb187e836e0c1568b0f50037ad8081706 Mon Sep 17 00:00:00 2001 From: caihaohan Date: Mon, 25 Dec 2023 17:48:42 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=88=B6=E4=BF=AE=E8=AE=A2=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E5=BE=81=E6=B1=82=E6=84=8F=E8=A7=81=E9=80=89=E4=BA=BA?= =?UTF-8?q?=E7=89=B9=E6=AE=8A=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../activiti/service/ProcessNodeService.java | 77 ++++++++++++++++--- 1 file changed, 66 insertions(+), 11 deletions(-) diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/service/ProcessNodeService.java b/laws-modules/src/main/java/com/jero/modules/activiti/service/ProcessNodeService.java index f740b611..05815b0e 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/service/ProcessNodeService.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/service/ProcessNodeService.java @@ -1,6 +1,7 @@ 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; @@ -8,6 +9,8 @@ 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 com.jero.modules.activiti.process.common.enums.ProcessType; +import com.jero.modules.activiti.process.esRevision.entity.RevisionTaskNodeIdConstant; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -18,13 +21,13 @@ import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.stream.Collectors; /** - * - *@author liJiaRao - *@date 2023-09-26 15:12 - */ + * @author liJiaRao + * @date 2023-09-26 15:12 + */ @Service @Slf4j public class ProcessNodeService extends ServiceImpl { @@ -37,15 +40,15 @@ public class ProcessNodeService extends ServiceImpl wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(ProcessModelNode::getNodeType,"userTask"); - wrapper.eq(ProcessModelNode::getModelId,modelId); + wrapper.eq(ProcessModelNode::getNodeType, "userTask"); + wrapper.eq(ProcessModelNode::getModelId, modelId); wrapper.isNotNull(ProcessModelNode::getSort); List processModelNodes = processModelNodeMapper.selectList(wrapper); List processNodeList = new ArrayList<>(); for (ProcessModelNode processModelNode : processModelNodes) { ProcessNode node = new ProcessNode(); - BeanUtils.copyProperties(processModelNode,node); + BeanUtils.copyProperties(processModelNode, node); node.setId(null); node.setProcessDefinitionId(processDefinitionId); processNodeList.add(node); @@ -85,7 +88,7 @@ public class ProcessNodeService extends ServiceImpl { viewNode.setProcessDefinitionId(processDefinitionId); viewNode.setId(null); - if (map.containsKey(viewNode.getXmlNodeId())){ + if (map.containsKey(viewNode.getXmlNodeId())) { viewNode.setNodeName(map.get(viewNode.getXmlNodeId())); } }); @@ -102,15 +105,67 @@ public class ProcessNodeService extends ServiceImpl getNodeList(String processDefinitionId, String processInstanceId) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(ProcessNode::getProcessDefinitionId,processDefinitionId); + wrapper.eq(ProcessNode::getProcessDefinitionId, processDefinitionId); wrapper.orderByAsc(ProcessNode::getSort); //List processNodeList = this.list(wrapper); - List processNodeList = processNodeMapper.selectByIdPdIdAndPiId(processDefinitionId,processInstanceId); + List processNodeList = processNodeMapper.selectByIdPdIdAndPiId(processDefinitionId, processInstanceId); + // 制修订流程特殊处理 + if (processDefinitionId.contains(ProcessType.ES_REVISION.getProcessKey())) { + specialProcessEsRevisionPre(processNodeList); + } // 可跳过节点判断 processNodeList = processNodeList.stream().filter(v -> YesOrNoEnum.NO.getValue().equals(v.getIsSkip()) || (YesOrNoEnum.YES.getValue().equals(v.getIsSkip()) && StringUtils.isNotBlank(v.getLinkUserIds()))) - .collect(Collectors.toList()); + .collect(Collectors.toList()); + // 制修订流程特殊处理 + if (processDefinitionId.contains(ProcessType.ES_REVISION.getProcessKey())) { + specialProcessEsRevisionEnd(processNodeList); + } return processNodeList; } + + /** + * 前处理 + * @param processNodeList + */ + private void specialProcessEsRevisionPre(List processNodeList) { + String contactUser = null; + String adviceObject = null; + for (ProcessNode processNode : processNodeList) { + if (RevisionTaskNodeIdConstant.CONTACT_USER_DISTRIBUTE.equals(processNode.getXmlNodeId())) { + contactUser = processNode.getLinkUserIds(); + } + if (RevisionTaskNodeIdConstant.ADVICE.equals(processNode.getXmlNodeId())) { + adviceObject = processNode.getLinkUserIds(); + } + } + if (StrUtil.isNotBlank(contactUser) && StrUtil.isBlank(adviceObject)) { + processNodeList.forEach(r -> { + if (RevisionTaskNodeIdConstant.ADVICE.equals(r.getXmlNodeId())) { + r.setLinkUserIds("tempUser"); + } + }); + } + } + + /** + * 后处理 + * @param processNodeList + */ + private void specialProcessEsRevisionEnd(List processNodeList) { + String adviceObject = null; + for (ProcessNode processNode : processNodeList) { + if (RevisionTaskNodeIdConstant.ADVICE.equals(processNode.getXmlNodeId())) { + adviceObject = processNode.getLinkUserIds(); + } + } + if ("tempUser".equals(adviceObject)) { + processNodeList.forEach(r -> { + if (RevisionTaskNodeIdConstant.ADVICE.equals(r.getXmlNodeId())) { + r.setLinkUserIds(null); + } + }); + } + } }