package com.usky.fire.service;

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

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

/**
 * <p>
 * 电气火灾隐患告警 服务类
 * </p>
 *
 * @author JCB
 * @since 2022-08-18
 */
public interface AlarmElectricalFireService extends CrudService<AlarmElectricalFire> {

    /**
     * 事件管理-隐患管理-电气火灾-列表查询
     *
     * @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<AlarmElectricalFire> alarmElectricalFireList(String companyName, Integer handlingStatus, String startDate, String endDate,
                                                            Integer pageNum, Integer pageSize);


    /**
     * 事件管理-隐患管理-不同类型隐患-列表查询
     *
     * @param systemType     系统类型(2.自动喷水灭火系统 3.消防给水及消火栓系统 4.防排烟系统 5.电气火灾系统 6.消防视频监控系统)
     * @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<AlarmHiddenDangerVo> alarmHiddenDangerList(Integer systemType, 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 electricalFireCount(List<String> companyIdList, Integer handlingStatus, String companyName, String startDate, String endDate);

    /**
     * 事件管理-隐患管理-不同类型隐患-左侧数据统计
     *
     * @param systemType  系统类型(2.自动喷水灭火系统 3.消防给水及消火栓系统 4.防排烟系统 5.电气火灾系统 6.消防视频监控系统)
     * @param companyName 单位民称
     * @param startDate   开始时间 格式：yyyy-MM-dd HH:mm:ss
     * @param endDate     结束时间 格式：yyyy-MM-dd HH:mm:ss
     * @return
     */
    Map<String, Object> hiddenDangerStatistics(Integer systemType, String companyName, String startDate, String endDate);

    /**
     * 事件管理-隐患管理-不同类型隐患-折线图数据
     *
     * @param systemType 系统类型(2.自动喷水灭火系统 3.消防给水及消火栓系统 4.防排烟系统 5.电气火灾系统 6.消防视频监控系统)
     * @param startDate  开始时间 格式：yyyy-MM-dd HH:mm:ss
     * @param endDate    结束时间 格式：yyyy-MM-dd HH:mm:ss
     * @return
     */
    Map<String, Object> hiddenDangerStatisticalChart(Integer systemType, String startDate, String endDate);

    /**
     * 事件管理-隐患管理-电气火灾-告警处理
     *
     * @param alarmElectricalFire
     */
    void updateAlarmElectricalFire(AlarmElectricalFire alarmElectricalFire);

    /**
     * 事件管理-隐患管理-不同类型隐患-告警处理
     *
     * @param alarmHiddenDangerVo
     */
    void updateHiddenDanger(AlarmHiddenDangerVo alarmHiddenDangerVo);

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

    /**
     * 事件管理-隐患管理-不同类型隐患-导出数据查询
     *
     * @param systemType     系统类型(2.自动喷水灭火系统 3.消防给水及消火栓系统 4.防排烟系统 5.电气火灾系统 6.消防视频监控系统)
     * @param companyName    单位名称
     * @param handlingStatus 处理状态（0、未处理 1、已处理）
     * @param startDate      开始时间 格式：yyyy-MM-dd HH:mm:ss
     * @param endDate        结束时间 格式：yyyy-MM-dd HH:mm:ss
     * @return
     */
    List<AlarmHiddenDangerVo> alarmHiddenDangerListOne(Integer systemType, String companyName, Integer handlingStatus, String startDate, String endDate);

    /**
     * 根据单位ID查询隐患数量
     *
     * @param companyId 单位ID
     * @param table     表名
     * @return
     */
    Map<String, Object> alarmCount(String companyId, String table);

    /**
     * 根据单位ID查询火警隐患数量
     *
     * @param companyId 单位ID
     * @return
     */
    Map<String, Object> alarmFireCount(String companyId);

    /**
     * 根据单位ID查询电器火灾告警数
     *
     * @param companyId 单位ID
     * @return
     */
    Integer electricalFireCount(String companyId, String startTime, String endTime);

    /**
     * 电器火灾告警查询
     * @return
     */
    List<DataVo> Alarmlist();
}
