package com.lutao.cloud.oil.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.lutao.cloud.common.core.util.MessageInfo;
import com.lutao.cloud.oil.pojo.param.*;
import com.lutao.cloud.oil.pojo.vo.*;

import java.util.List;

public interface IBusinessPerceptionMonitorAlarmService {


    /**
     * 查询火灾探测报警列表
     *
     * @param page  页面
     * @param param 参数
     * @return {@link MessageInfo}<{@link IPage}<{@link DetectionAlarmVO}>>
     */
    MessageInfo<IPage<DetectionAlarmVO>> queryFireDetectionAlarmList(FireAndGasAlarmParam param, Page page);


    /**
     * 查询气体探测报警列表
     *
     * @param page  页面
     * @param param 参数
     * @return {@link MessageInfo}<{@link IPage}<{@link DetectionAlarmVO}>>
     */
    MessageInfo<IPage<DetectionAlarmVO>> queryGasDetectionAlarmList(FireAndGasAlarmParam param,Page page);


    /**
     * 查询有害气体检测报警列表
     *
     * @param page  页面
     * @param param 参数
     * @return {@link MessageInfo}<{@link IPage}<{@link DetectionAlarmVO}>>
     */
    MessageInfo<IPage<DetectionAlarmVO>> queryHazardousGasDetectionAlarmList(FireAndGasAlarmParam param,Page page);

    /**
     * 综合展示--火灾可燃气体探测报警
     *
     * @param param 参数
     * @return {@link MessageInfo}<{@link ScreenDisplayDetectAlarmVO}>
     */
    MessageInfo<ScreenDisplayDetectAlarmVO> queryScreenDisplayDetectAlarm(BaseParam param);


    /**
     * 关键工艺参数监测预警
     *
     * @param page  页面
     * @param param 参数
     * @return {@link IPage}<{@link EquipmentTagAlarmVO}>
     */
    MessageInfo<IPage<EquipmentTagAlarmVO>> queryEquipmentTagAlarm(Page page, EquipmentTagParam param);

    /**
     * 关键工艺参数监测预警 -- 大屏
     *
     * @return {@link MessageInfo}<{@link List}<{@link ScreenTagAlarmVO}>>
     */
    MessageInfo<List<ScreenTagAlarmVO>> queryScreenTagAlarm();


    MessageInfo<List<TagAlarmTrendVO>> getAlarmTrend(EquipmentTagParam param);

    /**
     * 关键工艺参数检测报警 -- 动态数据
     *
     * @param page
     * @param param
     * @return {@link MessageInfo}<{@link IPage}<{@link ProcessTagVO}>>
     */
    MessageInfo<IPage<ProcessTagVO>> getProcessParamTagPage(Page page, EquipmentTagParam param);


    /**
     * 关键工艺参数检测报警 -- 动态数据 -- From TSDB
     *
     * @param param   param
     * @param current current
     * @param size    size
     * @return {@link MessageInfo}<{@link List}<{@link ProcessTagVO}>>
     */
    MessageInfo<List<ProcessTagVO>> getProcessParamTagList(EquipmentTagParam param,int current,int size);

    /**
     * 关键工艺参数检测-工艺参数信息
     *
     * @param page  page
     * @param param param
     * @return {@link MessageInfo}<{@link IPage}<{@link ProcessParametersTagVO}>>
     */
    MessageInfo<IPage<ProcessParametersTagVO>> getProcessParamInfoPage(Page page, ProcessParametersTagVOParam param);

    MessageInfo<IPage<ProcessParametersTagVO>> getPerceptionMonitorInfoByTagCode(Page page, EquipmentTagParam param);

    /**
     * 关键工艺监测预警图表
     *
     * @param param param
     * @return {@link MessageInfo}<{@link List}<{@link TagProcessAlarmVO}>>
     */
    MessageInfo<TagProcessAlarmVO> queryEquipmentTagAlarmChart(EquipmentTagParam param);


    /**
     * 获取火灾报警图表
     *
     * @param param param
     * @return {@link MessageInfo}<{@link List}<{@link DetectAlarmChartVO}>>
     */
    MessageInfo<List<DetectAlarmChartVO>> getFireAlarmChart(DetectAlarmChartVOParam param);

    /**
     * 获取气体报警图表
     *
     * @param param param
     * @return {@link MessageInfo}<{@link List}<{@link DetectAlarmChartVO}>>
     */
    MessageInfo<List<DetectAlarmChartVO>> getGasAlarmChart(DetectAlarmChartVOParam param);

    /**
     * 获取有毒气体报警图表
     *
     * @param param param
     * @return {@link MessageInfo}<{@link List}<{@link DetectAlarmChartVO}>>
     */
    MessageInfo<List<DetectAlarmChartVO>> getHazardousAlarmChart(DetectAlarmChartVOParam param);

    /**
     * 预警监测点统计
     *
     * @param param 参数
     * @return {@link MessageInfo }<{@link MonitorPointVO }>
     */
    MessageInfo<List<MonitorPointVO>> earlyWarningMonitoringPointStatistic(BaseParam param);

    /**
     * 获取报警环比
     *
     * @param param 参数
     * @return {@link MessageInfo }<{@link List }<{@link TagAlarmQoqVO }>>
     */
    MessageInfo<TagAlarmQoqVO> getTagAlarmQoq(TagAlarmQoqVOParam param);

    /**
     * 报警环比列表
     *
     * @param param 参数
     * @return {@link MessageInfo }<{@link List }<{@link TagAlarmQoqListVO }>>
     */
    MessageInfo<List<TagAlarmQoqListVO>> getTagAlarmQoqList(TagAlarmQoqVOParam param);

    /**
     * 报警统计
     *
     * @param param 参数
     * @return {@link MessageInfo }<{@link List }<{@link AlarmStatisticsVO }>>
     */
    MessageInfo<AlarmStatisticsVO> alarmStatistics(AlarmStatisticsParam param);

    /**
     * 火灾可燃气体有毒气体近30天报警统计
     *
     * @param param 参数
     * @return {@link MessageInfo }<{@link FireGasHazardAlarmVO }>
     */
    MessageInfo<FireGasHazardAlarmVO> fireGasHazardAlarmStatistics(FireGasHazardAlarmParam param);
}
