package com.hotwj.platform.driverManagement.driver.domain.vo;

import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import com.hotwj.platform.driverManagement.driver.domain.HotDriver;
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.springframework.format.annotation.DateTimeFormat;

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


/**
 * 驾驶员基本信息视图对象 hot_driver
 *
 * @author shihongwei
 * @date 2025-12-19
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = HotDriver.class)
public class HotDriverVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

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

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

    /**
     * 默认车辆ID
     */
    private String vehicleId;

    /**
     * 已绑定车辆ID集合，多个以逗号分隔
     */
    private String vehicleIds;

    /**
     * 默认车牌号
     */
    private String plateNumber;

    /**
     * vehicleIds 对应的车牌号集合，多个以逗号分隔
     */
    private String vehiclePlateNumbers;

    /**
     * 入职日期
     */
    @ExcelProperty(value = "入职日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date entryDate;

    /**
     * 姓名
     */
    @ExcelProperty(value = "姓名")
    private String name;

    /**
     * 人员类型（字典/下拉）
     */
    @ExcelProperty(value = "人员类型", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "hot_person_type")
    private String personType;

    /**
     * 驾驶年限（年）
     */
    @ExcelProperty(value = "驾驶年限", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "年=")
    private Long drivingYears;

    /**
     * 手机号码
     */
    @ExcelProperty(value = "手机号码")
    private String phone;

    /**
     * 性别
     */
    @ExcelProperty(value = "性别", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "sys_user_sex")
    private String gender;

    /**
     * 民族
     */
    @ExcelProperty(value = "民族", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "nation")
    private String nation;

    /**
     * 参加工作时间
     */
    @ExcelProperty(value = "参加工作时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date startWorkDate;

    /**
     * 户籍地址
     */
    @ExcelProperty(value = "户籍地址")
    private String householdAddress;

    /**
     * 籍贯
     */
    @ExcelProperty(value = "籍贯")
    private String nativePlace;

    /**
     * 现居地
     */
    @ExcelProperty(value = "现居地")
    private String currentAddress;

    /**
     * 是否党员：1是 0否
     */
    private Long isPartyMember;

    /**
     * 政治面貌
     */
    @ExcelProperty(value = "政治面貌", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "hot_political_status")
    private String politicalStatus;
    
    /**
     * 婚姻状态：1已婚 0未婚
     */
    @ExcelProperty(value = "婚姻状态：1已婚 0未婚")
    private Long maritalStatus;

    /**
     * 学历（字典）
     */
    @ExcelProperty(value = "学历", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "hot_academic")
    private String education;

    /**
     * 健康状态/体检结论（字典）
     */
    @ExcelProperty(value = "健康状态/体检结论", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "hot_health")
    private String healthStatus;

    /**
     * 出生日期
     */
    @ExcelProperty(value = "出生日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date birthDate;

    /**
     * 身份证号
     */
    @ExcelProperty(value = "身份证号")
    private String idCardNo;

    /**
     * 身份证到期日期
     */
    @ExcelProperty(value = "身份证到期日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date idCardExpireDate;

    /**
     * 身份证长期有效：1是 0否
     */
    @ExcelProperty(value = "身份证长期有效：1是 0否")
    private Long idCardLongTerm;

    /**
     * 身份证正面URL
     */
    @ExcelProperty(value = "身份证正面URL")
    private String idcardFrontUrl;

    /**
     * 身份证反面URL
     */
    @ExcelProperty(value = "身份证反面URL")
    private String idcardBackUrl;

    /**
     * 寸照URL
     */
    @ExcelProperty(value = "寸照URL")
    private String portraitUrl;

    /**
     * 电子签名URL
     */
    @ExcelProperty(value = "电子签名URL")
    private String signatureUrl;

    /**
     * 诚信承诺到期日期
     */
    @ExcelProperty(value = "诚信承诺到期日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date integrityPromiseExpireDate;

    /**
     * 诚信考核等级（字典）
     */
    @ExcelProperty(value = "诚信考核等级", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "字=典")
    private String integrityLevel;

    /**
     * 诚信承诺书附件URL
     */
    @ExcelProperty(value = "诚信承诺书附件URL")
    private String integrityPromiseAttachmentUrl;

    /**
     * 人事意见
     */
    @ExcelProperty(value = "人事意见")
    private String hrOpinion;

    /**
     * 部门意见
     */
    @ExcelProperty(value = "部门意见")
    private String deptOpinion;

    /**
     * 公司领导意见
     */
    @ExcelProperty(value = "公司领导意见")
    private String leaderOpinion;

    /**
     * 处分或表彰说明
     */
    @ExcelProperty(value = "处分或表彰说明")
    private String rewardOrPunishment;

    /**
     * 签名
     */
    @ExcelProperty(value = "签名")
    private String signature;

    /**
     * 状态：1=正常 0=禁用
     */
    @ExcelProperty(value = "状态：1=正常 0=禁用")
    private Long status;

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

    /**
     * 驾驶证初次领证日期
     */
    @ExcelProperty(value = "驾驶证初次领证日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date driverLicenseFirstIssueDate;

    /**
     * 驾驶证到期时间
     */
    @ExcelProperty(value = "驾驶证到期时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date driverLicenseExpireDate;

    /**
     * 驾驶证是否长期 0否 1是
     */
    @ExcelProperty(value = "驾驶证是否长期 0否 1是")
    private Long driverLicenseLongTerm;

    /**
     * 准驾车型
     */
    @ExcelProperty(value = "准驾车型")
    private String driverLicenseVehicleType;

    /**
     * 驾驶证号
     */
    @ExcelProperty(value = "驾驶证号")
    private String driverLicenseNo;

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

    /**
     * 驾驶证发证机关
     */
    @ExcelProperty(value = "驾驶证发证机关")
    private String driverLicenseOrg;

    /**
     * 驾驶证主页图片地址
     */
    @ExcelProperty(value = "驾驶证主页图片地址")
    private String driverLicenseMainImg;

    /**
     * 驾驶证副页图片地址
     */
    @ExcelProperty(value = "驾驶证副页图片地址")
    private String driverLicenseViceImg;

    /**
     * 驾驶证其他附页图片地址
     */
    @ExcelProperty(value = "驾驶证其他附页图片地址")
    private String driverLicenseOtherImg;

    /**
     * 从业资格证类别
     */
    @ExcelProperty(value = "从业资格证类别", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "hot_category_qualification_certificate")
    private String qualificationType;

    /**
     * 从业资格证号
     */
    @ExcelProperty(value = "从业资格证号")
    private String qualificationNo;

    /**
     * 从业资格证初次申领日期
     */
    @ExcelProperty(value = "从业资格证初次申领日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date qualificationFirstIssueDate;

    /**
     * 从业资格证有效起始日期
     */
    @ExcelProperty(value = "从业资格证有效起始日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date qualificationValidStartDate;

    /**
     * 从业资格证有效终止日期
     */
    @ExcelProperty(value = "从业资格证有效终止日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date qualificationValidEndDate;

    /**
     * 从业资格证发证机关
     */
    @ExcelProperty(value = "从业资格证发证机关")
    private String qualificationOrg;

    /**
     * 从业资格证图片地址
     */
    @ExcelProperty(value = "从业资格证图片地址")
    private String qualificationImg;

    /**
     * 审核状态：0=待审核 1=审核通过 2=审核驳回
     */
    private Integer auditStatus;
}
