package com.jpsoft.shinestar.modules.pacs.service;

import com.jpsoft.shinestar.modules.base.entity.DeviceInfo;
import com.jpsoft.shinestar.modules.base.entity.PersonInfo;
import com.jpsoft.shinestar.modules.pacs.dto.IsPersonExistVo;
import com.jpsoft.shinestar.modules.pacs.dto.PacsMsgResult;
import com.jpsoft.shinestar.modules.pacs.dto.PacsResult;
import com.jpsoft.shinestar.modules.uniview.dto.DataServersDTO;
import com.jpsoft.shinestar.modules.uniview.vo.LapiMsgResult;
import com.jpsoft.shinestar.modules.uniview.vo.LapiResult;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

public interface IGuardService {
    /**
     * 根据设备id查看设备在线状态
     * @param deviceId 设备id
     * @return
     */
    Boolean keepAlive(String deviceId) throws Exception;

    /**
     * 平台上传设备人脸信息
     * @param personId
     * @return
     * @throws Exception
     */
    List<PacsResult> addPerson(Long personId) throws Exception;

    /**
     * 人脸数据根据设备id上传
     * @param personId
     * @param deviceIds
     * @return
     * @throws Exception
     */
    List<PacsResult> addPersonToDevices(Long personId , String deviceIds) throws Exception;

    /**
     * 单人单设备人脸数据上传
     * @param personId
     * @param deviceId
     * @return
     * @throws Exception
     */
    PacsResult addPersonToDevice(Long personId , String deviceId) throws Exception;

    /**
     * 删除设备人脸数据
     * @param personId
     * @return
     */
    List<PacsMsgResult> deletePerson(Long personId) throws Exception;

    /**
     * 根据设备ID和人员id删除数据
     * @param id 人员id
     * @param deviceIds 设备id（多个以逗号隔开）
     * @return
     * @throws Exception
     */
    List<PacsMsgResult> deletePersonFromDevice(Long id, String deviceIds) throws Exception;

    /**
     * 远程手机开门
     * @param deviceId
     * @return
     * @throws Exception
     */
    PacsMsgResult remoteOpen(String deviceId) throws Exception;

    /**
     * 重启设备
     * @param deviceId 设备id
     * @return
     */
    Boolean reboot(String deviceId) throws Exception;

    /**
     * 人员是否在设备中存在
     * @param personIdList
     * @param deviceInfo
     * @return
     */
    List<IsPersonExistVo> existPersonInDevice(List<Long> personIdList, DeviceInfo deviceInfo);

    /**
     * 修改设备的服务器ip端口
     * @param deviceNoList 设备序列号集合
     * @param newAddress   新ip
     * @param newPort 新端口
     * @throws Exception
     */
    void updateDeviceServerConfig(List<String> deviceNoList, String newAddress, String newPort) throws Exception;
}