package cn.cecep.talroad.service;

import cn.cecep.talroad.domain.SEnvWaterMonHour;
import cn.cecep.talroad.domain.SEnvWaterMonReal;
import cn.cecep.talroad.domain.analysis.SRaWaterPermittedOnline;
import cn.cecep.talroad.vo.EChartsVO;
import cn.cecep.talroad.vo.SEnvWaterMonHourVo;
import cn.cecep.talroad.vo.analysis.FactoryOutletStaticsVo;
import cn.cecep.talroad.vo.query.SEnvWaterMonHourQuery;
import cn.cecep.talroad.vo.query.analysis.SRaWaterPermittedOnlineQuery;
import cn.hutool.core.date.DateTime;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.Collection;
import java.util.Date;
import java.util.List;
import org.apache.ibatis.annotations.Param;

/**
 * 废水监测数据Service接口
 *
 * @author szhpt
 * @date 2023-01-10*/
public interface ISEnvWaterMonHourService extends  IService<SEnvWaterMonHour>
{
    /**
     * 查询废水监测数据列表
     *
     * @param sEnvWaterMonReal 废水监测数据
     * @return 废水监测数据集合
     */
    List<SEnvWaterMonHourVo> selectSEnvWaterMonHourList(SEnvWaterMonHourQuery sEnvWaterMonReal);

    IPage<SEnvWaterMonHourVo> selectSEnvWaterMonHourPage(SEnvWaterMonHourQuery sEnvWaterMonReal);

    EChartsVO getCharData(SEnvWaterMonHourQuery sEnvWaterMonReal);

    List<EChartsVO> getCharDataList(SEnvWaterMonHourQuery sEnvWaterMonReal);

    List<SEnvWaterMonHour> selectLastDayData(String pollutantOutletType, Date lastDayBegin, Date lastDayEnd);

    /**
     * 查询废水数据当前日所有小时平均数据
     * @param dateStr
     * @return
     */
    List<SEnvWaterMonHour> selectAvgDataForDay(@Param("dateStr")String dateStr);

    List<SEnvWaterMonHour> selectSRaWaterPermittedOnlineListBy(SRaWaterPermittedOnlineQuery lambdaQueryWrapper);

    List<SEnvWaterMonHour> selectSRaWaterSourceListBy(SRaWaterPermittedOnlineQuery lambdaQueryWrapper);

    List<FactoryOutletStaticsVo> selectLastDayCountData(DateTime queryBeginTime, DateTime queryEndTime);

    List<SEnvWaterMonHour> selectManualSRaWaterPermittedOnlineListBy(SRaWaterPermittedOnlineQuery lambdaQueryWrapper);

    List<SEnvWaterMonHour> selectManualSRaWaterSourceListBy(SRaWaterPermittedOnlineQuery lambdaQueryWrapper);
}
