From e3fe064509ddf6b44110b63beced2e6ec436721a Mon Sep 17 00:00:00 2001 From: panbaolin Date: Fri, 7 Aug 2026 14:59:31 +0800 Subject: [PATCH] =?UTF-8?q?fix:1.=E4=BF=AE=E6=94=B9=E6=92=AD=E6=94=BE?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E8=BF=94=E5=9B=9E=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/jeecg/job/CacheWeatherDataJob.java | 54 ++++++++----------- .../service/impl/WeatherDataServiceImpl.java | 5 +- .../java/org/jeecg/vo/WeatherResultVO.java | 3 ++ 3 files changed, 27 insertions(+), 35 deletions(-) diff --git a/jeecg-module-weather/src/main/java/org/jeecg/job/CacheWeatherDataJob.java b/jeecg-module-weather/src/main/java/org/jeecg/job/CacheWeatherDataJob.java index 18d5c83..64585c8 100644 --- a/jeecg-module-weather/src/main/java/org/jeecg/job/CacheWeatherDataJob.java +++ b/jeecg-module-weather/src/main/java/org/jeecg/job/CacheWeatherDataJob.java @@ -72,17 +72,25 @@ public class CacheWeatherDataJob extends Thread { startTime = startTime.plusHours(6); } } - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(WeatherData::getDataSource,this.dataType); - queryWrapper.eq(StrUtil.isNotBlank(timeBatch),WeatherData::getTimeBatch,timeBatch); - queryWrapper.eq(WeatherData::getDataStartTime,startTime); - WeatherData weatherData = weatherDataService.getOne(queryWrapper); - if(Objects.nonNull(weatherData)){ - weatherResultVO = weatherDataService.processWeatherData(weatherTypeEnum.getKey(),weatherData); - if(Objects.nonNull(weatherResultVO)){ - String time = startTime.format(DateTimeFormatter.ofPattern("yyyyMMddHH")); - WeatherDataSourceEnum dataSourceEnum = WeatherDataSourceEnum.getInfoByKey(dataType); - this.writeWeatherJson(cacheVariablePath,time,timeBatch,dataSourceEnum.getValue(),weatherTypeEnum.getValue(),JSONObject.toJSONString(weatherResultVO)); + WeatherDataSourceEnum dataSourceEnum = WeatherDataSourceEnum.getInfoByKey(dataType); + Path directory = Paths.get(cacheVariablePath).resolve(dataSourceEnum.getValue()).resolve(weatherTypeEnum.getValue()); + if(StrUtil.isNotBlank(timeBatch)){ + directory = directory.resolve(timeBatch); + } + Files.createDirectories(directory); + String time = startTime.format(DateTimeFormatter.ofPattern("yyyyMMddHH")); + Path target = directory.resolve(time + ".json.gz"); + if(!Files.exists(target)){ + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(WeatherData::getDataSource,this.dataType); + queryWrapper.eq(StrUtil.isNotBlank(timeBatch),WeatherData::getTimeBatch,timeBatch); + queryWrapper.eq(WeatherData::getDataStartTime,startTime); + WeatherData weatherData = weatherDataService.getOne(queryWrapper); + if(Objects.nonNull(weatherData)){ + weatherResultVO = weatherDataService.processWeatherData(weatherTypeEnum.getKey(),weatherData); + if(Objects.nonNull(weatherResultVO)){ + this.writeWeatherJson(target,directory,time,JSONObject.toJSONString(weatherResultVO)); + } } } } @@ -95,34 +103,18 @@ public class CacheWeatherDataJob extends Thread { /** * 把气象数据生成json文件 - * @param cacheVariablePath - * @param time - * @param timeBatch - * @param dataType - * @param variable + * @param target + * @param directory * @param json * @throws IOException */ public void writeWeatherJson( - String cacheVariablePath, + Path target, + Path directory, String time, - String timeBatch, - String dataType, - String variable, String json) throws IOException { - if (!time.matches("\\d{10}")) { - throw new IllegalArgumentException("时间必须为yyyyMMddHH格式"); - } - Path directory = Paths.get(cacheVariablePath).resolve(dataType).resolve(variable); - if(StrUtil.isNotBlank(timeBatch)){ - directory = directory.resolve(timeBatch); - } - Files.createDirectories(directory); - - Path target = directory.resolve(time + ".json.gz"); Path temporary = directory.resolve(time + ".json.gz.tmp"); - try (OutputStream output = Files.newOutputStream(temporary); GZIPOutputStream gzip = new GZIPOutputStream(output)) { gzip.write(json.getBytes(StandardCharsets.UTF_8)); 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 34b42fe..e576865 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 @@ -74,10 +74,7 @@ public class WeatherDataServiceImpl extends ServiceImpl> dataList; }