package com.aegis.resource.procurement.dto;

import java.util.Date;
import javax.validation.constraints.NotBlank;
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 ProcurementDTO {

    private Long id;

    /** 采购编号 */
    @NotBlank(message = "采购编号不能为空")
    @Size(min = 0, max = 50, message = "采购编号长度不能超过50个字符")
    private String procurementNo;

    /** 采购标题 */
    @NotBlank(message = "采购标题不能为空")
    @Size(min = 0, max = 200, message = "采购标题长度不能超过200个字符")
    private String title;

    /** 紧急程度：low-低，normal-普通，high-高，urgent-紧急 */
    @Size(min = 0, max = 16, message = "紧急程度长度不能超过16个字符")
    private String urgency;

    /** 状态：draft-草稿，submitted-已提交，approved-已审核，rejected-已驳回，in_progress-进行中，received-已入库 */
    @Size(min = 0, max = 16, message = "状态长度不能超过16个字符")
    private String status;

    /** 中标供应商ID */
    private Long awardedSupplierId;

    /** 中标供应商名称（关联查询） */
    private String awardedSupplierName;

    /** 中标时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date awardedAt;

    /** 审核人ID */
    private Long approverId;

    /** 审核人姓名 */
    private String approverName;

    /** 审核时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date approvedAt;

    /** 审核意见 */
    @Size(min = 0, max = 500, message = "审核意见长度不能超过500个字符")
    private String approvalComment;

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