From 3aa2f5aa4c7963e7bcfbc0d710c286c826338df9 Mon Sep 17 00:00:00 2001
From: kaiyu <404897439@qq.com>
Date: Wed, 02 Dec 2020 14:39:08 +0800
Subject: [PATCH] Merge branch 'master' of http://blit.7drlb.com:8888/r/screen_api_v2

---
 src/main/java/com/moral/util/AQICalculation2.java |  272 +++++++++++++++++++++++++++---------------------------
 1 files changed, 135 insertions(+), 137 deletions(-)

diff --git a/src/main/java/com/moral/util/AQICalculation2.java b/src/main/java/com/moral/util/AQICalculation2.java
index 9797972..3f62277 100644
--- a/src/main/java/com/moral/util/AQICalculation2.java
+++ b/src/main/java/com/moral/util/AQICalculation2.java
@@ -3,9 +3,9 @@
 import java.util.*;
 
 public class AQICalculation2 {
-	
+
 	public static Map<String, Object> hourlyAQI(Map<String, Object> map){
-		List<Double> AQIList = new ArrayList<>();
+		Map<String,Double> AQIMap = new HashMap<>();
 		Map maxMap = new HashMap();
 		for (Map.Entry<String, Object> entry : map.entrySet()) {
 			String key = entry.getKey();
@@ -26,89 +26,87 @@
 			Double COAQI;
 			Double O3AQI;
 
-				switch (key) {
-					case "PM2_5":PM2_5AQI = PM2_5AQI(value);
-						AQIList.add(PM2_5AQI);
-						break;
-					case "PM10":PM10AQI = PM10AQI(value);
-						AQIList.add(PM10AQI);
-						break;
-					case "SO2":SO2AQI = SO2AQI(value);
-						AQIList.add(SO2AQI);
-						break;
-					case "NO2":NO2AQI = NO2AQI(value);
-						AQIList.add(NO2AQI);
-						break;
-					case "CO":COAQI = COAQI(value);
-						AQIList.add(COAQI);
-						break;
-					case "maxO3_8h":O3AQI = O3AQI(value);
-						AQIList.add(O3AQI);
-						break;
-					default:
-						break;
-				}
+			switch (key) {
+				case "PM2_5":PM2_5AQI = PM2_5AQI(value);
+					AQIMap.put("PM2_5",PM2_5AQI);
+					break;
+				case "PM10":PM10AQI = PM10AQI(value);
+					AQIMap.put("PM10",PM10AQI);
+					break;
+				case "SO2":SO2AQI = SO2AQI(value);
+					AQIMap.put("SO2",SO2AQI);
+					break;
+				case "NO2":NO2AQI = NO2AQI(value);
+					AQIMap.put("NO2",NO2AQI);
+					break;
+				case "CO":COAQI = COAQI(value);
+					AQIMap.put("CO",COAQI);
+					break;
+				case "maxO3_8h":O3AQI = O3AQI(value);
+					AQIMap.put("maxO3_8h",O3AQI);
+					break;
+				default:
+					break;
 			}
+		}
 		Map<String, Object> returnMap = new HashMap<>();
-			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);
+		Optional<Map.Entry<String, Double>> max0 = AQIMap.entrySet()
+				.stream()
+				.max(Map.Entry.comparingByValue());
+		returnMap.put("maxSensor", max0.get().getKey());
+		returnMap.put("AQI", new Double(Math.floor(Math.round(max0.get().getValue()+0.5))).intValue());
 		return returnMap;
 	}
 	public static Map<String, Object> dayAQI(Map<String, Object> map){
-		List<Double> AQIList = new ArrayList<>();
+		Map<String,Double> AQIMap = new HashMap<>();
 		Map maxMap = new HashMap();
 		for (Map.Entry<String, Object> entry : map.entrySet()) {
 			String key = entry.getKey();
 			if (entry.getValue().toString().equals("")){
 				continue;
 			}
-				Double value = Double.parseDouble(entry.getValue().toString());
-				if (key!="O3_day"){
-					maxMap.put(key,value);
-				}else {
-					continue;
-				}
-				Double PM2_5AQI;
-				Double PM10AQI;
-				Double SO2AQI;
-				Double NO2AQI;
-				Double COAQI;
-				Double maxO38hAQI;
-				switch (key) {
-					case "PM2_5":PM2_5AQI = PM2_5AQI(value);
-						AQIList.add(PM2_5AQI);
-						break;
-					case "PM10":PM10AQI = PM10AQI(value);
-						AQIList.add(PM10AQI);
-						break;
-					case "SO2":SO2AQI = SO2DayAQI(value);
-						AQIList.add(SO2AQI);
-						break;
-					case "NO2":NO2AQI = NO2DayAQI(value);
-						AQIList.add(NO2AQI);
-						break;
-					case "CO":COAQI = CODayAQI(value);
-						AQIList.add(COAQI);
-						break;
-					case "maxO3_8h":maxO38hAQI = O3DayAQI(value);
-						AQIList.add(maxO38hAQI);
-						break;
-					default:
-						break;
-				}
+			Double value = Double.parseDouble(entry.getValue().toString());
+			if (key!="O3_day"){
+				maxMap.put(key,value);
+			}else {
+				continue;
+			}
+			Double PM2_5AQI;
+			Double PM10AQI;
+			Double SO2AQI;
+			Double NO2AQI;
+			Double COAQI;
+			Double maxO38hAQI;
+			switch (key) {
+				case "PM2_5":PM2_5AQI = PM2_5AQI(value);
+					AQIMap.put("PM2_5",PM2_5AQI);
+					break;
+				case "PM10":PM10AQI = PM10AQI(value);
+					AQIMap.put("PM10",PM10AQI);
+					break;
+				case "SO2":SO2AQI = SO2DayAQI(value);
+					AQIMap.put("SO2",SO2AQI);
+					break;
+				case "NO2":NO2AQI = NO2DayAQI(value);
+					AQIMap.put("NO2",NO2AQI);
+					break;
+				case "CO":COAQI = CODayAQI(value);
+					AQIMap.put("CO",COAQI);
+					break;
+				case "maxO3_8h":maxO38hAQI = O3DayAQI(value);
+					AQIMap.put("maxO3_8h",maxO38hAQI);
+					break;
+				default:
+					break;
+			}
 		}
 		Map<String, Object> returnMap = new HashMap<>();
-		if (AQIList.size()>0){
-			Double AQIMAX = Collections.max(AQIList);
-			Optional<Map.Entry<String, Integer>> max0 = maxMap.entrySet()
+		if (AQIMap.size()>0){
+			Optional<Map.Entry<String, Double>> max0 = AQIMap.entrySet()
 					.stream()
 					.max(Map.Entry.comparingByValue());
 			returnMap.put("maxSensor",max0.get().getKey());
-			returnMap.put("AQI", AQIMAX);
+			returnMap.put("AQI", new Double(Math.floor(Math.round(max0.get().getValue()+0.5))).intValue());
 		}else {
 			returnMap.put("maxSensor","");
 			returnMap.put("AQI", "");
@@ -120,41 +118,41 @@
 		if(value<=0) {
 			result=(double) 0;
 		}else if (value<=35) {
-			result = 50/35*(value-0)+0;
+			result = 50.0/35*(value-0)+0;
 		}else if (value<=75) {
-			result = 50/40*(value-35)+50;
+			result = 50.0/40*(value-35)+50;
 		}else if (value<=115) {
-			result = 50/40*(value-75)+100;
+			result = 50.0/40*(value-75)+100;
 		}else if (value<=150) {
-			result = 50/35*(value-115)+150;
+			result = 50.0/35*(value-115)+150;
 		}else if (value<=250) {
-			result = 100/100*(value-150)+200;
+			result = 100.0/100*(value-150)+200;
 		}else if (value<=350) {
-			result = 100/100*(value-250)+300;
+			result = 100.0/100*(value-250)+300;
 		}else {
-			result = 100/150*(value-350)+400;
+			result = 100.0/150*(value-350)+400;
 		}
 		return result;
 	}
-	
+
 	static double PM10AQI(Double value) {
 		Double result = (double) 0;
 		if(value<=0) {
 			result=(double) 0;
 		}else if (value<=50) {
-			result = 50/50*(value-0)+0;
+			result = 50.0/50*(value-0)+0;
 		}else if (value<=150) {
-			result = 50/100*(value-50)+50;
+			result = 50.0/100*(value-50)+50;
 		}else if (value<=250) {
-			result = 50/100*(value-150)+100;
+			result = 50.0/100*(value-150)+100;
 		}else if (value<=350) {
-			result = 50/100*(value-250)+150;
+			result = 50.0/100*(value-250)+150;
 		}else if (value<=420) {
-			result = 100/70*(value-350)+200;
+			result = 100.0/70*(value-350)+200;
 		}else if (value<=500) {
-			result = 100/80*(value-420)+300;
+			result = 100.0/80*(value-420)+300;
 		}else {
-			result = 100/100*(value-500)+400;
+			result = 100.0/100*(value-500)+400;
 		}
 		return result;
 	}
@@ -164,13 +162,13 @@
 		if(value<=0) {
 			result=(double) 0;
 		}else if (value<=150) {
-			result = 50/150*(value-0)+0;
+			result = 50.0/150*(value-0)+0;
 		}else if (value<=500) {
-			result = 50/350*(value-150)+50;
+			result = 50.0/350*(value-150)+50;
 		}else if (value<=650) {
-			result = 50/150*(value-500)+100;
+			result = 50.0/150*(value-500)+100;
 		}else {
-			result = 50/150*(value-650)+150;
+			result = 50.0/150*(value-650)+150;
 		}
 		return result;
 	}
@@ -180,19 +178,19 @@
 		if(value<=0) {
 			result=(double) 0;
 		}else if (value<=100) {
-			result = 50/100*(value-0)+0;
+			result = 50.0/100*(value-0)+0;
 		}else if (value<=200) {
-			result = 50/100*(value-100)+50;
+			result = 50.0/100*(value-100)+50;
 		}else if (value<=700) {
-			result = 50/500*(value-200)+100;
+			result = 50.0/500*(value-200)+100;
 		}else if (value<=1200) {
-			result = 50/500*(value-700)+150;
+			result = 50.0/500*(value-700)+150;
 		}else if (value<=2340) {
-			result = 100/1140*(value-1200)+200;
+			result = 100.0/1140*(value-1200)+200;
 		}else if (value<=3090) {
-			result = 100/750*(value-2340)+300;
+			result = 100.0/750*(value-2340)+300;
 		}else {
-			result = 100/750*(value-3090)+400;
+			result = 100.0/750*(value-3090)+400;
 		}
 		return result;
 	}
