Browse Source

同步三环

laibulaizheli 1 month ago
parent
commit
0930748d0f

+ 9 - 0
blade-service-api/blade-archive-api/src/main/java/org/springblade/archive/trans/ArchiveFileVo.java

@@ -48,6 +48,7 @@ public class ArchiveFileVo {
     private Integer width;
     private Integer height;
     private String isArchive;
+    private Integer sort;
 
     public String getId() {
         return id;
@@ -400,4 +401,12 @@ public class ArchiveFileVo {
     public void setIsArchive(String isArchive) {
         this.isArchive = isArchive;
     }
+
+    public Integer getSort() {
+        return sort;
+    }
+
+    public void setSort(Integer sort) {
+        this.sort = sort;
+    }
 }

+ 4 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/entity/ArchiveFile.java

@@ -391,6 +391,10 @@ public class ArchiveFile extends BaseEntity {
         }
 
         this.setSort(vo.getOrderNum());
+        //设置了专门排序的就设置
+        if (vo.getSort()!= null) {
+            this.setSort(vo.getSort());
+        }
 
 
         String type = vo.getType();

+ 25 - 10
blade-service/blade-archive/src/main/java/org/springblade/archive/external/impl/ExternalDataArchiveFileService.java

@@ -55,7 +55,7 @@ public class ExternalDataArchiveFileService {
         //把本地的也加进去,一般用不到作为冗余手段
         updateFileMapping(externalDataInfo,localFiles);
         //比较获取
-        getAddAndUpdateFiles(externalDataInfo,externalFiles, localFiles, addFiles, upFiles);
+        getAddAndUpdateFiles(externalDataInfo,externalFiles, localFiles, addFiles, upFiles,req);
 
         //保存
         addAndUpdateFiles(addFiles,upFiles);
@@ -127,7 +127,7 @@ public class ExternalDataArchiveFileService {
             List<ArchiveFile> externalFiles,
             List<ArchiveFile> localFiles,
             List<ArchiveFile> addFiles,
-            List<ArchiveFile> upFiles) {
+            List<ArchiveFile> upFiles,ArchiveReq req) {
 
         // 1. 提取本地文件的 outId 集合(用于快速判断外部文件是否已存在)
         Set<String> localOutIdSet = localFiles.stream()
@@ -155,7 +155,7 @@ public class ExternalDataArchiveFileService {
             } else {
                 // 存在则查找本地对应文件,判断是否需要更新
                 ArchiveFile localFile = localFileMap.get(externalOutId);
-                if (localFile != null && needUpdate(externalFile, localFile)) {
+                if (localFile != null && needUpdate(externalFile, localFile,req)) {
                     updateLocalFile(localFile, externalFile); // 更新字段
                     upFiles.add(localFile);
                 }
@@ -164,15 +164,30 @@ public class ExternalDataArchiveFileService {
     }
 
     // 辅助方法:判断是否需要更新
-    private boolean needUpdate(ArchiveFile external, ArchiveFile local) {
-        String extUtimeStr = formatTime(external.getUtime());
-        String localUtimeStr = formatTime(local.getUtime());
+// 辅助方法:判断是否需要更新
+    private boolean needUpdate(ArchiveFile external, ArchiveFile local, ArchiveReq req) {
+        // 处理 transType == 1 的情况
+        if (req.getTransType() != null && req.getTransType() == 1) {
+            // 比较 fileTime(避免空指针)和 sort 字段
+            String extFileTime = external.getFileTime();
+            String localFileTime = local.getFileTime();
+            boolean fileTimeDifferent = !Objects.equals(extFileTime, localFileTime);
+
+            boolean sortDifferent = !Objects.equals(external.getSort(), local.getSort());
+
+            return fileTimeDifferent || sortDifferent;
+        }
+        // 处理 transType == 0 和其他情况(默认逻辑)
+        else {
+            String extUtimeStr = formatTime(external.getUtime());
+            String localUtimeStr = formatTime(local.getUtime());
 
-        // 字符串严格比较:格式或内容不同即视为不一致
-        return !Objects.equals(extUtimeStr, localUtimeStr)
-                || !Objects.equals(external.getPdfPageUrl(), local.getPdfPageUrl());
-                //|| !Objects.equals(external.getArchiveId(), local.getArchiveId());
+            // 确保 external.getPdfPageUrl() 非空才比较(external有值)
+            boolean pdfUrlDifferent = external.getPdfPageUrl() != null &&
+                    !Objects.equals(external.getPdfPageUrl(), local.getPdfPageUrl());
 
+            return !Objects.equals(extUtimeStr, localUtimeStr) || pdfUrlDifferent;
+        }
     }
 
     /**