使用轻易云平台进行ETL转换并写入旺店通WMS系统

  • 轻易云集成顾问-钟家寿

金蝶云星空与旺店通WMS集成案例分享

在企业管理系统中,数据的流转和准确性至关重要。本文将详细解析如何通过轻易云数据集成平台,实现金蝶云星空到旺店通WMS的数据对接。这一案例具体涉及了其他出库单->其他出库单【出库单】OK-1方案,通过该方案我们高效完成了跨系统的数据同步工作。

首先,我们需要调用金蝶云星空的executeBillQuery接口,以定时、可靠地抓取相关接口数据。为了确保不漏单,我们设置了合理的限流机制,并处理分页问题,从而避免因大批量请求带来的性能影响。在实施过程中,实时监控和日志记录功能也发挥了关键作用,使整个过程透明可追溯。

获取到金蝶云星空的数据后,需要按特定格式转换并批量写入至旺店通WMS系统,这是重点之一。我们使用了WDT_WMS_STOCKOUT_CREATE接口进行大量数据快速写入操作,同时兼顾异常处理与错误重试机制,确保每一次写入都能成功执行。此外,为应对两者之间在数据格式上的差异,还进行了定制化的数据映射以满足业务需求。

本次集成不仅提升了业务效率,也为未来类似项目提供了一套可参照的方法论。接下来,将深入探讨具体实现步骤及技术细节,让您全面了解这一具有代表性的系统对接解决方案。

如何对接钉钉API接口

调用金蝶云星空接口executeBillQuery获取并加工数据

在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery接口来获取并加工数据。

接口调用配置

首先,我们需要配置元数据以便正确调用金蝶云星空的executeBillQuery接口。以下是关键配置项:

  • API: executeBillQuery
  • 方法: POST
  • 分页: 每页500条记录
  • ID检查: true

请求字段如下:

[
    {"field":"FEntity_FEntryID","label":"FEntryID","type":"string","value":"FEntity_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":"FNOTE","label":"备注","type":"string","value":"FNOTE"},
    {"field":"FMATERIALID_FNumber","label":"物料编码","type":"string","value":"FMATERIALID.FNumber"},
    {"field":"FSTOCKID_FNumber","label":"发货仓库","type":""},
    {"field": "其他字段..."}
]

请求参数解析

在请求参数中,FieldKeys 是一个关键字段,它定义了需要查询的字段集合。我们可以通过以下方式进行配置:

{
  "FieldKeys": [
      "FID",
      "FBillNo",
      "FDocumentStatus",
      "FStockOrgId.FNumber",
      "FDate",
      "FBillTypeID",
      "FMATERIALID.FNumber",
      "其他字段..."
  ]
}

这些字段会被转换为逗号分隔的字符串,传递给金蝶云星空接口。

分页处理

为了确保能够处理大量数据,我们采用分页机制。分页参数包括:

  • Limit: 每页最大行数(500)
  • StartRow: 开始行索引
  • TopRowCount: 返回总行数

示例代码如下:

{
  "Limit": "{PAGINATION_PAGE_SIZE}",
  "StartRow": "{PAGINATION_START_ROW}",
  "TopRowCount": 0
}

数据过滤

为了提高查询效率,可以使用过滤条件。例如,查询最近30分钟内的数据:

{
  "FilterString": "FApproveDate>='{{MINUTE_AGO_30|datetime}}' and FStockId.F_JZJ_CheckBox=1"
}

实际调用示例

以下是一个完整的请求示例:

{
  "api": "executeBillQuery",
  "method": "POST",
  "number": "FBillNo",
  "id": "FEntity_FEntryID",
  "pagination": {
    "pageSize": 500
  },
  "idCheck": true,
  "request": [
    {"field": "FID", "label": "实体主键", "type": "string", "value": ""},
    {"field": "FBillNo", "label": "单据编号", "type": "", value: ""},
    ...
  ],
  ...
}

数据处理与写入

