Ver código fonte

刷新档案项目Sort

cr 1 semana atrás
pai
commit
c411b8a73d

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

@@ -90,4 +90,7 @@ public interface ArchiveTreeContractClient {
 
     @PostMapping(API_PREFIX + "/getAuthCode")
     public String getAuthCode(@RequestParam Long contractId);
+
+    @PostMapping(API_PREFIX + "/getArchiveTreeContractListByListOrderByTreeSort")
+    List<ArchiveTreeContract> getArchiveTreeContractListByListOrderByTreeSort(@RequestBody List<Long> nodeIds);
 }

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

@@ -532,4 +532,9 @@ public class ArchiveFileController extends BladeController {
     }
 
 
+    public R flushArchiveFileSort(Long projectId){
+        return R.status(archiveFileService.flushArchiveFileSort(projectId));
+    }
+
+
 }

+ 2 - 0
blade-service/blade-business/src/main/java/org/springblade/business/mapper/ArchiveFileMapper.java

@@ -124,4 +124,6 @@ public interface ArchiveFileMapper extends BaseMapper<ArchiveFile> {
     List<ArchiveFile> getAllArchiveFileByIds(@Param("strList") List<String> strList);
 
     Integer selectMaxSortByContractId(@Param("contractId") Long contractId);
+
+    List<ArchiveFile> selectArchiveFileByProjectId(@Param("projectId") Long projectId);
 }

+ 3 - 0
blade-service/blade-business/src/main/java/org/springblade/business/mapper/ArchiveFileMapper.xml

@@ -572,4 +572,7 @@
     <select id="selectMaxSortByContractId" resultType="java.lang.Integer">
         select max(sort) from u_archive_file where contract_id = #{contractId}
     </select>
+    <select id="selectArchiveFileByProjectId" resultType="org.springblade.business.entity.ArchiveFile">
+        select id,node_id,sort from u_archive_file where project_id = #{projectId} and is_deleted = 0
+    </select>
 </mapper>

+ 2 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/IArchiveFileService.java

@@ -79,4 +79,6 @@ public interface IArchiveFileService extends BaseService<ArchiveFile> {
     boolean sortByFileTime(Long nodeId);
 
     Integer selectMaxSortByContractId(Long contractId);
+
+    boolean flushArchiveFileSort(Long projectId);
 }

+ 30 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/ArchiveFileServiceImpl.java

@@ -17,6 +17,8 @@ import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.manager.entity.ArchiveTreeContract;
+import org.springblade.manager.feign.ArchiveTreeContractClient;
 import org.springblade.resource.feign.NewIOSSClient;
 import org.springblade.system.entity.DictBiz;
 import org.springblade.system.feign.IDictBizClient;
@@ -48,6 +50,7 @@ public class ArchiveFileServiceImpl extends BaseServiceImpl<ArchiveFileMapper, A
 
     private final ArchiveInspectionInfoClient archiveInspectionInfoClient;
     private final JdbcTemplate jdbcTemplate;
+    private final ArchiveTreeContractClient archiveTreeContractClient;
 
 
     @Override
@@ -371,4 +374,31 @@ public class ArchiveFileServiceImpl extends BaseServiceImpl<ArchiveFileMapper, A
     public Integer selectMaxSortByContractId(Long contractId) {
         return baseMapper.selectMaxSortByContractId(contractId);
     }
+
+    @Override
+    public boolean flushArchiveFileSort(Long projectId) {
+        List<ArchiveFile>archileFileList=baseMapper.selectArchiveFileByProjectId(projectId);
+        Map<String, List<ArchiveFile>> archiveMap = archileFileList.stream().collect(Collectors.groupingBy(ArchiveFile::getNodeId));
+        List<Long> NodeIds = archileFileList.stream()
+                .map(ArchiveFile::getNodeId)
+                .map(Long::parseLong)
+                .collect(Collectors.toList());
+        List<ArchiveTreeContract> sortIds = archiveTreeContractClient.getArchiveTreeContractListByListOrderByTreeSort(NodeIds);
+        int sort=10100001;
+        for (ArchiveTreeContract nodeId : sortIds) {
+            if(archiveMap.containsKey(nodeId.getId().toString())){
+                List<ArchiveFile> archiveFiles = archiveMap.get(nodeId.getId().toString());
+                if (archiveFiles != null) {
+                    archiveFiles = archiveFiles.stream()
+                            .sorted(Comparator.comparing(ArchiveFile::getSort, Comparator.nullsLast(Integer::compareTo)))
+                            .collect(Collectors.toList());
+                    for (ArchiveFile archiveFile : archiveFiles) {
+                        archiveFile.setSort(sort++);
+                    }
+                }
+            }
+        }
+        this.updateBatchById(archileFileList);
+        return true;
+    }
 }

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

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

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

@@ -190,4 +190,6 @@ public interface ArchiveTreeContractMapper extends BaseMapper<ArchiveTreeContrac
 
     Integer selectExtTypeByParentId(@Param("projectId")Long projectId,
                                     @Param("parentId") Long parentId);
+
+    List<ArchiveTreeContract> getArchiveTreeContractListByListOrderByTreeSort(@Param("nodeIds") List<Long> nodeIds);
 }

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

@@ -1028,4 +1028,17 @@
     <select id="selectExtTypeByParentId" resultType="java.lang.Integer">
         select count(0) from m_archive_tree_contract where project_id = #{projectId} and ext_type = 2 and is_deleted = 0 and FIND_IN_SET(#{parentId},ancestors)
     </select>
+    <select id="getArchiveTreeContractListByListOrderByTreeSort"
+            resultType="org.springblade.manager.entity.ArchiveTreeContract">
+        SELECT
+        d.*
+        FROM
+        m_archive_tree_contract d
+        WHERE
+        d.is_deleted = 0 and d.id in
+        <foreach item="id" collection="nodeIds" open="(" close=")" separator=",">
+            #{id}
+        </foreach>
+        ORDER BY case when d.tree_sort regexp '^[a-zA-Z]' then 0 when d.tree_sort regexp '^[0-9]' then 1 else 2 end, d.tree_sort
+    </select>
 </mapper>

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

@@ -147,4 +147,6 @@ public interface IArchiveTreeContractService extends BaseService<ArchiveTreeCont
     Long getNodeIdByName(String projectName, String contractName, String nodeName);
 
     boolean deleteTreeEx(Long id);
+
+    List<ArchiveTreeContract> getArchiveTreeContractListByListOrderByTreeSort(List<Long> nodeIds);
 }

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

@@ -800,6 +800,11 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 		return true;
 	}
 
+	@Override
+	public List<ArchiveTreeContract> getArchiveTreeContractListByListOrderByTreeSort(List<Long> nodeIds) {
+		return baseMapper.getArchiveTreeContractListByListOrderByTreeSort(nodeIds);
+	}
+
 
 	/**
 	 * 批量更新