|
|
@@ -13,7 +13,6 @@ import org.springframework.util.StringUtils;
|
|
|
|
|
|
import java.io.File;
|
|
|
import java.io.IOException;
|
|
|
-import java.time.LocalDate;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.LocalTime;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
@@ -32,6 +31,7 @@ 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");
|
|
|
+
|
|
|
/**
|
|
|
* 下载路径
|
|
|
*/
|
|
|
@@ -351,9 +351,7 @@ public class QxybDataService {
|
|
|
String[] strings = publishDT.split("_");
|
|
|
String timeFlg = strings[1];
|
|
|
LocalDateTime ldtPulishTime = LocalDateTime.parse(publishTime, DATE_TIME_FORMATTER);
|
|
|
- LocalDate date = ldtPulishTime.toLocalDate();
|
|
|
-
|
|
|
- List<LocalDateTime> hoursForGridRain = getHoursForGridRain(timeFlg, date);
|
|
|
+ List<LocalDateTime> hoursForGridRain = getHoursForGridRain(timeFlg, ldtPulishTime);
|
|
|
hoursForGridRain.forEach(hour -> {
|
|
|
try {
|
|
|
String dt1 = hour.format(DATE_TIME_FORMATTER1);
|
|
|
@@ -373,21 +371,11 @@ public class QxybDataService {
|
|
|
}
|
|
|
});
|
|
|
|
|
|
- List<LocalDate> daysForGridRain = getDaysForGridRain(timeFlg, date);
|
|
|
+ List<LocalDateTime> daysForGridRain = getDaysForGridRain(timeFlg, ldtPulishTime);
|
|
|
daysForGridRain.forEach(day -> {
|
|
|
try {
|
|
|
- LocalTime time = LocalTime.of(0, 0);
|
|
|
- if ("00".equals(timeFlg)) {
|
|
|
- time = LocalTime.of(12, 0);
|
|
|
- } else if ("06".equals(timeFlg)) {
|
|
|
- time = LocalTime.of(18, 0);
|
|
|
- } else if ("12".equals(timeFlg)) {
|
|
|
- time = LocalTime.of(0, 0);
|
|
|
- } else if ("18".equals(timeFlg)) {
|
|
|
- time = LocalTime.of(6, 0);
|
|
|
- }
|
|
|
- String dt1 = LocalDateTime.of(day, time).format(DATE_TIME_FORMATTER1);
|
|
|
- String dt2 = LocalDateTime.of(day.plusDays(1), time).format(DATE_TIME_FORMATTER1);
|
|
|
+ String dt1 = day.format(DATE_TIME_FORMATTER1);
|
|
|
+ String dt2 = day.plusDays(1).format(DATE_TIME_FORMATTER1);
|
|
|
String url2 = BASE_URL + "/getForecastMatrixByWrfRDField?RDField=" + RDField + "&publishDT=" + publishInfo.getPublishDT() + "&ensemble=" + publishInfo.getEnsemble() + "&domain=" + domain + "&content=precipitation&DT1=" + dt1 + "&DT2=" + dt2 + "&step=" + 24;
|
|
|
log.info("下载网格降水预报数据(日尺度):{}", url2);
|
|
|
String result = getResult(url2);
|
|
|
@@ -403,7 +391,7 @@ public class QxybDataService {
|
|
|
}
|
|
|
});
|
|
|
|
|
|
- List<LocalDateTime> hoursForGridTemp = getHoursForGridTemp(timeFlg, date);
|
|
|
+ List<LocalDateTime> hoursForGridTemp = getHoursForGridTemp(timeFlg, ldtPulishTime);
|
|
|
hoursForGridTemp.forEach(hour -> {
|
|
|
try {
|
|
|
String dt1 = hour.format(DATE_TIME_FORMATTER1);
|
|
|
@@ -510,62 +498,25 @@ public class QxybDataService {
|
|
|
return FileUtil.readUtf8Lines(path);
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 流域15分区网格降水预报(日尺度)日期序列
|
|
|
- *
|
|
|
- * @param timeFlg 日批次:00、06、12、18
|
|
|
- * @param date 发布日期
|
|
|
- * @return
|
|
|
- */
|
|
|
- private static List<LocalDate> getDaysForDiv15Rain(String timeFlg, LocalDate date) {
|
|
|
- List<LocalDate> list = new ArrayList<>();
|
|
|
- LocalDate startDate = date.plusDays(1);
|
|
|
- int days = 0;
|
|
|
- switch (timeFlg) {
|
|
|
- case "00":
|
|
|
- case "06":
|
|
|
- case "18":
|
|
|
- days = 3;
|
|
|
- break;
|
|
|
- case "12":
|
|
|
- days = 14;
|
|
|
- break;
|
|
|
- default:
|
|
|
- throw new RuntimeException("日批次号无效");
|
|
|
- //break;
|
|
|
- }
|
|
|
- for (int i = 0; i < days; list.add(startDate.plusDays(i++))) ;
|
|
|
- return list;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
/**
|
|
|
* 流域网格降水预报(小时尺度)小时序列
|
|
|
*
|
|
|
* @param timeFlg 日批次:00、06、12、18
|
|
|
- * @param date 发布日期
|
|
|
+ * @param time 发布时间(北京时间)
|
|
|
* @return
|
|
|
*/
|
|
|
- private static List<LocalDateTime> getHoursForGridRain(String timeFlg, LocalDate date) {
|
|
|
+ private static List<LocalDateTime> getHoursForGridRain(String timeFlg, LocalDateTime time) {
|
|
|
List<LocalDateTime> list = new ArrayList<>();
|
|
|
- LocalDateTime startTime = null;
|
|
|
+ LocalDateTime startTime = time.plusHours(12);
|
|
|
int hours = 0;
|
|
|
switch (timeFlg) {
|
|
|
case "00":
|
|
|
- hours = 84;
|
|
|
- startTime = LocalDateTime.of(date, LocalTime.of(12, 0, 0));
|
|
|
- break;
|
|
|
case "06":
|
|
|
+ case "18":
|
|
|
hours = 84;
|
|
|
- startTime = LocalDateTime.of(date, LocalTime.of(18, 0, 0));
|
|
|
break;
|
|
|
case "12":
|
|
|
hours = 348;
|
|
|
- startTime = LocalDateTime.of(date.plusDays(1), LocalTime.of(0, 0, 0));
|
|
|
- break;
|
|
|
- case "18":
|
|
|
- hours = 84;
|
|
|
- startTime = LocalDateTime.of(date.plusDays(1), LocalTime.of(6, 0, 0));
|
|
|
break;
|
|
|
default:
|
|
|
throw new RuntimeException("日批次号无效");
|
|
|
@@ -579,29 +530,21 @@ public class QxybDataService {
|
|
|
* 流域网格气温预报(小时尺度)小时序列
|
|
|
*
|
|
|
* @param timeFlg 日批次:00、06、12、18
|
|
|
- * @param date 发布日期
|
|
|
+ * @param time 发布时间(北京时间)
|
|
|
* @return
|
|
|
*/
|
|
|
- private static List<LocalDateTime> getHoursForGridTemp(String timeFlg, LocalDate date) {
|
|
|
+ private static List<LocalDateTime> getHoursForGridTemp(String timeFlg, LocalDateTime time) {
|
|
|
List<LocalDateTime> list = new ArrayList<>();
|
|
|
- LocalDateTime startTime = null;
|
|
|
+ LocalDateTime startTime = time.plusHours(12);
|
|
|
int hours = 0;
|
|
|
switch (timeFlg) {
|
|
|
case "00":
|
|
|
- hours = 85;
|
|
|
- startTime = LocalDateTime.of(date, LocalTime.of(12, 0, 0));
|
|
|
- break;
|
|
|
case "06":
|
|
|
+ case "18":
|
|
|
hours = 85;
|
|
|
- startTime = LocalDateTime.of(date, LocalTime.of(18, 0, 0));
|
|
|
break;
|
|
|
case "12":
|
|
|
- hours = 340;
|
|
|
- startTime = LocalDateTime.of(date.plusDays(1), LocalTime.of(0, 0, 0));
|
|
|
- break;
|
|
|
- case "18":
|
|
|
- hours = 85;
|
|
|
- startTime = LocalDateTime.of(date.plusDays(1), LocalTime.of(6, 0, 0));
|
|
|
+ hours = 349;
|
|
|
break;
|
|
|
default:
|
|
|
throw new RuntimeException("日批次号无效");
|
|
|
@@ -615,33 +558,37 @@ public class QxybDataService {
|
|
|
* 流域网格降水预报(日尺度)日期序列
|
|
|
*
|
|
|
* @param timeFlg 日批次:00、06、12、18
|
|
|
- * @param date 发布日期
|
|
|
+ * @param time 发布时间(北京时间)
|
|
|
* @return
|
|
|
*/
|
|
|
- private static List<LocalDate> getDaysForGridRain(String timeFlg, LocalDate date) {
|
|
|
- List<LocalDate> list = new ArrayList<>();
|
|
|
+ private static List<LocalDateTime> getDaysForGridRain(String timeFlg, LocalDateTime time) {
|
|
|
+ time = time.plusHours(-8);
|
|
|
+ List<LocalDateTime> list = new ArrayList<>();
|
|
|
|
|
|
- LocalDate startDate = null;
|
|
|
+ LocalDateTime startTime = null;
|
|
|
int days = 0;
|
|
|
switch (timeFlg) {
|
|
|
case "00":
|
|
|
- case "06":
|
|
|
days = 3;
|
|
|
- startDate = date;
|
|
|
+ startTime = LocalDateTime.of(time.toLocalDate(), LocalTime.of(20, 0));
|
|
|
break;
|
|
|
- case "18":
|
|
|
+ case "06":
|
|
|
days = 3;
|
|
|
- startDate = date.plusDays(1);
|
|
|
+ startTime = LocalDateTime.of(time.toLocalDate().plusDays(1), LocalTime.of(2, 0));
|
|
|
break;
|
|
|
case "12":
|
|
|
- startDate = date.plusDays(1);
|
|
|
days = 14;
|
|
|
+ startTime = LocalDateTime.of(time.toLocalDate().plusDays(1), LocalTime.of(14, 0));
|
|
|
+ break;
|
|
|
+ case "18":
|
|
|
+ days = 3;
|
|
|
+ startTime = LocalDateTime.of(time.toLocalDate().plusDays(1), LocalTime.of(8, 0));
|
|
|
break;
|
|
|
default:
|
|
|
throw new RuntimeException("日批次号无效");
|
|
|
//break;
|
|
|
}
|
|
|
- for (int i = 0; i < days; list.add(startDate.plusDays(i++))) ;
|
|
|
+ for (int i = 0; i < days; list.add(startTime.plusDays(i++))) ;
|
|
|
return list;
|
|
|
}
|
|
|
|