|
@@ -25,6 +25,7 @@ import org.springblade.common.utils.SnowFlakeUtil;
|
|
|
import org.springblade.core.log.exception.ServiceException;
|
|
|
import org.springblade.core.secure.BladeUser;
|
|
|
import org.springblade.core.secure.utils.AuthUtil;
|
|
|
+import org.springblade.core.tool.api.R;
|
|
|
import org.springblade.core.tool.constant.BladeConstant;
|
|
|
import org.springblade.core.tool.node.ForestNodeMerger;
|
|
|
import org.springblade.core.tool.utils.Func;
|
|
@@ -49,6 +50,7 @@ import org.springblade.core.mp.base.BaseServiceImpl;
|
|
|
import org.springblade.manager.wrapper.ArchiveTreeContractWrapper;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import org.wildfly.common.archive.Archive;
|
|
|
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
@@ -383,6 +385,7 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
|
|
|
contractMap.put(contractInfo.getId(),contractInfo);
|
|
|
}
|
|
|
|
|
|
+ dstTree.setValue(1L);
|
|
|
for (ArchiveTreeContractVO2 ar: dstTree.getChildren()) {
|
|
|
//施工和监理
|
|
|
ar.setValue(1L);
|
|
@@ -450,16 +453,39 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
|
|
|
//同步
|
|
|
if (dstNode.getParentId() == 0 || dstScopeTree.getId() == ar.getId()) {
|
|
|
//同步
|
|
|
- List<ArchiveTreeContract> tmpSaveList = archiveTreeContractSync.getNormalSaveList(srcNode.getId(),
|
|
|
- srcTrees.get(0),dstNode.getId(),ar);
|
|
|
+ List<ArchiveTreeContract> tmpSaveList = null;
|
|
|
+ if (dstNode.getParentId() == 0) {
|
|
|
+ ArchiveTreeVO2 tmpSubTree = ForestNodeMergerEx.getSubTree(srcTree,ar.getFromId());
|
|
|
+ if (tmpSubTree == null) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ tmpSaveList = archiveTreeContractSync.getNormalSaveList(tmpSubTree.getId(),
|
|
|
+ tmpSubTree,ar.getId(),ar);
|
|
|
+ }else {
|
|
|
+ tmpSaveList = archiveTreeContractSync.getNormalSaveList(srcNode.getId(),
|
|
|
+ srcTree,dstNode.getId(),ar);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
saveList.addAll(tmpSaveList);
|
|
|
}
|
|
|
}else {
|
|
|
for (ArchiveTreeContractVO2 contractNode : ar.getChildren()){
|
|
|
+
|
|
|
+ List<ArchiveTreeContract> tmpSaveList = null;
|
|
|
if (dstNode.getParentId() == 0 || dstScopeTree.getId() == contractNode.getId()) {
|
|
|
|
|
|
- List<ArchiveTreeContract> tmpSaveList = archiveTreeContractSync.getNormalSaveList(srcNode.getId(),
|
|
|
- srcTrees.get(0),dstNode.getId(),contractNode);
|
|
|
+ ArchiveTreeVO2 tmpSubTree = srcTree;
|
|
|
+ Long dstNodeId = dstNode.getId();
|
|
|
+ if (dstNode.getParentId() == 0) {
|
|
|
+ tmpSubTree = ForestNodeMergerEx.getSubTree(srcTree,ar.getFromId());
|
|
|
+ dstNodeId = contractNode.getId();
|
|
|
+ }
|
|
|
+ if (tmpSubTree == null) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ tmpSaveList = archiveTreeContractSync.getNormalSaveList(tmpSubTree.getId(),
|
|
|
+ tmpSubTree,dstNodeId,contractNode);
|
|
|
saveList.addAll(tmpSaveList);
|
|
|
}
|
|
|
}
|
|
@@ -467,6 +493,9 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ ArchiveTreeVO2 subTree = ForestNodeMergerEx.getSubTree(srcTree,srcNode.getId());
|
|
|
+ UpdateByArchiveTree(dstNode.getProjectId(),subTree);
|
|
|
+
|
|
|
//更新排序
|
|
|
archiveTreeContractSync.InitTreeSort(dstTree,saveList);
|
|
|
|
|
@@ -482,9 +511,8 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
|
|
|
* @return
|
|
|
*/
|
|
|
public boolean deleteTreeChildren(ArchiveTreeContractVO2 tree) {
|
|
|
- List<Long> ids = new ArrayList<>();
|
|
|
|
|
|
- ForestNodeMergerEx.getChildrenIds(tree,ids);
|
|
|
+ List<Long> ids = ForestNodeMergerEx.getChildrenIds(tree);
|
|
|
|
|
|
return this.deleteLogic(ids);
|
|
|
}
|
|
@@ -511,6 +539,71 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
|
|
|
}
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
+ * 删除子树
|
|
|
+ * @param id
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public boolean deleteTree(Long id) {
|
|
|
+ ArchiveTreeContract dstNode = this.getById(id);
|
|
|
+ if (dstNode == null ) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ List<ArchiveTreeContractVO2> dstTrees = this.tree2Root(AuthUtil.getTenantId(),null,null,dstNode.getProjectId(),null);
|
|
|
+ if (dstTrees == null || dstTrees.size() == 0) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ ArchiveTreeContractVO2 subTree = ForestNodeMergerEx.getSubTree(dstTrees.get(0),id);
|
|
|
+
|
|
|
+ List<Long> ids = ForestNodeMergerEx.getChildrenIds(subTree);
|
|
|
+
|
|
|
+ ids.add(id);
|
|
|
+
|
|
|
+ return this.deleteLogic(ids);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 批量更新
|
|
|
+ * @param projectId
|
|
|
+ * @param srcTree
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public boolean UpdateByArchiveTree(Long projectId, ArchiveTreeVO2 srcTree){
|
|
|
+
|
|
|
+ List<Long> ids = new ArrayList<>();
|
|
|
+ List<ArchiveTreeVO2> archiveTreeVO2List = new ArrayList<>();
|
|
|
+
|
|
|
+ ForestNodeMergerEx.getTreeList(srcTree,archiveTreeVO2List);
|
|
|
+ ids = ForestNodeMergerEx.getChildrenIds(srcTree);
|
|
|
+
|
|
|
+ Map<Long, ArchiveTreeVO2> map = new LinkedHashMap<>();
|
|
|
+ for (ArchiveTreeVO2 ar : archiveTreeVO2List) {
|
|
|
+ map.put(ar.getId(),ar);
|
|
|
+ }
|
|
|
+
|
|
|
+ List<ArchiveTreeContract> archiveTreeContracts = baseMapper.selectList(Wrappers.<ArchiveTreeContract>query().lambda()
|
|
|
+ .in(ArchiveTreeContract::getFromId, ids)
|
|
|
+ .eq(ArchiveTreeContract::getProjectId, projectId)
|
|
|
+ .eq(ArchiveTreeContract::getIsDeleted, 0)
|
|
|
+ );
|
|
|
+
|
|
|
+ List<ArchiveTreeContract> upList = new ArrayList<>();
|
|
|
+ for (ArchiveTreeContract archiveTreeContract : archiveTreeContracts) {
|
|
|
+ ArchiveTreeVO2 archiveTreeVO2 = map.get(archiveTreeContract.getFromId());
|
|
|
+ if (archiveTreeVO2!= null) {
|
|
|
+ archiveTreeContract.sync(archiveTreeVO2);
|
|
|
+ upList.add(archiveTreeContract);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ this.saveOrUpdateBatch(archiveTreeContracts);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
|
|
|
|
|
|
|