package cn.iocoder.yudao.module.custom.entity;

import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.time.LocalDateTime;

import static cn.iocoder.yudao.common.DictBaseConstants.*;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;

/**
 * 车辆信息 DO
 *
 * @author 后台管理员
 */
@TableName("base_car_main")
@Data
@EqualsAndHashCode(callSuper = true)
public class CarMain extends TenantBaseDO {

    /**
     * 主键标识
     */
    @TableId(type = IdType.ASSIGN_UUID)
    private String id;
    /**
     * 用户ID
     */
    private Long userId;
    /**
     * 发动机号码
     */
    @ExcelProperty("发动机号码")
    private String engineNumber;
    /**
     * 车架号
     */
    @ExcelProperty("车架号")
    private String vin;
    /**
     * 车牌号
     */
    @ExcelProperty("车牌号")
    private String licenseNumber;
    /**
     * 车辆型号
     */
    private String carModel;
    /**
     * 保养日期
     */
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
    private LocalDateTime maintenanceDate;
    /**
     * 保养里程
     */
    private BigDecimal maintenanceMileage;
    /**
     * 年检日期
     */
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    private LocalDateTime inspectionDate;
    /**
     * 保险日期
     */
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    private LocalDateTime insuranceDate;
    /**
     * 二级维护时间
     */
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
    private LocalDateTime checkDate;
    /**
     * 下次保养日期
     */
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
    private LocalDateTime nextMaintenanceDate;
    /**
     * 下次保养里程
     */
    private BigDecimal nextMaintenanceMileage;
    /**
     * 下次年检日期
     */
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
    private LocalDateTime nextInspectionDate;
    /**
     * 保险到期日期
     */
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
    private LocalDateTime insuranceExpiryDate;
    /**
     * 下次二级维护时间
     */
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
    private LocalDateTime nextCheckDate;
    /**
     * 车辆品牌
     */
    private String carBrand;
    /**
     * 车辆性质：营运 非营运等
     */
    @ExcelProperty(value = "车辆性质", converter = DictConvert.class)
    @DictFormat(DICT_CAR_NATURE)
    private String carNature;
    /**
     * 车辆类别：私家车 货车 教练车 公务车 出租车
     */
    @ExcelProperty(value = "车辆类别", converter = DictConvert.class)
    @DictFormat(DICT_CAR_CATEGORY)
    private String carCategory;
    /**
     * 车辆注册日期
     */
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @ExcelProperty("车辆注册日期")
    private LocalDateTime carRegisterDate;
    /**
     * 行驶证图片
     */
    private String carLicenseImg;
    /**
     * 最近办理业务
     */
    @ExcelProperty(value = "最近办理业务", converter = DictConvert.class)
    @DictFormat(DICT_CUS_BUSI_TYPE)
    private String recentlyHandledBusiness;
    /**
     * 最近办理业务的时间
     */
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @ExcelProperty("最近业务时间")
    private LocalDateTime recentlyHandleBusinessTime;

    /** 保险公司名称 */
    private String insuranceName;
    /** 承保险种,多个英文逗号隔开 */
    private String insuranceType;
    /** 交强险保费 */
    private BigDecimal jiaoqiang;
    /** 商业险保费 */
    private BigDecimal shangye;
    /** 车龄 */
    private Double carYear;
}