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

  • 轻易云集成顾问-姚缘

案例分享:金蝶云星空数据集成到领星ERP

在企业跨系统集成的需求日益增加的背景下,本文将聚焦于一个实际运行的案例:如何通过轻易云数据集成平台,将金蝶云星空的数据无缝对接至领星ERP,以实现分布式调入单向海外仓备货单【入库】转换。该方案不仅保证了高效、安全的数据传输,还解决了多项技术难题,如接口分页、限流处理、异常重试机制等。

本次案例中,我们从三个关键方面展开:

  1. 可靠抓取与及时写入:利用executeBillQuery接口定时抓取金蝶云星空中的调入单数据,并确保不漏单,然后批量快速地写入到领星ERP中,通过/erp/sc/routing/owms/inbound/createInbound接口调用以完成数据同步。

  2. 分页与限流管理:针对金蝶云星空API调用中的分页和限流问题,采取有效措施来优化请求频率和响应速度,确保每一条需要处理的数据都能得到及时转移。

  3. 格式差异及错漏处理:由于两个系统间存在一定的数据格式差异,该方案借助自定义映射功能进行精准对接,并配置相应的错误重试机制,以应对可能出现的数据提交失败情况。同时引入实时监控与日志记录功能,使整个过程透明化,可追踪。

让我们深入探讨这些技术细节和实现方式,从而为其他类似场景提供可复用的方法论。 用友与MES系统接口开发配置

调用金蝶云星空接口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}"
}
  1. 处理子集合

对于商品列表中的子集合,需要特别注意通过查找表获取商品id。这可以通过轻易云提供的查找功能实现:

"product_id": "_findCollection find id from ea835cd8-f0b8-39f2-9ac8-fce288234749 where sku={{DetailInfo.FMaterialID_FNumber}}"
  1. 合并与聚合操作

根据元数据配置中的操作部分,我们需要对某些字段进行合并和聚合。例如,将多个明细行中的数量进行汇总:

"operation": {
    "method": "merge",
    "field": "FBillNo,FSrcStockID_FNumber,FDestStockID_FNumber",
    "bodyName": "DetailInfo",
    "bodySum":["FQty"]
}

此操作确保所有相关明细行的数据被正确汇总到一个请求体中。

  1. 发送请求

最终,将构建好的请求体通过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接口的数据转换和写入。这不仅提高了业务流程的效率,也确保了数据的一致性和准确性。 用友与WMS系统接口开发配置

更多系统对接方案