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

03 MES系统访问金蝶云星空(WebApi集成方式):生产补料

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

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

    需求描述

    MES补料任务完成后,调用ERP接口生成【生产补料单】并填写应发数量,而且【生产补料单】需要关联【生产用料清单】。

    接口定义

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

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

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

    • 通过请求参数中的生产订单单号+行号+原材料编码 查找到生产用料清单的单据内码、分录内码
    • 代码实现下推:生产用料清单下推生产补料单
    • 修改应发数量,然后通过代码调用生产补料单的保存服务。

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

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

    请求参数

    {
        "PrdBillNumber": "MO000030",
        "PrdBillSeq": 1,
        "Entry": [{
            "MaterialNumber": "1.02.001.0001",
            "Qty": 10
        }, {
            "MaterialNumber": "1.02.001.0002.00001",
            "Qty": 20
        }, {
            "MaterialNumber": "1.02.001.0002.00002",
            "Qty": 30
        }]
    }
    

    返回结果

    {
        "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 prdFeedMtrlParameter = new 
                    {
                        PrdBillNumber = "MO000029",
                        PrdBillSeq = 1,
                        Entry = new[]
                        {
                            new 
                            {
                                MaterialNumber = "1.02",
                                Qty = 10
                            }
                         
                        }
                    };
                    var result = apiClient.Execute<string>("BLN.CY.ApiClient.K3Cloud.Stub.PrdFeedMtrlService.Add,BLN.CY.ApiClient.K3Cloud.Stub", new object[] { prdFeedMtrlParameter });
    
                }
    

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

     if (LoginByAppSecret())
                {
                    HttpClient httpClient = new HttpClient();
                    httpClient.Url = "http://localhost/k3cloud/BLN.CY.ApiClient.K3Cloud.Stub.PrdFeedMtrlService.Add,BLN.CY.ApiClient.K3Cloud.Stub.common.kdsvc";
    
                    var prdFeedMtrlParameter = new 
                    {
                        PrdBillNumber = "MO000029",
                        PrdBillSeq = 1,
                        Entry = new[]
                        {
                            new 
                            {
                                MaterialNumber = "1.02",
                                Qty = 10
                            }
                         
                        }
                    };
                    List<object> parameters = new List<object>();
                    parameters.Add(prdFeedMtrlParameter );
                    httpClient.Content = JsonConvert.SerializeObject(parameters);
    
                    var result = httpClient.AsyncRequest();
                    
    
    在金蝶云星空生成的补料单,支持上下查订单

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

    相关文章

      网友评论

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

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