package com.usky.fire.service;

import com.usky.common.core.bean.CommonPage;
import com.usky.common.mybatis.core.CrudService;
import com.usky.fire.domain.AlarmFire;
import com.usky.fire.service.vo.AlarmFireVo;
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 AlarmFireService extends CrudService<AlarmFire> {

    CommonPage<AlarmFireVo> alarmFireLowerList(String companyName, Integer handlingStatus, String startDate, String endDate,
                                               Integer pageNum, Integer pageSize, String alarmType);

    Map<String, Object> fireStatistics(String companyName, String alarmType, String startDate, String endDate);

    Map<String, Object> fireStatisticalChart(String alarmType, String startDate, String endDate);

    void updateAlarmFire(AlarmFire alarmFire);

    List<AlarmFireVo> alarmFireLowerListExport(String companyName, Integer handlingStatus, String startDate, String endDate, String alarmType);

    String alarmFireExport(String companyName, Integer handlingStatus, String startDate, String endDate, String alarmType, String exportTitle);

    /**
     * 火警告警处置/故障告警处置-数量统计
     *
     * @param companyIdList  单位ID
     * @param handlingStatus 处理状态（0、未处理 1、已处理）
     * @param alarmTypeList  告警类型（2 火警、4 故障、16 监管等）
     * @return
     */
    Integer fireCount(List<String> companyIdList, Integer handlingStatus, List<String> alarmTypeList, String companyName, String startDate, String endDate);

    /**
     * 火警告警处置/故障告警处置-列表数据查询
     *
     * @param companyIdList  单位ID
     * @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       每页条数
     * @param alarmTypeList  告警类型（2 火警、4 故障、16 监管等、100隐患）
     * @return
     */
    CommonPage<AlarmFire> alarmFireList(List<String> companyIdList, String companyName, Integer handlingStatus, String startDate,
                                        String endDate, Integer pageNum, Integer pageSize, List<String> alarmTypeList);

    /**
     * 根据单位ID查询火警告警数量
     *
     * @param companyId      单位ID
     * @param handlingStatus 处理状态（0、未处理 1、已处理）
     * @param alarmType      告警类型(2 火警、4 故障、16 监管等)
     * @return
     */
    Integer fireAlarmCount(String companyId, Integer handlingStatus, String alarmType, String startTime, String endTime);

    /**
     * 火灾自动报警列表查询
     *
     * @return
     */
    List<DataVo> Alarmlist();
}
