From fdbef2a3293e536be6b119e4e1e67cc8cc9842f0 Mon Sep 17 00:00:00 2001 From: jinpengyong <jpy123456> Date: Fri, 08 Apr 2022 08:55:29 +0800 Subject: [PATCH] 空气质量排名报告 --- screen-job/src/main/java/com/moral/api/service/impl/CityAqiMonthlyServiceImpl.java | 44 +++++++++++++++++++++++--------------------- 1 files changed, 23 insertions(+), 21 deletions(-) diff --git a/screen-job/src/main/java/com/moral/api/service/impl/CityAqiMonthlyServiceImpl.java b/screen-job/src/main/java/com/moral/api/service/impl/CityAqiMonthlyServiceImpl.java index 2ce3389..346a637 100644 --- a/screen-job/src/main/java/com/moral/api/service/impl/CityAqiMonthlyServiceImpl.java +++ b/screen-job/src/main/java/com/moral/api/service/impl/CityAqiMonthlyServiceImpl.java @@ -76,35 +76,39 @@ //������������������aqi������������ QueryWrapper<CityAqiDaily> wrapper = new QueryWrapper<>(); wrapper.select("city_code", "time", "value") - .ge("time", DateUtils.dateToDateString(start)) - .lt("time", DateUtils.dateToDateString(end)); + .ge("time", start) + .lt("time", end); List<Map<String, Object>> monthlyData = cityAqiDailyService.listMaps(wrapper); if (monthlyData.size() == 0) { return; } //���city_code������ - Map<String, List<Map<String, Object>>> data = monthlyData.stream() - .collect(Collectors.groupingBy(o -> o.get("city_code").toString())); + Map<Integer, List<Map<String, Object>>> data = monthlyData.stream() + .collect(Collectors.groupingBy(o ->Integer.parseInt(o.get("city_code").toString()) )); //������������������������������������������������ QueryWrapper<CityAqiMonthly> queryWrapper = new QueryWrapper<>(); queryWrapper.select("city_code", "value") - .eq("time", DateUtils.dateToDateString(lastLastMonth)); + .eq("time", lastLastMonth); //������������������ - List<CityAqiMonthly> lastCityAqiMonthly = cityAqiMonthlyMapper.selectList(queryWrapper); - Map<Integer, List<CityAqiMonthly>> lastMonthData = lastCityAqiMonthly.stream() - .collect(Collectors.groupingBy(CityAqiMonthly::getCityCode)); + List<CityAqiMonthly> lastCityAqiMonthlyList = cityAqiMonthlyMapper.selectList(queryWrapper); + Map<Integer, CityAqiMonthly> lastMonthData = new HashMap<>(); + for (CityAqiMonthly cityAqiMonthly : lastCityAqiMonthlyList) { + lastMonthData.put(cityAqiMonthly.getCityCode(), cityAqiMonthly); + } //������������������������ Date thisMonthOfLastYear = DateUtils.addYears(start, -1); queryWrapper.clear(); queryWrapper.select("city_code", "value") - .eq("time", DateUtils.dateToDateString(thisMonthOfLastYear)); + .eq("time", thisMonthOfLastYear); List<CityAqiMonthly> thisMonthOfLastYearList = cityAqiMonthlyMapper.selectList(queryWrapper); - Map<Integer, List<CityAqiMonthly>> thisMonthOfLastYearData = thisMonthOfLastYearList.stream() - .collect(Collectors.groupingBy(CityAqiMonthly::getCityCode)); + Map<Integer, CityAqiMonthly> thisMonthOfLastYearData = new HashMap<>(); + for (CityAqiMonthly cityAqiMonthly : thisMonthOfLastYearList) { + thisMonthOfLastYearData.put(cityAqiMonthly.getCityCode(), cityAqiMonthly); + } List<CityAqiMonthly> cityAqiMonthlyList = new ArrayList<>(); @@ -113,7 +117,7 @@ data.forEach((cityCode, value) -> { CityAqiMonthly cityAqiMonthly = new CityAqiMonthly(); Map<String, Object> jsonMap = new HashMap<>(); - cityAqiMonthly.setCityCode(Integer.parseInt(cityCode)); + cityAqiMonthly.setCityCode(cityCode); cityAqiMonthly.setTime(finalStart); Map<String, Object> params = new HashMap<>(); @@ -157,10 +161,9 @@ jsonMap.put("compositeIndex", compositeIndex); //���������������������������(������������������) - List<CityAqiMonthly> cityAqiMonthlies = lastMonthData.get(Integer.parseInt(cityCode)); - if (!ObjectUtils.isEmpty(cityAqiMonthlies)) { - CityAqiMonthly monthly = cityAqiMonthlies.get(0); - Map<String, Object> map = JSONObject.parseObject(monthly.getValue(), Map.class); + CityAqiMonthly lastCityAqiMonthly = lastMonthData.get(cityCode); + if (lastCityAqiMonthly != null) { + Map<String, Object> map = JSONObject.parseObject(lastCityAqiMonthly.getValue(), Map.class); double lastCompositeIndex = Double.parseDouble(map.get("compositeIndex").toString()); DecimalFormat decimalFormat = new DecimalFormat("0.00%"); String format = decimalFormat.format((compositeIndex - lastCompositeIndex) / lastCompositeIndex); @@ -168,7 +171,7 @@ } //��������������������������������������������� - List<CityAqiMonthly> thisMonthOfLastYears = thisMonthOfLastYearData.get(Integer.parseInt(cityCode)); + CityAqiMonthly thisMonthOfLastYears = thisMonthOfLastYearData.get(cityCode); //��������������������� Map<String, Object> yearOnYearValue = yearOnYearOfSensor(thisMonthOfLastYears, jsonMap); @@ -187,14 +190,13 @@ * @param thisMonthOfLastYearData ������������������ * @param currentData ������������������ */ - private Map<String, Object> yearOnYearOfSensor(List<CityAqiMonthly> thisMonthOfLastYearData, Map<String, Object> currentData) { + private Map<String, Object> yearOnYearOfSensor(CityAqiMonthly thisMonthOfLastYearData, Map<String, Object> currentData) { Map<String, Object> result = null; //��������������������������� List<String> sensors = Arrays.asList("PM2_5", "PM10", "SO2", "NO2", "CO", "O3", "compositeIndex"); - if (!ObjectUtils.isEmpty(thisMonthOfLastYearData)) { + if (thisMonthOfLastYearData != null) { result = new HashMap<>(); - CityAqiMonthly monthly = thisMonthOfLastYearData.get(0); - Map<String, Object> map = JSONObject.parseObject(monthly.getValue(), Map.class); + Map<String, Object> map = JSONObject.parseObject(thisMonthOfLastYearData.getValue(), Map.class); for (String sensor : sensors) { //������������������������ double thisMonthOfLeastYearValue = Double.parseDouble(map.get(sensor).toString()); -- Gitblit v1.8.0