SalesOutboundPostRequest.java 5.49 KB
package com.huaheng.api.erp.domain;

import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

/**
 * ERP2过账销售出库请求实体。
 *
 * <p>WMS出库作业完成后,通知ERP过账销售出库单时使用。</p>
 */
@Data
public class SalesOutboundPostRequest implements Serializable {

    private static final long serialVersionUID = 1L;

    public static final String DEFAULT_KEY = "f5458f5c0f9022db743a7c0710145903";
    public static final String DEFAULT_TYPE = "sync";
    public static final String DEFAULT_CLIENT_PROD = "WMS";
    public static final String DEFAULT_LANG = "zh_CN";
    public static final String DEFAULT_SERVICE_PROD = "T100";
    public static final String DEFAULT_SERVICE_NAME = "DeliveryOrder.Create";
    public static final String DEFAULT_SERVICE_IP = "10.1.1.200";
    public static final String SERVICE_ID_PROD = "topprd";
    public static final String SERVICE_ID_TEST = "toptst";
    public static final String DEFAULT_XMDK000 = "1";

    /**
     * 唯一值,ERP接口固定值。
     */
    private String key = DEFAULT_KEY;

    /**
     * 请求类型,固定值:sync。
     */
    private String type = DEFAULT_TYPE;

    /**
     * 客户端产品,固定值:WMS。
     */
    private String prod = DEFAULT_CLIENT_PROD;

    /**
     * 客户端主机信息。
     */
    private Host host = new Host();

    /**
     * ERP服务信息。
     */
    private Service service = new Service();

    /**
     * 业务数据。
     */
    private DataKey datakey = new DataKey();

    /**
     * 客户端主机信息。
     */
    @Data
    public static class Host implements Serializable {

        private static final long serialVersionUID = 1L;

        /**
         * WMS客户端IP。
         */
        private String ip;

        /**
         * 语言别,固定值:zh_CN。
         */
        private String lang = DEFAULT_LANG;
    }

    /**
     * ERP服务调用信息。
     */
    @Data
    public static class Service implements Serializable {

        private static final long serialVersionUID = 1L;

        /**
         * 用户编号。
         */
        private String acct;

        /**
         * 时间戳,17位。例如:20201015123204361。
         */
        private String timestamp;

        /**
         * 服务端,固定值:T100。
         */
        private String prod = DEFAULT_SERVICE_PROD;

        /**
         * 服务名,固定值:DeliveryOrder.Create。
         */
        private String name = DEFAULT_SERVICE_NAME;

        /**
         * ERP服务端IP。
         */
        private String ip = DEFAULT_SERVICE_IP;

        /**
         * ERP环境产品。正式区:topprd,测试区:toptst。
         */
        private String id;
    }

    /**
     * ERP业务数据。
     */
    @Data
    public static class DataKey implements Serializable {

        private static final long serialVersionUID = 1L;

        /**
         * 企业代号。
         */
        @JSONField(name = "EntId")
        private String entId;

        /**
         * 营运据点。
         */
        @JSONField(name = "CompanyId")
        private String companyId;

        /**
         * 销售出库单主档。
         */
        private Master master = new Master();
    }

    /**
     * 销售出库单主档。
     */
    @Data
    public static class Master implements Serializable {

        private static final long serialVersionUID = 1L;

        /**
         * 单别,销售出库单别。
         */
        private String xmdkdocno;

        /**
         * 单据日期。
         */
        private String xmdkdocdt;

        /**
         * 单据性质,固定值:1(axmt540出货单)。
         */
        private String xmdk000 = DEFAULT_XMDK000;

        /**
         * 出库性质。
         */
        private String xmdk002;

        /**
         * 申请人。
         */
        private String xmdk003;

        /**
         * 客户编号。
         */
        private String xmdk007;

        /**
         * WMS来源单号。
         */
        @JSONField(name = "source_no")
        private String sourceNo;

        /**
         * 销售出库单明细。
         */
        private List<Detail> detail;
    }

    /**
     * 销售出库单明细。
     */
    @Data
    public static class Detail implements Serializable {

        private static final long serialVersionUID = 1L;

        /**
         * 出货通知单号。
         */
        private String xmdl001;

        /**
         * 出货通知项次。
         */
        private BigDecimal xmdl002;

        /**
         * 料号。
         */
        private String xmdl008;

        /**
         * 单位。
         */
        private String xmdl017;

        /**
         * 数量,必须大于0。
         */
        private BigDecimal xmdl018;

        /**
         * 项目编号。
         */
        private String xmdl030;

        /**
         * 单价,为空时默认0。
         */
        private BigDecimal xmdl024;

        /**
         * 库位。
         */
        private String xmdl014;

        /**
         * 储位。
         */
        private String xmdl015;

        /**
         * 批号。
         */
        private String xmdl016;

        /**
         * 备注。
         */
        private String xmdl051;

        /**
         * WMS来源项次。
         */
        @JSONField(name = "source_seq")
        private String sourceSeq;
    }
}