package com.sckw.transport.model.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import jakarta.validation.constraints.*;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;

/**
 * @author zk
 * @desc 派车
 * @date 2023/7/19 0019
 */
@Data
public class SendCarDto1 {

    /**
     * 派车类型(1：趟次:2：循环)
     */
    @JsonProperty("type")
    @NotNull(message = "派车类型不能为空")
    private Integer type;

    /**
     * 物流订单id
     */
    @JsonProperty("lOrderId")
    @NotNull(message = "物流订单ID不能为空")
    private Long lOrderId;

    /**
     * 司机id
     */
    @JsonProperty("driverId")
    @NotNull(message = "司机信息ID不能为空")
    private Long driverId;

    /**
     * 司机名称
     */
    @JsonProperty("driverName")
    @NotBlank(message = "司机名称不能为空")
    private String driverName;

    /**
     * 司机手机号码
     */
    @JsonProperty("driverPhone")
    @NotBlank(message = "司机手机号码不能为空")
    private String driverPhone;

    /**
     * 司机身份证号
     */
    @JsonProperty("driverIdcard")
    @NotBlank(message = "司机身份证号不能为空")
    private String driverIdcard;


    /**
     * 车牌号
     */
    @JsonProperty("truckId")
    @NotNull(message = "车辆信息ID不能为空")
    private Long truckId;

    /**
     * 车牌号
     */
    @JsonProperty("truckNo")
    @NotBlank(message = "车牌号不能为空")
    private String truckNo;

    /**
     * 车辆类型（牵引车、自卸、高栏、平板、厢式、集装箱车、罐车、封闭式、专项作业车、其他）
     */
    private String truckType;

    /**
     * 车能源类型（柴油、汽油、电动、氢能、天然气、液化石油气、甲醇、油电混动、油气混动、其他）
     */
    private String truckEnergyType;

    /**
     * 车使用性质(营运车、租赁车辆、货运车、危化品运输车、非营运车、其他)
     */
    private String truckUseType;

    /**
     * 车辆颜色
     */
    private String truckColor;

    /**
     * 车挂车号
     */
    private String truckTrailerNo;


    /**
     * 上游给运单委派量
     */
    @JsonProperty("entrustAmount")
    @NotNull(message = "核定载量不能为空")
    @DecimalMin(value= "0", inclusive=false, message = "核定载量必须等于或大于0")
    private Double entrustAmount;

    /**
     * 趟次
     */
    @JsonProperty("count")
    @DecimalMin(value= "0", inclusive=false, message = "趟次必须等于或大于0")
    private Integer count;

    /**
     * 装货时间
     */
    @JsonFormat(locale="zh", pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @NotNull(message = "开始时间不能为空")
    private Date loadDateTime;

    /**
     * 卸货时间
     */
    @JsonFormat(locale="zh", pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @NotNull(message = "结束时间不能为空")
    private Date unloadDateTime;

}
