使用轻易云进行ETL转换并写入旺店通WMS的最佳实践

  • 轻易云集成顾问-吕修远

金蝶云星空数据集成到旺店通WMS案例解析

在企业的日常运营中,系统对接与数据集成是确保业务流程高效运转的关键环节之一。本文将分享一个实际应用案例——如何通过轻易云平台,将金蝶采购入库单数据无缝地集成到旺店通其他入库单(包括组织间采购和零散入库单据类型)。

项目背景:我们需要定时从金蝶云星空系统抓取采购入库单的数据,并将这些数据快速、准确地写入旺店通WMS。具体技术挑战包括:

  1. 确保大批量数据在高吞吐量下也能够及时、可靠地被处理;
  2. 设计并实现自定义的数据转换逻辑,以适应两个系统之间的不同业务需求和数据结构;
  3. 实现实时监控和告警功能,以便及时发现并处理潜在的问题,确保整个集成过程顺畅运行。

方案概述

一、接口调用

首先,我们需要获取金蝶云星空中的采购入库单据。这一步骤通过调用executeBillQuery API接口完成,该接口支持分页查询,可以有效解决大量数据传输过程中可能遇到的性能瓶颈问题。在此基础上,我们会重点解释如何合理设置调用频率以及分页参数,以保证不会因为请求过多而遭遇限流或超时。

接下来,针对得到的数据,需要进行一定程度上的清洗与转换。由于金蝶云星空与旺店通WMS的数据格式存在差异,我们使用轻易云提供的可视化工具,对数据流向进行了详细设计。同时,在转换逻辑中加入必要的数据质量监控机制,以提前捕获并处理异常情况。

二、大批量快速写入

为了满足业务对即时性及大量数据同步要求,我们将清洗后的数据信息按需打包,通过WDT_WMS_ENTRYORDER_CREATE API接口写入旺店通WMS。这个步骤不仅强调API效率,同时也考虑到了异常处理和错误重试机制,使得即便出现网络波动或者临时故障,也能自动重试,并最终保证任务的一致性和完整性。

三、集中监控与优化

另一个核心要素是在整个实施过程中引入了集中化的监控管理体系。不仅对每一次API请求进行日志记录,还设置了全面的告警规则来跟踪任务状态以及性能表现。例如,当发现某个阶段耗时过长或失败次数超过设定阈值时,会立即触发告警,从而让运维团队可以迅速响应,实现闭环管理。这种能力极大提升了我们对整体流程透明度及控制力,也为后续 数据集成平台API接口配置

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

在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何使用轻易云数据集成平台调用金蝶云星空接口executeBillQuery,以获取采购入库单数据并进行初步加工。

接口配置与调用

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

{
  "api": "executeBillQuery",
  "method": "POST",
  "number": "FBillNo",
  "id": "FInStockEntry_FEntryId",
  "pagination": {
    "pageSize": 500
  },
  "idCheck": true,
  "request": [
    {"field":"FInStockEntry_FEntryId","label":"id","type":"string","value":"FInStockEntry_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_FNumber","label":"单据类型","type":"string","value":"FBillTypeID.FNumber"},
    {"field":"FOwnerTypeIdHead","label":"货主类型","type":"string","value":"FOwnerTypeIdHead"},
    {"field":"FOwnerIdHead_FNumber","label":"货主","type":"string","value":"FOwnerIdHead.FNumber"},
    {"field":"FDemandOrgId_FNumber","label":"需求组织","type":"string","value":"FDemandOrgId.FNumber"},
    {"field":"FPurchaseOrgId_FNumber","label":"采购组织","type":"string","value":"FPurchaseOrgId.FNumber"},
    {"field": "FSupplierId_FNumber", "label": "供应商", "type": "string", "value": "FSupplierId.FNumber"}
  ],
  "otherRequest":[
    {"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}"},
    {"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}"},
    {"field": "TopRowCount", "label": "返回总行数", "type": int, describe: 金蝶的查询分页参数},
    {"field": “FilterString”, “label”: “过滤条件”, “type”: “string”, “describe”: “示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=”, “value”: “FApproveDate>='{{MINUTE_AGO_30|datetime}}' and FStockId.F_JZJ_CheckBox=1 and FBillTypeID.FNumber='RKD02_SYS'”},
    {“field”: “FieldKeys”, “label”: “需查询的字段key集合”, “type”: “array”, “describe”: “金蝶分录主键ID格式:FPOOrderEntry_FEntryId,其它格式 FPurchaseOrgId.FNumber”, “parser”: {“name”: “ArrayToString”, “params”: ”,”}},
    {“field”: “FormId”, “label”: “业务对象表单Id”, “type”: “string”, “describe”: 必须填写金蝶的表单ID如:PUR_PurchaseOrder, value: STK_InStock}
  ]
}

数据请求与清洗

在配置好元数据后,我们通过POST方法调用executeBillQuery接口,发送请求以获取采购入库单的数据。请求体中包含了我们需要查询的字段和过滤条件,例如:

  • FilterString: 用于筛选特定条件下的数据,如最近30分钟内审核通过且仓库标识为1的入库单。
  • FieldKeys: 指定需要返回的字段集合,以逗号分隔。

示例请求体如下:

{
  FormId: 'STK_InStock',
  FieldKeys: 'FID,FBillNo,FDocumentStatus,FStockOrgId.FNumber,FDate,FBillTypeID.FNumber,FOwnerTypeIdHead,FOwnerIdHead.FNumber,FDemandOrgId.FNumber,FPurchaseOrgId.FNumber,FSupplierId.FNumber',
  FilterString: 'FApproveDate>='2023-09-01T00:00:00Z' and FStockFlag=1 and FBillTypeID.FNumber='RKD02_SYS',
  Limit: 500,
  StartRow: 0
}

