package cn.cecep.talroad.mapper.effective;

import cn.cecep.talroad.domain.effective.QEnvgasWqDay;
import cn.cecep.talroad.vo.effective.AirParmaVo;
import cn.cecep.talroad.vo.effective.AirQualityData;
import cn.cecep.talroad.vo.effective.MonthDataVo;
import cn.cecep.talroad.vo.effective.QEnvgasAreaTargetVo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 区域日数据表 Mapper 接口
 * </p>
 *
 * @author author
 * @since 2022-07-13
 */
public interface QEnvgasWqDayMapper extends BaseMapper<QEnvgasWqDay> {

    /**
     * 查询区域优良天数
     *
     * @param year       年份
     * @param regionCode 区域编号
     * @return
     */
    List<MonthDataVo> findYearGoodDays(@Param("year") int year, @Param("regionCode") String regionCode);

    /**
     * 查询区域重污染天数
     *
     * @param year       年份
     * @param regionCode 区域编号
     * @return
     */
    List<MonthDataVo> findYearHeavyDays(@Param("year") int year, @Param("regionCode") String regionCode);

    /**
     * 查询区域co超标天数
     *
     * @param year       年份
     * @param regionCode 区域编号
     * @param stand      目标值
     * @return
     */
    List<MonthDataVo> findYearCoOverDays(@Param("year") int year, @Param("regionCode") String regionCode, @Param("stand") BigDecimal stand);

    /**
     * 查询区域o38h超标天数
     *
     * @param year       年份
     * @param regionCode 区域编号
     * @param stand      目标值
     * @return
     */
    List<MonthDataVo> findYearO38hOverDays(@Param("year") int year, @Param("regionCode") String regionCode, @Param("stand") BigDecimal stand);

    Map findStandardMonitoringDay(@Param("userRegionCode") String userRegionCode);

    List<QEnvgasAreaTargetVo> findStandardTargetDay(@Param("userRegionCode") String userRegionCode, @Param("time") String time, @Param("type") String type);

    Map findStandardMonitoringLastDay(String userRegionCode);

    BigDecimal selectByExceedDay(@Param("targetValue") BigDecimal targetValue, @Param("regionCode") String regionCode, @Param("divisor") String divisor);


    List<AirQualityData> queryAreaDayData(AirParmaVo airParmaVo);

    BigDecimal getPollutionDay(@Param("regionCode") String regionCode, @Param("type") String s);
}
