package com.ltgk.video.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ltgk.common.core.domain.AjaxResult;
import com.ltgk.video.domain.entity.DsVideo;

import java.util.List;

/**
 * <p>
 * 视频监控管理表 服务类
 * </p>
 *
 * @author zhouyaoyao
 * @since 2025-01-19
 */
public interface IDsVideoService extends IService<DsVideo> {

    /**
     * 分页查询
     * @param dsVideo
     * @return
     */
    IPage<DsVideo> selectByPage(DsVideo dsVideo);

    /**
     * 根据视频监控设备名称批量添加更新
     * @param dsVideos
     * @return
     */
    boolean saveBatchByName(List<DsVideo> dsVideos);

    /**
     * 光电随动控制
     * @param msg
     * @return
     */
    boolean servoByRadar(String msg);

    /**
     * 光电联动反向定位联动控制，根据监控设备和将要联动的定位目标经纬度控制视频监控设备转动对焦
     *
     * @return
     */
    AjaxResult sitMoveByGps(String deviceCode, String gpsX, String gpsY);

    /**
     * 调用光电联动摄像头进行拍照，然后将照片保存到本地
     * @author Qi ChengBin
     * @param cameraIndexCode:
     * @return com.ltgk.common.core.domain.AjaxResult
     * @date 2025/6/5
     */
    AjaxResult catchImage(String cameraIndexCode);

    /**
     * 根据海康安防平台获取摄像头在线状态
     *
     * @author Qi ChengBin
     * @date 2025/7/21
     */
    void updateVideoStatusByPointOnlineStatus();

    DsVideo getVideoInfo(DsVideo dsVideo);

    /**
     * 更新摄像头可视范围字段状态，并获取所有的开启了可视摄像头范围的相关数据
     * @author Qi ChengBin
     * @param dsVideo：需开启摄像头可视范围的相关摄像头数据
     * @return com.ltgk.common.core.domain.AjaxResult
     * @date 2025/9/15
     */
    List<DsVideo> updateOneAndFindVideoInfoList(DsVideo dsVideo);
}
