/*
 * 文 件 名:  IAlarmRuleService
 * 版    权:  华设设计集团股份有限公司
 * 描    述:  <描述>
 * 修 改 人:  lvwenbin
 * 修改时间:  2026/2/3
 * 跟踪单号:  <跟踪单号>
 * 修改单号:  <修改单号>
 * 修改内容:  <修改内容>
 */
package com.ruoyi.ems.service;

import com.ruoyi.ems.domain.AlarmRule;
import java.util.List;

/**
 * 告警规则Service接口
 */
public interface IAlarmRuleService {

    /**
     * 根据ID查询规则
     */
    AlarmRule selectById(Long id);

    /**
     * 根据规则代码查询
     */
    AlarmRule selectByRuleCode(String ruleCode);

    /**
     * 查询规则列表
     */
    List<AlarmRule> selectList(AlarmRule query);

    /**
     * 新增规则
     */
    int insert(AlarmRule rule);

    /**
     * 修改规则
     */
    int update(AlarmRule rule);

    /**
     * 删除规则
     */
    int deleteByIds(Long[] ids);

    /**
     * 启用/禁用规则
     */
    int updateEnabled(String ruleCode, Integer enabled);

    /**
     * 查询适用于实时监测的规则
     *
     * @param deviceModel 设备模型(可选)
     * @param attrKey 属性标识
     * @return 规则列表
     */
    List<AlarmRule> selectRulesForRealtime(String deviceModel, String attrKey);

    /**
     * 查询适用于巡检的规则
     *
     * @param deviceModel 设备模型(可选)
     * @return 规则列表
     */
    List<AlarmRule> selectRulesForInspection(String deviceModel);

    /**
     * 查询指定分组的规则
     */
    List<AlarmRule> selectByGroupCode(String groupCode);

    /**
     * 复制规则
     *
     * @param sourceRuleCode 源规则代码
     * @param newRuleName 新规则名称
     * @return 新规则
     */
    AlarmRule copyRule(String sourceRuleCode, String newRuleName);

    /**
     * 批量更新规则启用状态
     */
    int batchUpdateEnabled(List<String> ruleCodes, Integer enabled);
}
