美文网首页
05 MES系统访问金蝶云星空(WebApi集成方式):生产入库

05 MES系统访问金蝶云星空(WebApi集成方式):生产入库

作者: Steve_Hu | 来源:发表于2019-11-21 13:59 被阅读0次

    返回根目录 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<string>("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<object> parameters = new List<object>();
                    parameters.Add(prdInStockParameter);
                    httpClient.Content = JsonConvert.SerializeObject(parameters);
    
                    var result = httpClient.AsyncRequest();
                }
    
    在金蝶云星空生成的入库单,支持上下查订单

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

    相关文章

      网友评论

          本文标题:05 MES系统访问金蝶云星空(WebApi集成方式):生产入库

          本文链接:https://www.haomeiwen.com/subject/wrftwctx.html