从金蝶云到领星ERP:数据集成实践与挑战解决

  • 轻易云集成顾问-姚缘
### 案例分享:金蝶云星空数据集成到领星ERP 在企业跨系统集成的需求日益增加的背景下,本文将聚焦于一个实际运行的案例:如何通过轻易云数据集成平台,将金蝶云星空的数据无缝对接至领星ERP,以实现分布式调入单向海外仓备货单【入库】转换。该方案不仅保证了高效、安全的数据传输,还解决了多项技术难题,如接口分页、限流处理、异常重试机制等。 本次案例中,我们从三个关键方面展开: 1. **可靠抓取与及时写入**:利用executeBillQuery接口定时抓取金蝶云星空中的调入单数据,并确保不漏单,然后批量快速地写入到领星ERP中,通过/erp/sc/routing/owms/inbound/createInbound接口调用以完成数据同步。 2. **分页与限流管理**:针对金蝶云星空API调用中的分页和限流问题,采取有效措施来优化请求频率和响应速度,确保每一条需要处理的数据都能得到及时转移。 3. **格式差异及错漏处理**:由于两个系统间存在一定的数据格式差异,该方案借助自定义映射功能进行精准对接,并配置相应的错误重试机制,以应对可能出现的数据提交失败情况。同时引入实时监控与日志记录功能,使整个过程透明化,可追踪。 让我们深入探讨这些技术细节和实现方式,从而为其他类似场景提供可复用的方法论。 ![用友与MES系统接口开发配置](https://pic.qeasy.cloud/D11.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成过程中,调用源系统接口获取数据是至关重要的一步。本文将详细介绍如何通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口,以获取分布式调入单的数据,并进行初步加工。 #### 接口配置与请求参数 首先,我们需要配置调用金蝶云星空接口的元数据。以下是元数据配置的详细内容: ```json { "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}" } ``` 2. **处理子集合** 对于商品列表中的子集合,需要特别注意通过查找表获取商品id。这可以通过轻易云提供的查找功能实现: ```json "product_id": "_findCollection find id from ea835cd8-f0b8-39f2-9ac8-fce288234749 where sku={{DetailInfo.FMaterialID_FNumber}}" ``` 3. **合并与聚合操作** 根据元数据配置中的操作部分,我们需要对某些字段进行合并和聚合。例如,将多个明细行中的数量进行汇总: ```json "operation": { "method": "merge", "field": "FBillNo,FSrcStockID_FNumber,FDestStockID_FNumber", "bodyName": "DetailInfo", "bodySum":["FQty"] } ``` 此操作确保所有相关明细行的数据被正确汇总到一个请求体中。 4. **发送请求** 最终,将构建好的请求体通过POST方法发送到领星ERP的API接口: ```http POST /erp/sc/routing/owms/inbound/createInbound HTTP/1.1 Host: api.lingxing.com Content-Type: application/json Authorization: Bearer <access_token> { // 请求体内容 } ``` #### 实时监控与错误处理 在整个ETL过程中,轻易云平台提供了实时监控功能,可以随时查看数据流动和处理状态。一旦出现错误,可以快速定位并解决问题,确保数据准确无误地写入目标系统。 通过以上步骤,我们成功实现了从源平台到领星ERPAPI接口的数据转换和写入。这不仅提高了业务流程的效率,也确保了数据的一致性和准确性。 ![用友与WMS系统接口开发配置](https://pic.qeasy.cloud/T6.png~tplv-syqr462i7n-qeasy.image)