Browse Source

档案系统-文件分页查询和案卷分页查询优化

LHB 2 tháng trước cách đây
mục cha
commit
6061398bff

+ 4 - 0
blade-service-api/blade-archive-api/src/main/java/org/springblade/archive/vo/ArchivesAutoVO.java

@@ -169,6 +169,10 @@ public class ArchivesAutoVO extends ArchivesAuto {
 	 * 柜子内部搜索
 	 */
 	private String innerSearch;
+	/**
+	 * 权限标识码
+	 */
+	private String authCode;
 
 	/**
 	 * 排序规则

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

@@ -102,4 +102,8 @@ public class ArchiveFileVO extends ArchiveFile {
      * 是否已组卷
      */
     private Integer isArchive;
+    /**
+     * 权限码
+     */
+    private String authCode;
 }

+ 2 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/ArchiveTreeContractClient.java

@@ -88,4 +88,6 @@ public interface ArchiveTreeContractClient {
                          @RequestParam("contractName") String contractName,
                          @RequestParam("nodeName") String nodeName);
 
+    @PostMapping(API_PREFIX + "/getAuthCode")
+    public String getAuthCode(@RequestParam Long contractId);
 }

+ 10 - 6
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchiveFileAutoController.java

@@ -261,12 +261,16 @@ ArchiveFileAutoController extends BladeController {
         if (queryVo.getNodeIds() == null || queryVo.getNodeIds().equals("")) {
             return R.data(null);
         }
-        List<ArchiveTreeContract> archiveTreeContracts = this.archiveTreeContractClient.queryAllChildByAncestors(queryVo.getNodeIds(), 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);
-            ids.add(queryVo.getNodeIds());
-            queryVo.setNodeIdArray(ids);
-        }
+//        List<ArchiveTreeContract> archiveTreeContracts = this.archiveTreeContractClient.queryAllChildByAncestors(queryVo.getNodeIds(), 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);
+//            ids.add(queryVo.getNodeIds());
+//            queryVo.setNodeIdArray(ids);
+//        }
+
+        //优化 获取权限表示码
+        String authCode = archiveTreeContractClient.getAuthCode(queryVo.getContractId());
+        queryVo.setAuthCode(authCode);
 
         return R.data(archivesAutoService.selectArchivesAutoFilePage(queryVo));
     }

+ 9 - 6
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchiveFileController.java

@@ -161,12 +161,15 @@ public class ArchiveFileController extends BladeController {
                 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);
-                ids.add(queryVo.getNodeIds());
-                queryVo.setNodeIdArray(ids);
-            }
+//            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);
+//                ids.add(queryVo.getNodeIds());
+//                queryVo.setNodeIdArray(ids);
+//            }
+            //优化
+            String authCode = this.archiveTreeContractClient.getAuthCode(queryVo.getContractId() == null ? null : Long.parseLong(queryVo.getContractId()));
+            queryVo.setAuthCode(authCode);
         }
         return R.data(this.archiveFileClient.selectArchiveFilePage(queryVo));
     }

+ 10 - 6
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchivesAutoController.java

@@ -144,12 +144,16 @@ public class ArchivesAutoController extends BladeController {
 		if(queryVo.getNodeIds() == null || queryVo.getNodeIds().equals("")){
 			return  R.data(null);
 		}
-		List<ArchiveTreeContract> archiveTreeContracts = this.archiveTreeContractClient.queryAllChildByAncestors(queryVo.getNodeIds(),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);
-			ids.add(queryVo.getNodeIds());
-			queryVo.setNodeIdArray(ids);
-		}
+//		List<ArchiveTreeContract> archiveTreeContracts = this.archiveTreeContractClient.queryAllChildByAncestors(queryVo.getNodeIds(),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);
+//			ids.add(queryVo.getNodeIds());
+//			queryVo.setNodeIdArray(ids);
+//		}
+
+		//优化 获取权限表示码
+		String authCode = archiveTreeContractClient.getAuthCode(queryVo.getContractId());
+		queryVo.setAuthCode(authCode);
 		IPage<ArchivesAutoVO> pages = archivesAutoService.selectArchivesAutoFilePage(queryVo);
 		return R.data(pages);
 	}

+ 12 - 10
blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ArchivesAutoMapper.xml

@@ -262,7 +262,8 @@
 
 
     <select id="selectArchivesAutoFileCount" resultType="java.lang.Integer">
-        select count(0) from u_archives_auto u LEFT JOIN m_archive_tree_contract m ON u.node_id = m.id where u.is_deleted = 0
+        select count(0) from u_archives_auto u LEFT JOIN m_archive_tree_contract m ON u.node_id = m.id
+        where u.is_deleted = 0 and m.is_deleted = 0
         <if test="vo.projectId != null and vo.projectId != ''">
             and u.project_id = #{vo.projectId}
         </if>
