package com.usky.fire.service;

import com.usky.common.core.bean.CommonPage;
import com.usky.common.mybatis.core.CrudService;
import com.usky.fire.domain.AlarmVideo;
import com.usky.fire.service.vo.DataVo;

import java.util.List;

/**
 * <p>
 * 视频监控隐患告警 服务类
 * </p>
 *
 * @author JCB
 * @since 2022-08-18
 */
public interface AlarmVideoService extends CrudService<AlarmVideo> {

    /**
     * 事件管理-隐患管理-视频监控-列表查询
     *
     * @param companyName    单位名称
     * @param handlingStatus 处理状态（0、未处理 1、已处理）
     * @param startDate      开始时间 格式：yyyy-MM-dd HH:mm:ss
     * @param endDate        结束时间 格式：yyyy-MM-dd HH:mm:ss
     * @param pageNum        当前页
     * @param pageSize       每页条数
     * @return
     */
    CommonPage<AlarmVideo> alarmVideoList(String companyName, Integer handlingStatus, String startDate, String endDate,
                                          Integer pageNum, Integer pageSize);

    /**
     * 事件管理-隐患管理-视频监控-告警统计
     *
     * @param companyIdList  单位ID
     * @param handlingStatus 处理状态（0、未处理 1、已处理）
     * @param companyName    单位名称
     * @param startDate      开始时间 格式：yyyy-MM-dd HH:mm:ss
     * @param endDate        结束时间 格式：yyyy-MM-dd HH:mm:ss
     * @return
     */
    Integer videoCount(List<String> companyIdList, Integer handlingStatus, String companyName, String startDate, String endDate);

    /**
     * 事件管理-隐患管理-视频监控-告警处置
     *
     * @param alarmVideo
     */
    void updateAlarmVideo(AlarmVideo alarmVideo);

    /**
     * 事件管理-隐患管理-视频监控-导出数据查询
     *
     * @param companyName    单位名称
     * @param handlingStatus 处理状态（0、未处理 1、已处理）
     * @param startDate      开始时间 格式：yyyy-MM-dd HH:mm:ss
     * @param endDate        结束时间 格式：yyyy-MM-dd HH:mm:ss
     * @return
     */
    List<AlarmVideo> alarmVideoListOne(String companyName, Integer handlingStatus, String startDate, String endDate);

    /**
     * 根据单位ID查询视频监控告警数
     *
     * @param companyId 单位ID
     * @return
     */
    Integer videoCount(String companyId, String startTime, String endTime);

    /**
     * 视频监控
     *
     * @return
     */
    List<DataVo> Alarmlist();
}
