Bladeren bron

推送平天路

huangtf 5 maanden geleden
bovenliggende
commit
dcc9f2b72b

+ 2 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/ArchiveFileVO.java

@@ -95,4 +95,6 @@ public class ArchiveFileVO extends ArchiveFile {
      * 案卷题名
      */
     private String archiveName;
+
+    private Integer extType;
 }

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

@@ -138,6 +138,7 @@ public class ArchiveTreeContract extends BaseEntity {
      */
     private Integer projectType;
     /**
+     *
      * 存储类型
      * 1 普通 2竣工图 3 计量 4 质检 5 声像 6 试验 7 隐蔽 8 管理文件 9 变更令
      *  todo 档案和档案树节点下文件的类型,取决于这个
@@ -395,6 +396,8 @@ public class ArchiveTreeContract extends BaseEntity {
         this.setTreeSort(archiveTree.getProcsort());
         //质检资料
         this.associationType = 1;
+        this.setExtType(1);
+
 //        this.majorDataType = archiveTree.getMajorDataType();
 //        this.displayHierarchy = archiveTree.getDisplayHierarchy();
         this.isStorageNode = archiveTree.getIsStorage();

+ 5 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchiveFileController.java

@@ -133,6 +133,11 @@ public class ArchiveFileController extends BladeController {
         if (queryVo.getNodeIds().isEmpty() || queryVo.getNodeIds().equals("")) {
 
         } else {
+            ArchiveTreeContract rootNode=  this.archiveTreeContractClient.getArchiveTreeContractById(Long.parseLong(queryVo.getNodeIds()));
+            if (rootNode != null && rootNode.getExtType()!= null ) {
+                queryVo.setExtType(1);
+            }
+
             List<ArchiveTreeContract> archiveTreeContracts = this.archiveTreeContractClient.queryAllChildByAncestors(queryVo.getNodeIds(), queryVo.getContractId() == null ? null : Long.parseLong(queryVo.getContractId()));
             if (archiveTreeContracts != null && archiveTreeContracts.size() > 0) {
                 List<String> ids = JSONArray.parseArray(JSONObject.toJSONString(archiveTreeContracts.stream().map(ArchiveTreeContract::getId).distinct().collect(Collectors.toList())), String.class);

+ 42 - 8
blade-service/blade-business/src/main/java/org/springblade/business/mapper/ArchiveFileMapper.xml

@@ -105,10 +105,27 @@
 <!--            </otherwise>-->
 <!--        </choose>-->
         <if test="vo.nodeIds != null and vo.nodeIds != ''">
-            and u.node_id in
-            <foreach collection="vo.nodeIdArray" item="nodeId" open="(" separator="," close=")">
-                #{nodeId}
-            </foreach>
+            and
+            <choose>
+                <!-- 当存在扩展类型时,同时查 node_id 和 node_ext_id -->
+                <when test="vo.extType != null">
+                    (u.node_id in
+                    <foreach collection="vo.nodeIdArray" item="nodeId" open="(" separator="," close=")">
+                        #{nodeId}
+                    </foreach>
+                    OR u.node_ext_id in
+                    <foreach collection="vo.nodeIdArray" item="nodeId" open="(" separator="," close=")">
+                        #{nodeId}
+                    </foreach>)
+                </when>
+                <!-- 默认只查 node_id -->
+                <otherwise>
+                    u.node_id in
+                    <foreach collection="vo.nodeIdArray" item="nodeId" open="(" separator="," close=")">
+                        #{nodeId}
+                    </foreach>
+                </otherwise>
+            </choose>
         </if>
         <if test="vo.queryValue != null and vo.queryValue != ''">
             and (
@@ -158,10 +175,27 @@
 <!--            </otherwise>-->
 <!--        </choose>-->
         <if test="vo.nodeIds != null and vo.nodeIds != ''">
-            and u.node_id in
-            <foreach collection="vo.nodeIdArray" item="nodeId" open="(" separator="," close=")">
-                #{nodeId}
-            </foreach>
+            and
+            <choose>
+                <!-- 当存在扩展类型时,同时查 node_id 和 node_ext_id -->
+                <when test="vo.extType != null">
+                    (u.node_id in
+                    <foreach collection="vo.nodeIdArray" item="nodeId" open="(" separator="," close=")">
+                        #{nodeId}
+                    </foreach>
+                    OR u.node_ext_id in
+                    <foreach collection="vo.nodeIdArray" item="nodeId" open="(" separator="," close=")">
+                        #{nodeId}
+                    </foreach>)
+                </when>
+                <!-- 默认只查 node_id -->
+                <otherwise>
+                    u.node_id in
+                    <foreach collection="vo.nodeIdArray" item="nodeId" open="(" separator="," close=")">
+                        #{nodeId}
+                    </foreach>
+                </otherwise>
+            </choose>
         </if>
         <if test="vo.queryValue != null and vo.queryValue != ''">
             and (

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

@@ -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());
+			}
+		}
+
+	}
+
 
 }