package com.zt.plat.module.erp.api.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

import java.util.Map;

@Schema(description = "RPC 服务 - 提交 ERP DTO")
@Data
public class ErpSubmitReqDTO {
    /**
     * 调用ERP接口更新erp数据
     *
     * 请求参数说明：
     * "uuid":   请求uuid，必须
     * "sapsys": SAP系统ID, 必须
     * "srcsys": 源调用系统ID，必须
     * "funcnr": 接口编号，必须，参见RFC功能列表，可调用接口编号范围051-900
     * "bskey":  调用系统业务单据编号，必须，在外部系统唯一，用于关联
     * "usrid":  外部系统用户id
     * "usrnm":  外部系统用户名
     * "sign":   签名，uuid+srcsys+密码，MD5 32位小写签名，秘钥另行约定
     * "req":   {具体参数，参见RFC功能列表}
     */
    @Schema(description = "接口编号，必须，参见RFC功能列表，可调用接口编号范围051-900")
    @NotBlank(message = "接口编号不能为空")
    private String funcnr;

    @Schema(description = "调用系统业务单据编号，必须，在外部系统唯一，用于关联")
    @NotBlank(message = "调用系统业务单据编号不能为空")
    private String bskey;

    @Schema(description = "外部系统用户id, 必须")
    @NotBlank(message = "外部系统用户id不能为空")
    private String usrid;

    @Schema(description = "外部系统用户名，必须")
    @NotBlank(message = "外部系统用户名不能为空")
    private String usrnm;

    @Schema(description = "签名，uuid+srcsys+密码，MD5 32位小写签名，秘钥另行约定")
    private String sign;

    @Schema(description = "具体参数，参见RFC功能列表")
    @NotNull(message = "具体参数不能为空")
    private Map<String, Object> req;

}
