package com.ruoyi.ems.mapper;

import com.ruoyi.ems.domain.Alarm;
import org.apache.ibatis.annotations.Param;

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

/**
 * 告警记录Mapper接口
 */
public interface AlarmMapper {

    /**
     * 根据ID查询
     */
    Alarm selectById(Long id);

    /**
     * 根据告警ID查询
     */
    Alarm selectByAlarmId(String alarmId);

    /**
     * 查询告警列表
     */
    List<Alarm> selectList(Alarm alarm);

    /**
     * 查询活动告警列表
     */
    List<Alarm> selectActiveAlarms(@Param("areaCode") String areaCode);

    /**
     * 查询指定规则和目标的活动告警（用于聚合）
     */
    Alarm selectActiveAlarm(@Param("ruleCode") String ruleCode, @Param("targetCode") String targetCode);

    /**
     * 新增告警
     */
    int insert(Alarm alarm);

    /**
     * 更新告警
     */
    int update(Alarm alarm);

    /**
     * 批量删除
     */
    int deleteByIds(Long[] ids);

    /**
     * 按告警级别统计
     */
    List<Map<String, Object>> countByLevel(Alarm query);

    /**
     * 按告警状态统计
     */
    List<Map<String, Object>> countByStatus(Alarm query);

    /**
     * 按时间趋势统计（日维度，按小时）
     */
    List<Map<String, Object>> countByDay(Alarm query);

    /**
     * 按时间趋势统计（月维度，按天）
     */
    List<Map<String, Object>> countByMonth(Alarm query);

    /**
     * 按子系统统计
     */
    List<Map<String, Object>> countBySubsystem(Alarm query);

    /**
     * 统计处理率
     */
    Map<String, Object> countHandleRate(Alarm query);
}