package com.jeeplus.assess.invoice.domain.OMS.fastRed;
import javax.validation.constraints.Pattern;

/**
 * OMS红字确认单信息实体类
 * 对应业务场景：红字确认单的状态处理与信息封装
 * 所有字段均采用 @Pattern 正则校验，规则：^$ 表示允许为空，| 分隔所有合法有效值
 */
public class OMSRedInvoiceConfirmInfo {

    /**
     * 组织代码（必填）
     * 所属组织唯一标识，长度1-20位
     */
    @Pattern(regexp = "^[\\s\\S]{1,20}$", message = "组织代码deptCode为必填项，长度不能超过20位")
    private String deptCode;

    /**
     * 红字确认单uuid（必填）
     * 申请成功后返回的流水号，长度1-32位
     */
    @Pattern(regexp = "^[\\s\\S]{1,32}$", message = "红字确认单uuid redUuid为必填项，长度不能超过32位")
    private String redUuid;

    /**
     * 红字确认信息表状态（必填）
     * 01:同意 02:不同意 03:撤销
     */
    @Pattern(regexp = "01|02|03", message = "红字确认信息表状态confirmStatus为必填项，只能传入01（同意）、02（不同意）、03（撤销）")
    private String confirmStatus;

    /**
     * 处理理由（非必填）
     * 长度1-200位，填写处理的原因说明
     */
    @Pattern(regexp = "^$|^[\\s\\S]{1,200}$", message = "处理理由confirmReason只能传入：空 或 长度不超过200位的任意字符")
    private String confirmReason;

    /**
     * 请求方身份（必填）
     * 0:销方 1:购方
     */
    @Pattern(regexp = "0|1", message = "请求方身份applyIdentity为必填项，只能传入0（销方）或1（购方）")
    private String applyIdentity;

    /**
     * 开票员（非必填）
     * 长度1-20位
     */
    @Pattern(regexp = "^$|^[\\s\\S]{1,20}$", message = "开票员drawer只能传入：空 或 长度不超过20位的任意字符")
    private String drawer;
}