在获取到数据后,需要对其进行清洗和转换,然后写入目标系统。这一步通常包括以下操作:

  1. 数据清洗:去除无效或重复的数据。
  2. 数据转换:根据目标系统的要求调整数据格式。
  3. 数据写入:将处理后的数据写入目标系统。

通过上述步骤,我们可以高效地从金蝶云星空获取所需的数据,并进行相应的处理和写入操作。这不仅提高了数据集成的效率,也确保了数据的一致性和准确性。 用友与外部系统接口集成开发

使用轻易云数据集成平台进行ETL转换并写入旺店通WMSAPI接口的技术案例

在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL转换,并将其转为目标平台旺店通WMSAPI接口所能够接收的格式,最终写入目标平台。本文将详细探讨这一过程中的技术细节和操作步骤。

1. 数据转换与映射

首先,我们需要对源数据进行转换,以符合目标API接口的要求。根据提供的元数据配置,以下是我们需要处理的数据字段及其对应关系:

  • 出库单信息

    • 出库单号(deliveryOrderCode): {FBillNo}
    • 出库单类型(orderType): 固定值 QTCK
    • 出库单创建时间(createTime): {FDate}
    • 仓库编码(warehouseCode): {FSTOCKID}
  • 单据信息

    • 商家编码(itemCode): {FMATERIALID_FNumber}
    • 单据行号(orderLineNo): {FEntity_FEntryID}
    • 应发商品数量(planQty): {FQty}
    • 批次(batchCode): {FLOT}
    • 生产日期(productDate): {{FPRODUCEDATE|date}}
    • 过期日期(expireDate): {{FEXPIRYDATE|date}}

2. 数据请求与清洗

在实际操作中,我们需要先从源系统请求到原始数据,并对其进行清洗和预处理,以确保数据的准确性和一致性。假设我们已经完成了这一步,接下来我们将重点放在如何将清洗后的数据进行ETL转换。

3. 构建请求体

根据元数据配置,我们需要构建一个符合旺店通WMSAPI接口要求的请求体。以下是一个示例请求体结构:

{
    "deliveryOrder": {
        "deliveryOrderCode": "SO20231001",
        "orderType": "QTCK",
        "createTime": "2023-10-01T12:00:00",
        "warehouseCode": "WH001"
    },
    "orderLines": [
        {
            "orderLine": {
                "itemCode": "ITEM001",
                "orderLineNo": "1",
                "planQty": "100",
                "batchCode": "BATCH001",
                "productDate": "2023-09-01",
                "expireDate": "2024-09-01"
            }
        },
        {
            "orderLine": {
                "itemCode": "ITEM002",
                "orderLineNo": "2",
                "planQty": "200",
                "batchCode": "",
                "productDate": "",
                "expireDate": ""
            }
        }
    ]
}

在这个示例中,出库单信息和单据信息分别被映射到了相应的字段上。

4. 数据写入目标平台

完成数据转换后,我们需要将构建好的请求体通过HTTP POST方法发送到旺店通WMSAPI接口。以下是一个Python示例代码,用于发送HTTP请求:

import requests
import json

url = 'https://api.wdt.com/WDT_WMS_STOCKOUT_CREATE'
headers = {'Content-Type': 'application/json'}
data = {
    # 构建好的请求体
}

response = requests.post(url, headers=headers, data=json.dumps(data))

if response.status_code == 200:
    print("Data successfully written to WMS")
else:
    print(f"Failed to write data to WMS, status code: {response.status_code}")

技术要点总结

  1. 字段映射:确保所有字段都正确映射到目标API所需的格式。
  2. 日期格式化:使用适当的格式化函数处理日期字段。
  3. 批量处理:对于大批量的数据,可以考虑分批次发送以提高效率和稳定性。
  4. 错误处理:对API响应进行检查,并添加错误处理机制,以便及时发现和解决问题。

通过以上步骤,我们可以高效地完成从源平台到旺店通WMSAPI接口的数据ETL转换和写入过程。这不仅提高了数据处理的自动化程度,也确保了数据的一致性和准确性。 钉钉与ERP系统接口开发配置

更多系统对接方案