package com.pm.subsystem.service;

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

/**
 * 视频监控设备Service接口
 *
 * @author lxf
 * @date 2025-06-03
 */
public interface IVideoDeviceService
{
    /**
     * 查询摄像机设备
     */
    public PageData selectCameraById(Long id);

    /**
     * 查询摄像机设备列表
     */
    public List<PageData> selectCameraList(PageData pd);

    /**
     * 新增摄像机设备
     */
    public int insertCamera(PageData pd);

    /**
     * 修改摄像机设备
     */
    public int updateCamera(PageData pd);

    /**
     * 批量删除摄像机设备
     */
    public int deleteCameraByIds(Long[] ids);

    /**
     * 删除摄像机设备
     */
    public int deleteCameraById(Long id);

    /**
     * 获取摄像机视频流
     */
    public PageData getCameraStream(String cameraCode);

    /**
     * 云台控制
     */
    public int ptzControl(PageData pd);

    /**
     * 录像控制
     */
    public int recordingControl(PageData pd);

    /**
     * 抓拍
     */
    public int takeSnapshot(String cameraCode);

    /**
     * 查询联动规则列表
     */
    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 id, PageData pd);

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

    /**
     * 执行联动规则
     */
    public int executeLinkageRule(PageData pd);

    /**
     * 查询录像文件列表
     */
    public List<PageData> selectRecordingFileList(PageData pd);

    /**
     * 查询预置位列表
     */
    public List<PageData> selectPresetList(String cameraCode);

    /**
     * 设置预置位
     */
    public int setPreset(PageData pd);

    /**
     * 删除预置位
     */
    public int deletePresetById(Long id);

    /**
     * 摄像机健康检测
     */
    public PageData checkCameraHealth(String cameraCode);

    /**
     * 获取摄像机统计数据
     */
    public PageData getCameraStatistics();

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