|
@@ -504,6 +504,9 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
|
|
|
this.saveBatch(saveList);
|
|
|
this.updateBatchById(upList);
|
|
|
|
|
|
+ //再刷新一次treesort
|
|
|
+ sortChildren(dstNode);
|
|
|
+
|
|
|
return true;
|
|
|
}
|
|
|
|
|
@@ -1717,4 +1720,74 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
|
|
|
}
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
+ * 刷新某个节点下的treesort
|
|
|
+ * @param archiveTreeContract
|
|
|
+ */
|
|
|
+ void sortChildren(ArchiveTreeContract archiveTreeContract) {
|
|
|
+ if (archiveTreeContract == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取整个项目的树
|
|
|
+ List<ArchiveTreeContractVO2> trees = this.tree2Root(
|
|
|
+ AuthUtil.getTenantId(),
|
|
|
+ null,
|
|
|
+ null,
|
|
|
+ archiveTreeContract.getProjectId(),
|
|
|
+ null
|
|
|
+ );
|
|
|
+
|
|
|
+ if (trees.isEmpty()) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ ArchiveTreeContractVO2 tree = trees.get(0);
|
|
|
+
|
|
|
+ // 初始化整棵树的排序 (只设置内存中的 treeSort 和 flag)
|
|
|
+ ForestNodeMergerEx.InitTreeSortEx(tree, "", 0);
|
|
|
+
|
|
|
+ // 获取当前节点对应的子树
|
|
|
+ ArchiveTreeContractVO2 subTree = ForestNodeMergerEx.getSubTree(tree, archiveTreeContract.getId());
|
|
|
+ if (subTree == null) {
|
|
|
+ return; // 没找到子树
|
|
|
+ }
|
|
|
+
|
|
|
+ // 收集子树中所有节点 (用于后续筛选)
|
|
|
+ List<ArchiveTreeContractVO2> allNodes = new ArrayList<>();
|
|
|
+ ForestNodeMergerEx.getTreeList(subTree, allNodes);
|
|
|
+
|
|
|
+ // 筛选需要更新的节点 (flag == 1)
|
|
|
+ List<ArchiveTreeContractVO2> changeList = new ArrayList<>();
|
|
|
+ for (ArchiveTreeContractVO2 node : allNodes) {
|
|
|
+ if (node.getFlag() == 1) {
|
|
|
+ changeList.add(node);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (changeList.isEmpty()) {
|
|
|
+ return; // 没有需要更新的节点
|
|
|
+ }
|
|
|
+
|
|
|
+ // 构建 ID 映射
|
|
|
+ Map<Long, ArchiveTreeContractVO2> map = new HashMap<>();
|
|
|
+ List<Long> ids = new ArrayList<>();
|
|
|
+ for (ArchiveTreeContractVO2 ar : changeList) {
|
|
|
+ ids.add(ar.getId());
|
|
|
+ map.put(ar.getId(), ar);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 从数据库查询需要更新的实体
|
|
|
+ List<ArchiveTreeContract> changeArchiveList = baseMapper.selectBatchIds(ids);
|
|
|
+ for (ArchiveTreeContract changeNode : changeArchiveList) {
|
|
|
+ ArchiveTreeContractVO2 ar = map.get(changeNode.getId());
|
|
|
+ if (ar != null) {
|
|
|
+ changeNode.setTreeSort(ar.getTreeSort());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 批量更新数据库
|
|
|
+ this.saveOrUpdateBatch(changeArchiveList);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
}
|