package com.sz.admin.monitor.service;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.mybatisflex.core.service.IService;

import com.sz.admin.monitor.pojo.dto.camera.CameraListDTO;
import com.sz.admin.monitor.pojo.dto.camera.CameraUpdateDTO;
import com.sz.admin.monitor.pojo.po.Camera;

import com.sz.admin.monitor.pojo.vo.camera.CameraVO;
import com.sz.admin.monitor.pojo.vo.edgebox.AlgorithmTaskVO;
import com.sz.core.common.entity.PageResult;
import com.sz.core.common.entity.SelectIdsDTO;

import java.io.Serializable;
import java.util.List;

/**
 * ClassName: CameraService
 * Package: com.sz.admin.monitor.service.impl
 * Description:
 */
public interface CameraService extends IService<Camera> {
    // 根据通道号查询摄像头信息
    Camera getByChannelId(Integer channelId);

    void update(CameraUpdateDTO dto);

    PageResult<CameraVO> page(CameraListDTO dto);

    List<CameraVO> list(CameraListDTO dto);

    void remove(SelectIdsDTO dto);

    CameraVO detail(Long id);

    // 根据IP地址更新守望位
    void updateWatchfulStateByIp(String ipAddress, int watchfulState);

    List<CameraVO.CameraTypeEnum> remoteSearch(String keyword);

    // 查询开启巡航功能的摄像机
    List<Camera> selectListByInspection();
    void batchDeleteLocalData(List<? extends Serializable> cameraIds, List<AlgorithmTaskVO> taskList);

    // 获取还没有绑定盒子的摄像头列表
    List<CameraVO> getUnboundList();

    // 获取已经绑定盒子的摄像头列表
    List<CameraVO> getBoundList(Long boxId);

}
