From 0b9d05678b533ba777e428d2f8c562ca8f126d11 Mon Sep 17 00:00:00 2001 From: panbaolin <13071138970@163.com> Date: Fri, 15 Aug 2025 17:13:15 +0800 Subject: [PATCH] =?UTF-8?q?1.=E6=B7=BB=E5=8A=A0=E5=88=86=E9=A1=B5=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E6=B0=94=E8=B1=A1=E6=95=B0=E6=8D=AE=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WeatherDataController.java | 64 ++++++++++++------- .../org/jeecg/service/WeatherDataService.java | 7 +- .../service/impl/WeatherDataServiceImpl.java | 17 +++-- 3 files changed, 59 insertions(+), 29 deletions(-) diff --git a/jeecg-module-weather/src/main/java/org/jeecg/controller/WeatherDataController.java b/jeecg-module-weather/src/main/java/org/jeecg/controller/WeatherDataController.java index 70e0fba..8f5e65e 100644 --- a/jeecg-module-weather/src/main/java/org/jeecg/controller/WeatherDataController.java +++ b/jeecg-module-weather/src/main/java/org/jeecg/controller/WeatherDataController.java @@ -1,5 +1,6 @@ package org.jeecg.controller; +import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.v3.oas.annotations.Operation; import jakarta.validation.constraints.NotBlank; import lombok.RequiredArgsConstructor; @@ -7,11 +8,14 @@ import org.apache.commons.codec.digest.DigestUtils; import org.jeecg.common.api.vo.Result; import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.constant.enums.WeatherFileSuffixEnum; +import org.jeecg.common.system.query.PageRequest; +import org.jeecg.modules.base.entity.WeatherData; import org.jeecg.service.WeatherDataService; import org.jeecg.vo.FileExistVo; import org.jeecg.vo.FileUploadResultVo; import org.jeecg.vo.FileVo; import org.jeecg.vo.WeatherResultVO; +import org.springframework.format.annotation.DateTimeFormat; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import ucar.ma2.Array; @@ -21,8 +25,11 @@ import ucar.nc2.Variable; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; +import java.time.LocalDate; import java.time.LocalDateTime; +import java.util.HashMap; import java.util.List; +import java.util.Map; @Validated @RestController @@ -33,23 +40,36 @@ public class WeatherDataController { private final WeatherDataService weatherDataService; + @AutoLog(value = "分页查询气象文件数据") + @Operation(summary = "分页查询气象文件数据") + @GetMapping("page") + public Result page(PageRequest pageRequest, String fileExt, Integer dataSource, + @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate startDate, + @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate endDate) { + IPage page = weatherDataService.page(pageRequest,fileExt,dataSource,startDate,endDate); + Map rspData = new HashMap<>(); + rspData.put("rows", page.getRecords()); + rspData.put("total", page.getTotal()); + return Result.OK(rspData); + } + @AutoLog(value = "验证文件是否存在") @Operation(summary = "验证文件是否存在") @GetMapping("verifyFileExist") - public FileExistVo verifyFileExist(@NotBlank(message = "文件MD5值不能为空") String fileMD5Value) { + public Result verifyFileExist(@NotBlank(message = "文件MD5值不能为空") String fileMD5Value) { FileExistVo fileExist = weatherDataService.verifyFileExist(fileMD5Value); - return fileExist; + return Result.ok(fileExist); } @AutoLog(value = "上传文件") @Operation(summary = "上传文件") @PostMapping("uploadFile") - public FileUploadResultVo uploadFile(FileVo fileVo){ + public Result uploadFile(FileVo fileVo){ if (!fileVo.getFileExt().equals(WeatherFileSuffixEnum.GRIB.getValue()) && !fileVo.getFileExt().equals(WeatherFileSuffixEnum.GRIB2.getValue())){ throw new RuntimeException("不支持当前上传的文件类型!"); } FileUploadResultVo resultVo = weatherDataService.uploadFile(fileVo); - return resultVo; + return Result.ok(resultVo); } /** @@ -59,7 +79,7 @@ public class WeatherDataController { @AutoLog(value = "气象预测-气象数据查询") @Operation(summary = "气象预测-气象数据查询") @GetMapping(value = "getWeatherData") - public Result getWeatherData(Integer type, + public Result getWeatherData(Integer type, LocalDateTime startTime, int hour) { return Result.OK(weatherDataService.getWeatherData(type,startTime,hour)); @@ -81,22 +101,22 @@ public class WeatherDataController { public static void main(String[] args) { //reftime_ISO - String filePath = "F:\\工作\\五木\\放射性核素监测数据综合分析及氙本底源解析系统\\其他资料\\气象数据\\中国CRA40再分析数据\\CRA40\\20250523\\CRA40_AVO_2025052300_GLB_0P25_HOUR_V1_0_0.grib2"; + String filePath = "F:\\工作\\五木\\放射性核素监测数据综合分析及氙本底源解析系统\\其他资料\\气象数据\\中国CRA40再分析数据\\CRA40\\20250524\\CRA40_AVO_2025052418_GLB_0P25_HOUR_V1_0_0.grib2"; String filePath1 = "F:\\工作\\五木\\放射性核素监测数据综合分析及氙本底源解析系统\\其他资料\\气象数据\\中国CRA40再分析数据\\GRAPES\\2024110100\\Z_NAFP_C_BABJ_20241101000000_P_NWPC-GRAPES-GFS-HNEHE-00000.grib2"; String filePath2 = "F:\\工作\\五木\\放射性核素监测数据综合分析及氙本底源解析系统\\其他资料\\气象数据\\盘古模型预测数据\\panguweather_2025073106.grib"; -// try { -// String md5 = calculateMD5("F:\\工作\\五木\\放射性核素监测数据综合分析及氙本底源解析系统\\其他资料\\气象数据\\中国CRA40再分析数据\\CRA40\\20250523\\CRA40_AVO_2025052300_GLB_0P25_HOUR_V1_0_0.grib2"); -// System.out.println("MD5: " + md5); -// } catch (IOException e) { -// e.printStackTrace(); -// } - try (NetcdfFile ncFile = NetcdfFile.open(filePath2)) { - Variable variable = ncFile.findVariable("reftime_ISO"); - if (variable != null) { - Array data = variable.read(); - System.out.println(variable.getFullName()); - System.out.println(data.getObject(0)); - } + try { + String md5 = calculateMD5(filePath); + System.out.println("MD5: " + md5); + } catch (IOException e) { + e.printStackTrace(); + } +// try (NetcdfFile ncFile = NetcdfFile.open(filePath2)) { +// Variable variable = ncFile.findVariable("reftime_ISO"); +// if (variable != null) { +// Array data = variable.read(); +// System.out.println(variable.getFullName()); +// System.out.println(data.getObject(0)); +// } // int index = 0; // for (Variable variable : ncFile.getVariables()) { // if (variable != null) { @@ -109,8 +129,8 @@ public class WeatherDataController { // index++; // } // } - }catch (Exception e){ - - } +// }catch (Exception e){ +// +// } } } diff --git a/jeecg-module-weather/src/main/java/org/jeecg/service/WeatherDataService.java b/jeecg-module-weather/src/main/java/org/jeecg/service/WeatherDataService.java index a4efa45..fccd2df 100644 --- a/jeecg-module-weather/src/main/java/org/jeecg/service/WeatherDataService.java +++ b/jeecg-module-weather/src/main/java/org/jeecg/service/WeatherDataService.java @@ -8,6 +8,7 @@ import org.jeecg.vo.FileUploadResultVo; import org.jeecg.vo.FileVo; import org.jeecg.vo.WeatherResultVO; +import java.time.LocalDate; import java.time.LocalDateTime; import java.util.List; @@ -20,11 +21,11 @@ public interface WeatherDataService { * @param pageRequest * @param fileExt * @param dataSource - * @param startTime - * @param endTime + * @param startDate + * @param endDate * @return */ - IPage page(PageRequest pageRequest,String fileExt,Integer dataSource,LocalDateTime startTime,LocalDateTime endTime); + IPage page(PageRequest pageRequest, String fileExt, Integer dataSource, LocalDate startDate, LocalDate endDate); /** * 验证文件是否存在 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 12a715f..fd2525a 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 @@ -40,6 +40,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.time.Instant; +import java.time.LocalDate; import java.time.LocalDateTime; import java.time.ZoneId; import java.util.ArrayList; @@ -154,17 +155,25 @@ public class WeatherDataServiceImpl extends ServiceImpl page(PageRequest pageRequest, String fileExt, Integer dataSource, LocalDateTime startTime, LocalDateTime endTime) { + public IPage page(PageRequest pageRequest, String fileExt, Integer dataSource, LocalDate startDate, LocalDate endDate) { + LocalDateTime startTime = null; + if(Objects.nonNull(startDate)){ + startTime = LocalDateTime.of(startDate.getYear(), startDate.getMonth(), startDate.getDayOfMonth(), 0, 0, 0); + } + LocalDateTime endTime = null; + if(Objects.nonNull(endDate)){ + endTime = LocalDateTime.of(endDate.getYear(), endDate.getMonth(), endDate.getDayOfMonth(), 23, 59, 59); + } LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(Objects.nonNull(dataSource),WeatherData::getDataSource, dataSource); queryWrapper.between((Objects.nonNull(startTime) && Objects.nonNull(endTime)),WeatherData::getDataStartTime,startTime,endTime); queryWrapper.eq(StringUtils.isNotBlank(fileExt),WeatherData::getFileExt, fileExt); - + queryWrapper.select(WeatherData::getId,WeatherData::getFileName,WeatherData::getFileSize,WeatherData::getDataSource,WeatherData::getFileExt,WeatherData::getDataStartTime,WeatherData::getFilePath); IPage iPage = new Page<>(pageRequest.getPageNum(),pageRequest.getPageSize()); return this.baseMapper.selectPage(iPage, queryWrapper); }