|
@@ -218,6 +218,7 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
|
|
|
archiveTreeContractDTO.setTenantId(parent.getTenantId());
|
|
|
String ancestors = parent.getAncestors() + StringPool.COMMA + archiveTreeContractDTO.getParentId();
|
|
|
archiveTreeContractDTO.setAncestors(ancestors);
|
|
|
+ archiveTreeContractDTO.setTreeSort(parent.getTreeSort());
|
|
|
}
|
|
|
|
|
|
archiveTreeContractDTO.setIsDeleted(BladeConstant.DB_NOT_DELETED);
|
|
@@ -242,6 +243,11 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
|
|
|
sort = max.get().getSort();
|
|
|
}
|
|
|
archiveTreeContractDTO.setSort(sort + 1);
|
|
|
+ String treeSort = archiveTreeContractDTO.getTreeSort();
|
|
|
+ if (StringUtils.isNotEmpty(treeSort)) {
|
|
|
+ treeSort = treeSort + 100 + archiveTreeContractDTO.getSort();
|
|
|
+ archiveTreeContractDTO.setTreeSort(treeSort);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
return save(archiveTreeContractDTO);
|
|
@@ -259,11 +265,44 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
|
|
|
@Override
|
|
|
public boolean submitArchiveTreeSort(List<ArchiveTreeContractDTO> listSort) {
|
|
|
int sortNumber = 1;
|
|
|
+ List<ArchiveTreeContract> changeList = new ArrayList<>();
|
|
|
+
|
|
|
+
|
|
|
+ ArchiveTreeContract parent = null;
|
|
|
for (ArchiveTreeContractDTO archiveTreeSortDTO : listSort) {
|
|
|
- archiveTreeSortDTO.setSort(sortNumber);
|
|
|
+ if (archiveTreeSortDTO.getSort() != sortNumber) {
|
|
|
+ ArchiveTreeContract archiveTreeContract = getById(archiveTreeSortDTO.getId());
|
|
|
+ if (archiveTreeContract!= null ) {
|
|
|
+ archiveTreeContract.setSort(sortNumber);
|
|
|
+ if (parent == null ) {
|
|
|
+ parent = getById(archiveTreeSortDTO.getParentId());
|
|
|
+ }
|
|
|
+ if (parent != null && StringUtils.isNotEmpty(parent.getTreeSort())){
|
|
|
+ Integer sort = archiveTreeContract.getSort() + 100;
|
|
|
+ archiveTreeContract.setTreeSort(parent.getTreeSort() + sort);
|
|
|
+ }
|
|
|
+ changeList.add(archiveTreeContract);
|
|
|
+ }
|
|
|
+ }
|
|
|
sortNumber++;
|
|
|
- baseMapper.updateById(archiveTreeSortDTO);
|
|
|
}
|
|
|
+
|
|
|
+ this.saveOrUpdateBatch(changeList);
|
|
|
+
|
|
|
+ //有子节点,并且父节点排序号不为空,则排序子节点
|
|
|
+ List<Long> changeIds = changeList.stream().map(s->s.getId()).collect(Collectors.toList());
|
|
|
+
|
|
|
+ List<ArchiveTreeContract> childrens = baseMapper.selectList(Wrappers.<ArchiveTreeContract>query().lambda()
|
|
|
+ .in(ArchiveTreeContract::getParentId, changeIds)
|
|
|
+ .eq(ArchiveTreeContract::getIsDeleted, 0)
|
|
|
+ );
|
|
|
+ if (StringUtils.isNotEmpty(parent.getTreeSort()) &&
|
|
|
+ (childrens == null || childrens.size() == 0)) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ this.sortChildren(changeList);
|
|
|
+
|
|
|
return true;
|
|
|
}
|
|
|
|
|
@@ -603,6 +642,54 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 递归设置
|
|
|
+ * @param archiveTreeContracts
|
|
|
+ */
|
|
|
+ void sortChildren(List<ArchiveTreeContract> archiveTreeContracts){
|
|
|
+
|
|
|
+ if (archiveTreeContracts == null || archiveTreeContracts.size() == 0) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ List<ArchiveTreeContractVO2> trees = this.tree2Root(AuthUtil.getTenantId(),null,null,archiveTreeContracts.get(0).getProjectId(),null);
|
|
|
+ if (trees.size() == 0) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ ArchiveTreeContractVO2 tree = trees.get(0);
|
|
|
+
|
|
|
+ ForestNodeMergerEx.InitTreeSort(tree,"");
|
|
|
+
|
|
|
+ List<ArchiveTreeContractVO2> changeList = new ArrayList<>();
|
|
|
+
|
|
|
+ for (ArchiveTreeContract ar: archiveTreeContracts) {
|
|
|
+ ArchiveTreeContractVO2 subTree = ForestNodeMergerEx.getSubTree(tree,ar.getId());
|
|
|
+ List<ArchiveTreeContractVO2> tmpList = new ArrayList<>();
|
|
|
+ ForestNodeMergerEx.getTreeList(subTree,tmpList);
|
|
|
+ changeList.addAll(tmpList);
|
|
|
+ }
|
|
|
+
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
|
|
|
|
|
|
|