返回根目录 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
返回根目录 MES系统访问金蝶云星空(ERP)的接口定义及示例