Prechádzať zdrojové kódy

档案按日期排序优化

cr 2 mesiacov pred
rodič
commit
6503e1290f

+ 15 - 3
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/ArchiveFileServiceImpl.java

@@ -328,13 +328,20 @@ public class ArchiveFileServiceImpl extends BaseServiceImpl<ArchiveFileMapper, A
 
     @Override
     public boolean sortByFileTime(Long nodeId) {
-        String sql = "SELECT id,file_time,node_id FROM u_archive_file WHERE node_id IN (SELECT id FROM m_archive_tree_contract WHERE  FIND_IN_SET(" + nodeId + ",ancestors)) AND is_deleted=0";
+        String sql = "SELECT id,file_time,node_id,sort FROM u_archive_file WHERE node_id IN (SELECT id FROM m_archive_tree_contract WHERE  FIND_IN_SET(" + nodeId + ",ancestors)) AND is_deleted=0";
         List<ArchiveFile> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(ArchiveFile.class));
         if (list.size() > 0) {
             Map<String, List<ArchiveFile>> group = list.stream()
                     .collect(Collectors.groupingBy(ArchiveFile::getNodeId));
             for (Map.Entry<String, List<ArchiveFile>> entry : group.entrySet()) {
                 List<ArchiveFile> archiveFiles = entry.getValue();
+                // 从archiveFiles列表中提取sort字段,处理null值
+                List<Integer> sortValues = archiveFiles.stream()
+                        .map(file -> {
+                            // 如果sort字段为null,返回0;否则返回实际值
+                            return file.getSort() != null ? file.getSort() : 0;
+                        })
+                        .collect(Collectors.toList());
                 archiveFiles.sort((a, b) -> {
                     if (a.getFileTime() == null && b.getFileTime() == null) return 0;
                     if (a.getFileTime() == null) return -1;
@@ -342,8 +349,13 @@ public class ArchiveFileServiceImpl extends BaseServiceImpl<ArchiveFileMapper, A
                     return a.getFileTime().compareTo(b.getFileTime());
                 });
                 int sort = 0;
-                for (ArchiveFile file : archiveFiles) {
-                    file.setSort(sort++);
+                for (int i = 0; i < archiveFiles.size(); i++ ) {
+                    Integer sortValue = sortValues.get(i);
+                    if(sortValue!=0){
+                        archiveFiles.get(i).setSort(sortValue);
+                    }else {
+                        archiveFiles.get(i).setSort(sort++);
+                    }
                 }
                 this.updateBatchById(archiveFiles);
             }