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

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

import java.time.LocalDate;

/**
 * 替换车申请创建/更新 Request VO
 *
 * @author 芋道源码
 */
@Schema(description = "管理后台 - 替换车申请创建/更新 Request VO")
@Data
public class VehicleReplacementSaveReqVO {

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

    @Schema(description = "替换类型（1=临时 2=永久）", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @NotNull(message = "替换类型不能为空")
    private Integer replacementType;

    @Schema(description = "合同ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @NotNull(message = "合同不能为空")
    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", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @NotNull(message = "原车辆不能为空")
    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-04-15")
    private LocalDate returnDate;

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

}
