From 14fa96f4f3258a620e4053bd048a379e9ef7f504 Mon Sep 17 00:00:00 2001 From: lijiarao Date: Fri, 13 Oct 2023 10:35:12 +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=E5=AE=8C=E6=88=90=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/ProcessModelNodeService.java | 88 ++++++++++--------- 1 file changed, 48 insertions(+), 40 deletions(-) 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 b27c3ab8..9efd45b7 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 @@ -141,6 +141,7 @@ public class ProcessModelNodeService extends ServiceImpl updateFlow = new LambdaUpdateWrapper<>(); + updateFlow.eq(ProcessModelNode::getModelId,modelId); updateFlow.eq(ProcessModelNode::getXmlNodeId,flowOrigin2.getXmlNodeId()); updateFlow.set(ProcessModelNode::getXmlTargetRef,userTaskId); processModelNodeMapper.update(null,updateFlow); @@ -176,12 +177,6 @@ public class ProcessModelNodeService extends ServiceImpl xmlNodeIdList = new ArrayList<>(); + Gateway gateway = (Gateway) process.getFlowElement(gatewayOrigin.getXmlNodeId()); + String gatewayId = gateway.getId(); + process.removeFlowElement(gatewayId); + xmlNodeIdList.add(gatewayId); + //网关的流入流出线 List outgoingFlows = gateway.getOutgoingFlows(); + String finalTargetRef = null; for (SequenceFlow outgoingFlow : outgoingFlows) { String name = outgoingFlow.getName(); if ("通过".equals(name)){ - + finalTargetRef = outgoingFlow.getTargetRef(); } + process.removeFlowElement(outgoingFlow.getId()); + xmlNodeIdList.add(outgoingFlow.getId()); } List incomingFlows = gateway.getIncomingFlows(); + for (SequenceFlow incomingFlow : incomingFlows) { + process.removeFlowElement(incomingFlow.getId()); + xmlNodeIdList.add(incomingFlow.getId()); + } - //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()); - + process.removeFlowElement(xmlNodeId); + xmlNodeIdList.add(xmlNodeId); + List beforeUserTaskFlows = userTask.getIncomingFlows(); + for (SequenceFlow flow : beforeUserTaskFlows) { + flow.setTargetRef(finalTargetRef); + process.removeFlowElement(flow.getId()); + process.addFlowElement(flow); + } //重新绘画图形 - //BpmnAutoLayout bpmnAutoLayout = new BpmnAutoLayout(bpmnModel); - //bpmnAutoLayout.execute(); + 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); + 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); - //} + //删除数据库中的节点 + removeNode(modelId,xmlNodeIdList); + //更新待删除节点前的线的指向 + for (SequenceFlow flow : beforeUserTaskFlows) { + LambdaUpdateWrapper updateFlow = new LambdaUpdateWrapper<>(); + updateFlow.eq(ProcessModelNode::getModelId,modelId); + updateFlow.eq(ProcessModelNode::getXmlNodeId,flow.getId()); + updateFlow.set(ProcessModelNode::getXmlTargetRef,finalTargetRef); + processModelNodeMapper.update(null,updateFlow); + } } catch (IOException e) { e.printStackTrace(); } } + private void removeNode(String modelId, List xmlNodeIdList) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(ProcessModelNode::getModelId,modelId); + wrapper.in(ProcessModelNode::getXmlNodeId,xmlNodeIdList); + processModelNodeMapper.delete(wrapper); + } + private void insertGateway(String modelId, ExclusiveGateway gateway) { ProcessModelNode gatewayNode = new ProcessModelNode();