|
@@ -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;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|