package com.zcxk.charge.core.dao;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zcxk.charge.api.dto.*;
import com.zcxk.charge.api.dto.ranking.SceneDeviceQueryDto;
import com.zcxk.charge.api.vo.*;
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 {

    /**
    * 查询实时报警信息
    * @author Andy
    * @date 9:18 2021/8/18
    * @param alarmDetailsDto:
    * @return java.util.List<com.zcxk.charge.api.vo.AlarmDetailsVo>
    **/
    List<AlarmDetailsVo> selectAlarmDetails(AlarmDetailsDto alarmDetailsDto);

    /**
    * 查询实时报警数量
    * @author Andy
    * @date 9:18 2021/8/18
    * @param alarmDetailsDto:
    * @return java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
    **/
    List<Map<String, Object>> selectAlarmCount(AlarmDetailsDto alarmDetailsDto);

    /**
    * 查询地图悬浮数据
    * @author Andy
    * @date 9:18 2021/8/18
    * @param monitorDataCollectDto:
    * @return java.util.List<com.zcxk.charge.api.vo.MonitorDataCollectVo>
    **/
    List<MonitorDataCollectVo> selectMapSuspension(MonitorDataCollectDto monitorDataCollectDto);

    /**
    * 查询地图参数数据
    * @author Andy
    * @date 9:18 2021/8/18
    * @param monitorDataCollectDto:
    * @return java.util.List<com.zcxk.charge.api.vo.MonitorDataCollectVo>
    **/
    List<MonitorDataCollectVo> selectMapParam(MonitorDataCollectDto monitorDataCollectDto);

    /**
    * 分页查询
    * @author Andy
    * @date 9:18 2021/8/18
    * @param page:
    * @param onlineDataDto:
    * @return com.baomidou.mybatisplus.core.metadata.IPage<com.zcxk.charge.api.vo.OnlineDataVo>
    **/
    IPage<OnlineDataVo> selectPage(@Param("page") IPage<OnlineDataDto> page, @Param("onlineDataDto") OnlineDataDto onlineDataDto);

    /**
    * 查询设备报警分析
    * @author Andy
    * @date 9:18 2021/8/18
    * @param alarmDetailsDto:
    * @return java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
    **/
    List<Map<String, Object>> selectAlarmStats(AlarmDetailsDto alarmDetailsDto);

    /**
    * 查询场景对应参数数据
    * @author Andy
    * @date 9:18 2021/8/18
    * @param monitorDataCollectDto:
    * @return java.util.List<com.zcxk.charge.api.vo.MonitorDataCollectVo>
    **/
    List<MonitorDataCollectVo> selectSceneParam(MonitorDataCollectDto monitorDataCollectDto);

    /**
    * selectSceneParamForLastMonth
    * @author Andy
    * @date 9:18 2021/8/18
    * @param monitorDataCollectDto:
    * @return java.util.List<com.zcxk.charge.api.vo.MonitorDataCollectVo>
    **/
    List<MonitorDataCollectVo> selectSceneParamForLastMonth(MonitorDataCollectDto monitorDataCollectDto);

    /**
    * 按管网名称分类查询设备数量
    * @author Andy
    * @date 9:18 2021/8/18
    * @param onlineDataDto:
    * @return java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
    **/
    List<Map<String, Object>> selectDeviceCount(OnlineDataDto onlineDataDto);

    /**
    * 查询设备地图参数数据
    * @author Andy
    * @date 9:18 2021/8/18
    * @param monitorDataCollectDto:
    * @return java.util.List<com.zcxk.charge.api.vo.MonitorDataCollectVo>
    **/
    List<MonitorDataCollectVo> selectDeviceMapParam(MonitorDataCollectDto monitorDataCollectDto);

    /**
    * 设备合格率
    * @author Andy
    * @date 9:19 2021/8/18
    * @param onlineDataDto:
    * @return java.util.List<com.zcxk.charge.api.vo.DeviceCountStatsVo>
    **/
    List<DeviceCountStatsVo> statsDeviceQualified(OnlineDataDto onlineDataDto);

    /**
    * 设备属性合格率
    * @author Andy
    * @date 9:19 2021/8/18
    * @param onlineDataDto:
    * @return java.util.List<com.zcxk.charge.api.vo.DeviceCountStatsVo>
    **/
    List<DeviceCountStatsVo> statsParmQualified(OnlineDataDto onlineDataDto);

    /**
    * 查询设备参数
    * @author Andy
    * @date 9:19 2021/8/18
    * @param onlineDataDto:
    * @return java.util.List<com.zcxk.charge.api.vo.MonitorDataCollectVo>
    **/
    List<MonitorDataCollectVo> statsDeviceParm(OnlineDataDto onlineDataDto);

    /**
    * 管网分页查询
    * @author Andy
    * @date 9:19 2021/8/18
    * @param page:
    * @param onlineDataDto:
    * @return com.baomidou.mybatisplus.core.metadata.IPage<com.zcxk.charge.api.vo.OnlineDataVo>
    **/
    IPage<OnlineDataVo> selectPipeNetPage(@Param("page") IPage<OnlineDataDto> page, @Param("onlineDataDto") OnlineDataDto onlineDataDto);

    /**
    * T查询管网地图图层
    * @author Andy
    * @date 9:19 2021/8/18
    * @param onlineDataDto:
    * @return java.util.List<com.zcxk.charge.api.vo.PipeNetLayerVo>
    **/
    List<PipeNetLayerVo> selectPipeNetLayer(OnlineDataDto onlineDataDto);

    /**
    * 查询昨日水厂制水总量
    * @author Andy
    * @date 9:19 2021/8/18
    * @param monitorDataCollectDto:
    * @return java.lang.Double
    **/
    Double selectTotalYieldWater(MonitorDataCollectDto monitorDataCollectDto);

    /**
    * 查询场景列表
    * @author Andy
    * @date 9:19 2021/8/18
    * @param onlineDataDto:
    * @return java.util.List<com.zcxk.charge.api.vo.OnlineDataVo>
    **/
    List<OnlineDataVo> selectList(OnlineDataDto onlineDataDto);

    /**
    * 查询管网设备列表
    * @author Andy
    * @date 9:19 2021/8/18
    * @param onlineDataDto:
    * @return java.util.List<com.zcxk.charge.api.vo.OnlineDataVo>
    **/
    List<OnlineDataVo> selectPipeNetList(OnlineDataDto onlineDataDto);

    /**
    * 查找场景下的所有设备
    * @author Andy
    * @date 9:19 2021/8/18
    * @param sceneDeviceQueryDto:
    * @return java.util.List<com.zcxk.charge.api.vo.SceneDeviceVo>
    **/
    List<SceneDeviceVo> selectSceneDevice(SceneDeviceQueryDto sceneDeviceQueryDto);

    /**
    * 查询场景实时状态数量
    * @author Andy
    * @date 9:19 2021/8/18
    * @param onlineDataDto:
    * @return java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
    **/
    List<Map<String, Object>> selectStateCount(OnlineDataDto onlineDataDto);


    /**
    * 查询设备报警分析
    * @author Andy
    * @date 9:20 2021/8/18
    * @param dto:
    * @return java.util.List<com.zcxk.charge.api.vo.AlarmDetailsVo>
    **/
    List<AlarmDetailsVo> selectAlarmStatsInfo(AlarmDetailsQueryDto dto);
}
