update 删除节点(未完成)
This commit is contained in:
+4
-8
@@ -1,8 +1,6 @@
|
|||||||
package com.jero.modules.activiti.controller;
|
package com.jero.modules.activiti.controller;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollStreamUtil;
|
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.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.fasterxml.jackson.databind.JsonNode;
|
import com.fasterxml.jackson.databind.JsonNode;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
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.api.vo.Result;
|
||||||
import com.jero.common.util.MessageUtils;
|
import com.jero.common.util.MessageUtils;
|
||||||
import com.jero.modules.activiti.entity.ProcessModelNode;
|
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.LawsProcessNodeOriginService;
|
||||||
import com.jero.modules.activiti.service.ProcessModelNodeService;
|
import com.jero.modules.activiti.service.ProcessModelNodeService;
|
||||||
import com.jero.modules.activiti.util.CreatedTools;
|
import com.jero.modules.activiti.util.CreatedTools;
|
||||||
@@ -47,7 +44,6 @@ import java.util.HashMap;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.Stream;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author liJiaRao
|
* @author liJiaRao
|
||||||
@@ -436,15 +432,15 @@ public class ModelerController {
|
|||||||
|
|
||||||
@PostMapping("/addTask")
|
@PostMapping("/addTask")
|
||||||
@ApiOperation("新增节点")
|
@ApiOperation("新增节点")
|
||||||
public Object addTask(@RequestBody AddTaskVO addTaskVO, HttpServletResponse response) {
|
public Object addTask(@RequestBody AddTaskVO addTaskVO) {
|
||||||
processModelNodeService.addTask(addTaskVO,response);
|
processModelNodeService.addTask(addTaskVO);
|
||||||
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
|
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/deleteTask")
|
@PostMapping("/deleteTask")
|
||||||
@ApiOperation("删除节点")
|
@ApiOperation("删除节点")
|
||||||
public Object deleteTask(@RequestBody AddTaskVO addTaskVO, HttpServletResponse response) {
|
public Object deleteTask(@RequestBody AddTaskVO addTaskVO) {
|
||||||
processModelNodeService.deleteTask(addTaskVO,response);
|
processModelNodeService.deleteTask(addTaskVO);
|
||||||
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
|
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+89
-3
@@ -9,6 +9,7 @@ import com.jero.common.constant.enums.YesOrNoEnum;
|
|||||||
import com.jero.common.exception.JeroBootException;
|
import com.jero.common.exception.JeroBootException;
|
||||||
import com.jero.modules.activiti.entity.ProcessModelNode;
|
import com.jero.modules.activiti.entity.ProcessModelNode;
|
||||||
import com.jero.modules.activiti.vo.AddTaskVO;
|
import com.jero.modules.activiti.vo.AddTaskVO;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.activiti.bpmn.BpmnAutoLayout;
|
import org.activiti.bpmn.BpmnAutoLayout;
|
||||||
import org.activiti.bpmn.converter.BpmnXMLConverter;
|
import org.activiti.bpmn.converter.BpmnXMLConverter;
|
||||||
import org.activiti.bpmn.model.*;
|
import org.activiti.bpmn.model.*;
|
||||||
@@ -35,6 +36,7 @@ import com.jero.modules.activiti.mapper.ProcessModelNodeMapper;
|
|||||||
*@author liJiaRao
|
*@author liJiaRao
|
||||||
*@date 2023-10-08 14:08
|
*@date 2023-10-08 14:08
|
||||||
*/
|
*/
|
||||||
|
@Slf4j
|
||||||
@Service
|
@Service
|
||||||
public class ProcessModelNodeService extends ServiceImpl<ProcessModelNodeMapper, ProcessModelNode> {
|
public class ProcessModelNodeService extends ServiceImpl<ProcessModelNodeMapper, ProcessModelNode> {
|
||||||
@Resource
|
@Resource
|
||||||
@@ -72,7 +74,7 @@ public class ProcessModelNodeService extends ServiceImpl<ProcessModelNodeMapper,
|
|||||||
this.saveBatch(processModelNodeList);
|
this.saveBatch(processModelNodeList);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Object addTask(AddTaskVO addTaskVO, HttpServletResponse response) {
|
public Object addTask(AddTaskVO addTaskVO) {
|
||||||
try {
|
try {
|
||||||
String modelId = addTaskVO.getModelId();
|
String modelId = addTaskVO.getModelId();
|
||||||
String xmlNodeId = addTaskVO.getXmlNodeId();
|
String xmlNodeId = addTaskVO.getXmlNodeId();
|
||||||
@@ -158,9 +160,93 @@ public class ProcessModelNodeService extends ServiceImpl<ProcessModelNodeMapper,
|
|||||||
return null;
|
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) {
|
private void insertGateway(String modelId, ExclusiveGateway gateway) {
|
||||||
|
|||||||
Reference in New Issue
Block a user