package com.pm.subsystem.service;

import java.util.List;
import com.pm.common.config.PageData;

/**
 * 入侵报警系统Service接口
 *
 * @author lxf
 * @date 2025-06-03
 */
public interface IIntrusionAlarmService
{
    // ==================== 报警点管理 ====================
    /**
     * 查询报警点
     */
    public PageData selectAlarmPointById(Long id);

    /**
     * 查询报警点列表
     */
    public List<PageData> selectAlarmPointList(PageData pd);

    /**
     * 新增报警点
     */
    public int insertAlarmPoint(PageData pd);

    /**
     * 修改报警点
     */
    public int updateAlarmPoint(PageData pd);

    /**
     * 批量删除报警点
     */
    public int deleteAlarmPointByIds(Long[] ids);

    /**
     * 删除报警点
     */
    public int deleteAlarmPointById(Long id);

    /**
     * 切换布防状态
     */
    public int toggleArmStatus(PageData pd);

    /**
     * 批量布防/撤防
     */
    public int batchArmControl(PageData pd);

    /**
     * 测试报警设备
     */
    public int testAlarmDevice(String deviceCode);

    /**
     * 更新设备配置
     */
    public int updateDeviceConfig(PageData pd);

    // ==================== 报警记录管理 ====================
    /**
     * 查询报警记录
     */
    public PageData selectAlarmById(Long id);

    /**
     * 查询报警记录列表
     */
    public List<PageData> selectAlarmList(PageData pd);

    /**
     * 新增报警记录
     */
    public int insertAlarm(PageData pd);

    /**
     * 处理报警
     */
    public int processAlarm(PageData pd);

    /**
     * 批量处理报警
     */
    public int batchProcessAlarms(PageData pd);

    /**
     * 确认报警
     */
    public int confirmAlarm(Long alarmId);

    /**
     * 忽略报警
     */
    public int ignoreAlarm(Long alarmId, PageData pd);

    // ==================== 防区管理 ====================
    /**
     * 查询防区
     */
    public PageData selectZoneById(Long id);

    /**
     * 查询防区列表
     */
    public List<PageData> selectZoneList(PageData pd);

    /**
     * 新增防区
     */
    public int insertZone(PageData pd);

    /**
     * 修改防区
     */
    public int updateZone(PageData pd);

    /**
     * 删除防区
     */
    public int deleteZoneById(Long id);

    /**
     * 防区布防/撤防
     */
    public int toggleZoneStatus(Long zoneId, PageData pd);

    /**
     * 批量防区操作
     */
    public int batchZoneControl(PageData pd);

    /**
     * 查询防区设备列表
     */
    public List<PageData> selectZoneDeviceList(String zoneCode);

    /**
     * 添加设备到防区
     */
    public int addDeviceToZone(PageData pd);

    /**
     * 从防区移除设备
     */
    public int removeDeviceFromZone(PageData pd);

    // ==================== 联动规则管理 ====================
    /**
     * 查询联动规则列表
     */
    public List<PageData> selectLinkageRuleList(PageData pd);

    /**
     * 查询联动规则详情
     */
    public PageData selectLinkageRuleById(Long id);

    /**
     * 新增联动规则
     */
    public int insertLinkageRule(PageData pd);

    /**
     * 修改联动规则
     */
    public int updateLinkageRule(PageData pd);

    /**
     * 删除联动规则
     */
    public int deleteLinkageRuleById(Long id);

    /**
     * 启用/禁用联动规则
     */
    public int toggleLinkageRule(Long ruleId, PageData pd);

    /**
     * 查询联动执行记录
     */
    public List<PageData> selectLinkageRecordList(PageData pd);

    /**
     * 手动执行联动
     */
    public int executeLinkage(PageData pd);

    // ==================== 统计查询 ====================
    /**
     * 获取报警统计数据
     */
    public PageData getAlarmStatistics(PageData pd);

    /**
     * 获取实时状态
     */
    public PageData getRealTimeStatus();

    /**
     * 获取报警趋势数据
     */
    public List<PageData> getAlarmTrend(PageData pd);

    // ==================== 其他功能 ====================
    /**
     * 设备健康检测
     */
    public PageData checkDeviceHealth(String deviceCode);

    /**
     * 批量设备健康检测
     */
    public List<PageData> batchCheckDeviceHealth(List<String> deviceCodes);

    /**
     * 获取设备配置
     */
    public PageData getDeviceConfig(String deviceCode);

    /**
     * 重置设备
     */
    public int resetDevice(String deviceCode);

    /**
     * 查询维护记录
     */
    public List<PageData> selectMaintenanceRecordList(PageData pd);

    /**
     * 新增维护记录
     */
    public int addMaintenanceRecord(PageData pd);

    /**
     * 生成报警报表
     */
    public PageData generateAlarmReport(PageData pd);

    /**
     * 数据同步
     */
    public int syncIntrusionData(PageData pd);
}