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

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.time.LocalDateTime;

@Schema(description = "管理后台 - 仓库点位地图子表 Response VO")
@Data
@ExcelIgnoreUnannotated
public class PositionMapItemRespVO {

    @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "31007")
    @ExcelProperty("主键ID")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;

    @Schema(description = "仓库点位地图表id", example = "30963")
    @ExcelProperty("仓库点位地图表id")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long positionMapId;

    @Schema(description = "库区id(自定义)", example = "30963")
    @ExcelProperty("库区id(自定义)")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long areaId;

    @Schema(description = "巷道id(自定义)", example = "30963")
    @ExcelProperty("巷道id(自定义)")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long laneId;

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

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

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

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

    @Schema(description = "类型 1.路径点位 2.库位点 3.充电桩 4.停车点 5.区域变更点 6.等待点 7.文字点 8.检测点 --- 后续补充", example = "1")
    @ExcelProperty("类型 1.路径点位 2.库位点 3.充电桩 4.停车点 5.区域变更点 6.等待点 7.文字点 8.检测点 --- 后续补充")
    private Integer type;

    @Schema(description = "点位自增排序")
    private Long sortNum;

    @Schema(description = "对应各个类型的独有属性Json格式 例如（{库位长度:1,库位宽度:2,库位方向:单向}）", example = "1")
    private String dataJson;

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

    @Schema(description = "弧度")
    @ExcelProperty("弧度")
    private String locationYaw;

    @Schema(description = "排序的位置,越大越优先堆放")
    @ExcelProperty("排序的位置,越大越优先堆放")
    private Long locationNumber;

    @Schema(description = "等待点使用状态, 0:空闲 ,1:前往停车点(预占用停车点) ,2.使用中(已经在停车位上)")
    @ExcelProperty("等待点使用状态, 0:空闲 ,1:前往停车点(预占用停车点) ,2.使用中(已经在停车位上)")
    private Integer useStatus;

    @Schema(description = "AGV编号")
    @ExcelProperty("等待点使用状态(0.空闲 1.使用中)")
    private String robotNo;

}