@@ -281,10 +282,10 @@
             and u.is_auto_file = #{vo.isAutoFile}
         </if>
         <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 (find_in_set(#{vo.nodeIds},m.ancestors) or m.id = #{vo.nodeIds})
+        </if>
+        <if test="vo.authCode != null and vo.authCode != ''">
+            AND (m.tree_code = #{authCode} or m.tree_code = #{contractId} or m.parent_id = 0)
         </if>
         <if test="vo.queryValueSize != null and vo.queryValueSize != ''">
             <choose>
@@ -327,7 +328,8 @@
                         )
                 END AS UNSIGNED
             ) AS trailing_number
-        from u_archives_auto u LEFT JOIN m_archive_tree_contract m ON u.node_id = m.id where u.is_deleted = 0
+        from u_archives_auto u LEFT JOIN m_archive_tree_contract m ON u.node_id = m.id
+        where u.is_deleted = 0 and m.is_deleted = 0
         <if test="vo.projectId != null and vo.projectId != ''">
             and u.project_id = #{vo.projectId}
         </if>
@@ -346,10 +348,10 @@
             and u.is_auto_file = #{vo.isAutoFile}
         </if>
         <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 (find_in_set(#{vo.nodeIds},m.ancestors) or m.id = #{vo.nodeIds})
+        </if>
+        <if test="vo.authCode != null and vo.authCode != ''">
+            AND (m.tree_code = #{authCode} or m.tree_code = #{contractId} or m.parent_id = 0)
         </if>
         <if test="vo.queryValueSize != null and vo.queryValueSize != ''">
             <choose>

+ 16 - 44
blade-service/blade-business/src/main/java/org/springblade/business/mapper/ArchiveFileMapper.xml

@@ -74,8 +74,11 @@
         select count(u.id) from u_archive_file u
         <if test="vo.nodeIds != null and vo.nodeIds != ''">
             left join m_archive_tree_contract t on t.id = u.node_id
+            <if test="vo.extType != null">
+                or t.id = u.node_ext_id
+            </if>
         </if>
-        where u.is_deleted = 0
+        where u.is_deleted = 0 and t.is_deleted = 0
         <if test="vo.isApprovalValue != null and vo.isApprovalValue != ''">
             and u.status = #{vo.isApprovalValue}
         </if>
@@ -119,27 +122,10 @@
 <!--            </otherwise>-->
 <!--        </choose>-->
         <if test="vo.nodeIds != null and vo.nodeIds != ''">
-            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>
+            and  (find_in_set(#{vo.nodeIds},t.ancestors) or t.id = #{vo.nodeIds})
+        </if>
+        <if test="vo.authCode != null and vo.authCode != ''">
+            AND (t.tree_code = #{authCode} or t.tree_code = #{contractId} or t.parent_id = 0)
         </if>
         <if test="vo.queryValue != null and vo.queryValue != ''">
             and (
@@ -157,8 +143,11 @@
         select u.* from u_archive_file u
         <if test="vo.nodeIds != null and vo.nodeIds != ''">
             left join m_archive_tree_contract t on t.id = u.node_id
+                   <if test="vo.extType != null">
+                       or t.id = u.node_ext_id
+                   </if>
         </if>
-        where u.is_deleted = 0
+        where u.is_deleted = 0 and t.is_deleted = 0
         <if test="vo.isApprovalValue != null and vo.isApprovalValue != ''">
             and u.status = #{vo.isApprovalValue}
         </if>
@@ -202,27 +191,10 @@
 <!--            </otherwise>-->
 <!--        </choose>-->
         <if test="vo.nodeIds != null and vo.nodeIds != ''">
-            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>
+            and  (find_in_set(#{vo.nodeIds},t.ancestors) or t.id = #{vo.nodeIds})
+        </if>
+        <if test="vo.authCode != null and vo.authCode != ''">
+            AND (t.tree_code = #{authCode} or t.tree_code = #{contractId} or t.parent_id = 0)
         </if>
         <if test="vo.queryValue != null and vo.queryValue != ''">
             and (

+ 5 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/feign/ArchiveTreeContractImpl.java

@@ -40,6 +40,11 @@ public class ArchiveTreeContractImpl implements ArchiveTreeContractClient {
         return archiveTreeList;
     }
 
+    @Override
+    public String getAuthCode(Long contractId){
+        return this.archiveTreeContractService.getAuthCode(contractId);
+    }
+
     /**
      * 获取项目下存在未组卷文件的归档树节点
      *