From f28149d8183a62f87fa9c8df9ae589070d83f612 Mon Sep 17 00:00:00 2001
From: 于紫祥_1901 <email@yuzixiang_1910>
Date: Thu, 24 Dec 2020 13:47:50 +0800
Subject: [PATCH] 波动补偿

---
 src/main/java/com/moral/service/impl/HistoryHourlyServiceImpl.java |  106 ++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 93 insertions(+), 13 deletions(-)

diff --git a/src/main/java/com/moral/service/impl/HistoryHourlyServiceImpl.java b/src/main/java/com/moral/service/impl/HistoryHourlyServiceImpl.java
index f2d502c..c5272bf 100644
--- a/src/main/java/com/moral/service/impl/HistoryHourlyServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/HistoryHourlyServiceImpl.java
@@ -325,14 +325,14 @@
                     int time1 = Integer.parseInt(mapList1.get(j).get("time").toString()) ;
                     if (time==time1){
                         Double O3_8h = Double.parseDouble(mapList1.get(j).get("O3_8h").toString());
-                        dataAvbByMIdAndTime.get(i).put("O3_8h",new BigDecimal(O3_8h).setScale(4,BigDecimal.ROUND_HALF_UP).doubleValue());
+                        dataAvbByMIdAndTime.get(i).put("O3_8h",new BigDecimal(O3_8h).setScale(0,BigDecimal.ROUND_HALF_UP).doubleValue());
                     }
                 }
             }
         }
       Map<String, Object> dailyAvgData = historyMapper.getDailyAvgData(mId, startTime);
           if (dailyAvgData!=null){
-            dailyAvgData.put("maxO3_8h",new BigDecimal(maxO3).setScale(4,BigDecimal.ROUND_HALF_UP).doubleValue());
+            dailyAvgData.put("maxO3_8h",new BigDecimal(maxO3).setScale(0,BigDecimal.ROUND_HALF_UP).doubleValue());
         }
         List<Map<String,Object>> finalList = new ArrayList<>();
         for (int i = 0; i <dataAvbByMIdAndTime.size() ; i++) {
@@ -346,13 +346,12 @@
         Map<String,Object> timeAndDate = new HashMap();
         String time = startTime.substring(0,11);
         timeAndDate.put("time",time);
-        if (dailyAvgData==null){
+        if (dailyAvgData!=null){
             //List<Map<String, Object>> dailyData = historyHourlyMapper.getDataAvbByMIdAndT;
-            timeAndDate.put("data","");
-        }else {
             timeAndDate.put("data",dailyAvgData);
+        }else {
+            timeAndDate.put("data","");
         }
-
         finalList.add(timeAndDate);
         Map<String,Object> map = new HashMap<>();
         map.put("maxO3",maxO3);
@@ -427,7 +426,7 @@
                     int time1 = Integer.parseInt(mapList1.get(j).get("time").toString()) ;
                     if (time==time1){
                         Double O3_8h = Double.parseDouble(mapList1.get(j).get("O3_8h").toString());
-                        dataByMonitorPoints.get(i).put("O3_8h",new BigDecimal(O3_8h).setScale(4,BigDecimal.ROUND_HALF_UP).doubleValue());
+                        dataByMonitorPoints.get(i).put("O3_8h",new BigDecimal(O3_8h).setScale(0,BigDecimal.ROUND_HALF_UP).doubleValue());
                     }
                 }
             }
