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

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

import java.time.LocalDateTime;

/**
 * 车辆租赁合同 Response VO
 *
 * @author 芋道源码
 */
@Schema(description = "管理后台 - 车辆租赁合同 Response VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class ContractRespVO extends ContractBaseVO {

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

    @Schema(description = "审批状态（0=草稿 1=审批中 2=审批通过 3=审批拒绝 4=已撤回）", example = "0")
    private Integer approvalStatus;

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

    @Schema(description = "合同状态（0=草稿 1=待生效 2=进行中 3=已到期 4=已终止 5=已续签）", example = "0")
    private Integer contractStatus;

    @Schema(description = "实际生效时间", example = "2026-01-01 00:00:00")
    private LocalDateTime effectiveTime;

    @Schema(description = "终止时间", example = "2026-12-31 23:59:59")
    private LocalDateTime terminateTime;

    @Schema(description = "终止原因", example = "客户要求终止")
    private String terminateReason;

    @Schema(description = "续签后的新合同ID", example = "2")
    private Long renewedContractId;

    @Schema(description = "原合同ID（如果是续签合同）", example = "1")
    private Long originalContractId;

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

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

    @Schema(description = "租赁车辆数", example = "5")
    private Integer vehicleCount;

    @Schema(description = "已交车辆数", example = "3")
    private Integer deliveredCount;

}
