Browse Source

推送平天路

huangtf 5 months ago
parent
commit
c2ade46e10

+ 18 - 2
blade-service-api/blade-business-api/src/main/java/org/springblade/business/entity/ArchiveFile.java

@@ -25,8 +25,10 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 import org.springframework.beans.BeanUtils;
 
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
+import java.time.format.DateTimeParseException;
 
 /**
  * 实体类
@@ -368,8 +370,22 @@ public class ArchiveFile extends BaseEntity {
         this.setEVisaFile(vo.getApproveType());
         // utime 对应 Vo 的 upTime(需转换)
         if (vo.getUpTime() != null) {
-            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-            this.setUtime(LocalDateTime.parse(vo.getUpTime(), formatter));
+            String upTimeStr = vo.getUpTime();
+            LocalDateTime dateTime;
+            try {
+                // 首先尝试原始格式:yyyy-MM-dd HH:mm:ss
+                DateTimeFormatter originalFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+                dateTime = LocalDateTime.parse(upTimeStr, originalFormatter);
+            } catch (DateTimeParseException e) {
+                try {
+                    // 尝试紧凑的日期格式:yyyyMMdd
+                    LocalDate date = LocalDate.parse(upTimeStr, DateTimeFormatter.BASIC_ISO_DATE);
+                        dateTime = date.atStartOfDay(); // 时间设为00:00:00
+                } catch (DateTimeParseException e2) {
+                    throw new IllegalArgumentException("无法解析的日期时间格式: " + upTimeStr, e2);
+                }
+            }
+            this.setUtime(dateTime);
         }
 
         this.setSort(vo.getOrderNum());

+ 20 - 1
blade-service/blade-archive/src/main/java/org/springblade/archive/external/impl/ExternalDataArchiveAutoService.java

@@ -99,6 +99,8 @@ public class ExternalDataArchiveAutoService {
                 projectId,outIds
         );
 
+        updateArchiveMapping(externalDataInfo, localArchives);
+
         // 比对差异获取需新增/更新的案卷
         getAddAndUpdateArchives(
                 externalDataInfo,
@@ -128,7 +130,11 @@ public class ExternalDataArchiveAutoService {
 
     private List<ArchivesAuto> getLocalArchives(Long projectId, List<String> outIds) {
 
-        List<ArchivesAuto> localArchives = autoMapper.getOutArchiveAutosByOutIds(projectId,outIds);
+        List<ArchivesAuto> localArchives = new ArrayList<>();
+        if (outIds!= null && outIds.size() > 0) {
+            localArchives = autoMapper.getOutArchiveAutosByOutIds(projectId,outIds);
+        }
+
         //List<ArchiveTreeContract> localContracts = archiveTreeContractClient.getOutNodesByOutIds(projectId,outIds);
         return localArchives;
     }
@@ -205,5 +211,18 @@ public class ExternalDataArchiveAutoService {
         // || !Objects.equals(external.getSecretLevel(), local.getSecretLevel())
     }
 
+    public  void updateArchiveMapping(ExternalDataInfo externalDataInfo, List<ArchivesAuto> addArchives) {
+        if (externalDataInfo == null || addArchives == null || addArchives.isEmpty()) {
+            return;
+        }
+
+        Map<String, Long> archiveMapping = externalDataInfo.getArchiveIdMapping();
+        addArchives.stream()
+                .filter(archive -> archive.getOutId() != null && archive.getId() != null)
+                .forEach(archive ->
+                        archiveMapping.putIfAbsent(archive.getOutId(), archive.getId())
+                );
+    }
+
 
 }

+ 20 - 2
blade-service/blade-archive/src/main/java/org/springblade/archive/external/impl/ExternalDataArchiveFileService.java

@@ -50,6 +50,9 @@ public class ExternalDataArchiveFileService {
 
         //本地的文件
         List<ArchiveFile> localFiles = getLocalFils(projectId,outIds);
+
+        //把本地的也加进去,一般用不到作为冗余手段
+        updateFileMapping(externalDataInfo,localFiles);
         //比较获取
         getAddAndUpdateFiles(externalDataInfo,externalFiles, localFiles, addFiles, upFiles);
 
@@ -176,8 +179,10 @@ public class ExternalDataArchiveFileService {
 
     // 获取本地文件
     private List<ArchiveFile> getLocalFils(Long projectId, List<String> outIds) {
-        List<ArchiveFile> localContracts = autoMapper.getOutArchiveFilesByOutIds(projectId,outIds);
-
+        List<ArchiveFile> localContracts = new ArrayList<>();
+        if (outIds!= null && outIds.size() > 0) {
+            localContracts = autoMapper.getOutArchiveFilesByOutIds(projectId,outIds);
+        }
         return localContracts;
     }
 
@@ -192,5 +197,18 @@ public class ExternalDataArchiveFileService {
         }
     }
 
+    public static void updateFileMapping(ExternalDataInfo externalDataInfo, List<ArchiveFile> localFiles) {
+        if (externalDataInfo == null || localFiles == null || localFiles.isEmpty()) {
+            return;
+        }
+
+        Map<String, Long> fileMapping = externalDataInfo.getFileIdMapping();
+        localFiles.stream()
+                .filter(file -> file.getOutId() != null && file.getId() != null)
+                .forEach(file ->
+                        fileMapping.putIfAbsent(file.getOutId(), file.getId())
+                );
+    }
+
 
 }

+ 32 - 1
blade-service/blade-archive/src/main/java/org/springblade/archive/external/impl/ExternalDataArchiveTreeService.java

@@ -129,6 +129,9 @@ public class ExternalDataArchiveTreeService {
         // 获取本地存储的合同数据
         List<ArchiveTreeContract> localContracts = getLocalContracts(projectId,outIds);
 
+        //把本地的也加进去,一般用不到作为冗余手段
+        updateExternalDataMapping(externalDataInfo,localContracts);
+
         // 比对差异获取需新增/更新的合同
         getAddAndUpdateContracts(
                 externalDataInfo,
@@ -159,7 +162,10 @@ public class ExternalDataArchiveTreeService {
      */
     private List<ArchiveTreeContract> getLocalContracts(Long projectId, List<String> outIds) {
 
-        List<ArchiveTreeContract> localContracts = autoMapper.getOutNodesByOutIds(projectId,outIds);
+        List<ArchiveTreeContract> localContracts = new ArrayList<>();
+        if (outIds!=null && outIds.size() > 0) {
+            localContracts = autoMapper.getOutNodesByOutIds(projectId,outIds);
+        }
         //List<ArchiveTreeContract> localContracts = archiveTreeContractClient.getOutNodesByOutIds(projectId,outIds);
         return localContracts;
     }
