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