于紫祥_1901
2020-12-02 da0abda12d95d701f8873db506136898e66fef8e
aqi首要污染物算法更新
1 files modified
46 ■■■■ changed files
src/main/java/com/moral/util/AQICalculation2.java 46 ●●●● patch | view | raw | blame | history
src/main/java/com/moral/util/AQICalculation2.java
@@ -5,7 +5,7 @@
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();
@@ -28,38 +28,37 @@
            switch (key) {
                case "PM2_5":PM2_5AQI = PM2_5AQI(value);
                    AQIList.add(PM2_5AQI);
                    AQIMap.put("PM2_5",PM2_5AQI);
                    break;
                case "PM10":PM10AQI = PM10AQI(value);
                    AQIList.add(PM10AQI);
                    AQIMap.put("PM10",PM10AQI);
                    break;
                case "SO2":SO2AQI = SO2AQI(value);
                    AQIList.add(SO2AQI);
                    AQIMap.put("SO2",SO2AQI);
                    break;
                case "NO2":NO2AQI = NO2AQI(value);
                    AQIList.add(NO2AQI);
                    AQIMap.put("NO2",NO2AQI);
                    break;
                case "CO":COAQI = COAQI(value);
                    AQIList.add(COAQI);
                    AQIMap.put("CO",COAQI);
                    break;
                case "maxO3_8h":O3AQI = O3AQI(value);
                    AQIList.add(O3AQI);
                    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()
        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(AQIMAX+0.5))).intValue());
        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();
@@ -80,35 +79,34 @@
            Double maxO38hAQI;
            switch (key) {
                case "PM2_5":PM2_5AQI = PM2_5AQI(value);
                    AQIList.add(PM2_5AQI);
                    AQIMap.put("PM2_5",PM2_5AQI);
                    break;
                case "PM10":PM10AQI = PM10AQI(value);
                    AQIList.add(PM10AQI);
                    AQIMap.put("PM10",PM10AQI);
                    break;
                case "SO2":SO2AQI = SO2DayAQI(value);
                    AQIList.add(SO2AQI);
                case "SO2":SO2AQI = SO2AQI(value);
                    AQIMap.put("SO2",SO2AQI);
                    break;
                case "NO2":NO2AQI = NO2DayAQI(value);
                    AQIList.add(NO2AQI);
                case "NO2":NO2AQI = NO2AQI(value);
                    AQIMap.put("NO2",NO2AQI);
                    break;
                case "CO":COAQI = CODayAQI(value);
                    AQIList.add(COAQI);
                case "CO":COAQI = COAQI(value);
                    AQIMap.put("CO",COAQI);
                    break;
                case "maxO3_8h":maxO38hAQI = O3DayAQI(value);
                    AQIList.add(maxO38hAQI);
                    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", new Double(Math.floor(Math.round(AQIMAX+0.5))).intValue());
            returnMap.put("AQI", new Double(Math.floor(Math.round(max0.get().getValue()+0.5))).intValue());
        }else {
            returnMap.put("maxSensor","");
            returnMap.put("AQI", "");