数据转换与写入

获取到原始数据后,需要对其进行清洗和转换,以便写入目标系统。在此过程中,可以使用轻易云提供的数据处理工具,对字段进行映射、格式转换等操作。例如,将金蝶云星空中的FBillNo映射为旺店通中的order_no,或将日期格式从ISO标准转换为目标系统所需格式。

{
  sourceField: 'FBillNo',
  targetField: 'order_no'
},
{
  sourceField: 'FDate',
  targetField: 'entry_date',
  transformFunction: 'ISOToCustomFormat'
}

实时监控与日志记录

在整个数据集成过程中,实时监控和日志记录是确保数据准确性和及时处理问题的重要手段。轻易云平台提供了实时监控功能,可以随时查看数据流动和处理状态,并记录每一步操作日志,方便追溯和排查问题。

通过上述步骤,我们可以高效地从金蝶云星空获取采购入库单数据,并进行必要的清洗和转换,为后续的数据写入做好准备。这不仅提高了业务透明度,也大大提升了工作效率。 金蝶云星空API接口配置

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

在数据集成生命周期的第二步,我们需要将已经从源平台(金蝶采购入库单)获取的数据进行ETL转换,并将其转为目标平台(旺店通WMSAPI接口)所能够接收的格式,最终写入目标平台。本文将详细探讨这一过程中的技术细节和实现方法。

数据请求与清洗

首先,我们需要从金蝶系统中获取采购入库单的数据。这一步通常涉及到通过API或数据库查询来提取原始数据,并进行初步的清洗和整理,以确保数据的准确性和一致性。在此阶段,我们会使用轻易云数据集成平台提供的工具来完成这些操作。

数据转换与写入

在数据清洗完成后,接下来就是关键的ETL转换过程。我们需要将清洗后的数据按照旺店通WMSAPI接口的要求进行格式转换,并最终通过API写入目标系统。

配置元数据

根据提供的元数据配置,我们可以看到需要将金蝶系统中的字段映射到旺店通WMSAPI接口所需的字段。以下是具体的字段映射关系:

  • Header部分

    • FBillNo -> entryOrderCode
    • FStockId_FNumber -> warehouseCode
    • 固定值 QTRK -> orderType
  • Body部分

    • FMaterialId_FNumber -> itemCode
    • FRealQty -> planQty
    • FInStockEntry_FEntryId -> orderLineNo
    • 固定值 ZP -> inventoryType
    • FLot -> batchCode
    • FProduceDate|date -> productDate
    • FExpiryDate|date -> expireDate
API请求结构

根据元数据配置,构建API请求体如下:

{
    "entryOrder": {
        "entryOrderCode": "{FBillNo}",
        "warehouseCode": "{FStockId_FNumber}",
        "orderType": "QTRK"
    },
    "orderLines": [
        {
            "itemCode": "{{details.FMaterialId_FNumber}}",
            "planQty": "{{details.FRealQty}}",
            "orderLineNo": "{{details.FInStockEntry_FEntryId}}",
            "inventoryType": "ZP",
            "batchCode": "{{details.FLot}}",
            "productDate": "{{details.FProduceDate|date}}",
            "expireDate": "{{details.FExpiryDate|date}}"
        }
    ]
}
实现步骤
  1. 初始化配置: 配置轻易云数据集成平台,设置源系统(金蝶)的连接信息,并定义所需的数据提取规则。

  2. 数据提取: 使用轻易云平台提供的数据提取工具,从金蝶系统中获取采购入库单的数据。

  3. 数据清洗: 对提取的数据进行初步清洗,确保其符合目标系统(旺店通WMS)的要求。例如,去除空值、格式化日期等。

  4. ETL转换: 根据上述字段映射关系,将清洗后的数据转换为目标系统所需的格式。此步骤可以利用轻易云平台提供的ETL工具来实现。

  5. 构建API请求: 按照元数据配置构建API请求体。确保每个字段都正确映射,并且格式符合旺店通WMSAPI接口要求。

  6. 发送请求: 使用POST方法,将构建好的请求体发送到旺店通WMSAPI接口(WDT_WMS_ENTRYORDER_CREATE)。

  7. 监控与日志记录: 实时监控API请求的状态,记录成功与失败的日志,以便后续分析和排查问题。

示例代码

以下是一个简单示例代码片段,用于展示如何使用Python实现上述步骤:

import requests
import json

# 构建请求头
headers = {
    'Content-Type': 'application/json'
}

# 构建请求体
data = {
    "entryOrder": {
        "entryOrderCode": "{FBillNo}",
        "warehouseCode": "{FStockId_FNumber}",
        "orderType": "QTRK"
    },
    "orderLines": [
        {
            "itemCode": "{details.FMaterialId_FNumber}",
            "planQty": "{details.FRealQty}",
            "orderLineNo": "{details.FInStockEntry_FEntryId}",
            "inventoryType": "ZP",
            "batchCode": "{details.FLot}",
            "productDate": "{details.FProduceDate|date}",
            "expireDate": "{details.FExpiryDate|date}"
        }
    ]
}

# 将字典转为JSON字符串
json_data = json.dumps(data)

# 发送POST请求
response = requests.post('https://api.wangdiantong.com/WDT_WMS_ENTRYORDER_CREATE', headers=headers, data=json_data)

# 打印响应内容
print(response.text)

通过上述步骤和示例代码,我们可以高效地将金蝶采购入库单的数据转换并写入到旺店通WMS系统中,实现不同系统间的数据无缝对接。 打通金蝶云星空数据接口

更多系统对接方案