update 删除节点(未完成)

This commit is contained in:
lijiarao
2023-10-12 18:11:33 +08:00
parent 89befec267
commit 7b451c9d8b
2 changed files with 93 additions and 11 deletions
@@ -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));
}
@@ -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<ProcessModelNodeMapper, ProcessModelNode> {
@Resource
@@ -72,7 +74,7 @@ public class ProcessModelNodeService extends ServiceImpl<ProcessModelNodeMapper,
this.saveBatch(processModelNodeList);
}
public Object addTask(AddTaskVO addTaskVO, HttpServletResponse response) {
public Object addTask(AddTaskVO addTaskVO) {
try {
String modelId = addTaskVO.getModelId();
String xmlNodeId = addTaskVO.getXmlNodeId();
@@ -158,9 +160,93 @@ public class ProcessModelNodeService extends ServiceImpl<ProcessModelNodeMapper,
return null;
}
public Object deleteTask(AddTaskVO addTaskVO, HttpServletResponse response) {
public void deleteTask(AddTaskVO addTaskVO) {
try {
String modelId = addTaskVO.getModelId();
String xmlNodeId = addTaskVO.getXmlNodeId();
String nodeName = addTaskVO.getNodeName();
return null;
//查找当前节点
LambdaQueryWrapper<ProcessModelNode> 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<SequenceFlow> outgoingFlows = gateway.getOutgoingFlows();
for (SequenceFlow outgoingFlow : outgoingFlows) {
String name = outgoingFlow.getName();
if ("通过".equals(name)){
}
}
List<SequenceFlow> incomingFlows = gateway.getIncomingFlows();
//SequenceFlow flowElement = (SequenceFlow) process.getFlowElement(flowTarget.getXmlNodeId());
UserTask userTask = (UserTask) process.getFlowElement(xmlNodeId);
List<SequenceFlow> outgoingFlows1 = userTask.getOutgoingFlows();
List<SequenceFlow> 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<ProcessModelNode> updateFlow = new LambdaUpdateWrapper<>();
//updateFlow.eq(ProcessModelNode::getXmlNodeId,flowOrigin2.getXmlNodeId());
//updateFlow.set(ProcessModelNode::getXmlTargetRef,userTaskId);
//processModelNodeMapper.update(null,updateFlow);
//insertUserTask(modelId, userTask);
//List<SequenceFlow> incomingFlows = gateway.getIncomingFlows();
//for (SequenceFlow incomingFlow : incomingFlows) {
// insertFlow(modelId, incomingFlow);
//}
//insertGateway(modelId, gateway);
//List<SequenceFlow> outgoingFlows = gateway.getOutgoingFlows();
//for (SequenceFlow outgoingFlow : outgoingFlows) {
// insertFlow(modelId, outgoingFlow);
//}
} catch (IOException e) {
e.printStackTrace();
}
}
private void insertGateway(String modelId, ExclusiveGateway gateway) {