content: package com.genersoft.iot.vmp.gb28181.service;
  
  import com.genersoft.iot.vmp.common.CommonCallback;
  import com.genersoft.iot.vmp.gb28181.bean.*;
  import com.genersoft.iot.vmp.service.bean.ErrorCallback;
  import com.genersoft.iot.vmp.vmanager.bean.ResourceBaseInfo;
  import com.genersoft.iot.vmp.vmanager.bean.WVPResult;
  import com.github.pagehelper.PageInfo;
  import org.springframework.transaction.annotation.Transactional;
  
  import java.util.List;
  
  /**
   * 设备相关业务处理
   * @author lin
   */
  public interface IDeviceService {
  
      /**
       * 设备上线
       * @param device 设备信息
       */
      void online(Device device, SipTransactionInfo sipTransactionInfo);
  
      /**
       * 设备下线
       * @param deviceId 设备编号
       */
      void offline(String deviceId, String reason);
  
      /**
       * 添加目录订阅
       * @param device 设备信息
       * @return 布尔
       */
      boolean addCatalogSubscribe(Device device, SipTransactionInfo transactionInfo);
  
      /**
       * 移除目录订阅
       * @param device 设备信息
       * @return 布尔
       */
      boolean removeCatalogSubscribe(Device device, CommonCallback<Boolean> callback);
  
      /**
       * 添加移动位置订阅
       * @param device 设备信息
       * @return 布尔
       */
      boolean addMobilePositionSubscribe(Device device, SipTransactionInfo transactionInfo);
  
      /**
       * 移除移动位置订阅
       * @param device 设备信息
       * @return 布尔
       */
      boolean removeMobilePositionSubscribe(Device device, CommonCallback<Boolean> callback);
  
      /**
       * 移除移动位置订阅
       * @param deviceId 设备ID
       * @return 同步状态
       */
      SyncStatus getChannelSyncStatus(String deviceId);
  
      /**
       * 查看是否仍在同步
       * @param deviceId 设备ID
       * @return 布尔
       */
      Boolean isSyncRunning(String deviceId);
  
      /**
       * 通道同步
       * @param device 设备信息
       */
      void sync(Device device);
  
      /**
       * 查询设备信息
       * @param deviceId 设备编号
       * @return 设备信息
       */
      Device getDeviceByDeviceId(String deviceId);
  
      /**
       * 获取所有在线设备
       * @return 设备列表
       */
      List<Device> getAllOnlineDevice(String serverId);
  
      List<Device> getAllByStatus(Boolean status);
  
      /**
       * 判断是否注册已经失效
       * @param device 设备信息
       * @return 布尔
       */
      boolean expire(Device device);
  
      /**
       * 检查设备状态
       * @param device 设备信息
       */
      Boolean getDeviceStatus(Device device);
  
      /**
       * 根据IP和端口获取设备信息
       * @param host IP
       * @param port 端口
       * @return 设备信息
       */
      Device getDeviceByHostAndPort(String host, int port);
  
      /**
       * 更新设备
       * @param device 设备信息
       */
      void updateDevice(Device device);
  
      @Transactional
      void updateDeviceList(List<Device> deviceList);
  
      /**
       * 检查设备编号是否已经存在
       * @param deviceId 设备编号
       * @return
       */
      boolean isExist(String deviceId);
  
      /**
       * 添加设备
       * @param device
       */
      void addCustomDevice(Device device);
  
      /**
       * 页面表单更新设备信息
       * @param device
       */
      void updateCustomDevice(Device device);
  
      /**
       * 删除设备
       * @param deviceId
       * @return
       */
      boolean delete(String deviceId);
  
      /**
       * 获取统计信息
       * @return
       */
      ResourceBaseInfo getOverview();
  
      /**
       * 获取所有设备
       */
      List<Device> getAll();
  
      PageInfo<Device> getAll(int page, int count, String query, Boolean status);
  
      Device getDevice(Integer gbDeviceDbId);
  
      Device getDeviceByChannelId(Integer channelId);
  
      Device getDeviceBySourceChannelDeviceId(String requesterId);
  
      void subscribeCatalog(int id, int cycle);
  
      void subscribeMobilePosition(int id, int cycle, int interval);
  
      WVPResult<SyncStatus> devicesSync(Device device);
  
      void deviceBasicConfig(Device device, BasicParam basicParam, ErrorCallback<String> callback);
  
      void deviceConfigQuery(Device device, String channelId, String configType, ErrorCallback<Object> callback);
  
      void teleboot(Device device);
  
      void record(Device device, String channelId, String recordCmdStr, ErrorCallback<String> callback);
  
      void guard(Device device, String guardCmdStr, ErrorCallback<String> callback);
  
      void resetAlarm(Device device, String channelId, String alarmMethod, String alarmType, ErrorCallback<String> callback);
  
      void iFrame(Device device, String channelId);
  
      void homePosition(Device device, String channelId, Boolean enabled, Integer resetTime, Integer presetIndex, ErrorCallback<String> callback);
  
      void dragZoomIn(Device device, String channelId, int length, int width, int midpointx, int midpointy, int lengthx, int lengthy, ErrorCallback<String> callback);
  
      void dragZoomOut(Device device, String channelId, int length, int width, int midpointx, int midpointy, int lengthx, int lengthy, ErrorCallback<String> callback);
  
      void deviceStatus(Device device, ErrorCallback<String> callback);
  
      void updateDeviceHeartInfo(Device device);
  
      void alarm(Device device, String startPriority, String endPriority, String alarmMethod, String alarmType, String startTime, String endTime, ErrorCallback<Object> callback);
  
      void deviceInfo(Device device, ErrorCallback<Object> callback);
  
      void queryPreset(Device device, String channelId, ErrorCallback<List<Preset>> callback);
  
  }
  