cjl
2025-01-06 27e6bc3df3e39e0d0b147b155a89ad6837ea972b
screen-common/src/main/java/com/moral/util/ComprehensiveIndexUtils.java
@@ -1,5 +1,7 @@
package com.moral.util;
import org.springframework.util.ObjectUtils;
import java.util.*;
/**
@@ -45,12 +47,12 @@
        Double ICO = CCO / SCO;
        Double IO3 = CO3 / SO3;
        //计算综合指数
        Double comprehensiveIndex = MathUtils.add(ISO2,INO2);
        comprehensiveIndex = MathUtils.add(comprehensiveIndex,IPM25);
        comprehensiveIndex = MathUtils.add(comprehensiveIndex,IPM10);
        comprehensiveIndex = MathUtils.add(comprehensiveIndex,ICO);
        comprehensiveIndex = MathUtils.add(comprehensiveIndex,IO3);
        comprehensiveIndex = AmendUtils.sciCal(comprehensiveIndex,2);
        Double comprehensiveIndex = MathUtils.add(ISO2, INO2);
        comprehensiveIndex = MathUtils.add(comprehensiveIndex, IPM25);
        comprehensiveIndex = MathUtils.add(comprehensiveIndex, IPM10);
        comprehensiveIndex = MathUtils.add(comprehensiveIndex, ICO);
        comprehensiveIndex = MathUtils.add(comprehensiveIndex, IO3);
        comprehensiveIndex = AmendUtils.sciCal(comprehensiveIndex, 2);
        return comprehensiveIndex;
    }
@@ -58,7 +60,7 @@
     * @Description: 计算各因子浓度值
     * SO2 NO2 PM10 PM2.5为月均浓度,CO取日均值的第九十五百分位,O3取日最大八小时值的第九十百分位
     * @Param: [datas]
     * @return: java.util.Map<java.lang.String   ,   java.lang.Object>
     * @return: java.util.Map<java.lang.String, java.lang.Object>
     * @Author: 陈凯裕
     * @Date: 2021/9/27
     */
@@ -162,4 +164,55 @@
        return result;
    }
    /**
     * @Description: 获取日综合指数,参数为日六参数据
     * @Param: [data]
     * @return: Double
     */
    public static Double dailyData(Map<String, Object> data) {
        if (data == null)
            return null;
        Double CPM25 = Double.parseDouble(data.get("PM2_5").toString());
        Double CPM10 = Double.parseDouble(data.get("PM10").toString());
        Double CSO2 = Double.parseDouble(data.get("SO2").toString());
        Double CNO2 = Double.parseDouble(data.get("NO2").toString());
        Double CCO = Double.parseDouble(data.get("CO").toString());
        Object o3 = data.get("O3");
        Double CO3 = null;
        if (!ObjectUtils.isEmpty(o3)) {
            CO3 = Double.parseDouble(o3.toString());
        }
        //S开头为污染物年均值二级标准(当污染物是CO时,采用日均值二级标准。当污染是O3时,采用八小时均值二级标准)
        //数据来源GB 3095-2012
        Double SSO2 = 60d;
        Double SNO2 = 40d;
        Double SPM25 = 35d;
        Double SPM10 = 70d;
        Double SCO = 4d;
        Double SO3 = 160d;
        //计算污染物单项指数
        Double ISO2 = CSO2 / SSO2;
        Double INO2 = CNO2 / SNO2;
        Double IPM25 = CPM25 / SPM25;
        Double IPM10 = CPM10 / SPM10;
        Double ICO = CCO / SCO;
        Double IO3 = null;
        if (!ObjectUtils.isEmpty(CO3)) {
            IO3 = CO3 / SO3;
        }
        //计算综合指数
        Double comprehensiveIndex = MathUtils.add(ISO2, INO2);
        comprehensiveIndex = MathUtils.add(comprehensiveIndex, IPM25);
        comprehensiveIndex = MathUtils.add(comprehensiveIndex, IPM10);
        comprehensiveIndex = MathUtils.add(comprehensiveIndex, ICO);
        if (!ObjectUtils.isEmpty(IO3)) {
            comprehensiveIndex = MathUtils.add(comprehensiveIndex, IO3);
        }
        comprehensiveIndex = AmendUtils.sciCal(comprehensiveIndex, 2);
        return comprehensiveIndex;
    }
}