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 RequisitionCompensationDTO {

    private Long id;

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

    /** 工作量（小时/天/任务数） */
    private BigDecimal workload;

    /** 工作量单位：hour-小时，day-天，task-任务 */
    @Size(min = 0, max = 16, message = "工作量单位长度不能超过16个字符")
    private String workloadUnit;

    /** 单价 */
    @NotNull(message = "单价不能为空")
    private BigDecimal unitPrice;

    /** 金额 */
    @NotNull(message = "金额不能为空")
    private BigDecimal amount;

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

    /** 发票号 */
    @Size(min = 0, max = 100, message = "发票号长度不能超过100个字符")
    private String invoiceNo;

    /** 支付时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date paidAt;

    /** 状态：pending-待结算，settled-已结算 */
    @Size(min = 0, max = 16, message = "状态长度不能超过16个字符")
    private String status;

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

