package com.ozs.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ozs.common.core.domain.AjaxResult;
import com.ozs.entity.MsgAlarm;
import com.ozs.entity.vo.*;

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

/**
 * <p>
 * 报警信息表 服务类
 * </p>
 *
 * @author ozs
 * @since 2023-02-22
 */
public interface MsgAlarmService extends IService<MsgAlarm> {
    //web数据统计 报警数据详情 导出数据集合
    List<AlarmStatisticDto> list(String railwayCode, Integer currentYear, Integer currentMonth, Integer pageNum, Integer pageSize);

    IPage listToPage(List list, int pageNum, int pageSize);

    //web数据统计 报警月统计数据
    List<AlarmStatisticMonthDto> getCount(String railwayCode, Integer currentYear, Integer currentMonth);

    //web数据统计 报警月统计数据（天）
    List<AlarmStatisticMonthDto> getDayCount(String railwayCode, Integer currentYear, Integer currentMonth);

    //数据统计-灾害占比
    List<AlarmStatisticMonthDto> getAlarmTypeCount(String railwayCode, Integer currentYear, Integer currentMonth);

    //数据统计-频繁出现灾害地点排名
    List<AlarmFreqArea> alarmTypeAreaCount(String railwayCode, Integer currentYear, Integer currentMonth);

    //报警数据详情导出数据集合
    List<AlarmStatisticDto> exportExcel(AlarmStatisticResVo alarmStatisticResVo);
    //获取报警数量
    Long getAlarmNum();

    /**
     * 通过相机编码查询未解除预警信息
     *
     * @param cameraCode
     * @return
     */
    MsgAlarm selectByCameraCode(String cameraCode);

    IPage<MsgAlarm> queryPage(MsgAlarmVo msgAlarmVo);

    MsgAlarm getByAlarmId(String alarmId);

    Map<String, Integer> statisticsNum(MsgAlarmVo msgAlarmVo);

    Integer appAlarmNum(MsgAlarmVo msgAlarmVo);

    List<MsgAlarm> msgAlarmList(MsgAlarmVo msgAlarmVo);

    AjaxResult getDate(MsgAlarmVo msgAlarmVo);
}
