package cn.iocoder.yudao.module.system.controller.admin.information.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;

import java.math.BigDecimal;
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 DeviceInformationRespVO {

    @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "14335")
    @ExcelProperty("主键ID")
    private Long id;

    @Schema(description = "地图id", example = "6609")
    @ExcelProperty("地图id")
    private Long positionMapId;

    @Schema(description = "地图子表节点id", example = "23591")
    @ExcelProperty("地图子表节点id")
    private Long positionMapItemId;

    @Schema(description = "库位坐标x轴")
    @ExcelProperty("库位坐标x轴")
    private String locationX;

    @Schema(description = "库位坐标y轴")
    @ExcelProperty("库位坐标y轴")
    private String locationY;

    @Schema(description = "实际坐标x轴")
    @ExcelProperty("实际坐标x轴")
    private String actualLocationX;

    @Schema(description = "实际坐标Y轴")
    @ExcelProperty("实际坐标Y轴")
    private String actualLocationY;

    @Schema(description = "宽度")
    @ExcelProperty("宽度")
    private BigDecimal locationWide;

    @Schema(description = "深度")
    @ExcelProperty("深度")
    private BigDecimal locationDeep;

    //1:充电桩,2:输送线,3:码垛机,4:自动门,5:提升机,6:信号灯,7:按钮盒,8:拆垛机, 9:摄像头,10 :翻转机
    @Schema(description = "设备类型 字典device_type", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    @ExcelProperty("设备类型 字典device_type")
    private Integer deviceType;

    @Schema(description = "设备编号")
    @ExcelProperty("设备编号")
    private String deviceNo;

    @Schema(description = "设备位置")
    @ExcelProperty("设备位置")
    private String deviceLocation;

    @Schema(description = "mac地址")
    @ExcelProperty("mac地址")
    private String macAddress;

    @Schema(description = "设备在地图上图标")
    @ExcelProperty("设备在地图上图标")
    private String mapImageUrl;

    @Schema(description = "上传图片附件", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn")
    @ExcelProperty("上传图片附件")
    private String url;

    @Schema(description = "图片设置（1：默认图片、2：上传图片、 3：不显示图片）")
    @ExcelProperty("图片设置（1：默认图片、2：上传图片、 3：不显示图片）")
    private Integer pictureConfig;

    @Schema(description = "设备状态（1：在线、2：离线、 3：异常）", example = "1")
    @ExcelProperty("设备状态（1：在线、2：离线、 3：异常）")
    private Integer deviceStatus;

    @Schema(description = "设备启用禁用（0：禁用、1：启用）")
    @ExcelProperty("设备启用禁用（0：禁用、1：启用）")
    private Integer deviceEnable;

    @Schema(description = "设备协议")
    @ExcelProperty("设备协议")
    private String deviceAgreement;

    @Schema(description = "设备最后通讯时间")
    @ExcelProperty("设备最后通讯时间")
    private LocalDateTime deviceLastTime;

    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("创建时间")
    private LocalDateTime createTime;

    @Schema(description = "设备使用状态（0:空闲、1:使用中）")
    @ExcelProperty("设备使用状态（0:空闲、1:使用中）")
    private Integer deviceUseStatus;

    @Schema(description = "设备专有属性（1：自动充电类型充电桩、2：手动充电类型充电桩）")
    @ExcelProperty("设备专有属性（1：自动充电类型充电桩、2：手动充电类型充电桩）")
    private Integer deviceAttribute;

    //地图所在楼层
    @Schema(description = "地图所在楼层")
    @ExcelProperty("地图所在楼层")
    public String floor;
    //地图所在区域
    @Schema(description = "地图所在区域")
    @ExcelProperty("地图所在区域")
    public String area;

    @Schema(description = "设备IP")
    @ExcelProperty("设备IP")
    private String deviceIp;

    @Schema(description = "端口")
    @ExcelProperty("端口")
    private String devicePort;

    @Schema(description = "最后使用者")
    @ExcelProperty("最后使用者")
    private String lastUser;

    @Schema(description = "摄像头类型（1 枪机 2半球 3球机 4云台枪机）")
    @ExcelProperty("摄像头类型（1 枪机 2半球 3球机 4云台枪机）")
    private String cameraType;

    @Schema(description = "摄像头编号")
    @ExcelProperty("摄像头编号")
    private String cameraCode;

    @Schema(description = "ware_house_take_point的id")
    @ExcelProperty("ware_house_take_point的id")
    private Long takePointId;

    @Schema(description = "检测点的id")
    private List<Long> checkPointIds;

    /*@Schema(description = "取货点位")
    private WareHouseTakePointDO takeWareHouseTakePointDO;

    @Schema(description = "检测区的取货点位")
    private List<WareHouseTakePointDO>  checkPointBindingList;*/
}
