package com.hotwj.platform.resourceManagement.vehicleManagement.domain.vo;

import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.hotwj.platform.resourceManagement.vehicleManagement.domain.HotVehicle;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import org.dromara.common.translation.annotation.Translation;
import org.dromara.common.translation.constant.TransConstant;

import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;


/**
 * 公司车辆信息视图对象 hot_vehicle
 *
 * @author shihongwei
 * @date 2025-12-15
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = HotVehicle.class)
public class HotVehicleVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @ExcelProperty(value = "主键")
    private String id;

    /**
     * 公司ID
     */
    @ExcelProperty(value = "公司ID")
    private Long companyId;

    /**
     * GPS参数
     */
    @ExcelProperty(value = "GPS参数")
    private String gpsParams;

    /**
     * 是否挂车0=否, 1=是
     */
    @ExcelProperty(value = "是否挂车0=否, 1=是", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "sys_yes_no")
    private Long isTrailer;

    /**
     * 车辆状态 1=正常, 0=停用
     */
    @ExcelProperty(value = "车辆状态 1=正常, 0=停用", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "sys_yes_no")
    private Long vehicleStatus;

    /**
     * 运营状态:1=正常,2=暂停,3=过户,4=报废
     */
    @ExcelProperty(value = "运营状态:1=正常,2=暂停,3=过户,4=报废", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "sys_vehicle_status")
    private Long operationStatus;

    /**
     * 备注
     */
    @ExcelProperty(value = "备注")
    private String remark;

    /**
     * 当前驾驶员
     */
    @ExcelProperty(value = "当前驾驶员")
    private String currentDriver;

    @Translation(type = TransConstant.DRIVER_ID_TO_NAME, mapper = "currentDriver")
    private String currentDriverName;

    @Translation(type = TransConstant.DRIVER_ID_TO_NAME_WITH_TYPE, mapper = "currentDriver")
    private String currentBindingPersonName;

    /**
     * 车身照片URL(多个逗号分隔)
     */
    @ExcelProperty(value = "车身照片URL(多个逗号分隔)")
    private String bodyImageUrls;

    /**
     * 车身照片URL(多个逗号分隔)Url
     */
    @Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "bodyImageUrls")
    private String bodyImageUrlsUrl;
    /**
     * 其它证附件URL(多个逗号分隔)
     */
    @ExcelProperty(value = "其它证附件URL(多个逗号分隔)")
    private String otherAttachmentUrls;

    /**
     * 其它证附件URL(多个逗号分隔)Url
     */
    @Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "otherAttachmentUrls")
    private String otherAttachmentUrlsUrl;
    /**
     * 车身颜色
     */
    @ExcelProperty(value = "车身颜色")
    private String color;

    /**
     * 出厂日期
     */
    @ExcelProperty(value = "出厂日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date manufactureDate;

    /**
     * 燃料种类
     */
    @ExcelProperty(value = "燃料种类")
    private String fuelType;

    /**
     * 制造厂名称
     */
    @ExcelProperty(value = "制造厂名称")
    private String manufacturerName;

    /**
     * 车牌颜色
     */
    @ExcelProperty(value = "车牌颜色")
    private String plateColor;

    /**
     * 车辆登记日期
     */
    @ExcelProperty(value = "车辆登记日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date vehicleRegisterDate;

    /**
     * 发动机排量(ml)
     */
    @ExcelProperty(value = "发动机排量(ml)")
    private Long engineDisplacementMl;

    /**
     * 轮胎数量
     */
    @ExcelProperty(value = "轮胎数量")
    private Long tireCount;

    /**
     * 底盘型号
     */
    @ExcelProperty(value = "底盘型号")
    private String chassisModel;

    /**
     * 卫星定位装置
     */
    @ExcelProperty(value = "卫星定位装置")
    private String satellitePositioningDevice;

    /**
     * 变速器
     */
    @ExcelProperty(value = "变速器")
    private String transmission;

    /**
     * 缓速器
     */
    @ExcelProperty(value = "缓速器")
    private String retarder;

    /**
     * 货箱内部容积(立方米)
     */
    @ExcelProperty(value = "货箱内部容积(立方米)")
    private BigDecimal cargoInnerVolumeM3;

    /**
     * 排放标准
     */
    @ExcelProperty(value = "排放标准")
    private String emissionStandard;

    /**
     * 电池类型
     */
    @ExcelProperty(value = "电池类型")
    private String batteryType;

    /**
     * 承保座数
     */
    @ExcelProperty(value = "承保座数")
    private Long insuredSeatCount;

    /**
     * 行车制动方式
     */
    @ExcelProperty(value = "行车制动方式")
    private String serviceBrakeType;

    /**
     * 前轮制动器形式
     */
    @ExcelProperty(value = "前轮制动器形式")
    private String frontBrakeType;

    /**
     * 后轮制动器形式
     */
    @ExcelProperty(value = "后轮制动器形式")
    private String rearBrakeType;

    /**
     * 制动防抱死系统
     */
    @ExcelProperty(value = "制动防抱死系统")
    private String hasAbs;

    /**
     * 空调系统
     */
    @ExcelProperty(value = "空调系统")
    private String hasAirConditioning;

    /**
     * 三角木标记
     */
    @ExcelProperty(value = "三角木标记")
    private String hasTriangleBlock;

    /**
     * 灭火器
     */
    @ExcelProperty(value = "灭火器")
    private String hasFireExtinguisher;

    /**
     * 故障警示牌
     */
    @ExcelProperty(value = "故障警示牌")
    private String hasBreakdownWarningSign;

    /**
     * 国产标记
     */
    @ExcelProperty(value = "国产标记")
    private String domesticMark;

    /**
     * 车辆分类
     */
    @ExcelProperty(value = "车辆分类")
    private String vehicleCategory;

    /**
     * 强制报废期止
     */
    @ExcelProperty(value = "强制报废期止")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date mandatoryScrapEndDate;

    /**
     * 使用性质
     */
    @ExcelProperty(value = "使用性质")
    private String useNature;

    /**
     * 车辆型号
     */
    @ExcelProperty(value = "车辆型号")
    private String vehicleModel;

    /**
     * 车架号
     */
    @ExcelProperty(value = "车架号")
    private String frameNumber;

    /**
     * 货箱内部长(mm)
     */
    @ExcelProperty(value = "货箱内部长(mm)")
    private Long cargoInnerLengthMm;

    /**
     * 货箱内部宽(mm)
     */
    @ExcelProperty(value = "货箱内部宽(mm)")
    private Long cargoInnerWidthMm;

    /**
     * 货箱内部高(mm)
     */
    @ExcelProperty(value = "货箱内部高(mm)")
    private Long cargoInnerHeightMm;

    /**
     * 是否按揭:0=否,1=是
     */
    @ExcelProperty(value = "是否按揭:0=否,1=是", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "sys_yes_no")
    private Long isMortgaged;

    /**
     * 按揭公司
     */
    @ExcelProperty(value = "按揭公司")
    private String mortgageCompany;

    /**
     * 按揭联系人
     */
    @ExcelProperty(value = "按揭联系人")
    private String mortgageContact;

    /**
     * 按揭联系人电话
     */
    @ExcelProperty(value = "按揭联系人电话")
    private String mortgageContactPhone;

    /**
     * 发动机净功率(kW)
     */
    @ExcelProperty(value = "发动机净功率(kW)")
    private Long enginePowerKw;

    /**
     * 电机功率(kW)
     */
    @ExcelProperty(value = "电机功率(kW)")
    private Long motorPowerKw;

    /**
     * 驱动电机型号
     */
    @ExcelProperty(value = "驱动电机型号")
    private String engineNumber;

    /**
     * 轮胎规格
     */
    @ExcelProperty(value = "轮胎规格")
    private String tireSpec;

    /**
     * 轴距(mm)
     */
    @ExcelProperty(value = "轴距(mm)")
    private Long wheelbaseMm;

    /**
     * 车轴数
     */
    @ExcelProperty(value = "车轴数")
    private Long axleCount;

    /**
     * 登记证书图片URL(多个逗号分隔)
     */
    @ExcelProperty(value = "登记证书图片URL(多个逗号分隔)")
    private String registerCertImageUrls;

    /**
     * 登记证书图片URL(多个逗号分隔)Url
     */
    @Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "registerCertImageUrls")
    private String registerCertImageUrlsUrl;
    /**
     * 车牌号
     */
    @ExcelProperty(value = "车牌号")
    private String plateNumber;

    /**
     * 档案号
     */
    @ExcelProperty(value = "档案号")
    private String archiveNo;

    /**
     * 车辆类型
     */
    @ExcelProperty(value = "车辆类型")
    private String vehicleType;

    /**
     * 注册日期
     */
    @ExcelProperty(value = "注册日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date firstRegisterDate;

    /**
     * 发证日期
     */
    @ExcelProperty(value = "发证日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date certificateIssueDate;

    /**
     * 检验有效期(YYYY-MM)
     */
    @ExcelProperty(value = "检验有效期(YYYY-MM)")
    private String inspectionValidMonth;

    /**
     * 机动车所有人
     */
    @ExcelProperty(value = "机动车所有人")
    private String owner;

    /**
     * 地址
     */
    @ExcelProperty(value = "地址")
    private String address;

    /**
     * 品牌型号
     */
    @ExcelProperty(value = "品牌型号")
    private String brandModel;

    /**
     * 核定载人数
     */
    @ExcelProperty(value = "核定载人数")
    private Long ratedPassengerCount;

    /**
     * 总质量(kg)
     */
    @ExcelProperty(value = "总质量(kg)")
    private Long grossWeightKg;

    /**
     * 整备质量(kg)
     */
    @ExcelProperty(value = "整备质量(kg)")
    private Long curbWeightKg;

    /**
     * 核定载质量(kg)
     */
    @ExcelProperty(value = "核定载质量(kg)")
    private Long ratedLoadKg;

    /**
     * 准牵引总质量(kg)
     */
    @ExcelProperty(value = "准牵引总质量(kg)")
    private Long towingMassKg;

    /**
     * 车辆外廓长度(mm)
     */
    @ExcelProperty(value = "车辆外廓长度(mm)")
    private Long vehicleLengthMm;

    /**
     * 车辆外廓宽度(mm)
     */
    @ExcelProperty(value = "车辆外廓宽度(mm)")
    private Long vehicleWidthMm;

    /**
     * 车辆外廓高度(mm)
     */
    @ExcelProperty(value = "车辆外廓高度(mm)")
    private Long vehicleHeightMm;

    /**
     * 行驶证主页图片URL
     */
    @ExcelProperty(value = "行驶证主页图片URL")
    private String drivingLicenseMainUrls;

    /**
     * 行驶证主页图片URLUrl
     */
    @Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "drivingLicenseMainUrls")
    private String drivingLicenseMainUrlsUrl;
    /**
     * 行驶证副页图片URL
     */
    @ExcelProperty(value = "行驶证副页图片URL")
    private String drivingLicenseAuxUrls;

    /**
     * 行驶证副页图片URLUrl
     */
    @Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "drivingLicenseAuxUrls")
    private String drivingLicenseAuxUrlsUrl;
    /**
     * 行驶证其他URL
     */
    @ExcelProperty(value = "行驶证其他URL")
    private String drivingLicenseOtherUrl;

    /**
     * 行驶证其他URLUrl
     */
    @Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "drivingLicenseOtherUrl")
    private String drivingLicenseOtherUrlUrl;
    /**
     * 运输证号
     */
    @ExcelProperty(value = "运输证号")
    private String transportLicenseNo;

    /**
     * 运输证注册日期
     */
    @ExcelProperty(value = "运输证注册日期")
    private Date transportRegisterDate;

    /**
     * 运输证发证日期
     */
    @ExcelProperty(value = "运输证发证日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date transportIssueDate;

    /**
     * 运输证有效期(YYYY-MM)
     */
    @ExcelProperty(value = "运输证有效期(YYYY-MM)")
    private String transportValidMonth;

    /**
     * 运输证图片URL(多个逗号分隔)
     */
    @ExcelProperty(value = "运输证图片URL(多个逗号分隔)")
    private String transportLicenseUrls;

    /**
     * 运输证图片URL(多个逗号分隔)Url
     */
    @Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "transportLicenseUrls")
    private String transportLicenseUrlsUrl;

    /**
     * 发动机号
     */
    private String driveMotorModel;

    /**
     * 0=正常, 1=已删除
     */
    @ExcelProperty(value = "0=正常, 1=已删除")
    private Long isDeleted;


}
