Kaynağa Gözat

publishDt时区

hdc 2 yıl önce
ebeveyn
işleme
0b5a6bb0e9

+ 10 - 7
tongfei_river_data_collection/src/main/java/com/ublinkage/datacollection/Util.java

@@ -1,6 +1,5 @@
 package com.ublinkage.datacollection;
 
-import org.jetbrains.annotations.NotNull;
 
 import java.time.Clock;
 import java.time.LocalDateTime;
@@ -8,30 +7,34 @@ import java.time.ZoneOffset;
 import java.time.format.DateTimeFormatter;
 
 public class Util {
-    private Util(){
+    private Util() {
 
     }
 
-    public static String getLatestPublishTime(){
+    public static String getLatestPublishTime() {
         LocalDateTime localDateTime = getLatestPublishLateTime();
         DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
         return pattern.format(localDateTime);
     }
 
-    @NotNull
+    /**
+     * 最近的发布时间(北京时间)
+     *
+     * @return
+     */
     private static LocalDateTime getLatestPublishLateTime() {
         LocalDateTime now = LocalDateTime.now(Clock.systemUTC());
         long seconds = now.plusHours(-12).toEpochSecond(ZoneOffset.of("+0"));
         long hours = seconds / (60 * 60);
         long newHours = (hours / 6) * 6;
         LocalDateTime localDateTime = LocalDateTime.ofEpochSecond(newHours * (60 * 60), 0, ZoneOffset.UTC);
-        localDateTime=localDateTime.plusHours(8);
+        localDateTime = localDateTime.plusHours(8);
         return localDateTime;
     }
 
-    public static String getPublishDt(){
+    public static String getPublishDt() {
         LocalDateTime localDateTime = getLatestPublishLateTime();
-        return localDateTime.format(Constant.BATCH_DATE_TIME_FORMATTER);
+        return localDateTime.plusHours(-8).format(Constant.BATCH_DATE_TIME_FORMATTER);
     }
 
     public static void main(String[] args) {

+ 29 - 14
tongfei_river_data_collection/src/main/java/com/ublinkage/datacollection/service/QxybDataService.java

@@ -34,9 +34,9 @@ import java.util.stream.Collectors;
 @Service
 public class QxybDataService {
 
-    public static final String BASE_URL = "http://111.198.2.202:6657";
-    public static final DateTimeFormatter DATE_TIME_FORMATTER1 = DateTimeFormatter.ofPattern("yyyy-MM-dd_HH_mm_ss");
-    public static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+    private static final String BASE_URL = "http://111.198.2.202:6657";
+    private static final DateTimeFormatter DATE_TIME_FORMATTER1 = DateTimeFormatter.ofPattern("yyyy-MM-dd_HH_mm_ss");
+    private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
 
     /**
      * 下载路径
@@ -52,16 +52,12 @@ public class QxybDataService {
     private CacheManager cacheManager;
 
     private final static String CACHE_NAME_DOWNLOAD_DATA = "cache_downloaded_data";
-    private final static String CACHE_KEY_DOWNLOAD_DATA = "key_downloaded_data";
 
     protected static OkHttpClient client = new OkHttpClient().newBuilder()
             .connectTimeout(10, TimeUnit.SECONDS)
             .readTimeout(10, TimeUnit.SECONDS)
             .writeTimeout(10, TimeUnit.SECONDS)
             .build();
-    protected static String RDField = "LCJDomain";
-    protected static String domain = "domain02";
-    protected static String ensemble = "mp3_cu3";
 
     /**
      * 下载气象预报数据
@@ -127,8 +123,7 @@ public class QxybDataService {
                     BASE_URL, divisionCode, hour, startTime, endTime);
             log.info("下载{}:{}", batchFileName, url);
             String batchResult = getResult(url);
-            writeFile(batchResult, downloadFilePath + batchFileName);
-            log.info("下载{}成功", batchFileName);
+
             JSONObject json = JSONObject.parseObject(batchResult);
             publishList = json.getJSONArray("data").toJavaList(PublishInfo.class);
             Map<String, List<PublishInfo>> publishDtMap = publishList.stream()
@@ -136,12 +131,22 @@ public class QxybDataService {
 
             publishDtMap.forEach((k, v) -> {
                 v.add(new PublishInfo(k, "MPSE", getPublishTime(k)));
+            });
+            List<PublishInfo> newPublishList = new ArrayList<>();
+            publishDtMap.forEach((k, v) -> {
+                newPublishList.addAll(v);
+            });
+            json.put("data", newPublishList);
+            batchResult = json.toJSONString();
+            writeFile(batchResult, downloadFilePath + batchFileName);
+            log.info("下载{}成功", batchFileName);
+
+            publishDtMap.forEach((k, v) -> {
                 v.forEach(p -> {
                     downloadDivRainData("FRD", divisionCode, p, 1);
                 });
             });
             publishDtMap.forEach((k, v) -> {
-                v.add(new PublishInfo(k, "MPSE", getPublishTime(k)));
                 v.forEach(p -> {
                     downloadDivRainData("FRD", divisionCode, p, 24);
                 });
@@ -323,7 +328,7 @@ public class QxybDataService {
                     String dt1 = h.format(DATE_TIME_FORMATTER1);
                     String fileName = String.format("%s,%s,%s,%s,%s.json", prefix, publishDT, ensemble1, hour, dt1);
                     if (!isSuccess(fileName)) {
-                        String url2 = String.format("%s/getForecastMatrixByWrfRDField?RDField=%s&domain=%s&publishDT=%s&ensemble=%s&step=%s&DT1=%s",
+                        String url2 = String.format("%s/getForecastMatrixByWrfRDField?RDField=%s&domain=%s&publishDT=%s&ensemble=%s&step=%s&DT1=%s&content=2mTC",
                                 BASE_URL, rdField, domain, publishDT, ensemble1.equals("MPSE") ? "" : ensemble1, hour, dt1);
                         log.info("下载{}:{}", fileName, url2);
                         String result = getResult(url2);
@@ -426,6 +431,7 @@ public class QxybDataService {
      */
     public void downloadSnowCover(String publishDt) {
         log.info("###开始下载澜沧江上游高程带融雪覆盖预报,批次:{}", publishDt);
+        String ensemble = "mp3_cu3";
         //积雪覆盖数据从本地获取
         List<String> cdNewList = new LinkedList<>();
         log.info("下载昌都积雪覆盖数据:", snowCdFile);
@@ -502,20 +508,29 @@ public class QxybDataService {
                     BASE_URL, rdField, startTime, endTime);
             log.info("下载{}:{}", batchFileName, url);
             String batchResult = getResult(url);
-            writeFile(batchResult, downloadFilePath + batchFileName);
-            log.info("下载{}成功", batchFileName);
             JSONObject json = JSONObject.parseObject(batchResult);
             publishList = json.getJSONArray("data").toJavaList(PublishInfo.class);
             Map<String, List<PublishInfo>> publishDtMap = publishList.stream()
                     .collect(Collectors.groupingBy(e -> e.getPublishDT(), Collectors.toList()));
-
             publishDtMap.forEach((k, v) -> {
                 v.add(new PublishInfo(k, "MPSE", getPublishTime(k)));
+            });
+            List<PublishInfo> newPublishList = new ArrayList<>();
+            publishDtMap.forEach((k, v) -> {
+                newPublishList.addAll(v);
+            });
+            json.put("data", newPublishList);
+            batchResult = json.toJSONString();
+            writeFile(batchResult, downloadFilePath + batchFileName);
+            log.info("下载{}成功", batchFileName);
+
+            publishDtMap.forEach((k, v) -> {
                 v.forEach(p -> {
                     downloadStationTempData(rdField, p, 1);
                 });
 
             });
+
         } catch (Exception e) {
             log.error("下载失败", e);
         }