From c74fe7e633148efe5ed20f6ea9d3a0512be838ea Mon Sep 17 00:00:00 2001 From: panbaolin <13071138970@163.com> Date: Fri, 15 Aug 2025 10:58:14 +0800 Subject: [PATCH] =?UTF-8?q?1.=E5=AE=8C=E6=88=90=E8=A7=A3=E6=9E=90=E6=B0=94?= =?UTF-8?q?=E8=B1=A1=E6=96=87=E4=BB=B6=E8=8E=B7=E5=8F=96=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E8=B5=B7=E5=A7=8B=E6=97=B6=E9=97=B4=E5=B9=B6=E5=85=A5=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/jeecg/common/util/NcUtil.java | 18 ++++++++++++++++++ .../jeecg/modules/base/entity/WeatherData.java | 6 ------ .../service/impl/WeatherDataServiceImpl.java | 13 +++++++++++-- 3 files changed, 29 insertions(+), 8 deletions(-) diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/NcUtil.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/NcUtil.java index 2b6a392..16c7c6e 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/NcUtil.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/NcUtil.java @@ -1,5 +1,6 @@ package org.jeecg.common.util; +import lombok.val; import ucar.ma2.Array; import ucar.ma2.ArrayDouble; import ucar.ma2.DataType; @@ -251,4 +252,21 @@ public final class NcUtil { return SPECIAL_VARS.contains(name) ? value : Math.ceil(value * ROUNDING_FACTOR) / ROUNDING_FACTOR; } + + /** + * 读取GRIB2文件数据起始时间 + * @param filePath + */ + public static String getReftime(String filePath){ + try (NetcdfFile ncFile = NetcdfFile.open(filePath)) { + Variable variable = ncFile.findVariable("reftime_ISO"); + if (variable != null) { + Array data = variable.read(); + return data.getObject(0).toString(); + } + }catch (Exception e){ + return null; + } + return null; + } } \ No newline at end of file diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/WeatherData.java b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/WeatherData.java index 7d30ad4..1c0020c 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/WeatherData.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/entity/WeatherData.java @@ -48,12 +48,6 @@ public class WeatherData { @TableField(value = "data_start_time") private LocalDateTime dataStartTime; - /** - * 气象数据结束时间 - */ - @TableField(value = "data_end_time") - private LocalDateTime dataEndTime; - /** * 数据来源(1-盘古模型,2-graphcast,3-再分析数据) */ diff --git a/jeecg-module-weather/src/main/java/org/jeecg/service/impl/WeatherDataServiceImpl.java b/jeecg-module-weather/src/main/java/org/jeecg/service/impl/WeatherDataServiceImpl.java index 7764250..d4cc0f6 100644 --- a/jeecg-module-weather/src/main/java/org/jeecg/service/impl/WeatherDataServiceImpl.java +++ b/jeecg-module-weather/src/main/java/org/jeecg/service/impl/WeatherDataServiceImpl.java @@ -34,7 +34,9 @@ import java.math.RoundingMode; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import java.time.Instant; import java.time.LocalDateTime; +import java.time.ZoneId; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -233,11 +235,18 @@ public class WeatherDataServiceImpl extends ServiceImpl0){ + //获取文件数据开始日期 + String reftime = NcUtil.getReftime(dataFile.getAbsolutePath()); + if(StringUtils.isNotBlank(reftime)) { + Instant instant = Instant.parse(reftime); + LocalDateTime utcDateTime = LocalDateTime.ofInstant(instant, ZoneId.of("UTC")); + queryResult.setDataStartTime(utcDateTime); + } + //计算文件大小M BigDecimal divideVal = new BigDecimal("1024"); BigDecimal bg = new BigDecimal(dataFile.length()); BigDecimal fileSize = bg.divide(divideVal).divide(divideVal).setScale(2, RoundingMode.HALF_UP);