@@ -202,19 +200,19 @@
 		if(value<=0) {
 			result=(double) 0;
 		}else if (value<=5) {
-			result = 50/5*(value-0)+0;
+			result = 50.0/5*(value-0)+0;
 		}else if (value<=10) {
-			result = 50/5*(value-5)+50;
+			result = 50.0/5*(value-5)+50;
 		}else if (value<=35) {
-			result = 50/25*(value-10)+100;
+			result = 50.0/25*(value-10)+100;
 		}else if (value<=60) {
-			result = 50/25*(value-35)+150;
+			result = 50.0/25*(value-35)+150;
 		}else if (value<=90) {
-			result = 100/30*(value-60)+200;
+			result = 100.0/30*(value-60)+200;
 		}else if (value<=120) {
-			result = 100/30*(value-90)+300;
+			result = 100.0/30*(value-90)+300;
 		}else {
-			result = 100/30*(value-120)+400;
+			result = 100.0/30*(value-120)+400;
 		}
 		return result;
 	}
@@ -224,19 +222,19 @@
 		if(value<=0) {
 			result=(double) 0;
 		}else if (value<=100) {
-			result = 50/160*(value-0)+0;
+			result = 50.0/160*(value-0)+0;
 		}else if (value<=160) {
-			result = 50/40*(value-160)+50;
+			result = 50.0/40*(value-160)+50;
 		}else if (value<=215) {
-			result = 50/100*(value-200)+100;
+			result = 50.0/100*(value-200)+100;
 		}else if (value<=265) {
-			result = 50/100*(value-300)+150;
+			result = 50.0/100*(value-300)+150;
 		}else if (value<=800) {
-			result = 100/400*(value-400)+200;
+			result = 100.0/400*(value-400)+200;
 		}else if (value<=2100) {
-			result = 100/200*(value-800)+300;
+			result = 100.0/200*(value-800)+300;
 		}else {
-			result = 100/200*(value-1000)+400;
+			result = 100.0/200*(value-1000)+400;
 		}
 		return result;
 	}
