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

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_replacement")
@KeySequence("asset_vehicle_replacement_seq")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class VehicleReplacementDO extends BaseDO {

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

    /**
     * 替换单编码
     */
    private String replacementCode;

    /**
     * 替换类型（1=临时 2=永久）
     */
    private Integer replacementType;

    /**
     * 合同ID
     */
    private Long contractId;

    /**
     * 合同编码（冗余）
     */
    private String contractCode;

    /**
     * 客户ID
     */
    private Long customerId;

    /**
     * 客户名称（冗余）
     */
    private String customerName;

    /**
     * 来源交车单ID
     */
    private Long deliveryOrderId;

    /**
     * 原车辆ID
     */
    private Long originalVehicleId;

    /**
     * 原车牌号（冗余）
     */
    private String originalPlateNo;

    /**
     * 原车架号（冗余）
     */
    private String originalVin;

    /**
     * 新车辆ID
     */
    private Long newVehicleId;

    /**
     * 新车牌号（冗余）
     */
    private String newPlateNo;

    /**
     * 新车架号（冗余）
     */
    private String newVin;

    /**
     * 替换原因
     */
    private String replacementReason;

    /**
     * 预计替换日期
     */
    private LocalDate expectedDate;

    /**
     * 实际替换日期
     */
    private LocalDate actualDate;

    /**
     * 临时替换预计归还日期
     */
    private LocalDate returnDate;

    /**
     * 实际归还日期
     */
    private LocalDate actualReturnDate;

    /**
     * 状态（0=草稿 1=审批中 2=审批通过 3=执行中 4=已完成 5=审批驳回 6=已撤回）
     */
    private Integer status;

    /**
     * 审批状态
     */
    private Integer approvalStatus;

    /**
     * BPM流程实例ID
     */
    private String bpmInstanceId;

    /**
     * 备注
     */
    private String remark;

}
