update 流程节点排序(首次导入时需要手动处理)

This commit is contained in:
lijiarao
2023-10-13 15:32:03 +08:00
parent b89af34d9e
commit 057dd2b65f
3 changed files with 29 additions and 4 deletions
@@ -14,4 +14,6 @@ public interface ProcessModelNodeMapper extends BaseMapper<ProcessModelNode> {
int deleteByModelId(@Param("modelId")String modelId); int deleteByModelId(@Param("modelId")String modelId);
void updateSortByInsertNode(@Param("modelId") String modelId, @Param("sort") Integer sort);
void updateSortByDeleteNode(@Param("modelId") String modelId, @Param("sort") Integer sort);
} }
@@ -42,4 +42,18 @@
delete from process_model_node delete from process_model_node
where model_id=#{modelId} where model_id=#{modelId}
</delete> </delete>
<update id="updateSortByInsertNode">
update process_model_node
set sort = sort + 1
where model_id = #{modelId}
and sort > #{sort}
</update>
<update id="updateSortByDeleteNode">
update process_model_node
set sort = sort - 1
where model_id = #{modelId}
and sort > #{sort}
</update>
</mapper> </mapper>
@@ -145,7 +145,12 @@ public class ProcessModelNodeService extends ServiceImpl<ProcessModelNodeMapper,
updateFlow.eq(ProcessModelNode::getXmlNodeId,flowOrigin2.getXmlNodeId()); updateFlow.eq(ProcessModelNode::getXmlNodeId,flowOrigin2.getXmlNodeId());
updateFlow.set(ProcessModelNode::getXmlTargetRef,userTaskId); updateFlow.set(ProcessModelNode::getXmlTargetRef,userTaskId);
processModelNodeMapper.update(null,updateFlow); processModelNodeMapper.update(null,updateFlow);
insertUserTask(modelId, userTask); //获得排序
Integer sort = processModelNode.getSort();
//更新所有大于当前sort的加1(空出来的用于存放新节点)
processModelNodeMapper.updateSortByInsertNode(modelId,sort);
//新增节点
insertUserTask(modelId, userTask, sort+1);
List<SequenceFlow> incomingFlows = gateway.getIncomingFlows(); List<SequenceFlow> incomingFlows = gateway.getIncomingFlows();
for (SequenceFlow incomingFlow : incomingFlows) { for (SequenceFlow incomingFlow : incomingFlows) {
insertFlow(modelId, incomingFlow); insertFlow(modelId, incomingFlow);
@@ -155,6 +160,7 @@ public class ProcessModelNodeService extends ServiceImpl<ProcessModelNodeMapper,
for (SequenceFlow outgoingFlow : outgoingFlows) { for (SequenceFlow outgoingFlow : outgoingFlows) {
insertFlow(modelId, outgoingFlow); insertFlow(modelId, outgoingFlow);
} }
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
@@ -234,7 +240,9 @@ public class ProcessModelNodeService extends ServiceImpl<ProcessModelNodeMapper,
String json = objectNode1.toString(); String json = objectNode1.toString();
byte[] bytes1 = json.getBytes(StandardCharsets.UTF_8); byte[] bytes1 = json.getBytes(StandardCharsets.UTF_8);
repositoryService.addModelEditorSource(modelId, bytes1); repositoryService.addModelEditorSource(modelId, bytes1);
Integer sort = processModelNode.getSort();
//更新所有大于当前sort的减1(把当前节点的空位去掉)
processModelNodeMapper.updateSortByDeleteNode(modelId,sort);
//删除数据库中的节点 //删除数据库中的节点
removeNode(modelId,xmlNodeIdList); removeNode(modelId,xmlNodeIdList);
//更新待删除节点前的线的指向 //更新待删除节点前的线的指向
@@ -268,12 +276,13 @@ public class ProcessModelNodeService extends ServiceImpl<ProcessModelNodeMapper,
processModelNodeMapper.insert(gatewayNode); processModelNodeMapper.insert(gatewayNode);
} }
private void insertUserTask(String modelId, UserTask userTask) { private void insertUserTask(String modelId, UserTask userTask, int sort) {
ProcessModelNode userTaskNode = new ProcessModelNode(); ProcessModelNode userTaskNode = new ProcessModelNode();
userTaskNode.setModelId(modelId); userTaskNode.setModelId(modelId);
userTaskNode.setNodeName(userTask.getName()); userTaskNode.setNodeName(userTask.getName());
userTaskNode.setNodeType("userTask"); userTaskNode.setNodeType("userTask");
userTaskNode.setXmlNodeId(userTask.getId()); userTaskNode.setXmlNodeId(userTask.getId());
userTaskNode.setSort(sort);
userTaskNode.setIsApprovalNode(1); userTaskNode.setIsApprovalNode(1);
userTaskNode.setIsCanDeleted(1); userTaskNode.setIsCanDeleted(1);
processModelNodeMapper.insert(userTaskNode); processModelNodeMapper.insert(userTaskNode);
@@ -356,6 +365,7 @@ public class ProcessModelNodeService extends ServiceImpl<ProcessModelNodeMapper,
nodeType = "userTask"; nodeType = "userTask";
nodeName = userTask.getName(); nodeName = userTask.getName();
xmlNodeId = userTask.getId(); xmlNodeId = userTask.getId();
processModelNode.setSort(sort++);
} else if (flowElement instanceof SequenceFlow) { } else if (flowElement instanceof SequenceFlow) {
SequenceFlow sequenceFlow = (SequenceFlow) flowElement; SequenceFlow sequenceFlow = (SequenceFlow) flowElement;
nodeType = "sequenceFlow"; nodeType = "sequenceFlow";
@@ -400,7 +410,6 @@ public class ProcessModelNodeService extends ServiceImpl<ProcessModelNodeMapper,
processModelNode.setXmlNodeId(xmlNodeId); processModelNode.setXmlNodeId(xmlNodeId);
processModelNode.setXmlSourceRef(xmlSourceRef); processModelNode.setXmlSourceRef(xmlSourceRef);
processModelNode.setXmlTargetRef(xmlTargetRef); processModelNode.setXmlTargetRef(xmlTargetRef);
processModelNode.setSort(sort++);
processModelNode.setIsApprovalNode(YesOrNoEnum.NO.getInteger()); processModelNode.setIsApprovalNode(YesOrNoEnum.NO.getInteger());
processModelNode.setIsCanDeleted(YesOrNoEnum.NO.getInteger()); processModelNode.setIsCanDeleted(YesOrNoEnum.NO.getInteger());
processModelNodeList.add(processModelNode); processModelNodeList.add(processModelNode);