@@ -246,19 +244,19 @@
 		if(value<=0) {
 			result=(double) 0;
 		}else if (value<=100) {
-			result = 50/100*(value-0)+0;
+			result = 50.0/100*(value-0)+0;
 		}else if (value<=160) {
-			result = 50/60*(value-100)+50;
+			result = 50.0/60*(value-100)+50;
 		}else if (value<=215) {
-			result = 50/55*(value-160)+100;
+			result = 50.0/55*(value-160)+100;
 		}else if (value<=265) {
-			result = 50/150*(value-215)+150;
+			result = 50.0/150*(value-215)+150;
 		}else if (value<=800) {
-			result = 100/535*(value-265)+200;
+			result = 100.0/535*(value-265)+200;
 		}else if (value<=2100) {
-			result = 100/12*(value-800)+300;
+			result = 100.0/12*(value-800)+300;
 		}else {
-			result = 100/12*(value-48)+400;
+			result = 100.0/12*(value-48)+400;
 		}
 		return result;
 	}
@@ -268,19 +266,19 @@
 		if(value<=0) {
 			result=(double) 0;
 		}else if (value<=50) {
-			result = 50/50*(value-0)+0;
+			result = 50.0/50*(value-0)+0;
 		}else if (value<=150) {
-			result = 50/100*(value-50)+50;
+			result = 50.0/100*(value-50)+50;
 		}else if (value<=475) {
-			result = 50/325*(value-150)+100;
+			result = 50.0/325*(value-150)+100;
 		}else if (value<=800) {
-			result = 50/325*(value-475)+150;
+			result = 50.0/325*(value-475)+150;
 		}else if (value<=1600) {
-			result = 100/800*(value-800)+200;
+			result = 100.0/800*(value-800)+200;
 		}else if (value<=2100) {
-			result = 100/500*(value-1600)+300;
+			result = 100.0/500*(value-1600)+300;
 		}else {
-			result = 100/520*(value-2100)+400;
+			result = 100.0/520*(value-2100)+400;
 		}
 		return result;
 	}
