update 流程节点排序(首次导入时需要手动处理)
This commit is contained in:
+2
@@ -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);
|
||||
}
|
||||
+14
@@ -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>
|
||||
+13
-4
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user