From 7b451c9d8b470a9dbc23cd70a1175f707b7c1738 Mon Sep 17 00:00:00 2001 From: lijiarao Date: Thu, 12 Oct 2023 18:11:33 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E5=88=A0=E9=99=A4=E8=8A=82=E7=82=B9?= =?UTF-8?q?=EF=BC=88=E6=9C=AA=E5=AE=8C=E6=88=90=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ModelerController.java | 12 +-- .../service/ProcessModelNodeService.java | 92 ++++++++++++++++++- 2 files changed, 93 insertions(+), 11 deletions(-) diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/controller/ModelerController.java b/laws-modules/src/main/java/com/jero/modules/activiti/controller/ModelerController.java index 8efcd0d3..b23080b9 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/controller/ModelerController.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/controller/ModelerController.java @@ -1,8 +1,6 @@ package com.jero.modules.activiti.controller; import cn.hutool.core.collection.CollStreamUtil; -import cn.hutool.core.map.MapUtil; -import cn.hutool.core.stream.StreamUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; @@ -10,7 +8,6 @@ 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.entity.ProcessNodeOrigin; import com.jero.modules.activiti.service.LawsProcessNodeOriginService; import com.jero.modules.activiti.service.ProcessModelNodeService; import com.jero.modules.activiti.util.CreatedTools; @@ -47,7 +44,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; -import java.util.stream.Stream; /** * @author liJiaRao @@ -436,15 +432,15 @@ public class ModelerController { @PostMapping("/addTask") @ApiOperation("新增节点") - public Object addTask(@RequestBody AddTaskVO addTaskVO, HttpServletResponse response) { - processModelNodeService.addTask(addTaskVO,response); + public Object addTask(@RequestBody AddTaskVO addTaskVO) { + processModelNodeService.addTask(addTaskVO); return Result.OK(MessageUtils.getMessage(ResultCommon.OK)); } @PostMapping("/deleteTask") @ApiOperation("删除节点") - public Object deleteTask(@RequestBody AddTaskVO addTaskVO, HttpServletResponse response) { - processModelNodeService.deleteTask(addTaskVO,response); + public Object deleteTask(@RequestBody AddTaskVO addTaskVO) { + processModelNodeService.deleteTask(addTaskVO); return Result.OK(MessageUtils.getMessage(ResultCommon.OK)); } diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/service/ProcessModelNodeService.java b/laws-modules/src/main/java/com/jero/modules/activiti/service/ProcessModelNodeService.java index 8ada4903..b27c3ab8 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/service/ProcessModelNodeService.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/service/ProcessModelNodeService.java @@ -9,6 +9,7 @@ import com.jero.common.constant.enums.YesOrNoEnum; import com.jero.common.exception.JeroBootException; import com.jero.modules.activiti.entity.ProcessModelNode; import com.jero.modules.activiti.vo.AddTaskVO; +import lombok.extern.slf4j.Slf4j; import org.activiti.bpmn.BpmnAutoLayout; import org.activiti.bpmn.converter.BpmnXMLConverter; import org.activiti.bpmn.model.*; @@ -35,6 +36,7 @@ import com.jero.modules.activiti.mapper.ProcessModelNodeMapper; *@author liJiaRao *@date 2023-10-08 14:08 */ +@Slf4j @Service public class ProcessModelNodeService extends ServiceImpl { @Resource @@ -72,7 +74,7 @@ public class ProcessModelNodeService extends ServiceImpl processModelNodeLambdaQueryWrapper = new LambdaQueryWrapper<>(); + processModelNodeLambdaQueryWrapper.eq(ProcessModelNode::getXmlNodeId, xmlNodeId) + .eq(ProcessModelNode::getModelId, modelId); + + ProcessModelNode processModelNode = processModelNodeMapper.selectOne(processModelNodeLambdaQueryWrapper); + if (processModelNode == null || !YesOrNoEnum.YES.getInteger().equals(processModelNode.getIsCanDeleted())) { + throw new JeroBootException("只能删除自定义新增的审批节点"); + } + processModelNodeLambdaQueryWrapper.clear(); + //查找指向当前节点的线 + processModelNodeLambdaQueryWrapper.eq(ProcessModelNode::getXmlTargetRef, xmlNodeId) + .isNull(ProcessModelNode::getNodeName) + .eq(ProcessModelNode::getModelId, modelId); + ProcessModelNode flowTarget = processModelNodeMapper.selectOne(processModelNodeLambdaQueryWrapper); + processModelNodeLambdaQueryWrapper.clear(); + //查找节点的流出线 + processModelNodeLambdaQueryWrapper.eq(ProcessModelNode::getXmlSourceRef, xmlNodeId) + .eq(ProcessModelNode::getModelId, modelId); + ProcessModelNode flowOrigin1 = processModelNodeMapper.selectOne(processModelNodeLambdaQueryWrapper); + + processModelNodeLambdaQueryWrapper.clear(); + //查找流出线指向的网关 + processModelNodeLambdaQueryWrapper.eq(ProcessModelNode::getXmlNodeId, flowOrigin1.getXmlTargetRef()) + .eq(ProcessModelNode::getModelId, modelId); + ProcessModelNode gatewayOrigin = processModelNodeMapper.selectOne(processModelNodeLambdaQueryWrapper); + + processModelNodeLambdaQueryWrapper.clear(); + //查找网关指向的线 + processModelNodeLambdaQueryWrapper.eq(ProcessModelNode::getXmlSourceRef, gatewayOrigin.getXmlNodeId()) + .eq(ProcessModelNode::getNodeName, "通过") + .eq(ProcessModelNode::getModelId, modelId); + + ProcessModelNode flowOrigin2 = processModelNodeMapper.selectOne(processModelNodeLambdaQueryWrapper); + byte[] modelEditorSource = repositoryService.getModelEditorSource(modelId); + ObjectNode objectNode = (ObjectNode) new ObjectMapper().readTree(modelEditorSource); + BpmnModel bpmnModel = new BpmnJsonConverter().convertToBpmnModel(objectNode); + Process process = bpmnModel.getMainProcess(); + Gateway gateway = (Gateway) process.getFlowElement(gatewayOrigin.getXmlNodeId()); + List outgoingFlows = gateway.getOutgoingFlows(); + for (SequenceFlow outgoingFlow : outgoingFlows) { + String name = outgoingFlow.getName(); + if ("通过".equals(name)){ + + } + } + List incomingFlows = gateway.getIncomingFlows(); + + //SequenceFlow flowElement = (SequenceFlow) process.getFlowElement(flowTarget.getXmlNodeId()); + UserTask userTask = (UserTask) process.getFlowElement(xmlNodeId); + List outgoingFlows1 = userTask.getOutgoingFlows(); + List incomingFlows1 = userTask.getIncomingFlows(); + log.info("outgoingFlows1:"+outgoingFlows1.size()); + + //重新绘画图形 + //BpmnAutoLayout bpmnAutoLayout = new BpmnAutoLayout(bpmnModel); + //bpmnAutoLayout.execute(); + //更新model + //ObjectNode objectNode1 = new BpmnJsonConverter().convertToJson(bpmnModel); + //String json = objectNode1.toString(); + //byte[] bytes1 = json.getBytes(StandardCharsets.UTF_8); + //repositoryService.addModelEditorSource(modelId, bytes1); + + //把新增的节点同步到数据库 + //LambdaUpdateWrapper updateFlow = new LambdaUpdateWrapper<>(); + //updateFlow.eq(ProcessModelNode::getXmlNodeId,flowOrigin2.getXmlNodeId()); + //updateFlow.set(ProcessModelNode::getXmlTargetRef,userTaskId); + //processModelNodeMapper.update(null,updateFlow); + //insertUserTask(modelId, userTask); + //List incomingFlows = gateway.getIncomingFlows(); + //for (SequenceFlow incomingFlow : incomingFlows) { + // insertFlow(modelId, incomingFlow); + //} + //insertGateway(modelId, gateway); + //List outgoingFlows = gateway.getOutgoingFlows(); + //for (SequenceFlow outgoingFlow : outgoingFlows) { + // insertFlow(modelId, outgoingFlow); + //} + } catch (IOException e) { + e.printStackTrace(); + } } private void insertGateway(String modelId, ExclusiveGateway gateway) {