From aefb5929bf574914740c8ff7ddf7f383c64841f2 Mon Sep 17 00:00:00 2001
From: lizijie <lzjiiie@163.com>
Date: Thu, 30 Sep 2021 14:41:39 +0800
Subject: [PATCH] 通过组织id和guids获取指定日期国控站点周围设备AQI六参数据、站点平均数据、AQI、首要污染物接口;获取AQI和首要污染物工具类
---
screen-common/src/main/java/com/moral/util/AQIUtils.java | 70 +++++++++++
screen-api/src/main/java/com/moral/api/controller/GovMonitorPointController.java | 4
screen-api/src/main/java/com/moral/api/service/impl/GovMonitorPointServiceImpl.java | 274 +++++++++++++++++++++++++++++++++++++++------
3 files changed, 305 insertions(+), 43 deletions(-)
diff --git a/screen-api/src/main/java/com/moral/api/controller/GovMonitorPointController.java b/screen-api/src/main/java/com/moral/api/controller/GovMonitorPointController.java
index 48f5a05..1f83302 100644
--- a/screen-api/src/main/java/com/moral/api/controller/GovMonitorPointController.java
+++ b/screen-api/src/main/java/com/moral/api/controller/GovMonitorPointController.java
@@ -84,9 +84,9 @@
*@Author: lizijie
*@Date: 2021/9/26 10:06
**/
- @RequestMapping(value = "queryGovMonitorPointHoutlyDatyByGuidsAndOrgid", method = RequestMethod.GET)
+ @RequestMapping(value = "queryGovMonitorPointHourlyDataByGuidsAndOrgid", method = RequestMethod.GET)
@ResponseBody
- public ResultMessage queryGovMonitorPointHoutlyDatyByGuidsAndOrgid(HttpServletRequest request){
+ public ResultMessage queryGovMonitorPointHourlyDataByGuidsAndOrgid(HttpServletRequest request){
Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
Object orgid = parameters.get("organization_id");
Object guids = parameters.get("guids");
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/GovMonitorPointServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/GovMonitorPointServiceImpl.java
index 3e954ae..3f33fea 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/GovMonitorPointServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/GovMonitorPointServiceImpl.java
@@ -1,6 +1,5 @@
package com.moral.api.service.impl;
-import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
@@ -15,6 +14,7 @@
import com.moral.api.service.OrganizationService;
import com.moral.constant.Constants;
import com.moral.constant.RedisConstants;
+import com.moral.util.AQIUtils;
import com.moral.util.RegionCodeUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
@@ -100,6 +100,11 @@
Date endDate = simpleDateFormat.parse(endTime);
Map<String, Object> resultMap = new HashMap<>();
List govMonitorPointList = new ArrayList();
+ //���������������������������������������������������������
+ GovMonitorPoint govMonitorPoint_avg = new GovMonitorPoint();
+ govMonitorPoint_avg.setId(0);
+ govMonitorPoint_avg.setName("");
+ govMonitorPoint_avg.setGuid("");
List<Map<String,Object>> data = new ArrayList<>();
Map<String,Object> hour_1 = new HashMap<>();
Map<String,Object> hour_2 = new HashMap<>();
@@ -126,31 +131,6 @@
Map<String,Object> hour_23 = new HashMap<>();
Map<String,Object> hour_24 = new HashMap<>();
Map<String,Object> hour_AVG = new HashMap<>();
- hour_1.put("time","1���");
- hour_2.put("time","2���");
- hour_3.put("time","3���");
- hour_4.put("time","4���");
- hour_5.put("time","5���");
- hour_6.put("time","6���");
- hour_7.put("time","7���");
- hour_8.put("time","8���");
- hour_9.put("time","9���");
- hour_10.put("time","10���");
- hour_11.put("time","11���");
- hour_12.put("time","12���");
- hour_13.put("time","13���");
- hour_14.put("time","14���");
- hour_15.put("time","15���");
- hour_16.put("time","16���");
- hour_17.put("time","17���");
- hour_18.put("time","18���");
- hour_19.put("time","19���");
- hour_20.put("time","20���");
- hour_21.put("time","21���");
- hour_22.put("time","22���");
- hour_23.put("time","23���");
- hour_24.put("time","0���");
- hour_AVG.put("time","avg");
for (String guid:guids) {
//������������������������
QueryWrapper<GovMonitorPoint> wrapper_govMonitorPoint = new QueryWrapper<>();
@@ -219,11 +199,11 @@
}
}
Double PM2_5Avg = (double)Math.round(PM2_5List.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage());
- Double PM10Avg = (double)Math.round(PM2_5List.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage());
- Double SO2Avg = (double)Math.round(PM2_5List.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage());
- Double NO2Avg = (double)Math.round(PM2_5List.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage());
- Double COAvg = new BigDecimal(PM2_5List.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage()).setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue();
- Double O3_1hAvg = (double)Math.round(PM2_5List.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage());
+ Double PM10Avg = (double)Math.round(PM10List.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage());
+ Double SO2Avg = (double)Math.round(SO2List.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage());
+ Double NO2Avg = (double)Math.round(NO2List.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage());
+ Double COAvg = new BigDecimal(COList.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage()).setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue();
+ Double O3_1hAvg = (double)Math.round(O3_1hList.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage());
if (!ObjectUtils.isEmpty(PM2_5Avg)){
PM2_5List_daliy.add(PM2_5Avg);
oneGovMonitorPointOneHourData.put("a34004_"+govMonitorPointId,PM2_5Avg);
@@ -232,31 +212,31 @@
}
if (!ObjectUtils.isEmpty(PM10Avg)){
PM10List_daliy.add(PM10Avg);
- oneGovMonitorPointOneHourData.put("a34002_"+govMonitorPointId,PM2_5Avg);
+ oneGovMonitorPointOneHourData.put("a34002_"+govMonitorPointId,PM10Avg);
}else {
oneGovMonitorPointOneHourData.put("a34002_"+govMonitorPointId,null);
}
if (!ObjectUtils.isEmpty(SO2Avg)){
SO2List_daliy.add(SO2Avg);
- oneGovMonitorPointOneHourData.put("a21026_"+govMonitorPointId,PM2_5Avg);
+ oneGovMonitorPointOneHourData.put("a21026_"+govMonitorPointId,SO2Avg);
}else {
oneGovMonitorPointOneHourData.put("a21026_"+govMonitorPointId,null);
}
if (!ObjectUtils.isEmpty(NO2Avg)){
NO2List_daliy.add(NO2Avg);
- oneGovMonitorPointOneHourData.put("a21004_"+govMonitorPointId,PM2_5Avg);
+ oneGovMonitorPointOneHourData.put("a21004_"+govMonitorPointId,NO2Avg);
}else {
oneGovMonitorPointOneHourData.put("a21004_"+govMonitorPointId,null);
}
if (!ObjectUtils.isEmpty(COAvg)){
COList_daliy.add(COAvg);
- oneGovMonitorPointOneHourData.put("a21005_"+govMonitorPointId,PM2_5Avg);
+ oneGovMonitorPointOneHourData.put("a21005_"+govMonitorPointId,COAvg);
}else {
oneGovMonitorPointOneHourData.put("a21005_"+govMonitorPointId,null);
}
if (!ObjectUtils.isEmpty(O3_1hAvg)){
O3_1hList_daliy.add(O3_1hAvg);
- oneGovMonitorPointOneHourData.put("a05024_"+govMonitorPointId,PM2_5Avg);
+ oneGovMonitorPointOneHourData.put("a05024_"+govMonitorPointId,O3_1hAvg);
O3_1hMap.put(i,O3_1hAvg);
}else {
oneGovMonitorPointOneHourData.put("a05024_"+govMonitorPointId,null);
@@ -326,6 +306,226 @@
}
}
}
+ Map<Integer,Map<String,Object>> replaceDataMap = new HashMap<>();
+ replaceDataMap.put(0,hour_1);
+ replaceDataMap.put(1,hour_2);
+ replaceDataMap.put(2,hour_3);
+ replaceDataMap.put(3,hour_4);
+ replaceDataMap.put(4,hour_5);
+ replaceDataMap.put(5,hour_6);
+ replaceDataMap.put(6,hour_7);
+ replaceDataMap.put(7,hour_8);
+ replaceDataMap.put(8,hour_9);
+ replaceDataMap.put(9,hour_10);
+ replaceDataMap.put(10,hour_11);
+ replaceDataMap.put(11,hour_12);
+ replaceDataMap.put(12,hour_13);
+ replaceDataMap.put(13,hour_14);
+ replaceDataMap.put(14,hour_15);
+ replaceDataMap.put(15,hour_16);
+ replaceDataMap.put(16,hour_17);
+ replaceDataMap.put(17,hour_18);
+ replaceDataMap.put(18,hour_19);
+ replaceDataMap.put(19,hour_20);
+ replaceDataMap.put(20,hour_21);
+ replaceDataMap.put(21,hour_22);
+ replaceDataMap.put(22,hour_23);
+ replaceDataMap.put(23,hour_24);
+ replaceDataMap.put(24,hour_AVG);
+ for (int i=0;i<25;i++){
+ List<Double> PM2_5AllList = new ArrayList<>();
+ List<Double> PM10AllList = new ArrayList<>();
+ List<Double> SO2AllList = new ArrayList<>();
+ List<Double> NO2AllList = new ArrayList<>();
+ List<Double> COAllList = new ArrayList<>();
+ List<Double> O3_1hAllList = new ArrayList<>();
+ List<Double> O3_8hAllList = new ArrayList<>();
+ for (String guid:guids) {
+ //������������������������
+ QueryWrapper<GovMonitorPoint> wrapper_govMonitorPoint = new QueryWrapper<>();
+ wrapper_govMonitorPoint.eq("is_delete",Constants.NOT_DELETE).eq("guid",guid);
+ GovMonitorPoint govMonitorPoint = govMonitorPointMapper.selectOne(wrapper_govMonitorPoint);
+ if (ObjectUtils.isEmpty(govMonitorPoint)){
+ continue;
+ }
+ int govMonitorPointId = govMonitorPoint.getId();
+
+ Map<String,Object> replaceMap = new HashMap<>();
+ replaceMap = replaceDataMap.get(i);
+ if (!ObjectUtils.isEmpty(replaceMap.get("a34004_"+govMonitorPointId))){
+ PM2_5AllList.add((double)replaceMap.get("a34004_"+govMonitorPointId));
+ }
+ if (!ObjectUtils.isEmpty(replaceMap.get("a34002_"+govMonitorPointId))){
+ PM10AllList.add((double)replaceMap.get("a34002_"+govMonitorPointId));
+ }
+ if (!ObjectUtils.isEmpty(replaceMap.get("a21026_"+govMonitorPointId))){
+ SO2AllList.add((double)replaceMap.get("a21026_"+govMonitorPointId));
+ }
+ if (!ObjectUtils.isEmpty(replaceMap.get("a21004_"+govMonitorPointId))){
+ NO2AllList.add((double)replaceMap.get("a21004_"+govMonitorPointId));
+ }
+ if (!ObjectUtils.isEmpty(replaceMap.get("a21005_"+govMonitorPointId))){
+ COAllList.add((double)replaceMap.get("a21005_"+govMonitorPointId));
+ }
+ if (!ObjectUtils.isEmpty(replaceMap.get("a05024_"+govMonitorPointId))){
+ O3_1hAllList.add((double)replaceMap.get("a05024_"+govMonitorPointId));
+ }
+ if (!ObjectUtils.isEmpty(replaceMap.get("O3_8h_"+govMonitorPointId))){
+ O3_8hAllList.add((double)replaceMap.get("O3_8h_"+govMonitorPointId));
+ }
+ }
+ Double PM2_5 = null;
+ Double PM10 = null;
+ Double SO2 = null;
+ Double NO2 = null;
+ Double CO = null;
+ Double O3_1h = null;
+ Double O3_8h = null;
+ if (PM2_5AllList.size()>0){
+ PM2_5 = (double)Math.round(PM2_5AllList.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage());
+ }
+ if (PM10AllList.size()>0){
+ PM10 = (double)Math.round(PM10AllList.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage());
+ }
+ if (SO2AllList.size()>0){
+ SO2 = (double)Math.round(SO2AllList.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage());
+ }
+ if (NO2AllList.size()>0){
+ NO2 = (double)Math.round(NO2AllList.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage());
+ }
+ if (COAllList.size()>0){
+ CO = new BigDecimal(COAllList.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage()).setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue();
+ }
+ if (O3_1hAllList.size()>0){
+ O3_1h = (double)Math.round(O3_1hAllList.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage());
+ }
+ if (O3_8hAllList.size()>0){
+ O3_8h = (double)Math.round(O3_8hAllList.stream().mapToDouble(aDouble -> aDouble).summaryStatistics().getAverage());
+ }
+ Map<String,Object> AQIMap = new HashMap<>();
+ if (!ObjectUtils.isEmpty(PM2_5)){
+ AQIMap.put("a34004",PM2_5);
+ }
+ if (!ObjectUtils.isEmpty(PM2_5)){
+ AQIMap.put("a34002",PM10);
+ }
+ if (!ObjectUtils.isEmpty(PM2_5)){
+ AQIMap.put("a21026",SO2);
+ }
+ if (!ObjectUtils.isEmpty(PM2_5)){
+ AQIMap.put("a21004",NO2);
+ }
+ if (!ObjectUtils.isEmpty(PM2_5)){
+ AQIMap.put("a21005",CO);
+ }
+ if (!ObjectUtils.isEmpty(PM2_5)){
+ AQIMap.put("a05024",O3_1h);
+ }
+ Map<String,Object> AQIResultMap = new HashMap<>();
+ if (AQIMap.size()!=0){
+ AQIResultMap = AQIUtils.hourlyAqi_pollutant(AQIMap);
+ }
+ Map<String,Object> avgMap = new HashMap<>();
+ avgMap.put("a34004_"+"0",PM2_5);
+ avgMap.put("a34002_"+"0",PM10);
+ avgMap.put("a21026_"+"0",SO2);
+ avgMap.put("a21004_"+"0",NO2);
+ avgMap.put("a21005_"+"0",CO);
+ avgMap.put("a05024_"+"0",O3_1h);
+ avgMap.put("O3_8h_"+"0",O3_8h);
+ if (!ObjectUtils.isEmpty(AQIResultMap.get("aqi"))){
+ avgMap.put("aqi",AQIResultMap.get("aqi"));
+ }else {
+ avgMap.put("aqi","");
+ }
+ if (!ObjectUtils.isEmpty(AQIResultMap.get("aqi"))){
+ String pollutant = AQIResultMap.get("pollutant").toString();
+ pollutant = pollutant.replace("[","");
+ pollutant = pollutant.replace("]","");
+ avgMap.put("pollutant",pollutant);
+ }else {
+ avgMap.put("aqi","");
+ }
+ //System.out.println("==============="+pollutant);
+ //avgMap.put("pullutant",StringUtils.join(aqi_pollutantMap.get("pollutant").toArray(), separator));
+ switch (i){
+ case 0:hour_1.putAll(avgMap);
+ break;
+ case 1:hour_2.putAll(avgMap);
+ break;
+ case 2:hour_3.putAll(avgMap);
+ break;
+ case 3:hour_4.putAll(avgMap);
+ break;
+ case 4:hour_5.putAll(avgMap);
+ break;
+ case 5:hour_6.putAll(avgMap);
+ break;
+ case 6:hour_7.putAll(avgMap);
+ break;
+ case 7:hour_8.putAll(avgMap);
+ break;
+ case 8:hour_9.putAll(avgMap);
+ break;
+ case 9:hour_10.putAll(avgMap);
+ break;
+ case 10:hour_11.putAll(avgMap);
+ break;
+ case 11:hour_12.putAll(avgMap);
+ break;
+ case 12:hour_13.putAll(avgMap);
+ break;
+ case 13:hour_14.putAll(avgMap);
+ break;
+ case 14:hour_15.putAll(avgMap);
+ break;
+ case 15:hour_16.putAll(avgMap);
+ break;
+ case 16:hour_17.putAll(avgMap);
+ break;
+ case 17:hour_18.putAll(avgMap);
+ break;
+ case 18:hour_19.putAll(avgMap);
+ break;
+ case 19:hour_20.putAll(avgMap);
+ break;
+ case 20:hour_21.putAll(avgMap);
+ break;
+ case 21:hour_22.putAll(avgMap);
+ break;
+ case 22:hour_23.putAll(avgMap);
+ break;
+ case 23:hour_24.putAll(avgMap);
+ break;
+ default:
+ break;
+ }
+ }
+ hour_1.put("time","1���");
+ hour_2.put("time","2���");
+ hour_3.put("time","3���");
+ hour_4.put("time","4���");
+ hour_5.put("time","5���");
+ hour_6.put("time","6���");
+ hour_7.put("time","7���");
+ hour_8.put("time","8���");
+ hour_9.put("time","9���");
+ hour_10.put("time","10���");
+ hour_11.put("time","11���");
+ hour_12.put("time","12���");
+ hour_13.put("time","13���");
+ hour_14.put("time","14���");
+ hour_15.put("time","15���");
+ hour_16.put("time","16���");
+ hour_17.put("time","17���");
+ hour_18.put("time","18���");
+ hour_19.put("time","19���");
+ hour_20.put("time","20���");
+ hour_21.put("time","21���");
+ hour_22.put("time","22���");
+ hour_23.put("time","23���");
+ hour_24.put("time","0���");
+ hour_AVG.put("time","avg");
data.add(hour_1);
data.add(hour_2);
data.add(hour_3);
@@ -352,7 +552,7 @@
data.add(hour_24);
resultMap.put("title",date+"������");
resultMap.put("data",data);
- resultMap.put("gocMonitorPoint",govMonitorPointList);
+ resultMap.put("govMonitorPoint",govMonitorPointList);
return resultMap;
}catch (Exception e){
e.printStackTrace();
diff --git a/screen-common/src/main/java/com/moral/util/AQIUtils.java b/screen-common/src/main/java/com/moral/util/AQIUtils.java
index 70cddb2..b4b9cff 100644
--- a/screen-common/src/main/java/com/moral/util/AQIUtils.java
+++ b/screen-common/src/main/java/com/moral/util/AQIUtils.java
@@ -2,10 +2,7 @@
import org.springframework.util.ObjectUtils;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
import com.moral.constant.Constants;
@@ -59,6 +56,71 @@
return AQIMAX;
}
+ public static Map<String,Object> hourlyAqi_pollutant(Map<String, Object> map) {
+ List<Integer> AQIList = new ArrayList<>();
+ Map<String,Integer> AQIMap = new HashMap<>();
+ for (Map.Entry<String, Object> entry : map.entrySet()) {
+ String key = entry.getKey();
+ if (entry.getValue().toString().equals("")) {
+ continue;
+ }
+ int PM2_5AQI;
+ int PM10AQI;
+ int SO2AQI;
+ int NO2AQI;
+ int COAQI;
+ int O3AQI;
+ switch (key) {
+ case Constants.SENSOR_CODE_PM25:
+ PM2_5AQI = PM2_5AQI(Double.valueOf(entry.getValue().toString()));
+ AQIList.add(PM2_5AQI);
+ AQIMap.put("PM2.5",PM2_5AQI);
+ break;
+ case Constants.SENSOR_CODE_PM10:
+ PM10AQI = PM10AQI(Double.valueOf(entry.getValue().toString()));
+ AQIList.add(PM10AQI);
+ AQIMap.put("PM10",PM10AQI);
+ break;
+ case Constants.SENSOR_CODE_SO2:
+ SO2AQI = SO2AQI(Double.valueOf(entry.getValue().toString()));
+ AQIList.add(SO2AQI);
+ AQIMap.put("SO2",SO2AQI);
+ break;
+ case Constants.SENSOR_CODE_NO2:
+ NO2AQI = NO2AQI(Double.valueOf(entry.getValue().toString()));
+ AQIList.add(NO2AQI);
+ AQIMap.put("NO2",NO2AQI);
+ break;
+ case Constants.SENSOR_CODE_CO:
+ COAQI = COAQI(Double.valueOf(entry.getValue().toString()));
+ AQIList.add(COAQI);
+ AQIMap.put("CO",COAQI);
+ break;
+ case Constants.SENSOR_CODE_O3:
+ O3AQI = O3AQI(Double.valueOf(entry.getValue().toString()));
+ AQIList.add(O3AQI);
+ AQIMap.put("O3",O3AQI);
+ break;
+ default:
+ break;
+ }
+ }
+ int AQIMAX = 0;
+ if (!ObjectUtils.isEmpty(AQIList)) {
+ AQIMAX = Collections.max(AQIList);
+ }
+ List<String> nameList = new ArrayList<>();
+ for (String key:AQIMap.keySet()){
+ if (AQIMap.get(key).equals(AQIMAX)){
+ nameList.add(key);
+ }
+ }
+ Map<String,Object> resultMap = new HashMap<>();
+ resultMap.put("aqi",AQIMAX);
+ resultMap.put("pollutant",nameList);
+ return resultMap;
+ }
+
//PM2.5 IAQI
public static int PM2_5AQI(Double value) {
double result;
--
Gitblit v1.8.0