PurchaseDeliveryCreateRequest.java 5.26 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;

/**
 * ERP采购入库单创建请求实体。
 *
 * <p>WMS上架完成后,通知ERP产生采购入库单时使用。</p>
 */
@Data
public class PurchaseDeliveryCreateRequest 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 = "PurchaseDelivery.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";

    /**
     * 唯一值,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;

        /**
         * 服务名,固定值:PurchaseDelivery.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 pmdsdocno;

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

        /**
         * 单据性质,ERP必填,通常为采购入库维护作业。
         */
        private String pmds000;

        /**
         * 采购单号/收货单号。
         */
        private String pmds006;

        /**
         * 申请人员。
         */
        private String pmds002;

        /**
         * 供应商。
         */
        private String pmds007;

        /**
         * 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 pmdt027;

        /**
         * 收货项次。
         */
        private BigDecimal pmdt028;

        /**
         * 料件。
         */
        private String pmdt006;

        /**
         * 产品特性。
         */
        private String pmdt007;

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

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

        /**
         * 仓库。
         */
        private String pmdt016;

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

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

        /**
         * WMS采购入库单项次。
         */
        @JSONField(name = "source_seq")
        private String sourceSeq;
    }
}