package com.zc.business.mapper;

import com.zc.business.domain.DcEventType;
import com.zc.business.domain.DcWarning;
import org.apache.ibatis.annotations.Param;

import java.util.HashMap;
import java.util.List;

/**
 * @author 王思祥
 * @ClassName DcPerceivedEventsWarningMapper
 */

public interface DcPerceivedEventsWarningMapper {

    //查询预警信息表数量
    int perceivedEventsWarningNum();

    //感知事件类型
    List<DcEventType> selectEventTypeList();
    //感知事件详情
    DcWarning selectWarningById(String id);
    //根据类型查询预计事件
    List<DcWarning> selectPerceivedEventsList(DcWarning dcWarning);
    //首页感知事件列表
    List<DcWarning> selectWarningList(DcWarning dcWarning);
    //查询感知数量按照路段进行排名
    List<HashMap<String,Object>> selectSectionPerceivedEventsList(DcWarning dcWarning);
    //查询感知数量按照路段进行区分
    List<HashMap<String,Object>> selectSectionPerceivedNumber(DcWarning dcWarning);
    //查询当前日,日累计感知事件,按照小时进行分组
    List<HashMap<String,Object>> selectDailyCumulative();
    //查询当前月,月累计感知事件,按照小时进行分组
    List<HashMap<String,Object>> selectDailyCumulativeMonth();
    //按事件源统计感知事件统计信息
    List<HashMap<String,Object>> selectWarningSourceGroup(DcWarning dcWarning);
    String selectWarningSourceGroupCount(DcWarning dcWarning);
    //当日感知事件的处置情况占比
    List<HashMap<String,Object>> selectWarningStateDay();
    //感知事件类型占比
    List<HashMap<String,Object>> selectWarningTypeDay(DcWarning dcWarning);
    //事件总数量
    int  selectNumber();
    //感知事件日趋势,传入某天的具体时间,结果按照那一天的小时分组
    List<HashMap<String,Object>> selectWarningTrendDay(DcWarning dcWarning);
    //感知事件月趋势,传入某月的具体时间,结果按照那一天分组
    List<HashMap<String,Object>> selectWarningTrendMonth(DcWarning dcWarning);
    //感知事件季度趋势,按照季度查询,按照月出结果
    List<HashMap<String,Object>> selectWarningTrendQuarter(DcWarning dcWarning);
    //感知事件年趋势,查询全部按照年进行分组
    List<HashMap<String,Object>> selectWarningTrendYear(DcWarning dcWarning);
    //感知事件某路段类型日占比
    List<HashMap<String,Object>> selectWarningSectionTypeDay(DcWarning dcWarning);
    String selectWarningSectionTypeDayCount(DcWarning dcWarning);
    //感知事件某路段类型月占比
    List<HashMap<String,Object>> selectWarningSectionTypeMonth(DcWarning dcWarning);
    String selectWarningSectionTypeMonthCount(DcWarning dcWarning);
    //感知事件某路段类型季占比
    List<HashMap<String,Object>> selectWarningSectionTypeQuarter(DcWarning dcWarning);
    String selectWarningSectionTypeQuarterCount(DcWarning dcWarning);
    //感知事件某路段类型年占比
    List<HashMap<String,Object>> selectWarningSectionTypeYear(DcWarning dcWarning);
    String selectWarningSectionTypeYearCount(DcWarning dcWarning);
    //查询某个路段下的全部桩号
    List<HashMap<String,Object>> selectSectionMark(DcWarning dcWarning);
    //根据桩号查询条数
    String selectSectionNumber(@Param("stakeMark") String markId,@Param("direction") String direction);
    //预警事件,事件列表 查询状态为上报的感知事件
    List<HashMap<String,Object>> selectWarningEscalation(DcWarning dcWarning);
    //修改感知事件信息
    Integer updateWarning(DcWarning dcWarning);
    //查询事件条数,以桩号和方向,时间作为条件
    String selectWarningMarkDay(DcWarning dcWarning);
    String selectWarningMarkMonth(DcWarning dcWarning);
    List<HashMap<String,String>> selectWarningMarkQuarter(DcWarning dcWarning);
    String selectWarningMarkYear(DcWarning dcWarning);

    List<HashMap<String,String>>  selectWarningMarkDayOptimize(DcWarning dcWarning);
    List<HashMap<String,String>> selectWarningMarkQuarterOptimize(DcWarning dcWarning);

}