package com.muyu.domain.req;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.muyu.common.core.annotation.Excel;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.constraints.NotEmpty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;

/**
 * @Author: LiDongJia
 * @Package: com.muyu.car.domain.req
 * @Project: 2112-car-cloud-server
 * @name: VehicleAddReq
 * @Date: 2024/9/17  18:59
 * @Description: 新增车辆参数
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Tag(name = "录入车辆请求参数", description = "根据入参进行车辆管理的添加")
public class VehicleAddReq {

    /**
     * 车牌号
     */
    @NotEmpty(message = "车牌号不可为空")
    @Schema(title = "车牌号", type = "String", defaultValue = "冀A93827", description = "车牌号")
    private String licenceNumber;

    /**
     * 车辆颜色
     */
    @Schema(title = "车辆颜色", type = "String", defaultValue = "RED", description = "车牌颜色")
    private String vehicleColor;

    /**
     * 车辆VIN
     */
    @Schema(title = "车辆VIN", type = "String", defaultValue = "LDC913L2240606423", description = "车辆VIN")
    private String vehicleVin;

    /**
     * 车辆类型外键
     */
    @Schema(title = "车辆类型", type = "BigInt", defaultValue = "1", description = "车辆类型")
    private Long vehicleTypeId;

    /**
     * 车辆品牌
     */
    @Schema(title = "车辆品牌", type = "String", defaultValue = "1", description = "车辆品牌")
    private String vehicleBrand;

    /**
     * 车辆型号
     */
    @Schema(title = "车辆型号", type = "String", defaultValue = "1", description = "车辆型号")
    private String vehicleModel;

    /**
     * 车辆行驶证
     */
    @Schema(title = "车辆行驶证", type = "String", defaultValue = "111111", description = "车辆行驶证")
    private String vehicleLicense;

    /**
     * 行驶证到期日期
     */
    @Schema(title = "行驶证到期日期", type = "Date", defaultValue = "2024-01-01 00:00:00", description = "行驶证到期日期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date vehicleLicenseDueDate;

    /**
     * 车辆状态
     */
    @Schema(title = "车辆状态", type = "String", defaultValue = "OFFLINE", description = "车辆状态")
    private String vehicleStatus;

    /**
     * 车辆所属企业外键
     */
    @Schema(title = "车辆所属企业外键", type = "BigInt", defaultValue = "1", description = "车辆所属企业外键")
    private Long companyId;

    /**
     * 电子围栏外键
     */
    @Schema(title = "电子围栏外键", type = "Integer", defaultValue = "1", description = "电子围栏外键")
    private Integer fenceGroupId;

    /** 策略id */
    @Schema(type = "Long",description = "策略id")
    @TableId( type = IdType.AUTO)
    private Long warnStrategyId;
}
