|
@@ -1595,11 +1595,64 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
|
|
|
@Override
|
|
|
public void addArchiveTreeContract(List<ArchiveTreeContract> archiveTreeContracts, Long rootId){
|
|
|
executorService.execute(()->{
|
|
|
- this.saveBatch(archiveTreeContracts);
|
|
|
+
|
|
|
ArchiveTreeContract rootContract = this.getById(rootId);
|
|
|
+
|
|
|
+ //设置好祖先节点再刷新
|
|
|
+ flushNodesAncestors(archiveTreeContracts,rootContract);
|
|
|
+
|
|
|
+ this.saveBatch(archiveTreeContracts);
|
|
|
+
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
+ public List<ArchiveTreeContract> queryAllChildByAncestors(String id, Long contractId) {
|
|
|
+ String authCode = this.getAuthCode(contractId);
|
|
|
+
|
|
|
+// List<ArchiveTreeContract> archiveTreeList = this.archiveTreeContractService.list(Wrappers.<ArchiveTreeContract>lambdaQuery().like(ArchiveTreeContract::getAncestors, id));
|
|
|
+ List<ArchiveTreeContract> archiveTreeList = archiveTreeContractMapper.getAuthCodeList(id, authCode, contractId);
|
|
|
+// if (archiveTreeList == null || archiveTreeList.size() <= 0) {
|
|
|
+// //有可能已经是最底节点
|
|
|
+// archiveTreeList = new ArrayList<>();
|
|
|
+// ArchiveTreeContract archiveTree = this.getById(id);
|
|
|
+// if (archiveTree != null) {
|
|
|
+// archiveTreeList.add(archiveTree);
|
|
|
+// }
|
|
|
+// }
|
|
|
+
|
|
|
+ return archiveTreeList;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void flushNodesAncestors(List<ArchiveTreeContract> addTreeContracts, ArchiveTreeContract root) {
|
|
|
+
|
|
|
+ List<ArchiveTreeContract> localTreeContracts = queryAllChildByAncestors(root.getId().toString(),null);
|
|
|
+ localTreeContracts.add(root);
|
|
|
+ localTreeContracts.addAll(addTreeContracts);
|
|
|
+
|
|
|
+ List<ArchiveTreeContractVO2> vos = new ArrayList<>();
|
|
|
+ List<ArchiveTreeContractVO2> archiveTreeContractVO2List = new ArrayList<>();
|
|
|
+
|
|
|
+ Map<Long, ArchiveTreeContractVO2> vo2Map = new LinkedHashMap<>();
|
|
|
+
|
|
|
+ //转化成vo结构,才能转化成树
|
|
|
+ arTreeContractInitService.getMap(archiveTreeContractVO2List, localTreeContracts, vo2Map);
|
|
|
+
|
|
|
+ //转化成树
|
|
|
+ List<ArchiveTreeContractVO2> trees = ForestNodeMergerEx.merge(archiveTreeContractVO2List);
|
|
|
+
|
|
|
+ //通过树行结构设置祖先节点
|
|
|
+ arTreeContractInitService.InitAncestors(trees.get(0), root.getAncestors());
|
|
|
+
|
|
|
+ //遍历,设置祖先节点
|
|
|
+ for (ArchiveTreeContract archiveTreeContract :addTreeContracts) {
|
|
|
+ ArchiveTreeContractVO2 vo = vo2Map.get(archiveTreeContract.getId());
|
|
|
+ if (vo != null) {
|
|
|
+ archiveTreeContract.setAncestors(vo.getAncestors());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
}
|