package com.common.service;



import com.common.entity.DeviceUnknown;
import java.util.List;
import java.time.LocalDateTime;

public interface DeviceUnknownService {

    /**
     * 创建设备记录
     * @param device 设备信息
     * @return 创建的设备ID
     */
    Long createDevice(DeviceUnknown device);

    /**
     * 批量创建设备记录
     * @param devices 设备列表
     * @return 成功创建的记录数
     */
    int batchCreateDevices(List<DeviceUnknown> devices);

    /**
     * 根据ID获取设备信息
     * @param id 设备ID
     * @return 设备信息
     */
    DeviceUnknown getDeviceById(Long id);

    /**
     * 根据IP获取设备列表
     * @param deviceIp 设备IP
     * @return 设备列表
     */
    List<DeviceUnknown> getDevicesByIp(String deviceIp);

    /**
     * 根据组织ID获取设备列表
     * @param organizationId 组织ID
     * @return 设备列表
     */
    List<DeviceUnknown> getDevicesByOrganizationId(Integer organizationId);

    /**
     * 获取所有设备列表
     * @return 设备列表
     */
    List<DeviceUnknown> getAllDevices();

    /**
     * 分页查询设备列表
     * @param pageNum 页码
     * @param pageSize 每页大小
     * @return 设备列表
     */
    List<DeviceUnknown> getDevicesByPage(int pageNum, int pageSize);

    /**
     * 根据条件查询设备列表
     * @param device 查询条件
     * @return 设备列表
     */
    List<DeviceUnknown> searchDevices(DeviceUnknown device);

    /**
     * 更新设备信息
     * @param device 设备信息
     * @return 是否成功
     */
    boolean updateDevice(DeviceUnknown device);

    /**
     * 更新设备的最后发现时间
     * @param id 设备ID
     * @param lastTime 最后发现时间
     * @return 是否成功
     */
    boolean updateLastTime(Long id, LocalDateTime lastTime);

    /**
     * 删除设备
     * @param id 设备ID
     * @return 是否成功
     */
    boolean deleteDevice(Long id);

    /**
     * 根据组织ID删除设备
     * @param organizationId 组织ID
     * @return 删除的记录数
     */
    int deleteDevicesByOrganizationId(Integer organizationId);

    /**
     * 获取设备总数
     * @return 设备总数
     */
    long getTotalCount();

    /**
     * 根据条件获取设备数量
     * @param device 查询条件
     * @return 设备数量
     */
    long getCountByCondition(DeviceUnknown device);
}