From 636af927431b46a0788b7d76233387923135ac0c Mon Sep 17 00:00:00 2001 From: 于紫祥_1901 <email@yuzixiang_1910> Date: Tue, 01 Dec 2020 13:11:21 +0800 Subject: [PATCH] 数据空判断 --- src/main/java/com/moral/util/AQICalculation2.java | 47 +++++++++++------------ src/main/resources/mapper/HistoryMapper.xml | 12 +++-- src/main/resources/mapper/HistoryHourlyMapper.xml | 17 ++++---- src/main/java/com/moral/controller/ScreenController.java | 28 +++++++------- 4 files changed, 53 insertions(+), 51 deletions(-) diff --git a/src/main/java/com/moral/controller/ScreenController.java b/src/main/java/com/moral/controller/ScreenController.java index 05b8a46..fb4e86b 100644 --- a/src/main/java/com/moral/controller/ScreenController.java +++ b/src/main/java/com/moral/controller/ScreenController.java @@ -2963,25 +2963,25 @@ rList.add(null); }else { for (int j = 0; j < lists.get(0).size(); j++) { - Map<String,Object> listMap = new HashMap(); - List<Map> mapList=new ArrayList<>(); - if (lists.get(0).size()==1){ + Map<String, Object> listMap = new HashMap(); + List<Map> mapList = new ArrayList<>(); + if (lists.get(0).size() == 1) { mapList.add(null); - }else { + } else { mapList.add((Map) lists.get(0).get(j).get("data")); } - for (int i = 1; i < lists.size(); i++) { - if (lists.get(i).size()==1){ - mapList.add(null); - listMap.put("data",mapList); - }else { - if (lists.get(0).get(j).get("time").equals(lists.get(i).get(j).get("time"))){ - mapList.add((Map) lists.get(i).get(j).get("data")); - } - listMap.put("time",lists.get(0).get(j).get("time")); - listMap.put("data",mapList); + for (int i = 1; i < lists.size(); i++) { + if (lists.get(i).size() == 1) { + mapList.add(null); + listMap.put("data", mapList); + } else { + if (lists.get(0).get(j).get("time").equals(lists.get(i).get(j).get("time"))) { + mapList.add((Map) lists.get(i).get(j).get("data")); } + listMap.put("time", lists.get(0).get(j).get("time")); + listMap.put("data", mapList); } + } rList.add(listMap); } } diff --git a/src/main/java/com/moral/util/AQICalculation2.java b/src/main/java/com/moral/util/AQICalculation2.java index d8cfe99..8b28856 100644 --- a/src/main/java/com/moral/util/AQICalculation2.java +++ b/src/main/java/com/moral/util/AQICalculation2.java @@ -9,17 +9,23 @@ Map maxMap = new HashMap(); for (Map.Entry<String, Object> entry : map.entrySet()) { String key = entry.getKey(); - if (entry.getValue() instanceof Double){ - Double value = Double.parseDouble(entry.getValue().toString()); - if (key!="O3_8h"){ - maxMap.put(key,value); - } - Double PM2_5AQI; - Double PM10AQI; - Double SO2AQI; - Double NO2AQI; - Double COAQI; - Double O3AQI; + if (entry.getValue().toString().equals("")){ + continue; + } + Double value = Double.parseDouble(entry.getValue().toString()); + + if (key!="O3_8h"){ + maxMap.put(key,value); + }else { + continue; + } + Double PM2_5AQI; + Double PM10AQI; + Double SO2AQI; + Double NO2AQI; + Double COAQI; + Double O3AQI; + switch (key) { case "PM2_5":PM2_5AQI = PM2_5AQI(value); AQIList.add(PM2_5AQI); @@ -39,24 +45,17 @@ case "maxO3_8h":O3AQI = O3AQI(value); AQIList.add(O3AQI); break; - default: break; } - }else { - continue; } - } - - Double AQIMAX = Collections.max(AQIList); Map<String, Object> returnMap = new HashMap<>(); - - Optional<Map.Entry<String, Integer>> max0 = maxMap.entrySet() - .stream() - .max(Map.Entry.comparingByValue()); - - returnMap.put("maxSensor",max0.get().getKey()); - returnMap.put("AQI", AQIMAX); + Double AQIMAX = Collections.max(AQIList); + Optional<Map.Entry<String, Integer>> max0 = maxMap.entrySet() + .stream() + .max(Map.Entry.comparingByValue()); + returnMap.put("maxSensor", max0.get().getKey()); + returnMap.put("AQI", AQIMAX); return returnMap; } public static Map<String, Object> dayAQI(Map<String, Object> map){ diff --git a/src/main/resources/mapper/HistoryHourlyMapper.xml b/src/main/resources/mapper/HistoryHourlyMapper.xml index ecfbebb..f71f671 100644 --- a/src/main/resources/mapper/HistoryHourlyMapper.xml +++ b/src/main/resources/mapper/HistoryHourlyMapper.xml @@ -112,15 +112,15 @@ </select> <select id="getDataAvbByMIdAndTime" resultType="java.util.Map"> select hh.time as `time`, - ROUND(AVG(hh.json->"$.e1[0]")) as `PM2_5`,ROUND(AVG(hh.json->"$.e2[0]")) as 'PM10',CAST(AVG(hh.json->"$.e10[0]") as DECIMAL(10,1)) as 'CO', - ROUND(AVG(hh.json->"$.e11[0]")) as 'SO2',ROUND(AVG(hh.json->"$.e16[0]")) as 'NO2',ROUND(AVG(hh.json->"$.e15[0]")) as 'O3' + IFNULL(ROUND(AVG(hh.json->"$.e1[0]")),"") as `PM2_5`,IFNULL(ROUND(AVG(hh.json->"$.e2[0]")),"") as 'PM10',IFNULL(ROUND(AVG(hh.json->"$.e10[0]"),1),"") as 'CO', + IFNULL(ROUND(AVG(hh.json->"$.e11[0]")),"") as 'SO2',IFNULL(ROUND(AVG(hh.json->"$.e16[0]")),"") as 'NO2',IFNULL(ROUND(AVG(hh.json->"$.e15[0]")),"") as 'O3' from monitor_point mt,device d,history_hourly hh where mt.id=d.monitor_point_id and d.mac=hh.mac and mt.id=#{mId} and hh.time>#{startTime} and hh.time<![CDATA[<=]]>#{endTime} GROUP BY hh.time; </select> <select id="getDataByMonitorPoints" resultType="java.util.Map"> select hh.time as `time`, - ROUND(AVG(hh.json->"$.e1[0]")) as `PM2_5`,ROUND(AVG(hh.json->"$.e2[0]")) as 'PM10',CAST(AVG(hh.json->"$.e10[0]") as DECIMAL(10,1)) as 'CO', - ROUND(AVG(hh.json->"$.e11[0]")) as 'SO2',ROUND(AVG(hh.json->"$.e16[0]")) as 'NO2',ROUND(AVG(hh.json->"$.e15[0]")) as 'O3' + IFNULL(ROUND(AVG(hh.json->"$.e1[0]")),"") as `PM2_5`,IFNULL(ROUND(AVG(hh.json->"$.e2[0]")),"") as 'PM10',IFNULL(ROUND(AVG(hh.json->"$.e10[0]"),1),"") as 'CO', + IFNULL(ROUND(AVG(hh.json->"$.e11[0]")),"") as 'SO2',IFNULL(ROUND(AVG(hh.json->"$.e16[0]")),"") as 'NO2',IFNULL(ROUND(AVG(hh.json->"$.e15[0]")),"") as 'O3' from monitor_point mt,device d,history_hourly hh where mt.id=d.monitor_point_id and d.mac=hh.mac and mt.id in <foreach collection="mIds" item="id" index="index" open="(" close=")" separator=","> @@ -130,14 +130,15 @@ </select> <select id="getAvgDataByMId" resultType="java.util.Map"> SELECT - ROUND(AVG(hh.json->"$.e1[0]")) as `PM2_5`,ROUND(AVG(hh.json->"$.e2[0]")) as 'PM10',CAST(AVG(hh.json->"$.e10[0]") as DECIMAL(10,1)) as 'CO', - ROUND(AVG(hh.json->"$.e11[0]")) as 'SO2',ROUND(AVG(hh.json->"$.e16[0]")) as 'NO2',ROUND(AVG(hh.json->"$.e15[0]")) as 'O3_day' + IFNULL(ROUND(AVG(hh.json->"$.e1[0]")),"") as `PM2_5`,IFNULL(ROUND(AVG(hh.json->"$.e2[0]")),"") as 'PM10',IFNULL(ROUND(AVG(hh.json->"$.e10[0]"),1),"") as 'CO', + IFNULL(ROUND(AVG(hh.json->"$.e11[0]")),"") as 'SO2',IFNULL(ROUND(AVG(hh.json->"$.e16[0]")),"") as 'NO2',IFNULL(ROUND(AVG(hh.json->"$.e15[0]")),"") as 'O3_day' from monitor_point mt,device d,history_hourly hh where mt.id=d.monitor_point_id and d.mac=hh.mac and mt.id =#{mId} and hh.time<![CDATA[<=]]>#{endTime} and hh.time>#{startTime} </select> <select id="getAvgDataByMIds" resultType="java.util.Map"> - SELECT ROUND(AVG(hh.json->"$.e1[0]")) as `PM2_5`,ROUND(AVG(hh.json->"$.e2[0]")) as 'PM10',CAST(AVG(hh.json->"$.e10[0]") as DECIMAL(10,1)) as 'CO', - ROUND(AVG(hh.json->"$.e11[0]")) as 'SO2',ROUND(AVG(hh.json->"$.e16[0]")) as 'NO2',ROUND(AVG(hh.json->"$.e15[0]")) as 'O3_day' + SELECT + IFNULL(ROUND(AVG(hh.json->"$.e1[0]")),"") as `PM2_5`,IFNULL(ROUND(AVG(hh.json->"$.e2[0]")),"") as 'PM10',IFNULL(ROUND(AVG(hh.json->"$.e10[0]"),1),"") as 'CO', + IFNULL(ROUND(AVG(hh.json->"$.e11[0]")),"") as 'SO2',IFNULL(ROUND(AVG(hh.json->"$.e16[0]")),"") as 'NO2',IFNULL(ROUND(AVG(hh.json->"$.e15[0]")),"") as 'O3_day' from monitor_point mt,device d,history_hourly hh where mt.id=d.monitor_point_id and d.mac=hh.mac and mt.id in <foreach collection="mIds" item="id" index="index" open="(" close=")" separator=","> diff --git a/src/main/resources/mapper/HistoryMapper.xml b/src/main/resources/mapper/HistoryMapper.xml index 91c1e7e..47bd34f 100644 --- a/src/main/resources/mapper/HistoryMapper.xml +++ b/src/main/resources/mapper/HistoryMapper.xml @@ -301,14 +301,16 @@ limit 0,1 </select> <select id="getDailyAvgData" resultType="java.util.Map"> - SELECT ROUND(AVG(hd.json->"$.e1[0]")) as `PM2_5`,ROUND(AVG(hd.json->"$.e2[0]")) as 'PM10',CAST(AVG(hd.json->"$.e10[0]") as DECIMAL(10,1)) as 'CO', - ROUND(AVG(hd.json->"$.e11[0]")) as 'SO2',ROUND(AVG(hd.json->"$.e16[0]")) as 'NO2',ROUND(AVG(hd.json->"$.e15[0]")) as 'O3_day' - FROM `history_daily` hd,monitor_point mt,device d where mt.id=d.monitor_point_id + SELECT + IFNULL(ROUND(AVG(hd.json->"$.e1[0]")),"") as `PM2_5`,IFNULL(ROUND(AVG(hd.json->"$.e2[0]")),"") as 'PM10',IFNULL(ROUND(AVG(hd.json->"$.e10[0]"),1),"") as 'CO', + IFNULL(ROUND(AVG(hd.json->"$.e11[0]")),"") as 'SO2',IFNULL(ROUND(AVG(hd.json->"$.e16[0]")),"") as 'NO2',IFNULL(ROUND(AVG(hd.json->"$.e15[0]")),"") as 'O3_day' + FROM `history_daily` hd,monitor_point mt,device d where mt.id=d.monitor_point_id and d.mac=hd.mac and mt.id=#{mId} and time=#{time} </select> <select id="getDailyAvgDataByMIds" resultType="java.util.Map"> - SELECT ROUND(AVG(hd.json->"$.e1[0]")) as `PM2_5`,ROUND(AVG(hd.json->"$.e2[0]")) as 'PM10',CAST(AVG(hd.json->"$.e10[0]") as DECIMAL(10,1)) as 'CO', - ROUND(AVG(hd.json->"$.e11[0]")) as 'SO2',ROUND(AVG(hd.json->"$.e16[0]")) as 'NO2',ROUND(AVG(hd.json->"$.e15[0]")) as 'O3_day' + SELECT + IFNULL(ROUND(AVG(hd.json->"$.e1[0]")),"") as `PM2_5`,IFNULL(ROUND(AVG(hd.json->"$.e2[0]")),"") as 'PM10',IFNULL(ROUND(AVG(hd.json->"$.e10[0]"),1),"") as 'CO', + IFNULL(ROUND(AVG(hd.json->"$.e11[0]")),"") as 'SO2',IFNULL(ROUND(AVG(hd.json->"$.e16[0]")),"") as 'NO2',IFNULL(ROUND(AVG(hd.json->"$.e15[0]")),"") as 'O3_day' FROM `history_daily` hd,monitor_point mt,device d where mt.id=d.monitor_point_id and d.mac=hd.mac and mt.id in <foreach collection="mIds" item="id" index="index" open="(" close=")" separator=","> -- Gitblit v1.8.0