@@ -289,19 +287,19 @@
 		if(value<=0) {
 			result=(double) 0;
 		}else if (value<=40) {
-			result = 50/40*(value-0)+0;
+			result = 50.0/40*(value-0)+0;
 		}else if (value<=80) {
-			result = 50/40*(value-40)+50;
+			result = 50.0/40*(value-40)+50;
 		}else if (value<=180) {
-			result = 50/100*(value-80)+100;
+			result = 50.0/100*(value-80)+100;
 		}else if (value<=280) {
-			result = 50/100*(value-180)+150;
+			result = 50.0/100*(value-180)+150;
 		}else if (value<=565) {
-			result = 100/285*(value-280)+200;
+			result = 100.0/285*(value-280)+200;
 		}else if (value<=750) {
-			result = 100/185*(value-565)+300;
+			result = 100.0/185*(value-565)+300;
 		}else {
-			result = 100/190*(value-750)+400;
+			result = 100.0/190*(value-750)+400;
 		}
 		return result;
 	}
@@ -311,19 +309,19 @@
 		if(value<=0) {
 			result=(double) 0;
 		}else if (value<=5) {
-			result = 50/2*(value-0)+0;
+			result = 50.0/2*(value-0)+0;
 		}else if (value<=10) {
-			result = 50/2*(value-2)+50;
+			result = 50.0/2*(value-2)+50;
 		}else if (value<=35) {
-			result = 50/10*(value-4)+100;
+			result = 50.0/10*(value-4)+100;
 		}else if (value<=60) {
-			result = 50/10*(value-14)+150;
+			result = 50.0/10*(value-14)+150;
 		}else if (value<=90) {
-			result = 100/12*(value-24)+200;
+			result = 100.0/12*(value-24)+200;
 		}else if (value<=120) {
-			result = 100/12*(value-36)+300;
+			result = 100.0/12*(value-36)+300;
 		}else {
-			result = 100/12*(value-48)+400;
+			result = 100.0/12*(value-48)+400;
 		}
 		return result;
 	}

--
Gitblit v1.8.0