package cn.iocoder.yudao.module.asset.dal.dataobject.vehicle;

import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;

import java.time.LocalDate;

/**
 * 车辆状态信息 DO
 *
 * @author 芋道源码
 */
@TableName("asset_vehicle_status")
@KeySequence("asset_vehicle_status_seq")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class VehicleStatusDO extends BaseDO {

    /**
     * 主键ID
     */
    @TableId
    private Long id;

    /**
     * 车辆ID
     */
    private Long vehicleId;

    /**
     * 车辆状态（0=正常 1=维修中 2=报废）
     */
    private Integer status;

    /**
     * 运营状态（0=待运营 1=库存 2=租赁 3=自营 4=退出运营）
     */
    private Integer operateStatus;

    /**
     * 库位状态（0=新车入库-待验车 1=新车入库-证照办理 2=库存车-可交付车 3=库存车-不可交付车 4=库存车-呆滞车 5=已交付车-租赁交车 6=已交付车-自营交车 7=已交付车-替换交车 8=退出运营-报废车 9=退出运营-三方退租车 10=退出运营-过户售车）
     */
    private Integer storageStatus;

    /**
     * 出库状态（0=无 1=异动出库 2=调拨出库 3=展示出库 4=租赁交车 5=自营交车 6=替换交车 7=过户售车 8=外租退车 9=报废出库）
     */
    private Integer outStatus;

    /**
     * 预占状态（0=未预占 1=已预占）
     */
    private Integer preemptStatus;

    /**
     * 整备状态（0=无 1=待整备 2=整备中 3=正常）
     */
    private Integer prepareStatus;

    /**
     * 过户状态（0=无 1=过户中 2=内部过户完成 3=销售过户完成）
     */
    private Integer transferStatus;

    /**
     * 维修状态（0=正常 1=待服务站接单 2=维修中）
     */
    private Integer repairStatus;

    /**
     * 证照状态（0=正常 1=异常）
     */
    private Integer licenseStatus;

    /**
     * 报废状态（0=无 1=报废中 2=已报废）
     */
    private Integer scrapStatus;

    /**
     * 在线状态（0=离线 1=在线）
     */
    private Integer onlineStatus;

    /**
     * 是否已备车
     */
    private Boolean isPrepared;

    /**
     * 是否已交车
     */
    private Boolean isDelivered;

    /**
     * 是否已还车
     */
    private Boolean isReturned;

    /**
     * 上次保养日期
     */
    private LocalDate lastMaintainDate;

    /**
     * 下次保养日期
     */
    private LocalDate nextMaintainDate;

    /**
     * 上次年检日期
     */
    private LocalDate lastInspectDate;

    /**
     * 下次年检日期
     */
    private LocalDate nextInspectDate;

    /**
     * 保险到期日期
     */
    private LocalDate insuranceExpireDate;

}
