05 MES系统访问金蝶云星空(WebApi集成方式):生产入库单单据保存接口

返回根目录 MES系统访问金蝶云星空(ERP)的接口定义及示例

需求描述

MES完工入库根据生产订单新增生产入库:调用ERP接口生成【生产入库】并填写入库数量,而且【生产入库单】需要关联【生产订单】。

接口定义

关于生产制造模块的单据,要特别注意的一点:尽量通过下推的方式产生下游单据。
如果通过调用标准WebApi的单据保存接口来产生下游单据(比如生产入库单、生产领料单等),存在很多坑:

  • 比如无法与上游单据建立关联关系(虽然可以构造Link表的Json数据,但是也比较复杂,容易出错)
  • 单据上有一些后台字段(比如生产订单分录内码、生产用料清单分录内码等字段),如果有遗漏或者填写的值有误,会导致后期的成本核算出问题。
  • 等等其他未发现的坑

所以对于生产入库单保存接口,采取了自定义webapi接口的方式实现,在自定义接口内部实现相关业务逻辑:

  • 通过请求参数中的生产订单信息查找到生产订单
  • 代码实现下推:生产订单下推生产入库单
  • 修改入库数量、入库仓库,然后通过代码调用生产入库单的保存服务。

生产入库单保存接口(自定义webapi接口)的定义如下:

//其中BLN.CY.ApiClient.K3Cloud.Stub是命名空间,PrdInStockService是类名
BLN.CY.ApiClient.K3Cloud.Stub.PrdInStockService.InStock(string data)

请求参数

{
    "Id": "102856",
    "PrdBillNumber": "20-02-088-057",
    "InStockNumber": "3.1",
    "FromSource": "装配MES",
    "ThirdSysUser": "202938",
    "Entry": [{
        "Id": "142617",
        "Seq": "1",
        "F_ORA_pch": "M202004280058", //,MES 批次号
        "F_ORA_wh": "2004001",  //位号
        "Qty": "1"
    }]
}

返回结果

{
    "IsSuccess": true,
    "Message": "操作成功!",
    "ErrorStackTrace": null
}

代码示例

1)SDK辅助类示例(引用Kingdee.BOS.WebAPI.Client.dll)
引用组件Kingdee.BOS.WebApi.Client.dll
下载链接: https://pan.baidu.com/s/1RthbrrtUgeqWGi-eLM-yjg
提取码: eqin

  if (LoginByAppSecret())
            {
                var prdInStockParameter = new 
                {
                    Id = "100063",//生产订单内码
                    PrdBillNumber = "MO000029",//订单单号
                    InStockNumber = "CK003",//入库仓库
                    Entry = new[] 
                    {
                        new 
                        {
                            Id = "100083",//生产订单分录内码
                            Seq = 1,//生产订单分录行号
                            Qty = 13//入库数量
                        }
                      
                    }
                };

                var result = apiClient.Execute("BLN.CY.ApiClient.K3Cloud.Stub.PrdInStockService.InStock,BLN.CY.ApiClient.K3Cloud.Stub", new object[] { prdInStockParameter });

            }

2)无引用组件示例(不引用金蝶的组件):
http://ServerIp/K3Cloud/接口命名空间.接口实现类名.方法,组件名.common.kdsvc

  if (LoginByAppSecret())
            {
                HttpClient httpClient = new HttpClient();
                httpClient.Url = "http://localhost/k3cloud/BLN.CY.ApiClient.K3Cloud.Stub.PrdInStockService.InStock,BLN.CY.ApiClient.K3Cloud.Stub.common.kdsvc";
                var prdInStockParameter = new 
                {
                    Id = "100063",//生产订单内码
                    PrdBillNumber = "MO000029",//订单单号
                    InStockNumber = "CK003",//入库仓库
                    Entry = new[] 
                    {
                        new 
                        {
                            Id = "100083",//生产订单分录内码
                            Seq = 1,//生产订单分录行号
                            Qty = 13//入库数量
                        }
                      
                    }
                };
               List parameters = new List();
                parameters.Add(prdInStockParameter);
                httpClient.Content = JsonConvert.SerializeObject(parameters);

                var result = httpClient.AsyncRequest();
            }

05 MES系统访问金蝶云星空(WebApi集成方式):生产入库单单据保存接口_第1张图片
在金蝶云星空生成的入库单,支持上下查订单

返回根目录 MES系统访问金蝶云星空(ERP)的接口定义及示例

你可能感兴趣的:(05 MES系统访问金蝶云星空(WebApi集成方式):生产入库单单据保存接口)