package com.willalp.control.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.willalp.control.domain.HsControlDeviceInfo;
import com.willalp.control.domain.vo.OpenOrCloseVo;
import org.springframework.scheduling.annotation.Async;

import java.util.List;

/**
 * 控制设备状态信息Service接口
 *
 * @author willalp
 * @date 2022-02-16
 */
public interface IHsControlDeviceInfoService extends IService<HsControlDeviceInfo> {
    /**
     * 查询控制设备状态信息列表
     *
     * @param hsControlDeviceInfo 控制设备状态信息
     * @return 控制设备状态信息集合
     */
    List<HsControlDeviceInfo> selectHsControlDeviceInfoList(HsControlDeviceInfo hsControlDeviceInfo);

    /**
     * APP查询控制设备状态信息列表
     *
     * @param userId 用户ID
     * @return 控制设备状态信息集合
     */
    List<HsControlDeviceInfo> appSelectHsControlDeviceInfoList(Long userId);

    /**
     * 新增设备信息
     *
     *
     * @param deviceInfo@return
     */
    int addDeviceInfo(HsControlDeviceInfo deviceInfo);

    /**
     * 打开或关闭后异步更新设备信息并生成日志
     *
     * @param openOrCloseVo
     */
    @Async("asyncServiceExecutor")
    void openOrCloseUpdateDeviceInfo(OpenOrCloseVo openOrCloseVo);

    /**
     * 定时任务 打开或关闭后异步更新设备信息
     *
     * @param useNoId
     * @param status
     */
    @Async("asyncServiceExecutor")
    void timingOpenOrCloseUpdateDeviceInfo(Long useNoId, int status);

}
