package com.common.mapper;


import com.common.entity.DeviceDevice;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

@Mapper
public interface DeviceDeviceMapper {

    /**
     * 根据ID查询设备
     */
    DeviceDevice selectById(Integer id);

    /**
     * 查询所有设备
     */
    List<DeviceDevice> selectAll();

    /**
     * 根据IP地址查询设备
     */
    List<DeviceDevice> selectByIp(String ip);

    /**
     * 根据设备名称模糊查询
     */
    List<DeviceDevice> selectByNameLike(String name);

    /**
     * 根据设备组查询
     */
    List<DeviceDevice> selectByDeviceGroup(Integer deviceGroup);

    /**
     * 根据设备类型查询
     */
    List<DeviceDevice> selectByDeviceType(Integer deviceType);

    /**
     * 根据组织ID查询
     */
    List<DeviceDevice> selectByOrganizationId(Integer organizationId);

    /**
     * 根据状态查询设备
     */
    List<DeviceDevice> selectByStatus(Short status);

    /**
     * 多条件组合查询
     */
    List<DeviceDevice> selectByCondition(DeviceDevice condition);

    /**
     * 动态条件查询
     */
    List<DeviceDevice> selectByMap(Map<String, Object> params);

    /**
     * 分页查询
     */
    List<DeviceDevice> selectByPage(@Param("offset") int offset, @Param("limit") int limit);

    /**
     * 统计设备数量
     */
    Long count();

    /**
     * 根据条件统计数量
     */
    Long countByCondition(DeviceDevice condition);

    /**
     * 查询监控中的设备
     */
    List<DeviceDevice> selectMonitoringDevices();

    /**
     * 查询未删除的设备（del_flag = '0'）
     */
    List<DeviceDevice> selectActiveDevices();

    /**
     * 根据厂商查询设备
     */
    List<DeviceDevice> selectByVendor(String vendor);
}