package com.aegis.resource.vehicle.domain;

import com.aegis.common.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.math.BigDecimal;
import java.util.Date;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 车辆实体类 resource_vehicle
 * 
 * @author aegis
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("resource_vehicle")
public class Vehicle extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /** 车辆ID */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /** 车辆名称 */
    @NotBlank(message = "车辆名称不能为空")
    @Size(max = 100, message = "车辆名称长度不能超过100个字符")
    private String vehicleName;

    /** 车牌号/编号 */
    @Size(max = 32, message = "车牌号长度不能超过32个字符")
    private String plateNo;

    /** 车辆类型 */
    @Size(max = 32, message = "车辆类型长度不能超过32个字符")
    private String vehicleType;

    /** 所属队伍ID */
    private Long teamId;

    /** 状态：available/busy/maintenance/offline/scrap */
    @Size(max = 16, message = "状态长度不能超过16个字符")
    private String status;

    /** 能力标签 */
    @Size(max = 500, message = "能力标签长度不能超过500个字符")
    private String capabilities;

    /** 定位设备ID */
    @Size(max = 64, message = "定位设备ID长度不能超过64个字符")
    private String deviceId;

    /** 设备提供商/协议 */
    @Size(max = 32, message = "设备提供商长度不能超过32个字符")
    private String deviceProvider;

    /** GPS纬度 */
    private BigDecimal gpsLat;

    /** GPS经度 */
    private BigDecimal gpsLng;

    /** 最后定位时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date lastSeenAt;

    /** 删除标志（0代表存在 2代表删除） */
    @TableLogic
    private String delFlag;
}