package cn.iocoder.yudao.module.pms.controller.admin.yanfan.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;

@Schema(description = "管理后台 - 设备新增/修改 Request VO")
@Data
public class DeviceSaveReqVO {

    @Schema(description = "设备ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "25364")
    private Long deviceId;

    @Schema(description = "设备名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
    @NotEmpty(message = "设备名称不能为空")
    private String deviceName;

    @Schema(description = "产品ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "30992")
    @NotNull(message = "产品ID不能为空")
    private Long productId;

    @Schema(description = "产品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
    @NotEmpty(message = "产品名称不能为空")
    private String productName;

    @Schema(description = "租户名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
    @NotEmpty(message = "租户名称不能为空")
    private String tenantName;

    @Schema(description = "设备编号", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "设备编号不能为空")
    private String serialNumber;

    @Schema(description = "子设备网关编号")
    private String gwDevCode;

    @Schema(description = "固件版本", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "固件版本不能为空")
    private Double firmwareVersion;

    @Schema(description = "设备状态（1-未激活，2-禁用，3-在线，4-离线）", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    @NotNull(message = "设备状态（1-未激活，2-禁用，3-在线，4-离线）不能为空")
    private Integer status;

    @Schema(description = "信号强度（	信号极好4格[-55— 0]，	信号好3格[-70— -55]，	信号一般2格[-85— -70]，	信号差1格[-100— -85]）")
    private Integer rssi;

    @Schema(description = "是否启用设备影子(0=禁用，1=启用)")
    private Boolean isShadow;

    @Schema(description = "定位方式(1=ip自动定位，2=设备定位，3=自定义)")
    private Boolean locationWay;

    @Schema(description = "物模型值")
    private String thingsModelValue;

    @Schema(description = "设备所在地址")
    private String networkAddress;

    @Schema(description = "设备入网IP")
    private String networkIp;

    @Schema(description = "设备经度")
    private Double longitude;

    @Schema(description = "设备纬度")
    private Double latitude;

    @Schema(description = "激活时间")
    private LocalDateTime activeTime;

    @Schema(description = "设备摘要")
    private String summary;

    @Schema(description = "图片地址", example = "https://www.iocoder.cn")
    private String imgUrl;

    @Schema(description = "删除标志（0代表存在 2代表删除）")
    private String delFlag;

    @Schema(description = "创建者")
    private String createBy;

    @Schema(description = "更新者")
    private String updateBy;

    @Schema(description = "备注", example = "你猜")
    private String remark;

    @Schema(description = "是否是模拟设备")
    private Integer isSimulate;

    @Schema(description = "从机id", example = "31402")
    private Integer slaveId;

    @Schema(description = "clientId编号", example = "28927")
    private String clientId;

    @Schema(description = "发布")
    private String postDev;

    @Schema(description = "订阅")
    private String getDev;

    @Schema(description = "mqtt是否自定义状态（1为初始化，0为自定义）")
    private Integer mqttstats;

}
