package com.shzg.project.worn.mapper;

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

import com.shzg.project.worn.domain.MqttSensorEvent;
import io.lettuce.core.dynamic.annotation.Param;

/**
 * 设备事件Mapper接口
 * 
 * @author shzg
 * @date 2026-04-01
 */
public interface MqttSensorEventMapper 
{
    /**
     * 查询设备事件
     * 
     * @param id 设备事件主键
     * @return 设备事件
     */
    public MqttSensorEvent selectMqttSensorEventById(Long id);

    /**
     * 查询设备事件列表
     * 
     * @param mqttSensorEvent 设备事件
     * @return 设备事件集合
     */
    public List<MqttSensorEvent> selectMqttSensorEventList(MqttSensorEvent mqttSensorEvent);

    /**
     * 新增设备事件
     * 
     * @param mqttSensorEvent 设备事件
     * @return 结果
     */
    public int insertMqttSensorEvent(MqttSensorEvent mqttSensorEvent);

    /**
     * 修改设备事件
     * 
     * @param mqttSensorEvent 设备事件
     * @return 结果
     */
    public int updateMqttSensorEvent(MqttSensorEvent mqttSensorEvent);

    /**
     * 删除设备事件
     * 
     * @param id 设备事件主键
     * @return 结果
     */
    public int deleteMqttSensorEventById(Long id);

    /**
     * 批量删除设备事件
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteMqttSensorEventByIds(Long[] ids);

    /**
     * 告警统计（今日 / 未处理）- 按权限
     */
    Map<String, Object> countAlarmStat(@Param("deptIds") List<Long> deptIds);

    /**
     * 告警趋势（按权限）
     */
    List<Map<String, Object>> selectAlarmTrend(@Param("deptIds") List<Long> deptIds);

    /**
     * 告警类型占比（按权限）
     */
    List<Map<String, Object>> selectAlarmTypeStat(@Param("deptIds") List<Long> deptIds);
}
