package com.ruoyi.ss.device.domain;

import com.ruoyi.common.valid.EnumValid;
import com.ruoyi.ss.device.domain.enums.DeviceGroupBy;
import com.ruoyi.ss.device.domain.enums.DeviceGroupByTable;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.List;

/**
 * @author 辉
 * 2024/3/7
 */
@Data
public class DeviceQuery extends Device {

    @ApiModelProperty("设备id列表")
    private List<Long> deviceIds;

    @ApiModelProperty("所属用户ID")
    private Long userId;

    @ApiModelProperty("型号列表")
    private List<Long> modelIds;

    @ApiModelProperty("店铺名称")
    private String storeName;

    @ApiModelProperty("型号")
    private String model;

    @ApiModelProperty("所属商户名称")
    private String userName;

    @ApiModelProperty("是否已绑定用户")
    private Boolean isBind;

    @ApiModelProperty("店铺id列表")
    private List<Long> storeIds;

    @ApiModelProperty("分组字段")
    @EnumValid(
            clazz = DeviceGroupBy.class,
            method = "name",
            message = "非法的分组字段"
    )
    private String groupBy;

    @ApiModelProperty("分组表字段")
    @EnumValid(
            clazz = DeviceGroupByTable.class,
            method = "name",
            message = "非法的分组表字段"
    )
    private String groupByTable;

    @ApiModelProperty("设备编号列表")
    private List<String> deviceNos;

    @ApiModelProperty("用户id列表")
    private List<Long> userIds;

    @ApiModelProperty("租期（起始）")
    private LocalDateTime startRentTime;

    @ApiModelProperty("租期（结束）")
    private LocalDateTime endRentTime;

    @ApiModelProperty("是否过期")
    private Boolean isArrears;

    @ApiModelProperty("MAC列表")
    private List<String> macList;

    @ApiModelProperty("任意MAC")
    private String anyMac;

    @ApiModelProperty("模糊查询任意MAC")
    private String likeAnyMac;

    @ApiModelProperty("代理名称")
    private String agentName;

    @ApiModelProperty("设备版本号")
    private String version;

    @ApiModelProperty("型号功能")
    private String modelTag;

    @ApiModelProperty("精准匹配SN")
    private String eqDeviceNo;

    @ApiModelProperty("排除ID")
    private Long excludeDeviceId;

    @ApiModelProperty("关键词")
    private String keyword;

    @ApiModelProperty("是否在员工信息中（根据员工信息筛选时使用）")
    private Boolean inStaff;

    @ApiModelProperty("员工用户ID")
    private Long staffUserId;

    @ApiModelProperty("员工权限")
    private String staffPermission;
}
