huangtf 2 anni fa
parent
commit
bbbd0f7ba9

+ 16 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ArchiveTreeContract.java

@@ -23,6 +23,7 @@ import org.springblade.core.mp.base.BaseEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import org.springblade.manager.vo.ArchiveTreeVO;
+import org.springblade.manager.vo.ArchiveTreeVO2;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.BeansException;
 
@@ -167,4 +168,19 @@ public class ArchiveTreeContract extends BaseEntity {
 			e.printStackTrace();
 		}
 	}
+
+	public ArchiveTreeContract(ArchiveTreeVO2 archiveTree) {
+		if (archiveTree == null) {
+			return;
+		}
+
+		try {
+			BeanUtils.copyProperties(archiveTree,this);
+			this.fromId = archiveTree.getId();
+			this.nodeName = archiveTree.getTitle();
+			this.isUploadFileDisplayConfigurationTree = archiveTree.getIsDisplayTree();
+		} catch (BeansException e) {
+			e.printStackTrace();
+		}
+	}
 }

+ 8 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/ArchiveTreeContractVO.java

@@ -142,4 +142,12 @@ public class ArchiveTreeContractVO extends ArchiveTreeContract implements INode<
 	@ApiModelProperty(value = "自动立卷关联Id")
 	private Long archiveAutoNodeId;
 
+	public boolean isConstructionRoot(){
+		return (getNodeName()!=null && getNodeName().equals("施工单位归档资料"));
+	}
+
+	public boolean isSupervisionRoot(){
+		return (getNodeName()!=null && getNodeName().equals("监理单位归档资料"));
+	}
+
 }

+ 17 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/ArchiveTreeContractVO2.java

@@ -153,4 +153,21 @@ public class ArchiveTreeContractVO2 implements INode<ArchiveTreeContractVO2> {
 	@ApiModelProperty(value = "自动立卷关联Id")
 	private Long archiveAutoNodeId;
 
+	@ApiModelProperty(value = "祖级列表id")
+	private String ancestors;
+
+	public String toString() {
+		return "TreeNode(parentId=" + this.getParentId()
+				+ ",ancestors" + this.getAncestors()
+				+ ",majorDataType" + this.getMajorDataType()
+				+ ",displayHierarchy" + this.getDisplayHierarchy()
+				+ ",isStorageNode" + this.getIsStorageNode()
+				+ ",isDisplayTree" + this.getIsDisplayTree()
+				+ ",postType" + this.getPostType()
+				+ ", title=" + this.getTitle()
+				+ ", key=" + this.getKey()
+				+ ", value=" + this.getValue()
+				+ ")";
+	}
+
 }

+ 26 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/ArchiveTreeVO2.java

@@ -6,6 +6,7 @@ import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import org.springblade.core.tool.node.INode;
+import org.springblade.manager.entity.ArchiveTree;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -97,6 +98,12 @@ public class ArchiveTreeVO2 implements INode<ArchiveTreeVO2> {
      */
     private Integer isDisplayTree;
 
+    /**
+     * 节点类型
+     */
+    @ApiModelProperty(value = "节点类型")
+    private Integer nodeType;
+
     private String postType;
 
     /**
@@ -133,4 +140,23 @@ public class ArchiveTreeVO2 implements INode<ArchiveTreeVO2> {
      */
     @ApiModelProperty(value = "自动立卷关联Id")
     private Long archiveAutoNodeId;
+
+    @ApiModelProperty(value = "是否为设置的节点")
+    private Integer archiveAutoSelect;
+
+    /**
+     * 是否为接口节点 '0'否 '1'是
+     */
+    @ApiModelProperty(value = "是否为接口节点 '0'否 '1'是")
+    private Integer isInterfaceNode;
+
+    /**
+     * 接口类型
+     */
+    @ApiModelProperty(value = "接口类型")
+    private Integer interfaceType;
+
+    @ApiModelProperty(value = "排序")
+    private Integer sort;
+
 }

+ 3 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ArchiveTreeContractController.java