@@ -224,6 +230,31 @@ public class ExternalDataArchiveTreeService {
         }
     }
 
+    public void updateExternalDataMapping(ExternalDataInfo externalDataInfo, List<ArchiveTreeContract> localContracts) {
+        if (localContracts == null || localContracts.isEmpty()) {
+            return;
+        }
+
+        Map<String, Long> idMapping = externalDataInfo.getArchiveTreeNodeIdMapping();
+
+        for (ArchiveTreeContract contract : localContracts) {
+            String outId = contract.getOutId();
+            Long localId = contract.getId();
+
+            // 空值防御
+            if (outId == null || localId == null) {
+                continue; // 可改为日志输出或抛自定义异常
+            }
+
+            // 线程安全操作(如果存在并发场景)
+            synchronized (idMapping) {
+                if (!idMapping.containsKey(outId)) {
+                    idMapping.put(outId, localId);
+                }
+            }
+        }
+    }
+
 
 
 }

+ 2 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/external/utils/TransUtil.java

@@ -14,6 +14,8 @@ public class TransUtil {
     public static final Map<String, Long> EXTERNAL_TO_INTERNAL_NODE_ID_MAP = new LinkedHashMap<String, Long>() {{
         // 初始化默认映射关系(可按需添加)
 
+        //第四合同段 -1.施工项目部组建、印章启用、人员任命文件,进场人员资质报审文件,施工设备仪器进场报审文件、设备仪器校验、率定文件
+        put("0b0ac82851d7484bba414bb1ccbd", 1892759789415432263L);
         //机电标 施工工序
         put("8a0aa647278548fa9edba59b78c4", 1892759789419626529L);
     }};