返回根目录 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();
在金蝶云星空生成的补料单,支持上下查订单
网友评论