diff --git a/zc-business/src/main/java/com/zc/business/controller/WeatherForecastController.java b/zc-business/src/main/java/com/zc/business/controller/WeatherForecastController.java index c91a755b..8b6ebb62 100644 --- a/zc-business/src/main/java/com/zc/business/controller/WeatherForecastController.java +++ b/zc-business/src/main/java/com/zc/business/controller/WeatherForecastController.java @@ -213,7 +213,66 @@ public class WeatherForecastController extends BaseController { } + @Scheduled(cron = "0 45 * * * ?") + public void HourWeather(){ + HashMap parameter = new HashMap<>(); + parameter.put("forecastHour",UniversalEnum.TWENTY_FOUR.getNumber()); + parameter.put("managerId","YG10201"); + parameter.put("roadId","G003537"); + parameter.put("stakeNum","K60+000|K105+000|K145+000|K165+000|K175+000|K190+000|K200+000|K205+000"); + //拿到获取到的桩号值并处理拆分 + String stakeNum = String.valueOf(parameter.get("stakeNum")); + String[] split = stakeNum.split("[|]"); + + StringBuilder numStake = new StringBuilder(); + + //循环执行查询周围最近的5的倍数的桩号(集团接口需求 桩号从K50+000开始 K55+000 K60+000……以此类推) + for (int i = UniversalEnum.ZERO.getNumber(); i < split.length; i++) { + String[] split1 = split[i].split("[+]"); + String k = split1[UniversalEnum.ZERO.getNumber()].replace(UniversalEnum.CAPITAL_K.getValue(), UniversalEnum.EMPTY_STRING.getValue()); + int parseInt = Integer.parseInt(k); + numStake.append(UniversalEnum.CAPITAL_K.getValue()).append(findNearestMultipleOfFive(parseInt)).append("+000"); + if (i != split.length - UniversalEnum.ONE.getNumber()) { + numStake.append(UniversalEnum.VERTICAL_LINE.getValue()); + } + } + + parameter.put("stakeNum", numStake); + + try { + + OkHttp okHttp = new OkHttp(); + + RequestParams requestParams = new RequestParams(parameter); + Response response // 请求响应 + = okHttp + .headers(new HashMap<>()) + .url(UniversalEnum.CURRENT_WEATHER_AND_FORECAST_INFORMATION.getValue()) // 请求地址 + //.url("http://10.166.133.9:38999/api/weather_service/get_weather_info_jh") // 请求地址 + .data(requestParams) + .post(); // 请求方法 + + if (response.body() != null) { + + JSONObject jsonResult = JSONObject.parseObject(response.body().string()); + //判断请求是否成功 成功则判断data字段数组长度是否为0 否则获取redis中的缓存进行返回 + if (jsonResult.getInteger("code") == UniversalEnum.TWO_HUNDRED.getNumber()) { + JSONArray data = jsonResult.getJSONArray("data"); + ; + JSONArray jsonArray = processingWeatherData(data); + + //判断返回data是否不为0 不为0则将数据进行返回 为0则获取redis中的缓存进行返回 + if (jsonArray.size() != UniversalEnum.ZERO.getNumber()) { + redisCache.deleteObject("twentyFourHourWeather"); + redisCache.setCacheObject("twentyFourHourWeather", jsonArray); + } + } + } + }catch (Exception ignored) { + logger.error(String.valueOf(ignored)); + } + } /* * 当前气象及预报信息查询 * */ diff --git a/zc-business/src/main/java/com/zc/business/controller/WordController.java b/zc-business/src/main/java/com/zc/business/controller/WordController.java index 406bc3d4..0786173d 100644 --- a/zc-business/src/main/java/com/zc/business/controller/WordController.java +++ b/zc-business/src/main/java/com/zc/business/controller/WordController.java @@ -1,7 +1,11 @@ package com.zc.business.controller; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.ruoyi.common.config.RuoYiConfig; import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.utils.DateUtils; import com.zc.business.domain.DcTollStationStatisticsData; import com.zc.business.enums.TrafficDataPeriodTypeEnum; @@ -59,6 +63,9 @@ public class WordController { @Autowired private IDcGantryStatisticsDataService dcGantryStatisticsDataService; + @Autowired + private RedisCache redisCache; + @PostMapping("/trafficSituationReport") @ApiOperation("导出通行情况快报") @@ -155,11 +162,14 @@ public class WordController { params.put("roadId",UniversalEnum.ROAD_ID.getValue()); params.put("stakeNum",UniversalEnum.STAKE_NUM.getValue()); params.put("forecastHour",UniversalEnum.TWENTY_FOUR.getValue()); - AjaxResult ajaxResult = weatherForecastController.currentWeatherAndForecastInformation(params); - if (ajaxResult.get("code").equals(UniversalEnum.TWO_HUNDRED.getNumber())) { + JSONArray jsonArray = redisCache.getCacheObject("twentyFourHourWeather"); + +// AjaxResult ajaxResult = weatherForecastController.currentWeatherAndForecastInformation(params); + + if (jsonArray != null) { - List> data = (List>) ajaxResult.get("data"); + List> data = (List>) JSON.toJSON(jsonArray); if (data != null && data.size() != UniversalEnum.ZERO.getNumber()){ XWPFTable table = doc.createTable(UniversalEnum.NINE.getNumber(), UniversalEnum.TEN.getNumber()); @@ -171,15 +181,13 @@ public class WordController { DateTimeFormatter parseFormatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME; data.forEach(dataItem ->{ - List> weatherList = (List>) dataItem.get("forecastList"); - if (weatherList != null && weatherList.size() > 0){ - weatherList = weatherList.stream() - .sorted(Comparator.comparing(map -> LocalDateTime.parse(map.get("weatherTime").toString(), parseFormatter))) - .collect(Collectors.toList()); - - if (UniversalEnum.STAKE_NUM_K60.getValue().equals(dataItem.get("stakeNum"))){ - setTableFonts(table.getRow(UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.ZERO.getNumber()), UniversalEnum.CHANG_QING_DISTRICT.getValue()); - + if (UniversalEnum.STAKE_NUM_K60.getValue().equals(dataItem.get("stakeNum"))){ + setTableFonts(table.getRow(UniversalEnum.ONE.getNumber()).getCell(UniversalEnum.ZERO.getNumber()), UniversalEnum.CHANG_QING_DISTRICT.getValue()); + List> weatherList = (List>) dataItem.get("forecastList"); + if (weatherList != null && weatherList.size() > 0){ + weatherList = weatherList.stream() + .sorted(Comparator.comparing(map -> LocalDateTime.parse(map.get("weatherTime").toString(), parseFormatter))) + .collect(Collectors.toList()); for (int i = UniversalEnum.ZERO.getNumber(); i < weatherList.size(); i++) { //第一行 格式化时间 LocalDateTime localDateTime = LocalDateTime.parse(weatherList.get(i).get("weatherTime").toString(), parseFormatter); @@ -187,40 +195,83 @@ public class WordController { setTableFonts(table.getRow(UniversalEnum.ZERO.getNumber()).getCell(i+UniversalEnum.ONE.getNumber()),localDateTime.format(formatFormatter)); setTableFonts(table.getRow(UniversalEnum.ONE.getNumber()).getCell(i+UniversalEnum.ONE.getNumber()), weatherList.get(i).get("weatherDescription").toString()); } - } else if (UniversalEnum.STAKE_NUM_K105.getValue().equals(dataItem.get("stakeNum"))){ - setTableFonts(table.getRow(UniversalEnum.TWO.getNumber()).getCell(UniversalEnum.ZERO.getNumber()), UniversalEnum.PING_YIN_COUNTY.getValue()); + } + + } else if (UniversalEnum.STAKE_NUM_K105.getValue().equals(dataItem.get("stakeNum"))){ + setTableFonts(table.getRow(UniversalEnum.TWO.getNumber()).getCell(UniversalEnum.ZERO.getNumber()), UniversalEnum.PING_YIN_COUNTY.getValue()); + List> weatherList = (List>) dataItem.get("forecastList"); + if (weatherList != null && weatherList.size() > 0) { + weatherList = weatherList.stream() + .sorted(Comparator.comparing(map -> LocalDateTime.parse(map.get("weatherTime").toString(), parseFormatter))) + .collect(Collectors.toList()); for (int i = UniversalEnum.ZERO.getNumber(); i < weatherList.size(); i++) { - setTableFonts(table.getRow(UniversalEnum.TWO.getNumber()).getCell(i+UniversalEnum.ONE.getNumber()), weatherList.get(i).get("weatherDescription").toString()); + setTableFonts(table.getRow(UniversalEnum.TWO.getNumber()).getCell(i + UniversalEnum.ONE.getNumber()), weatherList.get(i).get("weatherDescription").toString()); } - } else if (UniversalEnum.STAKE_NUM_K145.getValue().equals(dataItem.get("stakeNum"))){ - setTableFonts(table.getRow(UniversalEnum.THREE.getNumber()).getCell(UniversalEnum.ZERO.getNumber()), UniversalEnum.DONG_PING_COUNTY.getValue()); + } + } else if (UniversalEnum.STAKE_NUM_K145.getValue().equals(dataItem.get("stakeNum"))){ + setTableFonts(table.getRow(UniversalEnum.THREE.getNumber()).getCell(UniversalEnum.ZERO.getNumber()), UniversalEnum.DONG_PING_COUNTY.getValue()); + List> weatherList = (List>) dataItem.get("forecastList"); + if (weatherList != null && weatherList.size() > 0) { + weatherList = weatherList.stream() + .sorted(Comparator.comparing(map -> LocalDateTime.parse(map.get("weatherTime").toString(), parseFormatter))) + .collect(Collectors.toList()); for (int i = UniversalEnum.ZERO.getNumber(); i < weatherList.size(); i++) { - setTableFonts(table.getRow(UniversalEnum.THREE.getNumber()).getCell(i+UniversalEnum.ONE.getNumber()), weatherList.get(i).get("weatherDescription").toString()); + setTableFonts(table.getRow(UniversalEnum.THREE.getNumber()).getCell(i + UniversalEnum.ONE.getNumber()), weatherList.get(i).get("weatherDescription").toString()); } - } else if (UniversalEnum.STAKE_NUM_K165.getValue().equals(dataItem.get("stakeNum"))){ - setTableFonts(table.getRow(UniversalEnum.FOUR.getNumber()).getCell(UniversalEnum.ZERO.getNumber()), UniversalEnum.WEN_SHANG_COUNTY.getValue()); + } + } else if (UniversalEnum.STAKE_NUM_K165.getValue().equals(dataItem.get("stakeNum"))){ + setTableFonts(table.getRow(UniversalEnum.FOUR.getNumber()).getCell(UniversalEnum.ZERO.getNumber()), UniversalEnum.WEN_SHANG_COUNTY.getValue()); + List> weatherList = (List>) dataItem.get("forecastList"); + if (weatherList != null && weatherList.size() > 0) { + weatherList = weatherList.stream() + .sorted(Comparator.comparing(map -> LocalDateTime.parse(map.get("weatherTime").toString(), parseFormatter))) + .collect(Collectors.toList()); for (int i = UniversalEnum.ZERO.getNumber(); i < weatherList.size(); i++) { - setTableFonts(table.getRow(UniversalEnum.FOUR.getNumber()).getCell(i+UniversalEnum.ONE.getNumber()), weatherList.get(i).get("weatherDescription").toString()); + setTableFonts(table.getRow(UniversalEnum.FOUR.getNumber()).getCell(i + UniversalEnum.ONE.getNumber()), weatherList.get(i).get("weatherDescription").toString()); } - } else if (UniversalEnum.STAKE_NUM_K175.getValue().equals(dataItem.get("stakeNum"))){ - setTableFonts(table.getRow(UniversalEnum.FIVE.getNumber()).getCell(UniversalEnum.ZERO.getNumber()), UniversalEnum.LIANG_SHAN_COUNTY.getValue()); + } + } else if (UniversalEnum.STAKE_NUM_K175.getValue().equals(dataItem.get("stakeNum"))){ + setTableFonts(table.getRow(UniversalEnum.FIVE.getNumber()).getCell(UniversalEnum.ZERO.getNumber()), UniversalEnum.LIANG_SHAN_COUNTY.getValue()); + List> weatherList = (List>) dataItem.get("forecastList"); + if (weatherList != null && weatherList.size() > 0) { + weatherList = weatherList.stream() + .sorted(Comparator.comparing(map -> LocalDateTime.parse(map.get("weatherTime").toString(), parseFormatter))) + .collect(Collectors.toList()); for (int i = UniversalEnum.ZERO.getNumber(); i < weatherList.size(); i++) { - setTableFonts(table.getRow(UniversalEnum.FIVE.getNumber()).getCell(i+UniversalEnum.ONE.getNumber()), weatherList.get(i).get("weatherDescription").toString()); + setTableFonts(table.getRow(UniversalEnum.FIVE.getNumber()).getCell(i + UniversalEnum.ONE.getNumber()), weatherList.get(i).get("weatherDescription").toString()); } - } else if (UniversalEnum.STAKE_NUM_K190.getValue().equals(dataItem.get("stakeNum"))){ - setTableFonts(table.getRow(UniversalEnum.SIX.getNumber()).getCell(UniversalEnum.ZERO.getNumber()), UniversalEnum.JIA_XIANG_COUNTY.getValue()); + } + } else if (UniversalEnum.STAKE_NUM_K190.getValue().equals(dataItem.get("stakeNum"))){ + setTableFonts(table.getRow(UniversalEnum.SIX.getNumber()).getCell(UniversalEnum.ZERO.getNumber()), UniversalEnum.JIA_XIANG_COUNTY.getValue()); + List> weatherList = (List>) dataItem.get("forecastList"); + if (weatherList != null && weatherList.size() > 0) { + weatherList = weatherList.stream() + .sorted(Comparator.comparing(map -> LocalDateTime.parse(map.get("weatherTime").toString(), parseFormatter))) + .collect(Collectors.toList()); for (int i = UniversalEnum.ZERO.getNumber(); i < weatherList.size(); i++) { - setTableFonts(table.getRow(UniversalEnum.SIX.getNumber()).getCell(i+UniversalEnum.ONE.getNumber()), weatherList.get(i).get("weatherDescription").toString()); + setTableFonts(table.getRow(UniversalEnum.SIX.getNumber()).getCell(i + UniversalEnum.ONE.getNumber()), weatherList.get(i).get("weatherDescription").toString()); } - } else if (UniversalEnum.STAKE_NUM_K200.getValue().equals(dataItem.get("stakeNum"))){ - setTableFonts(table.getRow(UniversalEnum.SEVEN.getNumber()).getCell(UniversalEnum.ZERO.getNumber()), UniversalEnum.JUYE_COUNTY.getValue()); + } + } else if (UniversalEnum.STAKE_NUM_K200.getValue().equals(dataItem.get("stakeNum"))){ + setTableFonts(table.getRow(UniversalEnum.SEVEN.getNumber()).getCell(UniversalEnum.ZERO.getNumber()), UniversalEnum.JUYE_COUNTY.getValue()); + List> weatherList = (List>) dataItem.get("forecastList"); + if (weatherList != null && weatherList.size() > 0) { + weatherList = weatherList.stream() + .sorted(Comparator.comparing(map -> LocalDateTime.parse(map.get("weatherTime").toString(), parseFormatter))) + .collect(Collectors.toList()); for (int i = UniversalEnum.ZERO.getNumber(); i < weatherList.size(); i++) { - setTableFonts(table.getRow(UniversalEnum.SEVEN.getNumber()).getCell(i+UniversalEnum.ONE.getNumber()), weatherList.get(i).get("weatherDescription").toString()); + setTableFonts(table.getRow(UniversalEnum.SEVEN.getNumber()).getCell(i + UniversalEnum.ONE.getNumber()), weatherList.get(i).get("weatherDescription").toString()); } - } else if (UniversalEnum.STAKE_NUM_K205.getValue().equals(dataItem.get("stakeNum"))){ - setTableFonts(table.getRow(UniversalEnum.EIGHT.getNumber()).getCell(UniversalEnum.ZERO.getNumber()), UniversalEnum.YUN_CHENG_COUNTY.getValue()); + } + } else if (UniversalEnum.STAKE_NUM_K205.getValue().equals(dataItem.get("stakeNum"))){ + setTableFonts(table.getRow(UniversalEnum.EIGHT.getNumber()).getCell(UniversalEnum.ZERO.getNumber()), UniversalEnum.YUN_CHENG_COUNTY.getValue()); + List> weatherList = (List>) dataItem.get("forecastList"); + if (weatherList != null && weatherList.size() > 0) { + weatherList = weatherList.stream() + .sorted(Comparator.comparing(map -> LocalDateTime.parse(map.get("weatherTime").toString(), parseFormatter))) + .collect(Collectors.toList()); for (int i = UniversalEnum.ZERO.getNumber(); i < weatherList.size(); i++) { - setTableFonts(table.getRow(UniversalEnum.EIGHT.getNumber()).getCell(i+UniversalEnum.ONE.getNumber()), weatherList.get(i).get("weatherDescription").toString()); + setTableFonts(table.getRow(UniversalEnum.EIGHT.getNumber()).getCell(i + UniversalEnum.ONE.getNumber()), weatherList.get(i).get("weatherDescription").toString()); } } }