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);
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
where model_id=#{modelId}
</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>
@@ -145,7 +145,12 @@ public class ProcessModelNodeService extends ServiceImpl<ProcessModelNodeMapper,
updateFlow.eq(ProcessModelNode::getXmlNodeId,flowOrigin2.getXmlNodeId());
updateFlow.set(ProcessModelNode::getXmlTargetRef,userTaskId);
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();
for (SequenceFlow incomingFlow : incomingFlows) {
insertFlow(modelId, incomingFlow);
@@ -155,6 +160,7 @@ public class ProcessModelNodeService extends ServiceImpl<ProcessModelNodeMapper,
for (SequenceFlow outgoingFlow : outgoingFlows) {
insertFlow(modelId, outgoingFlow);
}
} catch (IOException e) {
e.printStackTrace();
}
@@ -234,7 +240,9 @@ public class ProcessModelNodeService extends ServiceImpl<ProcessModelNodeMapper,
String json = objectNode1.toString();
byte[] bytes1 = json.getBytes(StandardCharsets.UTF_8);
repositoryService.addModelEditorSource(modelId, bytes1);
Integer sort = processModelNode.getSort();
//更新所有大于当前sort的减1(把当前节点的空位去掉)
processModelNodeMapper.updateSortByDeleteNode(modelId,sort);
//删除数据库中的节点
removeNode(modelId,xmlNodeIdList);
//更新待删除节点前的线的指向
@@ -268,12 +276,13 @@ public class ProcessModelNodeService extends ServiceImpl<ProcessModelNodeMapper,
processModelNodeMapper.insert(gatewayNode);
}
private void insertUserTask(String modelId, UserTask userTask) {
private void insertUserTask(String modelId, UserTask userTask, int sort) {
ProcessModelNode userTaskNode = new ProcessModelNode();
userTaskNode.setModelId(modelId);
userTaskNode.setNodeName(userTask.getName());
userTaskNode.setNodeType("userTask");
userTaskNode.setXmlNodeId(userTask.getId());
userTaskNode.setSort(sort);
userTaskNode.setIsApprovalNode(1);
userTaskNode.setIsCanDeleted(1);
processModelNodeMapper.insert(userTaskNode);
@@ -356,6 +365,7 @@ public class ProcessModelNodeService extends ServiceImpl<ProcessModelNodeMapper,
nodeType = "userTask";
nodeName = userTask.getName();
xmlNodeId = userTask.getId();
processModelNode.setSort(sort++);
} else if (flowElement instanceof SequenceFlow) {
SequenceFlow sequenceFlow = (SequenceFlow) flowElement;
nodeType = "sequenceFlow";
@@ -400,7 +410,6 @@ public class ProcessModelNodeService extends ServiceImpl<ProcessModelNodeMapper,
processModelNode.setXmlNodeId(xmlNodeId);
processModelNode.setXmlSourceRef(xmlSourceRef);
processModelNode.setXmlTargetRef(xmlTargetRef);
processModelNode.setSort(sort++);
processModelNode.setIsApprovalNode(YesOrNoEnum.NO.getInteger());
processModelNode.setIsCanDeleted(YesOrNoEnum.NO.getInteger());
processModelNodeList.add(processModelNode);