package com.ningdatech.carapi.car.vehicle.model;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.experimental.Accessors;

import javax.validation.constraints.Size;
import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * <p>
 * 
 * </p>
 *
 * @author PoffyZhang
 * @since 2022-10-09
 */
@Data
@TableName("nd_vehicle_base_info")
@ApiModel(value = "NdVehicleBaseInfo", description = "车辆档案-车辆基本信息")
@NoArgsConstructor
@ToString(callSuper = true)
@Accessors(chain = true)
@AllArgsConstructor
public class NdVehicleBaseInfoJoin implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty("ID")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    private Long createBy;

    private Long updateBy;

    private LocalDateTime createOn;

    private LocalDateTime updateOn;

    @ApiModelProperty("车牌号")
    @Size(max = 20, message = "车牌号不能超过20")
    @TableField(value = "car_plate")
    private String carPlate;

    @ApiModelProperty("自编号")
    @Size(max = 30, message = "自编号长度不能超过30")
    @TableField(value = "self_no")
    private String selfNo;

    @ApiModelProperty("车辆颜色")
    @TableField(value = "plate_color")
    private String plateColor;

    @ApiModelProperty("所属企业ID")
    @TableField(value = "company_id")
    private Long companyId;

    @ApiModelProperty("所属企业名称")
//    @TableField(exist = false)
    private String companyName;

    @ApiModelProperty("行政区域id")
    @TableField(value = "region_id")
    private Long regionId;

    @ApiModelProperty("行政区域名称")
    @TableField(exist = false)
    private String regionName;

    @ApiModelProperty("车辆类型")
    @TableField(value = "vehicle_type")
    private Integer vehicleType;

    @ApiModelProperty("车辆类型名")
    @TableField(exist = false)
    private String vehicleTypeName;

    @ApiModelProperty("标准吨位 单位:吨")
    @TableField(value = "standard_tonnage")
    private Double standardTonnage;

    @ApiModelProperty("发动机号")
    @TableField(value = "engine_no")
    private String engineNo;

    @ApiModelProperty("底盘号")
    @TableField(value = "chassis_no")
    private String chassisNo;

    @ApiModelProperty("运营商ID")
    @TableField(value = "operator_id")
    private Long operatorId;

    @ApiModelProperty("运营商名")
//    @TableField(exist = false)
    private String operatorName;

    @ApiModelProperty("责任驾驶员一")
    @TableField(value = "responsible_driver_first")
    private String responsibleDriverFirst;

    @ApiModelProperty("责任驾驶员一 电话")
    @TableField(value = "responsible_driver_first_mobile")
    private String responsibleDriverFirstMobile;

    @ApiModelProperty("责任驾驶员二")
    @TableField(value = "responsible_driver_second")
    private String responsibleDriverSecond;

    @ApiModelProperty("责任驾驶员二 电话")
    @TableField(value = "responsible_driver_second_mobile")
    private String responsibleDriverSecondMobile;

    @ApiModelProperty("百公里油耗 单位: L/km")
    @TableField(value = "fuel_consumption_per")
    private Double fuelConsumptionPer;

    @ApiModelProperty("限速值 公里/小时")
    @TableField(value = "limited_speed")
    private Double limitedSpeed;

    @ApiModelProperty("标准油量 L")
    @TableField(value = "standard_oil_quantity")
    private Double standardOilQuantity;

    @ApiModelProperty("车身长度 cm")
    @TableField(value = "vehicle_length")
    private Double vehicleLength;

    @ApiModelProperty("保养时间")
    @TableField(value = "service_time")
    private LocalDateTime serviceTime;

    @ApiModelProperty("保养时间周期 天")
    @TableField(value = "service_time_interval")
    private Integer serviceTimeInterval;

    @ApiModelProperty("保养里程 km")
    @TableField(value = "service_cycle")
    private Double serviceCycle;

    @ApiModelProperty("保养时间周期 天")
    @TableField(value = "service_cycle_interval")
    private Integer serviceCycleInterval;

    @ApiModelProperty("服务费开始时间")
    @TableField(value = "service_fee_start")
    private LocalDateTime serviceFeeStart;

    @ApiModelProperty("服务费结束时间")
    @TableField(value = "service_fee_end")
    private LocalDateTime serviceFeeEnd;

    @ApiModelProperty("燃油级别")
    @TableField(value = "fuel_level")
    private String fuelLevel;

    @ApiModelProperty("道路运证编号")
    @TableField(value = "road_transportation_num")
    private String roadTransportationNum;


    @ApiModelProperty("审核状态 1.审核中 2.审核通过 3.审核不通过")
    @TableField(value = "audit_state")
    private Integer auditState;

    @ApiModelProperty("审核时间")
    @TableField(value = "audit_time")
    private LocalDateTime auditTime;


    @ApiModelProperty("审核人")
    @TableField(value = "audit_by")
    private Long auditBy;

    @ApiModelProperty("审核意见")
    @TableField(value = "audit_mind")
    private String auditMind;

    @ApiModelProperty("排放标准")
    @TableField(value = "effluent_discharge_standard")
    private String effluentDischargeStandard;

    @ApiModelProperty("使用年限")
    @TableField(value = "useful_life")
    private Integer usefulLife;

    @ApiModelProperty("自重 吨")
    @TableField(value = "self_weight")
    private Double selfWeight;

    @ApiModelProperty("设备ID")
    @TableField(value = "equipment_id")
    private Long equipmentId;

    @ApiModelProperty("车辆状态 0离线 1在线 2异常")
    private Integer status;

    @ApiModelProperty("车辆是否行驶 0没有行驶 1行驶中")
    private Integer moving;

    @ApiModelProperty("是否删除 0未删除 1已删除")
    private Integer deleted;

    @ApiModelProperty("使用企业ID")
    private Long useCompanyId;

    @ApiModelProperty("使用企业名称")
    private String useCompanyName;

    @ApiModelProperty("车辆状态")
    private Integer vehicleStatus;

    @ApiModelProperty("上次在线时间")
    private LocalDateTime lastOnlineTime;
}
