案例分享:金蝶云星空数据集成到领星ERP
在企业跨系统集成的需求日益增加的背景下,本文将聚焦于一个实际运行的案例:如何通过轻易云数据集成平台,将金蝶云星空的数据无缝对接至领星ERP,以实现分布式调入单向海外仓备货单【入库】转换。该方案不仅保证了高效、安全的数据传输,还解决了多项技术难题,如接口分页、限流处理、异常重试机制等。
本次案例中,我们从三个关键方面展开:
-
可靠抓取与及时写入:利用executeBillQuery接口定时抓取金蝶云星空中的调入单数据,并确保不漏单,然后批量快速地写入到领星ERP中,通过/erp/sc/routing/owms/inbound/createInbound接口调用以完成数据同步。
-
分页与限流管理:针对金蝶云星空API调用中的分页和限流问题,采取有效措施来优化请求频率和响应速度,确保每一条需要处理的数据都能得到及时转移。
-
格式差异及错漏处理:由于两个系统间存在一定的数据格式差异,该方案借助自定义映射功能进行精准对接,并配置相应的错误重试机制,以应对可能出现的数据提交失败情况。同时引入实时监控与日志记录功能,使整个过程透明化,可追踪。
让我们深入探讨这些技术细节和实现方式,从而为其他类似场景提供可复用的方法论。
调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成过程中,调用源系统接口获取数据是至关重要的一步。本文将详细介绍如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery
接口,以获取分布式调入单的数据,并进行初步加工。
接口配置与请求参数
首先,我们需要配置调用金蝶云星空接口的元数据。以下是元数据配置的详细内容:
{
"api": "executeBillQuery",
"method": "POST",
"number": "FBillNo",
"id": "FSTKTRSINENTRY_FEntryID",
"pagination": {
"pageSize": 500
},
"idCheck": true,
"request": [
{"field":"FSTKTRSINENTRY_FEntryID","label":"FEntryID","type":"string","value":"FSTKTRSINENTRY_FEntryID"},
{"field":"FID","label":"实体主键","type":"string","value":"FID"},
{"field":"FBillNo","label":"单据编号","type":"string","value":"FBillNo"},
{"field":"FDocumentStatus","label":"单据状态","type":"string","value":"FDocumentStatus"},
{"field":"FStockOrgID_FNumber","label":"调入库存组织","type":"string","value":"FStockOrgID.FNumber"},
{"field":"FDate","label":"日期","type":"string","value":"FDate"},
{"field":"FBillTypeID","label":"单据类型","type":"string","value":"FBillTypeID"},
{"field":"FTransferDirect","label":"调拨方向","type":"string","value":"FTransferDirect"},
{"field":"FNOTE","label":"备注","type":"string","value":"FNOTE"},
{"field":"FCreateDate","label":"创建日期","type":"string","value":"FCreateDate"},
{"field":"FApproveDate","label":"审核日期","type":"string","value":"FApproveDate"},
{"field":"FTransferMode","label":"调拨方式","type":"string","value
![打通企业微信数据接口](https://pic.qeasy.cloud/S18.png~tplv-syqr462i7n-qeasy.image)
### 数据集成与ETL转换:轻易云数据集成平台对接领星ERPAPI接口
在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL转换,使其符合目标平台——领星ERPAPI接口所能够接收的格式,并最终写入目标平台。以下是具体的技术实现过程。
#### API接口配置与元数据解析
根据元数据配置,目标平台的API接口为`/erp/sc/routing/owms/inbound/createInbound`,使用POST方法进行数据提交。我们需要确保每个字段的数据格式和内容都符合API要求。
#### 请求参数构建
在请求参数中,我们需要将源平台的数据字段映射到目标平台所需的字段。以下是主要字段及其映射关系:
1. **客户参考号(唯一单号)**
- 源字段:`FBillNo`, `FSrcStockID_FNumber`, `FDestStockID_FNumber`
- 目标字段:`inbound_order_no`
- 映射规则:`{FBillNo}-{FSrcStockID_FNumber}-{FDestStockID_FNumber}`
2. **订单状态**
- 固定值:`40`
3. **物流方式ID**
- 固定值:`867`
4. **发货仓库**
- 源字段:`FSrcStockID_FNumber`
- 目标字段:`s_wid`
- 映射规则:直接映射
5. **收货仓库**
- 源字段:`FDestStockID_FNumber`
- 目标字段:`r_wid`
- 映射规则:直接映射
6. **商品列表(product_list)**
- 子字段:
1. **本地商品id**
- 源字段:`DetailInfo.FMaterialID_FNumber`
- 目标字段:`product_id`
- 映射规则:通过查找表获取商品id
2. **备货数量**
- 源字段:`DetailInfo.FQty`
- 目标字段:`stock_num`
- 映射规则:直接映射
3. **收货数量**
- 源字段:`DetailInfo.FQty`
- 目标字段:`receive_num`
- 映射规则:直接映射
7. **备注**
- 源字段:`FSrcBillNo`
- 目标字段:`remark`
- 映射规则:直接映射
#### 数据转换与写入
为了实现上述映射,我们需要在轻易云数据集成平台上进行以下步骤:
1. **定义请求体结构**
根据元数据配置,定义请求体结构如下:
```json
{
"inbound_order_no": "{FBillNo}-{FSrcStockID_FNumber}-{FDestStockID_FNumber}",
"status": "40",
"logistics_id": "867",
"s_wid": "{FSrcStockID_FNumber}",
"r_wid": "{FDestStockID_FNumber}",
"product_list": [
{
"product_id": "_findCollection find id from ea835cd8-f0b8-39f2-9ac8-fce288234749 where sku={{DetailInfo.FMaterialID_FNumber}}",
"stock_num": "{{DetailInfo.FQty}}",
"receive_num": "{{DetailInfo.FQty}}"
}
],
"remark": "{FSrcBillNo}"
}
- 处理子集合
对于商品列表中的子集合,需要特别注意通过查找表获取商品id。这可以通过轻易云提供的查找功能实现:
"product_id": "_findCollection find id from ea835cd8-f0b8-39f2-9ac8-fce288234749 where sku={{DetailInfo.FMaterialID_FNumber}}"
- 合并与聚合操作
根据元数据配置中的操作部分,我们需要对某些字段进行合并和聚合。例如,将多个明细行中的数量进行汇总:
"operation": {
"method": "merge",
"field": "FBillNo,FSrcStockID_FNumber,FDestStockID_FNumber",
"bodyName": "DetailInfo",
"bodySum":["FQty"]
}
此操作确保所有相关明细行的数据被正确汇总到一个请求体中。
- 发送请求
最终,将构建好的请求体通过POST方法发送到领星ERP的API接口:
POST /erp/sc/routing/owms/inbound/createInbound HTTP/1.1
Host: api.lingxing.com
Content-Type: application/json
Authorization: Bearer <access_token>
{
// 请求体内容
}
实时监控与错误处理
在整个ETL过程中,轻易云平台提供了实时监控功能,可以随时查看数据流动和处理状态。一旦出现错误,可以快速定位并解决问题,确保数据准确无误地写入目标系统。
通过以上步骤,我们成功实现了从源平台到领星ERPAPI接口的数据转换和写入。这不仅提高了业务流程的效率,也确保了数据的一致性和准确性。