@@ -445,14 +444,28 @@
         Map<String, Object> dailyAvgData = historyMapper.getDailyAvgDataByMIds(mIds, startTime);
         if (dailyAvgData!=null){
             Map<String,Object> timeAndDate = new HashMap();
-            dailyAvgData.put("maxO3_8h",new BigDecimal(maxO3).setScale(4,BigDecimal.ROUND_HALF_UP).doubleValue());
+            dailyAvgData.put("maxO3_8h",new BigDecimal(maxO3).setScale(0,BigDecimal.ROUND_HALF_UP).doubleValue());
             timeAndDate.put("data",dailyAvgData);
             timeAndDate.put("time",startTime.substring(0,11));
             finalList.add(timeAndDate);
         }else {
             Map<String, Object> avgDataByMIds = historyHourlyMapper.getAvgDataByMIds(mIds, startTime, endTime);
             Map<String,Object> timeAndDate = new HashMap();
-            avgDataByMIds.put("maxO3_8h",new BigDecimal(maxO3).setScale(4,BigDecimal.ROUND_HALF_UP).doubleValue());
+            if (avgDataByMIds == null){
+                avgDataByMIds = new HashMap<>();
+                avgDataByMIds.put("PM2_5","");
+                avgDataByMIds.put("NO2","");
+                avgDataByMIds.put("primary_pollutants","-");
+                avgDataByMIds.put("SO2","");
+                avgDataByMIds.put("O3","");
+                avgDataByMIds.put("PM10","");
+                avgDataByMIds.put("O3_8h","");
+                avgDataByMIds.put("CO","");
+                avgDataByMIds.put("AQI","");
+            }else {
+                avgDataByMIds.put("maxO3_8h",maxO3);
+            }
+
             timeAndDate.put("data",avgDataByMIds);
             timeAndDate.put("time",startTime.substring(0,11));
             finalList.add(timeAndDate);
@@ -460,7 +473,7 @@
         for (int i=0;i<finalList.size();i++) {
             if (i!=finalList.size()-1){
                 Map<String, Object> map1 = AQICalculation2.hourlyAQI((Map<String, Object>) finalList.get(i).get("data"));
-                if (Double.parseDouble(map1.get("AQI").toString())>=50.0){
+                if (Double.parseDouble(map1.get("AQI").toString())>50.0){
                     ((Map<String, Object>) finalList.get(i).get("data")).put("primary_pollutants",map1.get("maxSensor"));
                     ((Map<String, Object>) finalList.get(i).get("data")).put("AQI",map1.get("AQI"));
                 }else {
@@ -469,6 +482,9 @@
                 }
             }else {
                 Map<String, Object> map1 = AQICalculation2.dayAQI((Map<String, Object>) finalList.get(i).get("data"));
+                if (map1.get("AQI").toString().equals("")){
+                    break;
+                }
                 if (Double.parseDouble(map1.get("AQI").toString())>=50.0){
                     ((Map<String, Object>) finalList.get(i).get("data")).put("primary_pollutants",map1.get("maxSensor"));
                     ((Map<String, Object>) finalList.get(i).get("data")).put("AQI",map1.get("AQI"));
@@ -481,10 +497,74 @@
         Map<String,Object> timeAndDate = new HashMap();
         String time = startTime.substring(0,11);
         timeAndDate.put("time",time);
-        if (dailyAvgData==null){
-            timeAndDate.put("data","");
-        }else {
+        if (dailyAvgData!=null){
             timeAndDate.put("data",dailyAvgData);
+        }else {
+            Map map = new HashMap<>();
+            Map map1 = new HashMap();
+            map1.put("PM2_5","");
+            map1.put("NO2","");
+            map1.put("primary_pollutants","-");
+            map1.put("SO2","");
+            map1.put("O3","");
+            map1.put("PM10","");
+            map1.put("O3_8h","");
+            map1.put("CO","");
+            map1.put("AQI","");
+            map.put("data",map1);
+            timeAndDate.put("data",map);
+        }
+        List timeList = new ArrayList();
+        for (int q = 0; q < finalList.size(); q++) {
+            timeList.add(finalList.get(q).get("time"));
+        }
+        if (finalList.size()<25){
+            for (int j = 1; j < 25; j++) {
+                Map<String,Object> map = null;
+                for (int q = 0; q < finalList.size(); q++) {
+                    if (finalList.get(q).get("time").toString().length() > 2){
+                        continue;
+                    }else {
+                        String sj="";
+                        if (j<10){
+                            sj="0"+j;
+                        }else {
+                            if (j==24){
+                                sj="00";
+                            }else {
+                                sj=""+j;
+                            }
+                        }
+                        if (!timeList.contains(sj)){
+                            map = new HashMap<>();
+                            Map map1 = new HashMap();
+                            map1.put("PM2_5","");
+                            map1.put("NO2","");
+                            map1.put("primary_pollutants","");
+                            map1.put("SO2","");
+                            map1.put("O3","");
+                            map1.put("PM10","");
+                            map1.put("O3_8h","");
+                            map1.put("CO","");
+                            map1.put("AQI","");
+                            map.put("time",sj);
+                            map.put("data",map1);
+                            finalList.add(map);
+                            break;
+                        }else {
+                            break;
+                        }
+                    }
+                }
+
+            }
+        }
+        for (int j = 0; j <finalList.size() ; j++) {
+            if (finalList.get(j).get("time").toString().length()>2){
+                Map map2 = finalList.get(j);
+                finalList.remove(j);
+                finalList.add(map2);
+            }
         }
         return finalList;
     }

--
Gitblit v1.8.0