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

import cn.iocoder.yudao.framework.mybatis.core.type.LongListTypeHandler;
import cn.iocoder.yudao.module.system.controller.admin.robot.camera.RobotCameraAddVO;
import com.baomidou.mybatisplus.annotation.TableField;
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.*;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
import java.util.List;
import java.util.Set;

@Schema(description = "管理后台 - 车辆信息 Response VO")
@Data
@ExcelIgnoreUnannotated
public class RobotInformationRespVO {

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

    @Schema(description = "车辆类型表id", example = "28234")
    @ExcelProperty("车辆类型表id")
    private Long robotModelId;

    @Schema(description = "车辆类型")
    @ExcelProperty("车辆类型")
    private String robotModelNumber;

    @Schema(description = "AGV编号")
    @ExcelProperty("AGV编号")
    private String robotNo;

    @Schema(description = "任务模式（0：拒收任务、1：正常）", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("任务模式（0：拒收任务、1：正常）")
    private Integer robotTaskModel;

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

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

    @Schema(description = "AGV状态（0：暂停且无任务、1：暂停(有处理中的任务)、2：任务中、3：待命、4:充电中）", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    @ExcelProperty("AGV状态（0：暂停且无任务、1：暂停(有处理中的任务)、2：任务中、3：待命、4:充电中）")
    private Integer robotStatus;

    @TableField(typeHandler = LongListTypeHandler.class)
    @ExcelProperty("楼层/区域(json)")
    private Set<Long> floorAreaJson;

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

    @Schema(description = "楼层/区域(json)")
    @ExcelProperty("楼层/区域(json)")
    public List<RobotPositionMapVO> positionMapList;

    @Schema(description = "电量")
    @ExcelProperty("电量")
    private String electricity;

    @Schema(description = "自动充电电量")
    @ExcelProperty("自动充电电量")
    private Integer autoCharge;

    @Schema(description = "是否自动充电（0:手动充电,1:自动充电）")
    @ExcelProperty("是否自动充电（0:手动充电,1:自动充电）")
    private Integer chargeType;

    @Schema(description = "楼层")
    @ExcelProperty("楼层")
    public String floor;

    @Schema(description = "区域")
    @ExcelProperty("区域")
    public String area;

    @Schema(description = "机器人错误信息")
    public String errorMsg;

    @Schema(description = "robot_task_detail的id")
    private Long taskDetailId;

    @Schema(description = "车辆IP")
    private String robotIp;

    @Schema(description = "车辆端口")
    private Long robotPort;

    @Schema(description = "摄像头相关的配置")
    private List<RobotCameraAddVO> cameraAddVOList;

}