package cn.iocoder.yudao.module.asset.controller.admin.replacement.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 替换车申请 Response VO
 *
 * @author 芋道源码
 */
@Schema(description = "管理后台 - 替换车申请 Response VO")
@Data
public class VehicleReplacementRespVO {

    @Schema(description = "主键ID", example = "1")
    private Long id;

    @Schema(description = "替换单编码", example = "TH-20260313-001")
    private String replacementCode;

    @Schema(description = "替换类型（1=临时 2=永久）", example = "1")
    private Integer replacementType;

    @Schema(description = "合同ID", example = "1")
    private Long contractId;

    @Schema(description = "合同编码", example = "HT-2026-0001")
    private String contractCode;

    @Schema(description = "客户ID", example = "1")
    private Long customerId;

    @Schema(description = "客户名称", example = "上海某某科技")
    private String customerName;

    @Schema(description = "来源交车单ID", example = "1")
    private Long deliveryOrderId;

    @Schema(description = "原车辆ID", example = "1")
    private Long originalVehicleId;

    @Schema(description = "原车牌号", example = "沪A12345")
    private String originalPlateNo;

    @Schema(description = "原车架号", example = "LVHRU1867N5012345")
    private String originalVin;

    @Schema(description = "新车辆ID", example = "2")
    private Long newVehicleId;

    @Schema(description = "新车牌号", example = "沪B67890")
    private String newPlateNo;

    @Schema(description = "新车架号", example = "LVHRU1867N5067890")
    private String newVin;

    @Schema(description = "替换原因", example = "车辆故障需维修")
    private String replacementReason;

    @Schema(description = "预计替换日期", example = "2026-03-15")
    private LocalDate expectedDate;

    @Schema(description = "实际替换日期", example = "2026-03-15")
    private LocalDate actualDate;

    @Schema(description = "临时替换预计归还日期", example = "2026-04-15")
    private LocalDate returnDate;

    @Schema(description = "实际归还日期", example = "2026-04-15")
    private LocalDate actualReturnDate;

    @Schema(description = "状态（0=草稿 1=审批中 2=审批通过 3=执行中 4=已完成 5=审批驳回 6=已撤回）", example = "0")
    private Integer status;

    @Schema(description = "审批状态", example = "0")
    private Integer approvalStatus;

    @Schema(description = "BPM流程实例ID", example = "123456")
    private String bpmInstanceId;

    @Schema(description = "备注", example = "紧急替换")
    private String remark;

    @Schema(description = "创建时间", example = "2026-03-13 10:00:00")
    private LocalDateTime createTime;

    @Schema(description = "创建者", example = "admin")
    private String creator;

}
