Jelajahi Sumber

Merge branch 'refs/heads/feature-lihb-20250722' into dev

LHB 3 minggu lalu
induk
melakukan
672f8ddb2c
14 mengubah file dengan 137 tambahan dan 80 penghapusan
  1. 4 0
      blade-service-api/blade-archive-api/src/main/java/org/springblade/archive/vo/ArchivesAutoVO.java
  2. 4 0
      blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/ArchiveFileVO.java
  3. 2 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/ArchiveTreeContractClient.java
  4. 10 6
      blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchiveFileAutoController.java
  5. 9 6
      blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchiveFileController.java
  6. 10 6
      blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchivesAutoController.java
  7. 12 10
      blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ArchivesAutoMapper.xml
  8. 16 44
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/ArchiveFileMapper.xml
  9. 5 4
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ArchiveTreeContractController.java
  10. 5 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/feign/ArchiveTreeContractImpl.java
  11. 6 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveTreeContractMapper.java
  12. 48 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveTreeContractMapper.xml
  13. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IArchiveTreeContractService.java
  14. 5 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeContractServiceImpl.java

+ 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);
 		int test = 0;
 		//todo 后续去掉

+ 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 - 4
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ArchiveTreeContractController.java

@@ -272,11 +272,12 @@ public class ArchiveTreeContractController extends BladeController {
     @ApiImplicitParams(value = {
             @ApiImplicitParam(name = "parentId", value = "父级id", required = true),
             @ApiImplicitParam(name = "projectId", value = "项目id", required = true),
-            @ApiImplicitParam(name = "contractId", value = "合同段id", required = true)
+            @ApiImplicitParam(name = "contractId", value = "合同段id", required = true),
+            @ApiImplicitParam(name = "type", value = "类型:1-查询文件数量", required = true)
     })
-    public R<List<ArchiveTreeContractVO2>> lazyTree(Long parentId, Long projectId, Long contractId) {
+    public R<List<ArchiveTreeContractVO2>> lazyTree(Long parentId, Long projectId, Long contractId, Integer type) {
 
-        List<ArchiveTreeContractVO2> tree = archiveTreeContractService.lazyTree2(AuthUtil.getTenantId(), parentId, projectId, contractId);
+        List<ArchiveTreeContractVO2> tree = archiveTreeContractService.lazyTree2(AuthUtil.getTenantId(), parentId, projectId, contractId, type);
         if (tree != null && tree.size() > 0) {
             List<ArchiveTreeContractVO2> newTrees = new ArrayList<>();
             if (parentId == 0 && tree.size() > 1) {
@@ -327,7 +328,7 @@ public class ArchiveTreeContractController extends BladeController {
             return R.fail(200, "初始化归档树失败");
         }
 
-        List<ArchiveTreeContractVO2> tree = archiveTreeContractService.lazyTree2(AuthUtil.getTenantId(), 0L, projectId, null);
+        List<ArchiveTreeContractVO2> tree = archiveTreeContractService.lazyTree2(AuthUtil.getTenantId(), 0L, projectId, null,null);
         if (tree != null && tree.size() > 0) {
             return R.data(tree);
         }

+ 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);
+    }
+
     /**
      * 获取项目下存在未组卷文件的归档树节点
      *

+ 6 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveTreeContractMapper.java

@@ -63,10 +63,15 @@ public interface ArchiveTreeContractMapper extends BaseMapper<ArchiveTreeContrac
     List<ArchiveTreeContractVO2> lazyTree2(@Param("tenantId") String tenantId, @Param("parentId") Long parentId, @Param("projectId") Long projectId
             , @Param("code") String code, @Param("contractId") String contractId);
 
+    /**
+     * 归档树不带文件数量
+     * */
+    List<ArchiveTreeContractVO2> lazyTree3(@Param("tenantId") String tenantId, @Param("parentId") Long parentId, @Param("projectId") Long projectId
+            , @Param("code") String code, @Param("contractId") String contractId);
+
     List<ArchiveTreeContractVO2> tree2(@Param("tenantId") String tenantId, @Param("disPlayTree") Integer disPlayTree, @Param("nodeType") Integer nodeType, @Param("projectId") Long projectId
             , @Param("code") String code, @Param("contractId") String contractId);
 
-    List<ArchiveTreeContractVO2> lazyTree3(@Param("tenantId") String tenantId, @Param("parentId") Long parentId, @Param("projectId") Long projectId, @Param("treeCode") Long treeCode);
 
     List<ArchiveTreeContractVO2> tree3(@Param("tenantId") String tenantId, @Param("disPlayTree") Integer disPlayTree, @Param("nodeType") Integer nodeType, @Param("projectId") Long projectId, @Param("treeCode") Long treeCode);
 

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

@@ -287,6 +287,54 @@
         </if>
         ORDER BY d.tree_sort, d.sort
     </select>
+    <!-- 归档数不带文件数量 -->
+    <select id="lazyTree3" resultMap="ArchiveTreeContractVO2ResultMap">
+        SELECT
+        d.id,
+        d.parent_id,
+        IFNULL(if(length(trim(d.full_name))>0,d.full_name,d.node_name),d.node_name)AS title,
+        d.id AS "value",
+        d.id AS "key",
+        d.major_data_type AS "majorDataType",
+        d.display_hierarchy AS "displayHierarchy",
+        d.is_storage_node AS "isStorageNode",
+        d.post_type AS postType,
+        d.node_type AS nodeType,
+        d.association_type,
+        d.project_type,
+        d.storage_type,
+        d.ext_type,
+        d.ext_id,
+        d.exp_data_type,
+        d.archive_auto_type,
+        d.archive_auto_node_id,
+        d.archive_auto_group_select,
+        d.archive_auto_group_id,
+        d.tree_sort,
+        d.file_number_prefix,
+        d.storage_time,
+        d.rollor,
+        d.reviewer,
+        d.specification,
+        d.archive_name_suffix,
+        d.contract_id,
+        d.project_id,
+        #{code} as code,
+        (SELECT CASE WHEN count(1) > 0 THEN 1 ELSE 0 END FROM m_archive_tree_contract WHERE parent_id = d.id and is_deleted = 0 and project_id = #{projectId}) AS "has_children"
+        FROM
+        m_archive_tree_contract d
+        WHERE
+        d.parent_id = #{parentId} AND d.is_deleted = 0 and project_id = #{projectId}
+        <if test="tenantId!=null and tenantId!=''">
+            AND d.tenant_id = #{tenantId}
+        </if>
+        <if test="code!=null and code!=''">
+            AND (d.tree_code = #{code} or d.tree_code = #{contractId} or d.parent_id = 0)
+        </if>
+        ORDER BY d.tree_sort, d.sort
+    </select>
+
+
     <!-- 文件收集 归档树的文件数量 -->
     <select id="selectFileNumber" resultType="java.lang.Integer">
         SELECT  count(1)  FROM m_archive_tree_contract a

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

@@ -70,7 +70,7 @@ public interface IArchiveTreeContractService extends BaseService<ArchiveTreeCont
 
     List<ArchiveTreeContractVO> tree(String tenantI, Integer disPlayTree, Integer nodeType, Long projectId);
 
-    List<ArchiveTreeContractVO2> lazyTree2(String tenantId, Long parentId, Long projectId, Long contractId);
+    List<ArchiveTreeContractVO2> lazyTree2(String tenantId, Long parentId, Long projectId, Long contractId,Integer type);
 
     List<ArchiveTreeContractVO2> tree2(String tenantI, Integer disPlayTree, Integer nodeType, Long projectId, Long contractId);
 

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

@@ -191,11 +191,14 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 	}
 
 	@Override
-	public List<ArchiveTreeContractVO2> lazyTree2(String tenantId, Long parentId, Long projectId, Long contractId) {
+	public List<ArchiveTreeContractVO2> lazyTree2(String tenantId, Long parentId, Long projectId, Long contractId,Integer type) {
 		if (AuthUtil.isAdministrator()) {
 			tenantId = StringPool.EMPTY;
 		}
-		return ForestNodeMergerEx.merge(baseMapper.lazyTree2(tenantId, parentId,projectId,getAuthCode(contractId),getAuthContractId(contractId)));
+		if(type != null && type == 1){
+			return ForestNodeMergerEx.merge(baseMapper.lazyTree2(tenantId, parentId,projectId,getAuthCode(contractId),getAuthContractId(contractId)));
+		}
+		return ForestNodeMergerEx.merge(baseMapper.lazyTree3(tenantId, parentId,projectId,getAuthCode(contractId),getAuthContractId(contractId)));
 	}
 
 	@Override