Browse Source

数据更新时间增加子项维度,避免结果项不被更新

欧阳劲驰 1 tháng trước cách đây
mục cha
commit
4edb3d624e

+ 7 - 5
src/main/java/com/shkpr/service/alambizplugin/bizservice/GisSurveyThirdExportBizService.java

@@ -89,14 +89,16 @@ public class GisSurveyThirdExportBizService {
         //获取数据更新时间
         LocalDateTime refreshTime = jobInfoService.findRefreshTimeByUid(jobId);
         //直接返回文件结果判断:结果\刷新时间\数据不为空,结果数据包含当前项,文件结果落后数据库
-        if (fileResult != null && fileResult.getRefreshTime() != null && refreshTime != null
+        if (fileResult != null && refreshTime != null
+                //文件结果包含数据库时间
+                && fileResult.getRefreshTimes() != null && fileResult.getRefreshTimes().containsKey(fileType.getName())
+                //文件结果数据包含当前项
                 && fileResult.getData() != null && fileResult.getData().containsKey(fileType.getName())) {
+
             //文件结果落后数据间隔
-            Duration lags = Duration.between(fileResult.getRefreshTime(), refreshTime);
+            Duration lags = Duration.between(fileResult.getRefreshTimes().get(fileType.getName()), refreshTime);
             //超出间隔,直接返回
-            if (asyncTaskProperties.getThirdExportResultLag().compareTo(lags) >= 0) {
-                return fileResult;
-            }
+            if (asyncTaskProperties.getThirdExportResultLag().compareTo(lags) >= 0) return fileResult;
         }
 
         //启动任务

+ 5 - 1
src/main/java/com/shkpr/service/alambizplugin/components/GisSurveyThirdExporter.java

@@ -137,12 +137,16 @@ public class GisSurveyThirdExporter {
             Map<String, String> data = new HashMap<>();
             if (lastResult != null && lastResult.getData() != null) data = lastResult.getData();
             data.put(fileType.getName(), FLAG + "/" + outputPath.getFileName().toString());
+            //设置数据时间
+            Map<String, LocalDateTime> refreshTimes = new HashMap<>();
+            if (lastResult != null && lastResult.getRefreshTimes() != null) refreshTimes = lastResult.getRefreshTimes();
+            refreshTimes.put(fileType.getName(), refreshTime);
 
             //导出完成
             result.setStatus(CommAsyncStatusEnum.SUCCESS.getCode());
             result.setCompleteTime(LocalDateTime.now());
-            result.setRefreshTime(refreshTime);
             result.setData(data);
+            result.setRefreshTimes(refreshTimes);
             result.setSubitemKeys(Collections.singletonList(fileType.getName()));
 
             //写入结果

+ 3 - 2
src/main/java/com/shkpr/service/alambizplugin/dto/CommAsyncResult.java

@@ -8,6 +8,7 @@ import org.springframework.format.annotation.DateTimeFormat;
 
 import java.time.LocalDateTime;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 通用异步结果
@@ -26,7 +27,7 @@ public class CommAsyncResult<T> {
      */
     private Integer status;
     /**
-     * 子项key
+     * 启动的子项key
      */
     private List<String> subitemKeys;
     /**
@@ -50,7 +51,7 @@ public class CommAsyncResult<T> {
      */
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", locale = "zh_CN", timezone = "Asia/Shanghai")
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private LocalDateTime refreshTime;
+    private Map<String, LocalDateTime> refreshTimes;
 
     /**
      * 进行中