cjl
2023-10-20 58e6dec8c583778714bb1447755f9ffc46b0c5ec
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package com.moral.util;
 
/**
 * @program: screen
 * @description: 污染物相关工具类
 * @author: lizijie
 * @create: 2021-12-07 17:34
 **/
public class PollutantUtils {
 
    /*1小时浓度限值*/
    private static Double[] SO2_Hourly_Limit_Data = new Double[]{0d, 150d, 500d, 650d, 800d};
    private static Double[] NO2_Hourly_Limit_Data = new Double[]{0d, 100d, 200d, 700d, 1200d, 2340d, 3090d, 3840d};
    private static Double[] PM10_Hourly_Limit_Data = new Double[]{0d, 50d, 150d, 250d, 350d, 420d, 500d, 600d};
    private static Double[] CO_Hourly_Limit_Data = new Double[]{0d, 5d, 10d, 35d, 60d, 90d, 120d, 150d};
    private static Double[] PM2_5_Hourly_Limit_Data = new Double[]{0d, 35d, 75d, 115d, 150d, 250d, 350d, 500d};
    private static Double[] O3_Hourly_Limit_Data = new Double[]{0d, 160d, 200d, 300d, 400d, 800d, 1000d, 1200d};
 
    /**
     * 计算污染物污染等级
     */
    public static int pollutantLevel(Double num,String sensorCode){
        Double[] pollutantArray = null;
        switch (sensorCode){
            case "a34004" : pollutantArray = PM2_5_Hourly_Limit_Data;
                break;
            case "a34002" : pollutantArray = PM10_Hourly_Limit_Data;
                break;
            case "a21026" : pollutantArray = SO2_Hourly_Limit_Data;
                break;
            case "a21004" : pollutantArray = NO2_Hourly_Limit_Data;
                break;
            case "a21005" : pollutantArray = CO_Hourly_Limit_Data;
                break;
            case "a05024" : pollutantArray = O3_Hourly_Limit_Data;
                break;
            default:
                break;
        }
        return getStartIndexFromArray(num,pollutantArray);
    }
 
    /**
     * 获取数值对应数组中的索引范围的开始值
     */
    public static int getStartIndexFromArray(Double num,Double[] array){
        for (int i=0; i<array.length-1; i++){
            if (num >= array[i] && num<array[i+1]){
                return i;
            }
            if (i == array.length-2){
                return i+1;
            }
        }
        return 0;
    }
}