jinpengyong
2022-01-17 3ec35029adfb63e79ad17bf351317768e687ec2b
screen-common/src/main/java/com/moral/util/AmendUtils.java
@@ -327,4 +327,40 @@
        result.put(Constants.SENSOR_CODE_O3, percentile(data, 90));
        return result;
    }
    //各因子年均值计算
    /**
     * 年均值算法
     * PM2.5,PM10,CO,日均值95百分位
     * SO2,NO2,日均值98百分位
     * O3,日最大值90百分位
     *
     * @param list       数据
     * @param sensorCode 因子code
     */
    public static Double getAvgOfYear(List<Map<String, Object>> list, String sensorCode) {
        List<Double> data = new ArrayList<>();
        for (Map<String, Object> dataMap : list) {
            Map<String, Object> dataValue = JSONObject.parseObject((String) dataMap.get("value"), Map.class);
            Object o = dataValue.get(sensorCode);
            if (ObjectUtils.isEmpty(o)) {
                continue;
            }
            Double sensorValue = Double.parseDouble(o.toString());
            data.add(sensorValue);
        }
        if (data.size() == 0) {
            return null;
        }
        Double v = null;
        if ("PM2_5".equals(sensorCode) || "PM10".equals(sensorCode) || "CO".equals(sensorCode)) {
            v = percentile(data, 95);
        } else if ("SO2".equals(sensorCode) || "NO2".equals(sensorCode)) {
            v = percentile(data, 98);
        } else if ("O3".equals(sensorCode)) {
            v = percentile(data, 90);
        }
        return v;
    }
}