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