package com.casic.missiles.modular.system.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.casic.missiles.core.datascope.DataScope;
import com.casic.missiles.modular.system.dto.*;
import com.casic.missiles.modular.system.dto.ExcelModel.*;
import com.casic.missiles.modular.system.dto.statistic.DataH2s;
import com.casic.missiles.modular.system.model.BusWellInfo;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 闸井信息表 Mapper 接口
 * </p>
 *
 * @author stylefeng123
 * @since 2019-05-13
 */
public interface DataAnalysisMapper extends BaseMapper<BusWellInfo> {

    List<BusWellInfoDto> getAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") Long deptid);

    List<BusWellInfoDto> getNotAlarmWellList(@Param("scope") DataScope dataScope, @Param("keywords") String keywords, @Param("wellType") String deviceType, @Param("deptid") Long deptid);

    DeviceData wellcoverData(@Param("devcode") String devcode);

    DeviceData liquidData(@Param("devcode") String devcode);

    DeviceData harmfulgasData(@Param("devcode") String devcode);

    DeviceData gasData(@Param("devcode") String devcode);

    DeviceData temphumData(@Param("devcode") String devcode);

    DeviceData digData(@Param("devcode") String devcode);

    DeviceData noiseData(@Param("devcode") String devcode);

    DeviceData wellcoverlocaData(@Param("devcode") String devcode);

    /**
     * 燃气液位
     *
     * @param devcode
     * @return
     */
    DeviceData lgGasData(@Param("devcode") String devcode);

    /**
     * 燃气液位
     *
     * @param devcode
     * @return
     */
    DeviceData lgLiquidData(@Param("devcode") String devcode);

    BfztCountDataDto bfztCountData(@Param("deptIds") List<Long> deptIds, @Param("isApp") Boolean isApp);

    List<WellCoverDataDto> selectWellDataScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page<WellCoverDataDto> page, @Param("deptid") Long deptid, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("keywords") String keywords);

    List<DeviceDataExcelDto> selectLiquidDataScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page<DeviceDataExcelDto> page, @Param("deptid") Long deptid, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("keywords") String keywords);

    List<DeviceDataExcelDto> selectGasDataScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page<DeviceDataExcelDto> page, @Param("deptid") Long deptid, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("keywords") String keywords);

    List<DeviceDataExcelDto> selectTubeDataScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page<DeviceDataExcelDto> page, @Param("deptid") Long deptid, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("keywords") String keywords);

    List<HarmfulDataDto> selectHarmfulDataScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page<HarmfulDataDto> page, @Param("deptid") Long deptid, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("keywords") String keywords);

    List<TemhumDataDto> selectTempDataScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page<TemhumDataDto> page, @Param("deptid") Long deptid, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("keywords") String keywords);

    List<TemppressDataDto> selectTempPressDataScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page<TemppressDataDto> page, @Param("deptid") Long deptid, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("keywords") String keywords);

    List<DigNoiseDataDto> selectDigDataScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page<DigNoiseDataDto> page, @Param("deptid") Long deptid, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("keywords") String keywords);

    List<WellAppointDataDto> selectWellLocDataScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page<WellAppointDataDto> page, @Param("deptid") Long deptid, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("keywords") String keywords);

    List<DigNoiseDataDto> selectNoiseDataScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page<DigNoiseDataDto> page, @Param("deptid") Long deptid, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("keywords") String keywords);

    List<AlarmDeptStaticsDto> alarmsStaticsByDept(@Param("deviceType") Long deviceType, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("dataScope") DataScope dataScope, @Param("deptid") Long deptid, @Param("searchCurr") Boolean searchCurr);

    List<DeviceDataExcelDto> selectGasLiquidDataLiquidScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page<DeviceDataExcelDto> page, @Param("deptIds") List<Long> deptIds, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("keywords") String keywords);

    List<DeviceDataExcelDto> selectGasLiquidDataGasScopePage(@Param("dataScope") DataScope dataScope, @Param("page") Page<DeviceDataExcelDto> page, @Param("deptIds") List<Long> deptIds, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("keywords") String keywords);

    List<Map<String, Object>> selectLiquidDataList(@Param("dataScope") DataScope dataScope, @Param("wellCode") String wellCode, @Param("beginTime") String beginTime, @Param("endTime") String endTime);

    List<Map<String, Object>> selectGasDataList(@Param("dataScope") DataScope dataScope, @Param("wellCode") String wellCode, @Param("beginTime") String beginTime, @Param("endTime") String endTime);

    List<Map<String, Object>> selectTempDataList(@Param("dataScope") DataScope dataScope, @Param("wellCode") String wellCode, @Param("beginTime") String beginTime, @Param("endTime") String endTime);

    List<Map<String, Object>> selectHarmfulDataList(@Param("dataScope") DataScope dataScope, @Param("wellCode") String wellCode, @Param("beginTime") String beginTime, @Param("endTime") String endTime);

    List<HydrantDataDto> getHydrantlist(@Param("dataScope") DataScope dataScope,@Param("page")Page<HydrantDataDto>  page, @Param("deptid") Long deptid,
                                        @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("keywords") String keywords);

    List<H2SDataDto> selectH2sListDataScopePage(@Param("dataScope") DataScope dataScope, @Param("page")Page<H2SDataDto>  page, @Param("keywords") String keywords,
                             @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("deptid") Long deptid);
}
