package com.njcn.energy.service;

import com.njcn.energy.pojo.po.LogicAccess;

import java.util.List;

/**
 * @author 徐扬
 */
public interface ILogicAccessService {

    /**
     * 功能描述: 根据pid获取逻辑装置
     * @return java.util.List<com.njcn.energy.pojo.po.LogicAccess>
     * @author xy
     * @date 2022/3/23 21:59
     */
    List<LogicAccess> findAccessDev(List<String> did);

    /**
     * 功能描述: 新增
     * @return java.util.List<com.njcn.energy.pojo.po.LogicAccess>
     * @author xy
     * @date 2022/3/23 21:59
     */
    boolean add(LogicAccess logicAccess);

    /**
     * 功能描述: 根据did查询逻辑设备
     * @return
     * @author xy
     * @date 2022/3/17 14:45
     */
    LogicAccess getAccessDev(String did);

    /**
     * 功能描述: 逻辑设备取消注册
     * @author xy
     * @date 2022/3/17 14:45
     */
    void deleteByDid(List<String> list);

    /**
     * 功能描述: 逻辑设备下线
     * @author xy
     * @date 2022/3/17 14:45
     */
    void offlineByDid(List<String> list);

    /**
     * 功能描述: 查找已经取消注册的装置
     * @return java.util.List<com.njcn.energy.pojo.po.LogicAccess>
     * @author xy
     * @date 2022/3/24 8:54
     */
    LogicAccess findCancelAccessDev(String did);

    /**
     * 功能描述: 注册 取消注册过的装置
     * @author xy
     * @date 2022/3/24 8:54
     */
    void accessCancelDev(String did);

    /**
     * 功能描述: 调整装置为接入状态
     * @author xy
     * @date 2022/3/24 8:54
     */
    void accessDev(LogicAccess logicAccess);

    /**
     * 功能描述: 获取在线上的装置
     *
     * @param ndid 网关id
     * @param list 装置id集合
     * @return java.util.List<com.njcn.energy.pojo.po.LogicAccess>
     * @author xy
     * @date 2022/3/31 20:01
     */
    List<LogicAccess> getLogicAccess(String ndid,List<String> list);

    /**
     * 功能描述: 查询当前网关所有在线的装置
     * @param ndid 网关id
     * @return java.util.List<com.njcn.energy.pojo.po.LogicAccess>
     * @author xy
     * @date 2022/3/31 20:01
     */
    List<LogicAccess> getAllOnlineDevice(String ndid);

    /**
     * 功能描述: 查询当前网关所有掉线的装置
     * @param ndid 网关id
     * @return java.util.List<com.njcn.energy.pojo.po.LogicAccess>
     * @author xy
     * @date 2022/3/31 20:01
     */
    List<LogicAccess> getAllOfflineDevice(String ndid);

    /**
     * 功能描述：将当前网关所有在线的装置置为下线
     * @author xy
     * @date 2022/3/29 14:19
     */
    void offAllDevice(String ndid);

    /**
     * 功能描述: 获取当前集合里在线的设备
     *
     * @param list
     * @return java.util.List<com.njcn.energy.pojo.po.LogicAccess>
     * @author xy
     * @date 2022/4/6 15:31
     */
    List<LogicAccess> getOnlineByList(List<String> list);

    /**
     * 功能描述:根据网关集合获取所有装置信息
     * @param list 网关集合
     * @author xy
     * @date 2022/4/13 13:48
     * @return 接入过的装置信息
     */
    List<LogicAccess> getLogicDevByList(List<String> list);

    /**
     * 功能描述: 获取在线、离线的装置
     * @author xy
     * @date 2022/4/18 11:45
     * @return
     */
    List<LogicAccess> getAllDev();


}
