package com.aegis.resource.requisition.dto;

import java.math.BigDecimal;
import java.util.Date;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

/**
 * 征用协议数据传输对象（DTO）
 * 用于 API 层的数据传输
 *
 * @author aegis
 */
@Getter
@Setter
@ToString
public class RequisitionAgreementDTO {

    private Long id;

    /** 征用ID */
    @NotNull(message = "征用ID不能为空")
    private Long requisitionId;

    /** 服务范围 */
    @Size(min = 0, max = 500, message = "服务范围长度不能超过500个字符")
    private String serviceScope;

    /** 计费方式：hour-按小时，day-按天，task-按任务 */
    @Size(min = 0, max = 16, message = "计费方式长度不能超过16个字符")
    private String billingType;

    /** 单价 */
    private BigDecimal unitPrice;

    /** 币种 */
    @Size(min = 0, max = 16, message = "币种长度不能超过16个字符")
    private String currency;

    /** 生效开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date effectiveFrom;

    /** 生效结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date effectiveTo;

    /** 协议条款 */
    @Size(min = 0, max = 500, message = "协议条款长度不能超过500个字符")
    private String terms;

    /** 附件URL */
    @Size(min = 0, max = 500, message = "附件URL长度不能超过500个字符")
    private String attachmentUrl;

    /** 备注 */
    @Size(min = 0, max = 500, message = "备注长度不能超过500个字符")
    private String remark;
}

