package com.zcxk.charge.web.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zcxk.charge.api.dto.*;
import com.zcxk.charge.api.vo.*;

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

/**
 * @description
 * @author  yjy
 * @data 2020-12-2
 */
public interface OnlineMonitorService {

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

    /**
    * 查询实时报警数量
    * @author Andy
    * @date 18:10 2021/8/17
    * @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 18:10 2021/8/17
    * @param monitorDataCollectDto:
    * @return java.util.List<com.zcxk.charge.api.vo.MonitorDataCollectVo>
    **/
    List<MonitorDataCollectVo> selectMapSuspension(MonitorDataCollectDto monitorDataCollectDto);

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

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

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

    /**
    * 查询设备报警分析
    * @author Andy
    * @date 18:11 2021/8/17
    * @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 18:11 2021/8/17
    * @param monitorDataCollectDto:
    * @return java.util.List<com.zcxk.charge.api.vo.MonitorDataCollectVo>
    **/
    List<MonitorDataCollectVo> selectSceneParam(MonitorDataCollectDto monitorDataCollectDto);

    /**
    * 按管网名称分类查询设备数量
    * @author Andy
    * @date 18:11 2021/8/17
    * @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 18:11 2021/8/17
    * @param monitorDataCollectDto:
    * @return java.util.List<com.zcxk.charge.api.vo.MonitorDataCollectVo>
    **/
    List<MonitorDataCollectVo> selectDeviceMapParam(MonitorDataCollectDto monitorDataCollectDto);

    /**
    * 统计设备合格数据
    * @author Andy
    * @date 18:11 2021/8/17
    * @param onlineDataDto:
    * @return java.util.List<com.zcxk.charge.api.vo.DeviceCountStatsVo>
    **/
    List<DeviceCountStatsVo> statsDeviceQualified(OnlineDataDto onlineDataDto);

    /**
    * 统计今日累计流量
    * @author Andy
    * @date 18:11 2021/8/17
    * @param onlineDataDto:
    * @return java.util.List<com.zcxk.charge.api.vo.MonitorDataCollectVo>
    **/
    List<MonitorDataCollectVo> statsDeviceFlow(OnlineDataDto onlineDataDto);

    /**
    * 统计压力、瞬时流量的分布区间
    * @author Andy
    * @date 18:11 2021/8/17
    * @param onlineDataDto:
    * @return com.zcxk.charge.api.dto.DistributeIntervalDto
    **/
    DistributeIntervalDto statsDeviceParmCount(OnlineDataDto onlineDataDto);

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

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

    /**
    * 统计从水源地到水龙头汇总数据
    * @author Andy
    * @date 18:12 2021/8/17
    * @param monitorDataCollectDto:
    * @return com.zcxk.charge.api.dto.DispatchSummaryDto
    **/
    DispatchSummaryDto statsDispatchSummary(MonitorDataCollectDto monitorDataCollectDto);

    /**
    * 查询供水排行
    * @author Andy
    * @date 18:12 2021/8/17
    * @param monitorDataCollectDto:
    * @return java.util.List<com.zcxk.charge.api.dto.SecDataCollectDto>
    **/
    List<SecDataCollectDto> selectMapForWholeCompany(MonitorDataCollectDto monitorDataCollectDto);

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

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

    /**
    * 查询场景实时状态数量
    * @author Andy
    * @date 18:12 2021/8/17
    * @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 18:12 2021/8/17
    * @param dto:
    * @return java.util.List<com.zcxk.charge.api.vo.AlarmDetailsVo>
    **/
    List<AlarmDetailsVo> selectAlarmStatsInfo(AlarmDetailsQueryDto dto);
}
