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

import cn.iocoder.yudao.module.pms.dal.dataobject.yanfan.device.YfIotDeviceDO;
import cn.iocoder.yudao.module.pms.dal.dataobject.yanfan.sip.relation.IotYfSipRelationDO;
import io.swagger.v3.oas.annotations.media.Schema;
import liquibase.pro.packaged.Y;
import lombok.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;

@Schema(description = "管理后台 - 设备 Response VO")
@Data
@ExcelIgnoreUnannotated
public class YfIotDeviceRespVO {

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

    @Schema(description = "设备名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
    @ExcelProperty("设备名称")
    private String deviceName;

    @Schema(description = "产品ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "10997")
    @ExcelProperty("产品ID")
    private Long productId;

    @Schema(description = "产品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
    @ExcelProperty("产品名称")
    private String productName;
    private List<YfIotDeviceRespVO> subDeviceList;

    @Schema(description = "租户名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
    @ExcelProperty("租户名称")
    private String tenantName;

    @Schema(description = "设备编号", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("设备编号")
    private String serialNumber;

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

    @Schema(description = "固件版本", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("固件版本")
    private Double firmwareVersion;

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

    @Schema(description = "信号强度（	信号极好4格[-55— 0]，	信号好3格[-70— -55]，	信号一般2格[-85— -70]，	信号差1格[-100— -85]）")
    @ExcelProperty("信号强度（	信号极好4格[-55— 0]，	信号好3格[-70— -55]，	信号一般2格[-85— -70]，	信号差1格[-100— -85]）")
    private Integer rssi;
    private Long deptId;
    @Schema(description = "是否启用设备影子(0=禁用，1=启用)")
    @ExcelProperty("是否启用设备影子(0=禁用，1=启用)")
    private Boolean isShadow;

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

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

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

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

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

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

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

    @Schema(description = "设备摘要")
    @ExcelProperty("设备摘要，格式")
    private String summary;

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

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

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

    @Schema(description = "创建时间")
    @ExcelProperty("创建时间")
    private LocalDateTime createTime;

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

    @Schema(description = "备注", example = "随便")
    @ExcelProperty("备注")
    private String remark;

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

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

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

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

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

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

    private List<IotYfSipRelationDO> sipRelationList;

    private Integer deviceType;

    private String protocolCode;
    private String transport;
    private Long pmsDevice;
}
