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 cba8842f..825b1a8a 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 @@ -3,6 +3,8 @@ package com.jero.modules.activiti.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.jero.modules.activiti.entity.ProcessModelNode; import com.jero.modules.activiti.mapper.ProcessModelNodeMapper; +import com.jero.modules.activiti.process.fb.common.ProcessDefinitionKey; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; @@ -13,6 +15,7 @@ import com.jero.modules.activiti.entity.ProcessNode; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; /** * @@ -20,6 +23,7 @@ import java.util.List; *@date 2023-09-26 15:12 */ @Service +@Slf4j public class ProcessNodeService extends ServiceImpl { @Resource private ProcessModelNodeMapper processModelNodeMapper; @@ -43,7 +47,47 @@ public class ProcessNodeService extends ServiceImpl viewNodeList = getViewNodeList(processNodeList, processDefinitionId); + + this.saveBatch(viewNodeList); + } + + /** + * @Author: liao + * @Date: 2023/11/22 16:39 + * @Description: 对流程节点做一下特殊处理 + **/ + private List getViewNodeList(List processNodeList, String processDefinitionId) { + String[] parts = processDefinitionId.split(":"); + String definitionKey = parts[0]; + Integer version = Integer.valueOf(parts[1]) - 1; + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.like(ProcessNode::getProcessDefinitionId, definitionKey + ":" + version); + List oldNodeList = list(queryWrapper); + + List nodeNameList = oldNodeList.stream() + .map(ProcessNode::getNodeName).distinct().collect(Collectors.toList()); + + // 给前端展示的节点 + List viewNodeList = oldNodeList.stream() + .filter(node -> node.getIsView() == 1).collect(Collectors.toList()); + + viewNodeList.forEach(viewNode -> { + viewNode.setProcessDefinitionId(processDefinitionId); + viewNode.setId(null); + }); + + for (ProcessNode processNode : processNodeList) { + // 如果旧列表里面不存在这个名字,即为新增节点 + if (!nodeNameList.contains(processNode.getNodeName())) { + viewNodeList.add(processNode); + } + } + + return viewNodeList; } public List getNodeList(String processDefinitionId, String processInstanceId) { diff --git a/laws-modules/src/main/resources/bpmn/标准征求意见流程.bpmn b/laws-modules/src/main/resources/bpmn/标准征求意见流程.bpmn index c9d40b49..1be585b6 100644 --- a/laws-modules/src/main/resources/bpmn/标准征求意见流程.bpmn +++ b/laws-modules/src/main/resources/bpmn/标准征求意见流程.bpmn @@ -1,6 +1,6 @@ - + Flow_1d5objw @@ -144,6 +144,7 @@ Flow_19vxot3 + Flow_06kgad6 Flow_1125yee @@ -161,6 +162,7 @@ Flow_0jjkrst + Flow_06kgad6 ${nrOfInstances== nrOfCompletedInstances} @@ -234,6 +236,7 @@ ${!passThird} + @@ -244,12 +247,6 @@ - - - - - - @@ -274,10 +271,6 @@ - - - - @@ -325,6 +318,10 @@ + + + + @@ -388,25 +385,18 @@ + + + + + + - - - - - - - - - - - - - @@ -415,17 +405,30 @@ + + + + + + + + + + + + + - - - + + + - - - + + + @@ -434,10 +437,6 @@ - - - - @@ -447,6 +446,14 @@ + + + + + + + + @@ -462,10 +469,6 @@ - - - - @@ -501,6 +504,10 @@ + + + +