diff --git a/zc-business/src/main/java/com/zc/business/controller/DcSdhsEventController.java b/zc-business/src/main/java/com/zc/business/controller/DcSdhsEventController.java index c1b25ae2..015370eb 100644 --- a/zc-business/src/main/java/com/zc/business/controller/DcSdhsEventController.java +++ b/zc-business/src/main/java/com/zc/business/controller/DcSdhsEventController.java @@ -198,6 +198,13 @@ public class DcSdhsEventController { return dcSdhsEventService.selectAccidentType(dcSdhsEventQuery); } + @ApiOperation("查询天气情况统计") + @PostMapping("/selectWeather") + public AjaxResult selectWeather() + { + return dcSdhsEventService.selectWeather(); + } + } diff --git a/zc-business/src/main/java/com/zc/business/service/IDcSdhsEventService.java b/zc-business/src/main/java/com/zc/business/service/IDcSdhsEventService.java index b83c2f80..6d87df4b 100644 --- a/zc-business/src/main/java/com/zc/business/service/IDcSdhsEventService.java +++ b/zc-business/src/main/java/com/zc/business/service/IDcSdhsEventService.java @@ -32,4 +32,6 @@ public interface IDcSdhsEventService AjaxResult selectAccidentType(DcSdhsEventQuery dcSdhsEventQuery); void exportAccidentType(XWPFDocument doc, DcSdhsEventQuery dcSdhsEventQuery); + + AjaxResult selectWeather(); } diff --git a/zc-business/src/main/java/com/zc/business/service/impl/DcSdhsEventServiceImpl.java b/zc-business/src/main/java/com/zc/business/service/impl/DcSdhsEventServiceImpl.java index 454a47cd..06c8923d 100644 --- a/zc-business/src/main/java/com/zc/business/service/impl/DcSdhsEventServiceImpl.java +++ b/zc-business/src/main/java/com/zc/business/service/impl/DcSdhsEventServiceImpl.java @@ -7,6 +7,7 @@ import com.ruoyi.common.utils.StakeMarkUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.zc.business.constant.RedisKeyConstants; +import com.zc.business.controller.WeatherForecastController; import com.zc.business.domain.DcSdhsEvent; import com.zc.business.domain.DcSdhsEventQuery; import com.zc.business.enums.UniversalEnum; @@ -48,6 +49,8 @@ public class DcSdhsEventServiceImpl implements IDcSdhsEventService { @Autowired private RedisCache redisCache; + @Autowired + private WeatherForecastController weatherForecastController; @Override @@ -742,4 +745,126 @@ public class DcSdhsEventServiceImpl implements IDcSdhsEventService { addDescription(doc,UniversalEnum.NO_DATA_AVAILABLE.getValue()); } } + + /** + * @Description 查询天气情况统计 + * + * @author liuwenge + * @date 2024/8/21 17:14 + * @param + * @return com.ruoyi.common.core.domain.AjaxResult + */ + @Override + public AjaxResult selectWeather(){ + HashMap params = new HashMap<>(); + 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); + + Map result = new HashMap<>(); + Map column = new HashMap<>(); + List> dataList = new ArrayList<>(); + if (ajaxResult.get("code").equals(UniversalEnum.TWO_HUNDRED.getNumber())) { + + List> data = (List>) ajaxResult.get("data"); + if (data != null && data.size() != UniversalEnum.ZERO.getNumber()){ + + DateTimeFormatter parseFormatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME; + + data.forEach(dataItem ->{ + + Map regionMap = new HashMap<>(); + if (UniversalEnum.STAKE_NUM_K60.getValue().equals(dataItem.get("stakeNum"))){ + regionMap.put("regionName","长清区"); + List> weatherList = (List>) dataItem.get("forecastList"); + 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); + DateTimeFormatter formatFormatter = DateTimeFormatter.ofPattern("dd日HH时"); + + column.put("time"+(i+1),localDateTime.format(formatFormatter)); + regionMap.put("time"+(i+1),weatherList.get(i).get("weatherDescription").toString()); + } + } else if (UniversalEnum.STAKE_NUM_K105.getValue().equals(dataItem.get("stakeNum"))){ + regionMap.put("regionName","平阴县"); + List> weatherList = (List>) dataItem.get("forecastList"); + 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++) { + regionMap.put("time"+(i+1),weatherList.get(i).get("weatherDescription").toString()); + } + } else if (UniversalEnum.STAKE_NUM_K145.getValue().equals(dataItem.get("stakeNum"))){ + regionMap.put("regionName","东平县"); + List> weatherList = (List>) dataItem.get("forecastList"); + 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++) { + regionMap.put("time"+(i+1),weatherList.get(i).get("weatherDescription").toString()); + } + + } else if (UniversalEnum.STAKE_NUM_K165.getValue().equals(dataItem.get("stakeNum"))){ + regionMap.put("regionName","汶上县"); + List> weatherList = (List>) dataItem.get("forecastList"); + 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++) { + regionMap.put("time"+(i+1),weatherList.get(i).get("weatherDescription").toString()); + } + } else if (UniversalEnum.STAKE_NUM_K175.getValue().equals(dataItem.get("stakeNum"))){ + regionMap.put("regionName","梁山县"); + List> weatherList = (List>) dataItem.get("forecastList"); + 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++) { + regionMap.put("time"+(i+1),weatherList.get(i).get("weatherDescription").toString()); + } + } else if (UniversalEnum.STAKE_NUM_K190.getValue().equals(dataItem.get("stakeNum"))){ + regionMap.put("regionName","嘉祥县"); + List> weatherList = (List>) dataItem.get("forecastList"); + 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++) { + regionMap.put("time"+(i+1),weatherList.get(i).get("weatherDescription").toString()); + } + } else if (UniversalEnum.STAKE_NUM_K200.getValue().equals(dataItem.get("stakeNum"))){ + regionMap.put("regionName","巨野县"); + List> weatherList = (List>) dataItem.get("forecastList"); + 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++) { + regionMap.put("time"+(i+1),weatherList.get(i).get("weatherDescription").toString()); + } + } else if (UniversalEnum.STAKE_NUM_K205.getValue().equals(dataItem.get("stakeNum"))){ + regionMap.put("regionName","郓城县"); + List> weatherList = (List>) dataItem.get("forecastList"); + 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++) { + regionMap.put("time"+(i+1),weatherList.get(i).get("weatherDescription").toString()); + } + } + dataList.add(regionMap); + }); + } else { + return AjaxResult.error("暂无数据"); + } + + } else { + return AjaxResult.error("查询失败"); + } + result.put("column",column); + result.put("dataList",dataList); + return AjaxResult.success(result); + } }