package cn.cecep.talroad.service.analysis;

import cn.cecep.talroad.domain.PcOutlet;
import cn.cecep.talroad.vo.analysis.OutletPermitPollutantVO;
import cn.cecep.talroad.vo.analysis.PcOutletPermitPollutantVO;

import java.lang.reflect.InvocationTargetException;
import java.math.BigDecimal;
import java.text.ParseException;

/**
 * 浓度计算服务类
 */
public interface IConcentrationMathService {
    /**
     * 大气浓度超标
     */
    void doGasPollutantHourConcentration(String mathDate) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException;

    /**
     * 水浓度超标
     */
    void doWaterPollutantDayConcentration(String mathDate) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException;

    /**
     * 大气浓度预警
     */
    void doGasPollutantHourConcentrationAlarm(String mathDate) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException, ParseException;

    /**
     * 水浓度预警
     */
    void doWaterPollutantDayConcentrationAlarm(String mathDate) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException;


    /**
     * 无组织大气浓度预警、超标报警
     * @param flag
     */
    void doGasOverStandAlarmAndWarn(boolean flag);

    void checkExceedingTheStandard(PcOutlet pcOutlet,
                                   OutletPermitPollutantVO outletPermitPollutantVO,
                                   BigDecimal mathEmissions,
                                   String alarmDate,
                                   String outletType,
                                   String problemCode) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException, ParseException;

    /**
     * 废气浓度超标计算器
     * @param pcOutlet
     * @param outletPermitPollutantVO
     * @param mathEmissions
     * @param alarmDate
     * @param outletType
     */
    void checkExceedingTheStandard(PcOutlet pcOutlet,
                                   OutletPermitPollutantVO outletPermitPollutantVO,
                                   BigDecimal mathEmissions,
                                   String alarmDate,
                                   String outletType,
                                   String problemCode,
                                   String message) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException, ParseException;



    void insertBatch();

    /**
     * 大气数据浓度超标 AI检出异常数据复核计算
     * @param mathDate
     */
    void doGasPollutantHourConcentrationAIReview(String mathDate) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException;
}
