package com.zcxk.dao;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zcxk.dto.*;
import com.zcxk.dto.ranking.SceneDeviceDto;
import com.zcxk.dto.ranking.SceneDeviceQueryDto;
import com.zcxk.vo.AlarmDetailsVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;


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


/**
 *
 * 在线监测接口
 *
 * @author yjy
 * @since 2020-12-2
 */
@Mapper
public interface OnlineMonitorMapper {

    /**
     * 查询实时报警信息
     * @return
     */
    List<AlarmDetailsDto> selectAlarmDetails(AlarmDetailsDto alarmDetailsDto);
    /**
     * 查询实时报警数量
     * @return
     */
    List<Map<String, Object>> selectAlarmCount(AlarmDetailsDto alarmDetailsDto);
    /**
     * 查询地图悬浮数据
     * @return
     */
    List<MonitorDataCollectDto> selectMapSuspension(MonitorDataCollectDto monitorDataCollectDto);
    /**
     * 查询地图参数数据
     * @return
     */
    List<MonitorDataCollectDto> selectMapParam(MonitorDataCollectDto monitorDataCollectDto);
    /**
     * 分页查询
     * @return
     */
    IPage<OnlineDataDto> selectPage(@Param("page") IPage<OnlineDataDto> page, @Param("onlineDataDto") OnlineDataDto onlineDataDto);
    /**
     * 查询设备报警分析
     * @return
     */
    List<Map<String, Object>> selectAlarmStats(AlarmDetailsDto alarmDetailsDto);
    /**
     * 查询场景对应参数数据
     * @return
     */
    List<MonitorDataCollectDto> selectSceneParam(MonitorDataCollectDto monitorDataCollectDto);

    List<MonitorDataCollectDto> selectSceneParamForLastMonth(MonitorDataCollectDto monitorDataCollectDto);
    /**
     * 按管网名称分类查询设备数量
     * @return
     */
    List<Map<String, Object>> selectDeviceCount(OnlineDataDto onlineDataDto);
    /**
     * 查询设备地图参数数据
     * @return
     */
    List<MonitorDataCollectDto> selectDeviceMapParam(MonitorDataCollectDto monitorDataCollectDto);
    /**
     * 设备合格率
     * @return
     */
    List<DeviceCountStatsDto> statsDeviceQualified(OnlineDataDto onlineDataDto);
    /**
     * 设备属性合格率
     * @return
     */
    List<DeviceCountStatsDto> statsParmQualified(OnlineDataDto onlineDataDto);
    /**
     * 查询设备参数
     * @return
     */
    List<MonitorDataCollectDto> statsDeviceParm(OnlineDataDto onlineDataDto);
    /**
     * 管网分页查询
     * @return
     */
    IPage<OnlineDataDto> selectPipeNetPage(@Param("page") IPage<OnlineDataDto> page, @Param("onlineDataDto") OnlineDataDto onlineDataDto);
    /**
     * 查询管网地图图层
     * @return
     */
    List<PipeNetLayerDto> selectPipeNetLayer(OnlineDataDto onlineDataDto);

    /**
     * 查询昨日水厂制水总量
     * @return
     */
    Double selectTotalYieldWater(MonitorDataCollectDto monitorDataCollectDto);

    /**
     * 查询场景列表
     * @return
     */
    List<OnlineDataDto> selectList(OnlineDataDto onlineDataDto);

    /**
     * 查询管网设备列表
     * @return
     */
    List<OnlineDataDto> selectPipeNetList(OnlineDataDto onlineDataDto);

    /**
     * 查找场景下的所有设备
     * @return
     */
    List<SceneDeviceDto> selectSceneDevice(SceneDeviceQueryDto sceneDeviceQueryDto);

    /**
     * 查询场景实时状态数量
     * @return
     */
    List<Map<String, Object>> selectStateCount(OnlineDataDto onlineDataDto);


    /**
    * @Author lihui
    * @Description 查询设备报警分析
    * @Date 17:19 2021/5/6
    * @Param [dto]
    * @return java.util.List<com.zcxk.vo.AlarmDetailsVo>
    **/
    List<AlarmDetailsVo> selectAlarmStatsInfo(AlarmDetailsQueryDto dto);
}
