From 60cd6696e315bc4ee8ba5e8197e08bf7774df06c Mon Sep 17 00:00:00 2001
From: jinpengyong <jpy123456>
Date: Wed, 12 Oct 2022 14:28:12 +0800
Subject: [PATCH] 修改浑南区图表aqi计算方法
---
screen-api/src/main/java/com/moral/api/service/impl/HnExcelServiceImpl.java | 495 ++++++++++++++++++++++++----------------
screen-api/src/main/java/com/moral/api/utils/AqiUtils.java | 189 +++++++++++++++
screen-api/src/main/java/com/moral/api/pojo/vo/excel/SyExcelVo.java | 1
3 files changed, 486 insertions(+), 199 deletions(-)
diff --git a/screen-api/src/main/java/com/moral/api/pojo/vo/excel/SyExcelVo.java b/screen-api/src/main/java/com/moral/api/pojo/vo/excel/SyExcelVo.java
index 219c9d1..028ded2 100644
--- a/screen-api/src/main/java/com/moral/api/pojo/vo/excel/SyExcelVo.java
+++ b/screen-api/src/main/java/com/moral/api/pojo/vo/excel/SyExcelVo.java
@@ -15,6 +15,7 @@
private String code4;
private String code5;
private String code6;
+ private String season;
private Map<String, ArrayList<String>> list;
}
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/HnExcelServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/HnExcelServiceImpl.java
index b7490fe..b03f176 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/HnExcelServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/HnExcelServiceImpl.java
@@ -29,8 +29,8 @@
import com.moral.api.pojo.bo.ExcelBO;
import com.moral.api.pojo.vo.excel.SyExcelVo;
import com.moral.api.service.HnExcelService;
+import com.moral.api.utils.AqiUtils;
import com.moral.api.utils.ExcelUtils;
-import com.moral.pojo.AQI;
import com.moral.util.AQIUtils;
import com.moral.util.AmendUtils;
import com.moral.util.DateUtils;
@@ -157,17 +157,23 @@
if (s.equals("count")){
ArrayList<String> list1 = new ArrayList<>();
List<Integer> list = stringListMap.get(s);
+ String season;
Integer sum =0;
if (data>=1 && data<=3){
sum = list.get(0) + list.get(1) + list.get(2);
+ season = "���";
}else if (data>=4 &&data<=6){
sum = list.get(3) + list.get(4) + list.get(5);
+ season = "���";
}else if (data>=7 &&data<=9){
sum = list.get(6) + list.get(7) + list.get(8);
+ season = "���";
}else {
sum = list.get(9) + list.get(10) + list.get(11);
+ season = "���";
}
syExcelVo.setCode5(sum.toString());
+ syExcelVo.setSeason(season);
for (int i = 0; i < list.size()-1; i++) {
if (list.get(i)==0){
list1.add("");
@@ -340,7 +346,7 @@
if (objects.length == 9) {
map.put("time", objects[0]);
map.put("PM10", objects[1]);
- map.put("a34004", objects[2]);
+ map.put("PM2_5", objects[2]);
map.put("SO2", objects[3]);
map.put("NO2", objects[4]);
map.put("CO", objects[5]);
@@ -351,7 +357,7 @@
if (objects.length == 18) {
map.put("time", objects[0]);
map.put("PM10", objects[1]);
- map.put("a34004", objects[2]);
+ map.put("PM2_5", objects[2]);
map.put("SO2", objects[3]);
map.put("NO2", objects[4]);
map.put("CO", objects[5]);
@@ -368,7 +374,7 @@
{
map1.put("time", objects[10]);
map1.put("PM10", objects[11]);
- map1.put("a34004", objects[12]);
+ map1.put("PM2_5", objects[12]);
map1.put("SO2", objects[13]);
map1.put("NO2", objects[14]);
map1.put("CO", objects[15]);
@@ -382,7 +388,7 @@
if (objects.length == 27) {
map.put("time", objects[0]);
map.put("PM10", objects[1]);
- map.put("a34004", objects[2]);
+ map.put("PM2_5", objects[2]);
map.put("SO2", objects[3]);
map.put("NO2", objects[4]);
map.put("CO", objects[5]);
@@ -399,7 +405,7 @@
map1.put("time", objects[10]);
map1.put("PM10", objects[11]);
- map1.put("a34004", objects[12]);
+ map1.put("PM2_5", objects[12]);
map1.put("SO2", objects[13]);
map1.put("NO2", objects[14]);
map1.put("CO", objects[15]);
@@ -416,7 +422,7 @@
) {
map2.put("time", objects[19]);
map2.put("PM10", objects[20]);
- map2.put("a34004", objects[21]);
+ map2.put("PM2_5", objects[21]);
map2.put("SO2", objects[22]);
map2.put("NO2", objects[23]);
map2.put("CO", objects[24]);
@@ -428,13 +434,14 @@
}
//���������������pm2.5���������������
- Map<String, List<Integer>> map = getMap(rsMap3);
+ Map<String, List<Integer>> map = getMap(rsMap3,time);
//������������PM2.5���������������
- Map<String, Integer> map2 = getResult(rsMap2, time);
+ Map<String, List<Integer>> map2 = getResult(rsMap2, time);
List<Integer> list = map.get("count");
- list.add(map2.get("count"));
+ list.add(map2.get("count").get(0));
List<Integer> list1 = map.get("PM2_5");
- list1.add(map2.get("PM2_5"));
+ list1.add(map2.get("PM2_5").get(0));
+ map.put("������",map2.get("������"));
return map;
}
@@ -443,7 +450,7 @@
*
* @param rsMap3
*/
- private Map<String, List<Integer>> getMap(HashMap<String, Object> rsMap3) {
+ private Map<String, List<Integer>> getMap(HashMap<String, Object> rsMap3,String time) {
HashMap<String, List<Integer>> listMap = new HashMap<>();
Set<String> strings = rsMap3.keySet();
ArrayList<Double> list1 = new ArrayList<>();
@@ -461,6 +468,8 @@
ArrayList<Double> resList = new ArrayList<>();
ArrayList<Integer> list = new ArrayList<>();
ArrayList<Integer> listPM = new ArrayList<>();
+ ArrayList<Double> AQI = new ArrayList<>();
+ ArrayList<Integer> integers = new ArrayList<>();
int count1 = 0;
int count2 = 0;
int count3 = 0;
@@ -473,6 +482,8 @@
int count10 = 0;
int count11 = 0;
int count12 = 0;
+ String rsTime = time.substring(0, 4);
+ integers.add(Integer.parseInt(rsTime));
for (String string : strings) {
String substring = string.substring(5, 7);
@@ -481,10 +492,11 @@
String s = JSON.toJSONString(o);
Map map = JSON.parseObject(s, Map.class);
String aqi = map.get("AQI").toString();
- String pm2_5 = map.get("a34004").toString();
+ String pm2_5 = map.get("PM2_5").toString();
list1.add(Double.parseDouble(pm2_5));
resList.add(Double.parseDouble(pm2_5));
- if (Double.parseDouble(aqi) < 100) {
+ AQI.add(Double.parseDouble(aqi));
+ if (Double.parseDouble(aqi) <= 100) {
count1++;
}
}
@@ -493,10 +505,11 @@
String s = JSON.toJSONString(o);
Map map = JSON.parseObject(s, Map.class);
String aqi = map.get("AQI").toString();
- String pm2_5 = map.get("a34004").toString();
+ String pm2_5 = map.get("PM2_5").toString();
list2.add(Double.parseDouble(pm2_5));
resList.add(Double.parseDouble(pm2_5));
- if (Double.parseDouble(aqi) < 100) {
+ AQI.add(Double.parseDouble(aqi));
+ if (Double.parseDouble(aqi) <= 100) {
count2++;
}
}
@@ -505,10 +518,11 @@
String s = JSON.toJSONString(o);
Map map = JSON.parseObject(s, Map.class);
String aqi = map.get("AQI").toString();
- String pm2_5 = map.get("a34004").toString();
+ String pm2_5 = map.get("PM2_5").toString();
list3.add(Double.parseDouble(pm2_5));
resList.add(Double.parseDouble(pm2_5));
- if (Double.parseDouble(aqi) < 100) {
+ AQI.add(Double.parseDouble(aqi));
+ if (Double.parseDouble(aqi) <= 100) {
count3++;
}
}
@@ -516,13 +530,12 @@
Object o = rsMap3.get(string);
String s = JSON.toJSONString(o);
Map map = JSON.parseObject(s, Map.class);
-
String aqi = map.get("AQI").toString();
-
- String pm2_5 = map.get("a34004").toString();
+ String pm2_5 = map.get("PM2_5").toString();
list4.add(Double.parseDouble(pm2_5));
resList.add(Double.parseDouble(pm2_5));
- if (Double.parseDouble(aqi) < 100) {
+ AQI.add(Double.parseDouble(aqi));
+ if (Double.parseDouble(aqi) <= 100) {
count4++;
}
}
@@ -531,10 +544,11 @@
String s = JSON.toJSONString(o);
Map map = JSON.parseObject(s, Map.class);
String aqi = map.get("AQI").toString();
- String pm2_5 = map.get("a34004").toString();
+ String pm2_5 = map.get("PM2_5").toString();
list5.add(Double.parseDouble(pm2_5));
resList.add(Double.parseDouble(pm2_5));
- if (Double.parseDouble(aqi) < 100) {
+ AQI.add(Double.parseDouble(aqi));
+ if (Double.parseDouble(aqi) <= 100) {
count5++;
}
}
@@ -543,10 +557,11 @@
String s = JSON.toJSONString(o);
Map map = JSON.parseObject(s, Map.class);
String aqi = map.get("AQI").toString();
- String pm2_5 = map.get("a34004").toString();
+ String pm2_5 = map.get("PM2_5").toString();
list6.add(Double.parseDouble(pm2_5));
resList.add(Double.parseDouble(pm2_5));
- if (Double.parseDouble(aqi) < 100) {
+ AQI.add(Double.parseDouble(aqi));
+ if (Double.parseDouble(aqi) <= 100) {
count6++;
}
}
@@ -555,10 +570,11 @@
String s = JSON.toJSONString(o);
Map map = JSON.parseObject(s, Map.class);
String aqi = map.get("AQI").toString();
- String pm2_5 = map.get("a34004").toString();
+ String pm2_5 = map.get("PM2_5").toString();
list7.add(Double.parseDouble(pm2_5));
resList.add(Double.parseDouble(pm2_5));
- if (Double.parseDouble(aqi) < 100) {
+ AQI.add(Double.parseDouble(aqi));
+ if (Double.parseDouble(aqi) <= 100) {
count7++;
}
}
@@ -567,10 +583,11 @@
String s = JSON.toJSONString(o);
Map map = JSON.parseObject(s, Map.class);
String aqi = map.get("AQI").toString();
- String pm2_5 = map.get("a34004").toString();
+ String pm2_5 = map.get("PM2_5").toString();
list8.add(Double.parseDouble(pm2_5));
resList.add(Double.parseDouble(pm2_5));
- if (Double.parseDouble(aqi) < 100) {
+ AQI.add(Double.parseDouble(aqi));
+ if (Double.parseDouble(aqi) <= 100) {
count8++;
}
}
@@ -579,10 +596,11 @@
String s = JSON.toJSONString(o);
Map map = JSON.parseObject(s, Map.class);
String aqi = map.get("AQI").toString();
- String pm2_5 = map.get("a34004").toString();
+ String pm2_5 = map.get("PM2_5").toString();
list9.add(Double.parseDouble(pm2_5));
resList.add(Double.parseDouble(pm2_5));
- if (Double.parseDouble(aqi) < 100) {
+ AQI.add(Double.parseDouble(aqi));
+ if (Double.parseDouble(aqi) <= 100) {
count9++;
}
}
@@ -591,10 +609,11 @@
String s = JSON.toJSONString(o);
Map map = JSON.parseObject(s, Map.class);
String aqi = map.get("AQI").toString();
- String pm2_5 = map.get("a34004").toString();
+ String pm2_5 = map.get("PM2_5").toString();
list10.add(Double.parseDouble(pm2_5));
resList.add(Double.parseDouble(pm2_5));
- if (Double.parseDouble(aqi) < 100) {
+ AQI.add(Double.parseDouble(aqi));
+ if (Double.parseDouble(aqi) <= 100) {
count10++;
}
}
@@ -603,10 +622,11 @@
String s = JSON.toJSONString(o);
Map map = JSON.parseObject(s, Map.class);
String aqi = map.get("AQI").toString();
- String pm2_5 = map.get("a34004").toString();
+ String pm2_5 = map.get("PM2_5").toString();
list11.add(Double.parseDouble(pm2_5));
resList.add(Double.parseDouble(pm2_5));
- if (Double.parseDouble(aqi) < 100) {
+ AQI.add(Double.parseDouble(aqi));
+ if (Double.parseDouble(aqi) <= 100) {
count11++;
}
}
@@ -615,15 +635,56 @@
String s = JSON.toJSONString(o);
Map map = JSON.parseObject(s, Map.class);
String aqi = map.get("AQI").toString();
- String pm2_5 = map.get("a34004").toString();
+ String pm2_5 = map.get("PM2_5").toString();
list12.add(Double.parseDouble(pm2_5));
resList.add(Double.parseDouble(pm2_5));
- if (Double.parseDouble(aqi) < 100) {
+ AQI.add(Double.parseDouble(aqi));
+ if (Double.parseDouble(aqi) <= 100) {
count12++;
}
}
}
+ int code1 =0;
+ int code2 =0;
+ int code3 =0;
+ int code4 =0;
+ int code5 =0;
+ int code6 =0;
+ int i;
+ for (double aDouble : AQI) {
+ i=(int)aDouble;
+ String s = AQIUtils.classOfPollutionByAqi(i);
+ if (s.equals("���")){
+ code1++;
+ }
+ if (s.equals("���")){
+ code2++;
+ }
+ if (s.equals("������������")){
+ code3++;
+ }
+ if (s.equals("������������")){
+ code4++;
+ }
+ if (s.equals("������������")){
+ code5++;
+ }
+ if (s.equals("������������")){
+ code6++;
+ }
+ }
+
+
+
+ integers.add(code1+code2);
+ integers.add(code1);
+ integers.add(code2);
+ integers.add(code3);
+ integers.add(code4);
+ integers.add(code5);
+ integers.add(code6);
+
list.add(count1);
list.add(count2);
list.add(count3);
@@ -638,59 +699,74 @@
list.add(count12);
Integer sum = list.stream().reduce(Integer::sum).orElse(0);
+
list.add(sum);
listMap.put("count", list);
Integer collect1 = 0;
if (list1.size() > 0) {
- collect1 = Math.toIntExact(Math.round(list1.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+// collect1 = Math.toIntExact(Math.round(list1.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+ collect1 = (int) AmendUtils.sciCal(list1.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0);
}
Integer collect2 = 0;
if (list2.size() > 0) {
- collect2 = Math.toIntExact(Math.round(list2.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+// collect2 = Math.toIntExact(Math.round(list2.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+ collect2= (int) AmendUtils.sciCal(list2.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0);
}
Integer collect3 = 0;
if (list3.size() > 0) {
- collect3 = Math.toIntExact(Math.round(list3.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+// collect3 = Math.toIntExact(Math.round(list3.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+ collect3 = (int) AmendUtils.sciCal(list3.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0);
}
Integer collect4 = 0;
if (list4.size() > 0) {
- collect4 = Math.toIntExact(Math.round(list4.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+// collect4 = Math.toIntExact(Math.round(list4.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+ collect4 = (int) AmendUtils.sciCal(list4.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0);
}
Integer collect5 = 0;
if (list5.size() > 0) {
- collect5 = Math.toIntExact(Math.round(list5.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+// collect5 = Math.toIntExact(Math.round(list5.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+ collect5 = (int) AmendUtils.sciCal(list5.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0);
}
Integer collect6 = 0;
if (list6.size() > 0) {
- collect6 = Math.toIntExact(Math.round(list6.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+// collect6 = Math.toIntExact(Math.round(list6.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+ collect6 = (int) AmendUtils.sciCal(list6.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0);
}
+
Integer collect7 = 0;
if (list7.size() > 0) {
- collect7 = Math.toIntExact(Math.round(list7.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+// collect7 = Math.toIntExact(Math.round(list7.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+ collect7 = (int) AmendUtils.sciCal(list7.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0);
}
Integer collect8 = 0;
if (list8.size() > 0) {
- collect8 = Math.toIntExact(Math.round(list8.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+// collect8 = Math.toIntExact(Math.round(list8.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+ collect8 = (int) AmendUtils.sciCal(list8.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0);
}
Integer collect9 = 0;
if (list9.size() > 0) {
- collect9 = Math.toIntExact(Math.round(list9.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+// collect9 = Math.toIntExact(Math.round(list9.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+ collect9 = (int) AmendUtils.sciCal(list9.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0);
}
Integer collect10 = 0;
if (list10.size() > 0) {
- collect10 = Math.toIntExact(Math.round(list10.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+// collect10 = Math.toIntExact(Math.round(list10.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+ collect10 = (int) AmendUtils.sciCal(list10.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0);
}
Integer collect11 = 0;
if (list11.size() > 0) {
- collect11 = Math.toIntExact(Math.round(list11.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+// collect11 = Math.toIntExact(Math.round(list11.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+ collect11 = (int) AmendUtils.sciCal(list11.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0);
}
Integer collect12 = 0;
if (list12.size() > 0) {
- collect12 = Math.toIntExact(Math.round(list12.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+// collect12 = Math.toIntExact(Math.round(list12.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+ collect12 = (int) AmendUtils.sciCal(list12.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0);
}
//���������pm2.5������
- int resPM25 = Math.toIntExact(Math.round(resList.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+// int resPM25 = Math.toIntExact(Math.round(resList.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+ int resPM25 = (int) AmendUtils.sciCal(resList.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0);
listPM.add(collect1);
listPM.add(collect2);
listPM.add(collect3);
@@ -704,7 +780,8 @@
listPM.add(collect11);
listPM.add(collect12);
listPM.add(resPM25);
- listMap.put("PM2_5", listPM);
+ listMap.put("PM2_5",listPM);
+ listMap.put("������",integers);
return listMap;
}
@@ -713,14 +790,21 @@
*
* @param rsMap2
*/
- private Map<String, Integer> getResult(HashMap<String, Object> rsMap2, String time) throws ParseException {
- HashMap<String, Integer> rsMap = new HashMap<>();
+ private Map<String, List<Integer>> getResult(HashMap<String, Object> rsMap2, String time) throws ParseException {
+ HashMap<String, List<Integer>> rsMap = new HashMap<>();
ArrayList<Double> list = new ArrayList<>();
+ ArrayList<Integer> list2 = new ArrayList<>();
+ ArrayList<Integer> list3 = new ArrayList<>();
+ ArrayList<Double> AQI = new ArrayList<>();
+ ArrayList<Integer> rsAqi = new ArrayList<>();
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
Calendar instance = Calendar.getInstance();
instance.setTime(sdf1.parse(time));
instance.add(Calendar.YEAR, -1);
Date date = instance.getTime();
+ //���������
+ String format = sdf1.format(date);
+ String rsTime = format.substring(0, 4);
//���������
long time1 = date.getTime();
int count = 0;
@@ -733,17 +817,60 @@
String s = JSON.toJSONString(o);
Map map = JSON.parseObject(s, Map.class);
String aqi = map.get("AQI").toString();
- String pm2_5 = map.get("a34004").toString();
+ String pm2_5 = map.get("PM2_5").toString();
list.add(Double.parseDouble(pm2_5));
- if (Double.parseDouble(aqi) < 100) {
+ AQI.add(Double.parseDouble(aqi));
+ if (Double.parseDouble(aqi) <= 100) {
count++;
}
}
}
+ list2.add(count);
+ int code1 =0;
+ int code2 =0;
+ int code3 =0;
+ int code4 =0;
+ int code5 =0;
+ int code6 =0;
+ int i;
+ for (double adouble : AQI) {
+ i =(int) adouble;
+ String s = AQIUtils.classOfPollutionByAqi(i);
+ if (s.equals("���")){
+ code1++;
+ }
+ if (s.equals("���")){
+ code2++;
+ }
+ if (s.equals("������������")){
+ code3++;
+ }
+ if (s.equals("������������")){
+ code4++;
+ }
+ if (s.equals("������������")){
+ code5++;
+ }
+ if (s.equals("������������")){
+ code6++;
+ }
+ }
+ rsAqi.add(Integer.parseInt(rsTime));
+ rsAqi.add(code1+code2);
+ rsAqi.add(code1);
+ rsAqi.add(code2);
+ rsAqi.add(code3);
+ rsAqi.add(code4);
+ rsAqi.add(code5);
+ rsAqi.add(code6);
+
//���������pm2.5������
- int PM2_5 = Math.toIntExact(Math.round(list.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
- rsMap.put("count", count);
- rsMap.put("PM2_5", PM2_5);
+// int PM2_5 = Math.toIntExact(Math.round(list.stream().collect(Collectors.averagingDouble(Double::doubleValue))));
+ int PM2_5 = (int) AmendUtils.sciCal(list.stream().collect(Collectors.averagingDouble(Double::doubleValue)), 0);
+ list3.add(PM2_5);
+ rsMap.put("count", list2);
+ rsMap.put("PM2_5", list3);
+ rsMap.put("������",rsAqi);
return rsMap;
}
@@ -790,67 +917,39 @@
HashMap<String, Object> map1 = new HashMap<>();
HashMap<String, Object> map2 = new HashMap<>();
if (objects.length == 18) {
- if ( !objects[11].toString().contains("H")
- && !objects[12].toString().contains("H")
- && !objects[13].toString().contains("H")
- && !objects[14].toString().contains("H")
- && !objects[15].toString().contains("H")
- && !objects[16].toString().contains("H")
- ) {
-// map1.put("time", objects[10]);
- //PM10
- map1.put("a34002", objects[11]);
- //PM2_5
- map1.put("a34004", objects[12]);
- //SO2
- map1.put("a21026", objects[13]);
- //NO2
- map1.put("a21004", objects[14]);
- //CO
- map1.put("a21005", objects[15]);
- //O3_8H
- map1.put("a05024", objects[16]);
- rsMap1.put(objects[10].toString(), map1);
- }
+ map1.put("PM10", objects[11]);
+ map1.put("PM2_5", objects[12]);
+ map1.put("SO2", objects[13]);
+ map1.put("NO2", objects[14]);
+ map1.put("CO", objects[15]);
+ map1.put("O3", objects[16]);
+
+ rsMap1.put(objects[10].toString(), map1);
}
if (objects.length == 27) {
- if ( !objects[11].toString().contains("H")
- && !objects[12].toString().contains("H")
- && !objects[13].toString().contains("H")
- && !objects[14].toString().contains("H")
- && !objects[15].toString().contains("H")
- && !objects[16].toString().contains("H")
- ) {
- map1.put("a34002", objects[11]);
- map1.put("a34004", objects[12]);
- map1.put("a21026", objects[13]);
- map1.put("a21004", objects[14]);
- map1.put("a21005", objects[15]);
- map1.put("a05024", objects[16]);
+ map1.put("PM10", objects[11]);
+ map1.put("PM2_5", objects[12]);
+ map1.put("SO2", objects[13]);
+ map1.put("NO2", objects[14]);
+ map1.put("CO", objects[15]);
+ map1.put("O3", objects[16]);
- rsMap1.put(objects[10].toString(), map1);
- }
- if (
- !objects[20].toString().contains("H")
- && !objects[21].toString().contains("H")
- && !objects[22].toString().contains("H")
- && !objects[23].toString().contains("H")
- && !objects[24].toString().contains("H")
- && !objects[25].toString().contains("H"))
- {
- map2.put("a34002", objects[20]);
- map2.put("a34004", objects[21]);
- map2.put("a21026", objects[22]);
- map2.put("a21004", objects[23]);
- map2.put("a21005", objects[24]);
- map2.put("a05024", objects[25]);
+ rsMap1.put(objects[10].toString(), map1);
- rsMap2.put(objects[19].toString(), map2);
- }
+
+ map2.put("PM10", objects[20]);
+ map2.put("PM2_5", objects[21]);
+ map2.put("SO2", objects[22]);
+ map2.put("NO2", objects[23]);
+ map2.put("CO", objects[24]);
+ map2.put("O3", objects[25]);
+
+ rsMap2.put(objects[19].toString(), map2);
+
}
}
@@ -880,59 +979,39 @@
HashMap<String, Object> map1 = new HashMap<>();
HashMap<String, Object> map2 = new HashMap<>();
if (objects.length == 18) {
- if ( !objects[11].toString().contains("H")
- && !objects[12].toString().contains("H")
- && !objects[13].toString().contains("H")
- && !objects[14].toString().contains("H")
- && !objects[15].toString().contains("H")
- && !objects[16].toString().contains("H")
- ) {
-// map1.put("time", objects[10]);
- map1.put("a34002", objects[11]);
- map1.put("a34004", objects[12]);
- map1.put("a21026", objects[13]);
- map1.put("a21004", objects[14]);
- map1.put("a21005", objects[15]);
- map1.put("a05024", objects[16]);
- rsMap3.put(objects[10].toString(), map1);
- }
+ map1.put("PM10", objects[11]);
+ map1.put("PM2_5", objects[12]);
+ map1.put("SO2", objects[13]);
+ map1.put("NO2", objects[14]);
+ map1.put("CO", objects[15]);
+ map1.put("O3", objects[16]);
+
+ rsMap3.put(objects[10].toString(), map1);
+
}
if (objects.length == 27) {
- if ( !objects[11].toString().contains("H")
- && !objects[12].toString().contains("H")
- && !objects[13].toString().contains("H")
- && !objects[14].toString().contains("H")
- && !objects[15].toString().contains("H")
- && !objects[16].toString().contains("H"))
- {
- map1.put("a34002", objects[11]);
- map1.put("a34004", objects[12]);
- map1.put("a21026", objects[13]);
- map1.put("a21004", objects[14]);
- map1.put("a21005", objects[15]);
- map1.put("a05024", objects[16]);
- rsMap3.put(objects[10].toString(), map1);
- }
- if ( !objects[20].toString().contains("H")
- && !objects[21].toString().contains("H")
- && !objects[22].toString().contains("H")
- && !objects[23].toString().contains("H")
- && !objects[24].toString().contains("H")
- && !objects[25].toString().contains("H")
- ) {
-// map2.put("time", objects[19]);
- map2.put("a34002", objects[20]);
- map2.put("a34004", objects[21]);
- map2.put("a21026", objects[22]);
- map2.put("a21004", objects[23]);
- map2.put("a21005", objects[24]);
- map2.put("a05024", objects[25]);
- rsMap4.put(objects[19].toString(), map2);
- }
+ map1.put("PM10", objects[11]);
+ map1.put("PM2_5", objects[12]);
+ map1.put("SO2", objects[13]);
+ map1.put("NO2", objects[14]);
+ map1.put("CO", objects[15]);
+ map1.put("O3", objects[16]);
+
+ rsMap3.put(objects[10].toString(), map1);
+
+
+ map2.put("PM10", objects[20]);
+ map2.put("PM2_5", objects[21]);
+ map2.put("SO2", objects[22]);
+ map2.put("NO2", objects[23]);
+ map2.put("CO", objects[24]);
+ map2.put("O3", objects[25]);
+ rsMap4.put(objects[19].toString(), map2);
+
}
}
@@ -941,95 +1020,113 @@
Object o = rsMap1.get(string);
String s = JSON.toJSONString(o);
Map map = JSON.parseObject(s, Map.class);
- if (!rsMap3.containsKey(string)){
- hnMap1.put(string,map);
- continue;
- }
+
Object o1 = rsMap3.get(string);
String s1 = JSON.toJSONString(o1);
Map map1 = JSON.parseObject(s1, Map.class);
Set sets = map1.keySet();
HashMap<Object, Object> hs = new HashMap<>();
for (Object set : sets) {
- if (set.toString().equals("a21005")){
+ if (set.toString().equals("CO")){
String s3 = map1.get(set).toString();
String s2 = map.get(set).toString();
- hs.put(set,new BigDecimal((Double.parseDouble(s3)+Double.parseDouble(s2))/2).setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue());
+ if (s3.contains("H") && !s2.contains("H")){
+ hs.put(set,Double.parseDouble(s2));
+ }else if(!s3.contains("H") && s2.contains("H")){
+ hs.put(set,Double.parseDouble(s3));
+ }else if(s3.contains("H") && s2.contains("H")){
+ break;
+ }else {
+// hs.put(set,new BigDecimal((Double.parseDouble(s3)+Double.parseDouble(s2))/2).setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue());
+ hs.put(set, AmendUtils.sciCal((Double.parseDouble(s3)+Double.parseDouble(s2))/2,1));
+ }
continue;
}
String s3 = map1.get(set).toString();
String s2 = map.get(set).toString();
- hs.put(set,Math.round((Double.parseDouble(s3)+Double.parseDouble(s2))/2));
+ if (s3.contains("H") && !s2.contains("H")){
+ hs.put(set,Double.parseDouble(s2));
+ }else if(!s3.contains("H") && s2.contains("H")){
+ hs.put(set,Double.parseDouble(s3));
+ }else if(s3.contains("H") && s2.contains("H")){
+ break;
+ }else {
+// hs.put(set,Math.round((Double.parseDouble(s3)+Double.parseDouble(s2))/2));
+ hs.put(set, AmendUtils.sciCal((Double.parseDouble(s3)+Double.parseDouble(s2))/2,0));
+ }
}
- hnMap1.put(string,hs);
+ if (hs.size()==6){
+ hnMap1.put(string,hs);
+ }
+
}
- Set<String> strings2 = rsMap3.keySet();
- for (String s : strings2) {
- Object o = rsMap3.get(s);
- String s1 = JSON.toJSONString(o);
- Map map = JSON.parseObject(s1, Map.class);
- if (!hnMap1.containsKey(s)){
- hnMap1.put(s,map);
- }
- }
+
Set<String> strings1 = rsMap2.keySet();
for (String s : strings1) {
Object o = rsMap2.get(s);
String s1 = JSON.toJSONString(o);
Map map = JSON.parseObject(s1, Map.class);
- if (!rsMap4.containsKey(s)){
- hnMap2.put(s,map);
- continue;
- }
Object o1 = rsMap4.get(s);
String s2 = JSON.toJSONString(o1);
Map map1 = JSON.parseObject(s2, Map.class);
Set sets = map1.keySet();
HashMap<Object, Object> hs = new HashMap<>();
for (Object set : sets) {
- if (set.toString().equals("a21005")){
+ if (set.toString().equals("CO")){
String s3 = map1.get(set).toString();
String s4 = map.get(set).toString();
- hs.put(set,new BigDecimal((Double.parseDouble(s3)+Double.parseDouble(s4))/2).setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue());
+ if (s3.contains("H") && !s4.contains("H")){
+ hs.put(set,Double.parseDouble(s4));
+ }else if(!s3.contains("H") && s4.contains("H")){
+ hs.put(set,Double.parseDouble(s3));
+ }else if(s3.contains("H") && s4.contains("H")){
+ break;
+ }else {
+ hs.put(set, AmendUtils.sciCal((Double.parseDouble(s3)+Double.parseDouble(s4))/2,1));
+ }
continue;
}
String s3 = map1.get(set).toString();
String s4 = map.get(set).toString();
- hs.put(set,Math.round((Double.parseDouble(s3)+Double.parseDouble(s4))/2));
+ if (s3.contains("H") && !s4.contains("H")){
+ hs.put(set,Double.parseDouble(s4));
+ }else if(!s3.contains("H") && s4.contains("H")){
+ hs.put(set,Double.parseDouble(s3));
+ }else if(s3.contains("H") && s4.contains("H")){
+ break;
+ }else {
+ hs.put(set, AmendUtils.sciCal((Double.parseDouble(s3)+Double.parseDouble(s4))/2,0));
+ }
}
- hnMap2.put(s,hs);
+ if (hs.size()==6){
+ hnMap2.put(s,hs);
+ }
+
}
- Set<String> strings3 = rsMap4.keySet();
- for (String s : strings3) {
- Object o = rsMap4.get(s);
- String s1 = JSON.toJSONString(o);
- Map map = JSON.parseObject(s1, Map.class);
- if (!rsMap2.containsKey(s1)){
- hnMap2.put(s,map);
- }
- }
+
//���������������aqi
getHnMap(hnMap2);
//���������������aqi
getHnMap(hnMap1);
//
- Map<String, List<Integer>> map = getMap(hnMap2);
+ Map<String, List<Integer>> map = getMap(hnMap2,time);
- Map<String, Integer> map2 = getResult(hnMap1, time);
+ Map<String, List<Integer>> map2 = getResult(hnMap1, time);
List<Integer> list = map.get("count");
- list.add(map2.get("count"));
+ list.add(map2.get("count").get(0));
List<Integer> list1 = map.get("PM2_5");
- list1.add(map2.get("PM2_5"));
+ list1.add(map2.get("PM2_5").get(0));
return map;
}
+
//������aqi
private void getHnMap(HashMap<String, Object> hnMap2) {
Set<String> strings4 = hnMap2.keySet();
@@ -1037,9 +1134,9 @@
Object o = hnMap2.get(s);
String s1 = JSON.toJSONString(o);
Map rs = JSON.parseObject(s1, Map.class);
- AQI aqi = AQIUtils.dailyAQI(rs);
+ Map aqi1 = AqiUtils.getAqi(rs);
JSONObject jsonObject = JSON.parseObject(s1);
- jsonObject.put("AQI",aqi.getAQIValue());
+ jsonObject.put("AQI",aqi1.get("AQI"));
String s2 = JSON.toJSONString(jsonObject);
Map map = JSON.parseObject(s2, Map.class);
hnMap2.put(s,map);
diff --git a/screen-api/src/main/java/com/moral/api/utils/AqiUtils.java b/screen-api/src/main/java/com/moral/api/utils/AqiUtils.java
new file mode 100644
index 0000000..3b4cc29
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/utils/AqiUtils.java
@@ -0,0 +1,189 @@
+package com.moral.api.utils;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+public class AqiUtils {
+ /**
+ * ������6������������aqi������������������
+ * @param map
+ * @return
+ */
+ public static Map<String,Object> getAqi(Map<String,Object> map){
+
+ HashMap<String, Object> rsMap = new HashMap<>();
+ ArrayList<Double> list = new ArrayList<>();
+ if (map.get("PM2_5")!=null && map.get("PM10")!=null && map.get("CO")!=null
+ && map.get("SO2")!=null
+ && map.get("NO2")!=null
+ && map.get("O3")!=null
+ ){
+ double pm2_5 = getPm2_5(Double.parseDouble(map.get("PM2_5").toString()));
+ list.add(pm2_5);
+ double pm10 = getPm10(Double.parseDouble(map.get("PM10").toString()));
+ list.add(pm10);
+ double co = getCo(Double.parseDouble(map.get("CO").toString()));
+ list.add(co);
+ double So2 = getSo2(Double.parseDouble(map.get("SO2").toString()));
+ list.add(So2);
+ double No2 = getNo2(Double.parseDouble(map.get("NO2").toString()));
+ list.add(No2);
+ double O3 = getO3(Double.parseDouble(map.get("O3").toString()));
+ list.add(O3);
+ }
+
+ double max = Collections.max(list);
+ int AQI = (int) max;
+ rsMap.put("AQI",AQI);
+
+ rsMap.put("SU",getSU(max,list));
+
+ return rsMap;
+ }
+
+
+
+ private static double getSo2(double so2){
+ double v = 0.0;
+ if (so2<50){
+ v = 50 * so2 / 50;
+ }else if (so2<150 && so2 >= 50){
+ v = 50 * (so2 - 50) / 100 + 50;
+ }else if (so2<475 && so2 >= 150){
+ v = 50 * (so2 - 150) / 325 + 100;
+ }else if (so2<800 && so2 >= 475){
+ v = 50 * (so2 - 475) / 325 + 150;
+ }else {
+ v = 100 * (so2 - 800) / 800 + 200;
+ }
+ return Math.round(v);
+ }
+
+ private static double getNo2(double no2){
+ double v = 0.0;
+ if (no2<40){
+ v = 50 * no2 / 40;
+ }else if (no2<80 && no2 >= 40){
+ v = 50 * (no2 - 40) / 40 + 50;
+ }else if (no2<180 && no2 >= 80){
+ v = 50 * (no2 - 80) / 100 + 100;
+ }else if (no2<280 && no2 >= 180){
+ v = 50 * (no2 - 180) / 100 + 150;
+ }else if (no2<565 && no2 >= 280){
+ v = 100 * (no2 - 280) / 285 + 200;
+ }else if (no2<750 && no2 >= 565){
+ v = 100 * (no2 - 565) / 185 + 300;
+ }
+ else {
+ v = 100 * (no2 - 750) / 190 + 400;
+ }
+ return Math.round(v);
+ }
+
+
+ private static double getCo(double co){
+ double v = 0.0;
+ if (co<2){
+ v = 50 * co / 2;
+ }else if (co<4 && co >= 2){
+ v = 50 * (co - 2) / 2 + 50;
+ }else if (co<14 && co >= 4){
+ v = 50 * (co - 4) / 10 + 100;
+ }else if (co<24 && co >= 14){
+ v = 50 * (co - 14) / 10 + 150;
+ }else if (co<36 && co >= 24){
+ v = 100 * (co - 24) / 12 + 200;
+ }else if (co<48 && co >= 36){
+ v = 100 * (co - 36) / 12 + 300;
+ }
+ else {
+ v = 100 * (co - 48) / 12 + 400;
+ }
+ return Math.round(v);
+ }
+
+ private static double getPm10(double pm10){
+ double v = 0.0;
+ if (pm10<50){
+ v = 50 * pm10 / 50;
+ }else if (pm10<150 && pm10 >= 50){
+ v = 50 * (pm10 - 50) / 100 + 50;
+ }else if (pm10<250 && pm10 >= 150){
+ v = 50 * (pm10 - 150) / 100 + 100;
+ }else if (pm10<350 && pm10 >= 250){
+ v = 50 * (pm10 - 250) / 100 + 150;
+ }else if (pm10<420 && pm10 >= 350){
+ v = 100 * (pm10 - 350) / 70 + 200;
+ }else if (pm10<500 && pm10 >= 420){
+ v = 100 * (pm10 - 420) / 80 + 300;
+ }
+ else {
+ v = 100 * (pm10 - 500) / 100 + 400;
+ }
+ return Math.round(v);
+ }
+
+ private static double getPm2_5(double pm2_5){
+ double v = 0.0;
+ if (pm2_5<35){
+ v = 50 * pm2_5 / 35;
+ }else if (pm2_5<75 && pm2_5 >= 35){
+ v = 50 * (pm2_5 - 35) / 40 + 50;
+ }else if (pm2_5<115 && pm2_5 >= 75){
+ v = 50 * (pm2_5 - 75) / 40 + 100;
+ }else if (pm2_5<150 && pm2_5 >= 115){
+ v = 50 * (pm2_5 - 115) / 35 + 150;
+ }else if (pm2_5<250 && pm2_5 >= 150){
+ v = 100 * (pm2_5 - 150) / 100 + 200;
+ }else if (pm2_5<350 && pm2_5 >= 250){
+ v = 100 * (pm2_5 - 250) / 100 + 300;
+ }
+ else {
+ v = 100 * (pm2_5 - 350) / 150 + 400;
+ }
+ return Math.round(v);
+ }
+
+
+ private static double getO3(double o3){
+ double v = 0.0;
+ if (o3<100){
+ v = 50 * o3 / 100;
+ }else if (o3<160 && o3 >= 100){
+ v = 50 * (o3 - 100) / 60 + 50;
+ }else if (o3<215 && o3 >= 160){
+ v = 50 * (o3 - 160) / 55 + 100;
+ }else if (o3<265 && o3 >= 215){
+ v = 50 * (o3 - 215) / 50 + 150;
+ }else if (o3<800 && o3 >= 265){
+ v = 100 * (o3 - 265) / 535 + 200;
+ }else if (o3<1000 && o3 >= 800){
+ v = 100 * (o3 - 800) / 200 + 300;
+ }
+ return Math.round(v);
+ }
+
+
+ private static String getSU(Double aqi,ArrayList list){
+ String SU=null;
+ if (aqi<=50){
+ SU="-";
+ } else if (aqi.toString().equals(list.get(1).toString())){
+ SU="PM10";
+ }else if (aqi.toString().equals(list.get(0).toString())){
+ SU="PM2.5";
+ }else if (aqi.toString().equals(list.get(2).toString())){
+ SU="CO";
+ }else if (aqi.toString().equals(list.get(3).toString())){
+ SU="SO2";
+ }else if (aqi.toString().equals(list.get(4).toString())){
+ SU="NO2";
+ }else if (aqi.toString().equals(list.get(5).toString())){
+ SU="O3";
+ }
+ return SU;
+ }
+
+}
--
Gitblit v1.8.0