package cn.cecep.talroad.mapper;

import cn.cecep.talroad.data.analyse.task.limestone.entity.GasDeviceVo;
import cn.cecep.talroad.domain.SEnvGasMonReal;
import cn.cecep.talroad.vo.SEnvGasMonRealVo;
import cn.cecep.talroad.vo.analysis.AvgValueVo;
import cn.cecep.talroad.vo.analysis.FactoryOutletStaticsVo;
import cn.cecep.talroad.vo.query.SEnvGasMonRealQuery;
import cn.hutool.core.date.DateTime;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.Date;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

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

/**
 * 废气监测数据Mapper接口
 *
 * @author szhpt
 * @date 2023-01-10*/
@Mapper
public interface SEnvGasMonRealMapper extends BaseMapper<SEnvGasMonReal>
{
    /**
     * 查询废气监测数据列表
     *
     * @param sEnvGasMonReal 废气监测数据
     * @return 废气监测数据集合
     */
    public List<SEnvGasMonRealVo> selectSEnvGasMonRealList(Page<?> page, @Param("sEnvGasMonReal") SEnvGasMonRealQuery sEnvGasMonReal, @Param("ew") Wrapper<SEnvGasMonReal> queryWrapper);

    List<SEnvGasMonRealVo> selectSEnvGasMonRealListByYear(String year);

    List<SEnvGasMonRealVo> selectSEnvGasMonRealListGroupByYear(@Param("monitoringStartTime") String monitoringStartTime, @Param("monitoringEndTime") String monitoringEndTime, @Param("industry") String industry,@Param("regionCodes") List<String> regionCodes);

    /**
     * 查询小时内分钟数据的平均浓度
     * @param dateStr
     * @return
     */
    List<SEnvGasMonReal> selectAvgDataForHour(@Param("dateStr") String dateStr,@Param("dateStrEnd") String dateStrEnd);

    List<SEnvGasMonReal> selectSEnvGasMonRealListEchart(@Param("sEnvGasMonReal") SEnvGasMonRealQuery query);

    List<SEnvGasMonRealVo.EmissionSumVo> selectEmissionStat(@Param("startTime") String startTime, @Param("endTime") String endTime, @Param("outletIds") Set<String> outletIds);

    List<SEnvGasMonRealVo.OxygenEmissionAvg> selectEmissionAvg(@Param("startTime") String startTime, @Param("endTime") String endTime, @Param("outletIds") Set<String> outletIds);
    List<AvgValueVo> selectDayEmissionAvg(@Param("startTime") String startTime, @Param("endTime") String endTime);

    List<GasDeviceVo> selectGasByDeviceIds(@Param("deviceIds") List<String> deviceIds, @Param("startTime") String startTime, @Param("endTime") String endTime);

    List<AvgValueVo> getEmissionDayAvg(@Param("startTime") String startTime, @Param("endTime") String endTime);

    List<SEnvGasMonReal> selectLastHourData(@Param("pollutantOutletType") String pollutantOutletType,@Param("lastHour") Date lastHour);

    BigDecimal selectByOutLetId(@Param("factoryId") String factoryId, @Param("outLetId") String id, @Param("startTime") Date startTime, @Param("endTime") Date endTime);

    List<FactoryOutletStaticsVo> selectLastDayData(@Param("lastDayBegin") DateTime queryBeginTime, @Param("lastDayEnd") DateTime queryEndTime);

    List<SEnvGasMonRealVo.EmissionAvgAndMax> selectEmissionAvgAndMax(@Param("startTime") String startTime, @Param("endTime") String endTime, @Param("outletIds") Set<String> outletIds);
}
