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; }