@@ -154,6 +154,7 @@ public class ArchiveTreeContractController extends BladeController {
 		if (projectId == null) {
 			projectId = 1578599210897772545L;
 		}
+
 		List<ArchiveTreeContractVO2> tree = archiveTreeContractService.lazyTree2(AuthUtil.getTenantId(), parentId,projectId);
 		if (tree != null && tree.size() > 0) {
 			return R.data(tree);
@@ -177,6 +178,7 @@ public class ArchiveTreeContractController extends BladeController {
 		if (projectId == null) {
 			projectId = 1578599210897772545L;
 		}
+
 		List<ArchiveTreeContractVO2> tree = archiveTreeContractService.tree2(AuthUtil.getTenantId(), disPlayTree, nodeType,projectId);
 		if (tree != null && tree.size() > 0) {
 			return R.data(tree);
@@ -192,7 +194,7 @@ public class ArchiveTreeContractController extends BladeController {
 		Long projectId = 1578599210897772545L;
 		List<ArchiveTree> trees = archiveTreeService.treeList(AuthUtil.getTenantId(), null, null);
 
-		archiveTreeContractService.initTree(AuthUtil.getTenantId(),projectId,trees);
+		archiveTreeContractService.initTree2(AuthUtil.getTenantId(),projectId);
 
 		return R.fail(200, "初始化成功");
 	}

+ 2 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveTreeContractMapper.xml

@@ -166,6 +166,7 @@
         d.display_hierarchy AS "displayHierarchy",
         d.is_storage_node AS "isStorageNode",
         d.post_type AS postType,
+        d.node_type AS nodeType,
         d.project_type,
         d.storage_type,
         d.ext_type,
@@ -198,6 +199,7 @@
         is_upload_file_display_configuration_tree AS "isDisplayTree",
         is_built_drawing AS "isBuiltDrawing",
         post_type AS postType,
+        node_type AS nodeType,
         project_type,
         storage_type,
         ext_type,

+ 16 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveTreeMapper.xml

@@ -58,6 +58,10 @@
         <result column="ext_id" property="extId"/>
         <result column="archive_auto_type" property="archiveAutoType"/>
         <result column="archive_auto_node_id" property="archiveAutoNodeId"/>
+        <result column="archive_auto_select" property="archiveAutoSelect"/>
+        <result column="is_interface_node" property="isInterfaceNode"/>
+        <result column="interface_type" property="interfaceType"/>
+        <result column="sort" property="sort"/>
     </resultMap>
 
     <resultMap id="treeNodeResultMap" type="org.springblade.manager.vo.TreeNodeVO2">
@@ -159,7 +163,7 @@
         ext_type,
         ext_id,
         archive_auto_type,
-        archive_auto_node_id
+        archive_auto_node_id,
         FROM m_archive_tree
         WHERE is_deleted = 0
         <if test=" tenantId!=null and tenantId!='' ">
@@ -187,12 +191,17 @@
         d.display_hierarchy AS "displayHierarchy",
         d.is_storage_node AS "isStorageNode",
         d.post_type AS postType,
+        d.node_type AS nodeType,
         d.project_type,
         d.storage_type,
         d.ext_type,
         d.ext_id,
         d.archive_auto_type,
         d.archive_auto_node_id,
+        d.archive_auto_select,
+        d.is_interface_node,
+        d.interface_type,
+        d.sort,
         (SELECT CASE WHEN count(1) > 0 THEN 1 ELSE 0 END FROM m_archive_tree WHERE parent_id = d.id and is_deleted = 0)
         AS "has_children"
         FROM
@@ -218,12 +227,17 @@
         is_upload_file_display_configuration_tree AS "isDisplayTree",
         is_built_drawing AS "isBuiltDrawing",
         post_type AS postType,
+        node_type AS nodeType,
         project_type,
         storage_type,
         ext_type,
         ext_id,
         archive_auto_type,
-        archive_auto_node_id
+        archive_auto_node_id,
+        archive_auto_select,
+        is_interface_node,
+        interface_type,
+        sort
         FROM m_archive_tree
         WHERE is_deleted = 0
         <if test=" tenantId!=null and tenantId!='' ">

+ 2 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IArchiveTreeContractService.java

@@ -56,6 +56,8 @@ public interface IArchiveTreeContractService extends BaseService<ArchiveTreeCont
 	 */
 	boolean initTree(String tenantId, Long projectId, List<ArchiveTree> trees);
 
+	boolean initTree2(String tenantId, Long projectId);
+
 	List<ArchiveTreeContractVO> lazyTree(String tenantId, Long parentId,Long projectId);
 
 	List<ArchiveTreeContractVO> tree(String tenantI,Integer disPlayTree,Integer nodeType,Long projectId);

+ 273 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArTreeContractInitServiceImpl.java

@@ -0,0 +1,273 @@
+package org.springblade.manager.service.impl;
+
+import com.mixsmart.utils.StringUtils;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import org.springblade.common.utils.SnowFlakeUtil;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.manager.entity.ArchiveTree;
+import org.springblade.manager.entity.ArchiveTreeContract;
+import org.springblade.manager.entity.ContractInfo;
+import org.springblade.manager.entity.WbsTree;
+import org.springblade.manager.feign.ProjectClient;
+import org.springblade.manager.service.IContractInfoService;
+import org.springblade.manager.service.IWbsTreeService;
+import org.springblade.manager.utils.ForestNodeMerger;
+import org.springblade.manager.vo.*;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+
+@Service
+@AllArgsConstructor
+public class ArTreeContractInitServiceImpl {
+    private final IWbsTreeService wbsTreeService;
+
+    private final IContractInfoService contractInfoService;
+
+    private final ProjectClient projectClient;
+
+    /**
+     * 按照层次获取公共归档树
+     * @param parentId
+     * @param wbsId
+     * @param tenantId
+     * @param type
+     * @param level 层次,1,单位工程,2
+     * @return
+     */
+    public List<ArchiveTree> getWbsArchiveTree(Long parentId, String wbsId, String tenantId, String type,Long level)
+    {
+        List<ArchiveTree> archiveTreeList = new ArrayList<>();
+
+        List<WbsTreeVO2> wbsTreeVO2s = wbsTreeService.tree(wbsId, tenantId, type);
+
+        //遍历构建
+        for (WbsTreeVO2 wbsTreeVO2:wbsTreeVO2s) {
+            //只展示指定层级之上的
+            if (wbsTreeVO2.getNodeType() > level){
+                continue;
+            }
+
+            ArchiveTree archiveTree = new ArchiveTree();
+            archiveTree.setId(SnowFlakeUtil.getId());
+            archiveTree.setParentId(parentId);
+            archiveTree.setNodeName(wbsTreeVO2.getTitle());
+            archiveTree.setExtId(wbsTreeVO2.getId());
+            archiveTree.setDisplayHierarchy(level.toString());
+            archiveTreeList.add(archiveTree);
+        }
+
+        //设置pid
+
+        return archiveTreeList;
+    }
+
+    public void copyTree(String tenantId, Long projectId, String projectName, ArchiveTreeVO2 tree, List<ArchiveTreeContract> archiveTreeContracts,
+                                              List<ContractInfo> contracts){
+
+        //合同段信息表
+        Map<Long,ContractInfo> contractMap = new LinkedHashMap<>();
+        //新旧ID对照表
+        Map<Long,Long> oldNewMap = new LinkedHashMap<>();
+
+        boolean bHasCon = false;
+        boolean bHasSup = false;
+        for (ContractInfo contractInfo: contracts) {
+            contractMap.put(contractInfo.getId(),contractInfo);
+            if (contractInfo.getContractType() == 1) {
+                bHasCon = true;
+            }
+            if (contractInfo.getContractType() == 2) {
+                bHasSup = true;
+            }
+        }
+
+        ArchiveTreeContract archiveTreeContract = new ArchiveTreeContract(tree);
+        archiveTreeContract.setNodeName(projectName);
+        archiveTreeContract.setProjectId(projectId);
+        archiveTreeContract.setId(SnowFlakeUtil.getId());
+        archiveTreeContract.setParentId(0L);
+        oldNewMap.put(tree.getId(),archiveTreeContract.getId());
+        archiveTreeContracts.add(archiveTreeContract);
+
+        //拷贝第一层
+        copyChild(tenantId,projectId,null,archiveTreeContract.getId(),tree.getChildren(),archiveTreeContracts,oldNewMap);
+
+        //拷贝
+        for (ArchiveTreeVO2 child: tree.getChildren()) {
+            if (child.getTitle().indexOf("施工") >= 0 && bHasCon) {
+                for (ContractInfo contractInfo:contracts) {
+                    if (contractInfo.getContractType() == 1) {
+                        copyContractTree(tenantId,projectId,contractInfo,oldNewMap.get(child.getId()),child.getChildren(),archiveTreeContracts,oldNewMap);
+                    }
+                }
+
+            }
+            else if (child.getTitle().indexOf("监理") >= 0  && bHasSup) {
+                for (ContractInfo contractInfo:contracts) {
+                    if (contractInfo.getContractType() == 2) {
+                        copyContractTree(tenantId,projectId,contractInfo,oldNewMap.get(child.getId()),child.getChildren(),archiveTreeContracts,oldNewMap);
+                    }
+                }
+            }else {
+                copyNormalTree(tenantId,projectId,null,oldNewMap.get(child.getId()),child.getChildren(),archiveTreeContracts,oldNewMap);
+            }
+        }
+
+        //设置祖先id
+        InitAncestors(archiveTreeContracts);
+
+        return;
+
+    }
+    public void copyContractTree(String tenantId, Long projectId, ContractInfo contractInfo ,Long newRootId,
+                          List<ArchiveTreeVO2> child,List<ArchiveTreeContract> archiveTreeContracts,Map<Long,Long> oldNewMap){
+        ArchiveTreeContract contractNode = new ArchiveTreeContract();
+        contractNode.setNodeName(contractInfo.getContractName());
+        contractNode.setId(SnowFlakeUtil.getId());
+        //TODO
+        contractNode.setExtType(2);
+        contractNode.setNodeType(0);
+        contractNode.setIsUploadFileDisplayConfigurationTree(1);
+        contractNode.setParentId(newRootId);
+        contractNode.setProjectId(projectId);
+        contractNode.setContractId(contractInfo.getId());
+        archiveTreeContracts.add(contractNode);
+
+        if (child == null || child.size() == 0) {
+            return;
+        }
+
+        List<ArchiveTreeVO2> childList = new ArrayList<>();
+        for (ArchiveTreeVO2 archiveTreeVO2:child) {
+            List<ArchiveTreeVO2> tmpList = new ArrayList<>();
+            ForestNodeMerger.getTreeList(archiveTreeVO2,tmpList);
+            childList.addAll(tmpList);
+        }
+
+        copyChild(tenantId,projectId,contractInfo.getId(),contractNode.getId(),childList,archiveTreeContracts,null);
+    }
+
+    public void copyNormalTree(String tenantId, Long projectId, Long contractId, Long newRootId, List<ArchiveTreeVO2> child,
+                          List<ArchiveTreeContract> archiveTreeContracts, Map<Long,Long> oldNewMap){
+
+        List<ArchiveTreeVO2> childList = new ArrayList<>();
+        for (ArchiveTreeVO2 archiveTreeVO2:child) {
+            List<ArchiveTreeVO2> tmpList = new ArrayList<>();
+            ForestNodeMerger.getTreeList(archiveTreeVO2,tmpList);
+            childList.addAll(tmpList);
+        }
+        //newRootId = oldNewMap.get(newRootId);
+        copyChild(tenantId,projectId,contractId,newRootId,childList,archiveTreeContracts,oldNewMap);
+
+    }
+
+
+    /**
+     *
+     * @param tenantId
+     * @param projectId
+     * @param contractId
+     * @param newRootId
+     * @param child
+     * @param archiveTreeContracts
+     * @param oldNewMap
+     */
+    public void copyChild(String tenantId, Long projectId, Long contractId, Long newRootId, List<ArchiveTreeVO2> child,
+                          List<ArchiveTreeContract> archiveTreeContracts, Map<Long,Long> oldNewMap){
+
+        if (oldNewMap == null ) {
+            oldNewMap = new LinkedHashMap<>();
+        }
+        if (child == null ) {
+            return;
+        }
+        for (ArchiveTreeVO2 archiveTree :child) {
+            oldNewMap.put(archiveTree.getId(), SnowFlakeUtil.getId());
+        }
+
+        for (ArchiveTreeVO2 archiveTreeVO :child) {
+
+            ArchiveTreeContract archiveTreeContract = new ArchiveTreeContract(archiveTreeVO);
+            archiveTreeContract.setId(oldNewMap.get(archiveTreeVO.getId()));
+            Long pid = oldNewMap.get(archiveTreeVO.getParentId());
+            if (pid == null ) {
+                pid = newRootId;
+            }
+            archiveTreeContract.setParentId(pid);
+            archiveTreeContract.setCreateUser(AuthUtil.getUserId());
+            archiveTreeContract.setProjectId(projectId);
+
+            if (contractId != null ) {
+                archiveTreeContract.setContractId(contractId);
+            }
+
+            archiveTreeContracts.add(archiveTreeContract);
+        }
+
+    }
+
+    public void InitAncestors(List<ArchiveTreeContract> archiveTreeContracts) {
+        List<ArchiveTreeContractVO2> archiveTreeContractVO2List = new ArrayList<>();
+        Map<Long,ArchiveTreeContractVO2> vo2Map = new LinkedHashMap<>();
+        for (ArchiveTreeContract archiveTreeContract:archiveTreeContracts) {
+            ArchiveTreeContractVO2 treeContractVO2 = new ArchiveTreeContractVO2();
+            treeContractVO2.setId(archiveTreeContract.getId());
+            treeContractVO2.setParentId(archiveTreeContract.getParentId());
+            treeContractVO2.setTitle(archiveTreeContract.getNodeName());
+            archiveTreeContractVO2List.add(treeContractVO2);
+            vo2Map.put(treeContractVO2.getId(),treeContractVO2);
+        }
+
+        List<ArchiveTreeContractVO2> trees = ForestNodeMerger.merge(archiveTreeContractVO2List);
+
+        InitAncestors(trees.get(0),"0");
+
+        for (ArchiveTreeContract archiveTreeContract:archiveTreeContracts) {
+            ArchiveTreeContractVO2 tmp = vo2Map.get(archiveTreeContract.getId());
+            if (tmp != null ) {
+                archiveTreeContract.setAncestors(tmp.getAncestors());
+            }
+        }
+    }
+
+    public void InitAncestors(ArchiveTreeContractVO2 tree, String ancestors) {
+        String localAncestors = ancestors + "," + tree.getId();
+        tree.setAncestors(ancestors);
+
+        List<ArchiveTreeContractVO2> childrens = tree.getChildren();
+        if (childrens!= null) {
+            for (ArchiveTreeContractVO2 child :childrens) {
+                InitAncestors(child,localAncestors);
+            }
+        }
+    }
+
+
+
+
+
+
+    public List<ArchiveTreeContract> getTreeContractFromWbs(String tenantId, Long projectId, Long wbsId, Long contractId,Long level,ArchiveTreeContractVO2 subTree){
+        List<ArchiveTreeContract> archiveTreeContracts = new ArrayList<>();
+
+        //1. 获取子树链表
+        List<ArchiveTreeContractVO2> treeContractVO2s = new ArrayList<>();
+        ForestNodeMerger.getTreeList(subTree,treeContractVO2s);
+
+        //2. 获取对应合同的树
+        List<WbsTreeContractVO6> wbsTreeContractVO6s =  contractInfoService.tree6List(wbsId.toString(),projectId.toString(),contractId.toString());
+        Iterator<WbsTreeContractVO6> iterator = wbsTreeContractVO6s.iterator();
+        while (iterator.hasNext()) {
+            WbsTreeContractVO6 treeContractVO6 = iterator.next();
+            if (treeContractVO6.getNodeType() > level) {
+                iterator.remove();
+            }
+        }
+
+         return archiveTreeContracts;
+    }
+
+}

+ 54 - 8
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeContractServiceImpl.java

@@ -27,14 +27,16 @@ import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.node.ForestNodeMerger;
 import org.springblade.manager.entity.ArchiveTree;
 import org.springblade.manager.entity.ArchiveTreeContract;
+import org.springblade.manager.entity.ContractInfo;
+import org.springblade.manager.entity.ProjectInfo;
 import org.springblade.manager.mapper.ArchiveTreeMapper;
-import org.springblade.manager.vo.ArchiveTreeContractAutoRuleVO;
-import org.springblade.manager.vo.ArchiveTreeContractVO;
+import org.springblade.manager.service.IArchiveTreeService;
+import org.springblade.manager.service.IContractInfoService;
+import org.springblade.manager.service.IProjectInfoService;
+import org.springblade.manager.vo.*;
 import org.springblade.manager.mapper.ArchiveTreeContractMapper;
 import org.springblade.manager.service.IArchiveTreeContractService;
 import org.springblade.core.mp.base.BaseServiceImpl;
-import org.springblade.manager.vo.ArchiveTreeContractVO2;
-import org.springblade.manager.vo.ArchiveTreeVO;
 import org.springblade.manager.wrapper.ArchiveTreeContractWrapper;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -53,6 +55,14 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 
 	private final ArchiveTreeContractMapper archiveTreeContractMapper;
 
+	private final IArchiveTreeService archiveTreeService;
+
+	private final IContractInfoService contractInfoService;
+
+	private final ArTreeContractInitServiceImpl arTreeContractInitService;
+
+	private final IProjectInfoService projectInfoService;
+
 
 	@Override
 	public IPage<ArchiveTreeContractVO> selectArchiveTreeContractPage(IPage<ArchiveTreeContractVO> page, ArchiveTreeContractVO archiveTreeContract) {
@@ -75,9 +85,9 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 		}
 
 
-		//清理旧的项目归档树,待补充
-		clearProjectTree(tenantId,projectId);
-		//判断是否
+		//todo 同步新增节点
+
+
 
 		//系统模板的
 		List<ArchiveTreeContract> archiveTreeContracts = new ArrayList<>();
@@ -123,15 +133,18 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 			archiveTreeContracts.add(archiveTree);
 		}
 
+		//todo 同步合同划分
+
 		//todo 生成动态节点
 		List<ArchiveTreeContractVO2> archiveTreeContractVO2List = this.tree2(tenantId,1,null,projectId);
 
+		//todo 遍历找到关联质检资料的节点,取出合同段
 
 		//todo 处理文件提名
 
 		//todo 立卷规则
 
-		//todo 生成动态节点的同名案卷
+		//todo 同步划分树节点到案卷列表
 
 
 
@@ -139,6 +152,39 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 		return true;
 	}
 
+
+	@Override
+	public boolean initTree2(String tenantId, Long projectId){
+
+		List<ArchiveTreeVO2> tree = archiveTreeService.tree2(AuthUtil.getTenantId(), null, null);
+		if (tree == null || tree.size() == 0) {
+			return false;
+		}
+
+		ProjectInfo projectInfo = projectInfoService.getOne(projectId);
+
+		List<ArchiveTreeContract> archiveTreeContracts = new ArrayList<>();
+
+
+		List<ContractInfo> contractInfoVOS = contractInfoService.selectContractInfoPageByPid(projectId.toString());
+
+		arTreeContractInitService.copyTree(tenantId,projectId,projectInfo.getProjectName(),tree.get(0),archiveTreeContracts,contractInfoVOS);
+
+	    //todo 同步动态节点
+
+		//todo 遍历找到关联质检资料的节点,取出合同段
+
+		//todo 处理文件提名
+
+		//todo 立卷规则
+
+		//todo 同步划分树节点到案卷列表
+
+		this.saveBatch(archiveTreeContracts);
+		return true;
+	}
+
+
 	@Override
 	public List<ArchiveTreeContractVO> lazyTree(String tenantId, Long parentId,Long projectId) {
 		if (AuthUtil.isAdministrator()) {

+ 2 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeServiceImpl.java

@@ -29,7 +29,7 @@ import java.util.stream.Collectors;
 public class ArchiveTreeServiceImpl extends BaseServiceImpl<ArchiveTreeMapper, ArchiveTree> implements IArchiveTreeService {
 
     private final ArchiveTreeMapper archiveTreeMapper;
-    private final ArchiveTreeSupportServiceImpl archiveTreeSupportService;
+    private final ArTreeContractInitServiceImpl archiveTreeContractInitService;
 
     @Override
     public boolean initArchiveTree() {
@@ -74,7 +74,7 @@ public class ArchiveTreeServiceImpl extends BaseServiceImpl<ArchiveTreeMapper, A
         if (extId != null && level != null) {
             //从wbs树获取
             String wbsId = extId.toString();
-            archiveTreeSupportService.getWbsArchiveTree(parentId,wbsId,tenantId,"1",level);
+            archiveTreeContractInitService.getWbsArchiveTree(parentId,wbsId,tenantId,"1",level);
 
         }//征程流程
         else {

+ 0 - 84
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeSupportServiceImpl.java

@@ -1,84 +0,0 @@
-package org.springblade.manager.service.impl;
-
-import lombok.AllArgsConstructor;
-import org.springblade.common.utils.SnowFlakeUtil;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.manager.entity.ArchiveTree;
-import org.springblade.manager.entity.ArchiveTreeContract;
-import org.springblade.manager.entity.WbsTree;
-import org.springblade.manager.service.IContractInfoService;
-import org.springblade.manager.service.IWbsTreeService;
-import org.springblade.manager.utils.ForestNodeMerger;
-import org.springblade.manager.vo.ArchiveTreeContractVO2;
-import org.springblade.manager.vo.WbsTreeContractVO6;
-import org.springblade.manager.vo.WbsTreeVO2;
-import org.springframework.stereotype.Service;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-@Service
-@AllArgsConstructor
-public class ArchiveTreeSupportServiceImpl {
-    private final IWbsTreeService wbsTreeService;
-
-    private final IContractInfoService contractInfoService;
-
-    /**
-     * 按照层次获取公共归档树
-     * @param parentId
-     * @param wbsId
-     * @param tenantId
-     * @param type
-     * @param level 层次,1,单位工程,2
-     * @return
-     */
-    public List<ArchiveTree> getWbsArchiveTree(Long parentId, String wbsId, String tenantId, String type,Long level)
-    {
-        List<ArchiveTree> archiveTreeList = new ArrayList<>();
-
-        List<WbsTreeVO2> wbsTreeVO2s = wbsTreeService.tree(wbsId, tenantId, type);
-
-        //遍历构建
-        for (WbsTreeVO2 wbsTreeVO2:wbsTreeVO2s) {
-            //只展示指定层级之上的
-            if (wbsTreeVO2.getNodeType() > level){
-                continue;
-            }
-
-            ArchiveTree archiveTree = new ArchiveTree();
-            archiveTree.setId(SnowFlakeUtil.getId());
-            archiveTree.setParentId(parentId);
-            archiveTree.setNodeName(wbsTreeVO2.getTitle());
-            archiveTree.setExtId(wbsTreeVO2.getId());
-            archiveTree.setDisplayHierarchy(level.toString());
-            archiveTreeList.add(archiveTree);
-        }
-
-        //设置pid
-
-        return archiveTreeList;
-    }
-
-    public List<ArchiveTreeContract> getTreeContractFromWbs(String tenantId, Long projectId, Long wbsId, Long contractId,Long level,ArchiveTreeContractVO2 subTree){
-        List<ArchiveTreeContract> archiveTreeContracts = new ArrayList<>();
-
-        //1. 获取子树链表
-        List<ArchiveTreeContractVO2> treeContractVO2s = new ArrayList<>();
-        ForestNodeMerger.getTreeList(subTree,treeContractVO2s);
-
-        //2. 获取对应合同的树
-        List<WbsTreeContractVO6> wbsTreeContractVO6s =  contractInfoService.tree6List(wbsId.toString(),projectId.toString(),contractId.toString());
-        Iterator<WbsTreeContractVO6> iterator = wbsTreeContractVO6s.iterator();
-        while (iterator.hasNext()) {
-            WbsTreeContractVO6 treeContractVO6 = iterator.next();
-            if (treeContractVO6.getNodeType() > level) {
-                iterator.remove();
-            }
-        }
-
-         return archiveTreeContracts;
-    }
-
-}