使用轻易云平台实现采购订单数据ETL转换和API写入

  • 轻易云集成顾问-胡秀丛

用友BIP采购订单与旺店通·企业奇门数据集成案例分享

在企业信息化过程中,跨系统的数据集成往往面临复杂的技术挑战。本文将以“采购订单=>采购单-p”方案为例,详细解析如何将用友BIP平台中的采购订单数据快速、准确地集成到旺店通·企业奇门中。

1. 数据源和目标系统概述

对于此案例,我们主要涉及两个核心系统:

  • 用友BIP:一个广泛应用于企业资源规划(ERP)的软件平台,在本案中负责生成和管理采购订单。
  • 旺店通·企业奇门:电商供应链一体化管理解决方案,本篇文章的目的是将用友BIP中的采购订单数据写入到该平台,实现集中和高效的业务处理。

2. API接口概述

为了实现上述目标,我们需要调用以下API接口:

  • 用友BIP获取数据的API: /yonbip/scm/purchaseorder/list
  • 旺店通·企业奇门写入数据的API: wdt.purchase.order.push

这两个API是整个集成流程运作的关键所在,通过它们可以实现两大系统之间的数据交互。

3. 高吞吐量的数据写入能力

在实际操作中,为了确保大量用友BIP上的采购订单能够不漏单且快速被同步到旺店通·企业奇门,需要配置高吞吐量的数据写入机制。这不仅提升了处理时效性,还保障了业务连续性。在进行批量数据转移时,高效的数据传输性能尤为重要,它可以显著减少在配置计划执行过程中的延迟风险。

4. 数据质量监控与异常检测

为了确保每次对接过程中都能及时发现潜在问题,我们引入了全面的数据质量监控机制。无论是在从用友BIP提取数据阶段,还是向旺店通录入阶段,一旦出现任何异常状况,例如分页限流问题或格式差异,自动触发预警并启动相应的错误重试机制。这种闭环控制保证了整体流程不会因个别异常而失误终止。

5. 自定义数据转换逻辑及映射关系

由于不同系统间存在着特定业务需求及结构差异,因此我们设计了一套自定义化的数据转换逻辑。从摘要视图直接拖拽生成可视化映射模型,不仅使开发人员清晰了解各节点流转情况,也极大程度上优化配置效率。同时通过灵活调整映射规则,可以完美适应多变场景下各种样式要求,使得所有采集到的信息都能精准呈现至目标库表 企业微信与OA系统接口开发配置

调用用友BIP接口获取并加工采购订单数据

在轻易云数据集成平台中,调用源系统的API接口是数据集成生命周期的第一步。本文将详细探讨如何通过调用用友BIP接口/yonbip/scm/purchaseorder/list获取采购订单数据,并对其进行初步加工。

接口调用配置

首先,我们需要配置API请求的元数据。根据提供的元数据配置,我们可以确定以下关键参数:

  • API路径/yonbip/scm/purchaseorder/list
  • 请求方法POST
  • 分页参数pageIndex(页码)和pageSize(每页数量)
  • 查询条件:通过simpleVOs字段设置
  • 排序字段:通过queryOrders字段设置

请求参数设置

在请求参数中,我们需要特别关注分页、查询条件和排序字段的配置。以下是具体的请求参数示例:

{
  "pageIndex": "1",
  "pageSize": "1000",
  "isSum": "false",
  "simpleVOs": {
    "field1": {
      "field": "totalQuantity",
      "op": "egt",
      "value1": ""
    },
    "field2": {
      "field": "auditTime",
      "op": "egt",
      "value1": "{{LAST_SYNC_TIME|datetime}}"
    },
    "field3": {
      "field": "org",
      "op": "eq",
      "value1": "1553156871271481351"
    }
  },
  "queryOrders": [
    {
      "field": "id",
      "order": "asc"
    }
  ]
}

数据格式化与转换

在获取到原始数据后,需要对其进行格式化和转换。根据元数据配置中的formatResponse字段,我们需要将原始字段名转换为新的字段名,并确保数据类型一致。例如:

  • 将原始字段 id 转换为 new_id
  • purchaseOrders_id 转换为 new_purchaseOrders_id
  • headFreeItem.define1 转换为 new_headFreeItem

以下是一个简单的数据转换示例:

{
  "id": "12345",
  "purchaseOrders_id": "67890",
  "headFreeItem.define1": "",
  ...
}

转换后:

{
  "new_id": "12345",
  "new_purchaseOrders_id": "",
  ...
}

实际操作步骤

  1. 构建请求体:根据上述参数设置,构建POST请求体。
  2. 发送请求:使用HTTP客户端(如Postman或编程语言中的HTTP库)发送POST请求至用友BIP接口。
  3. 接收响应:解析响应数据,检查是否成功返回所需的数据。
  4. 格式化响应数据:按照预定义的格式规则,对响应数据进行字段名转换和类型校验。
  5. 存储或进一步处理:将格式化后的数据存储到目标系统或进行进一步的数据处理。

示例代码

以下是一个使用Python语言调用该API并处理响应数据的示例代码:

import requests
import json

# 构建请求体
payload = {
    'pageIndex': '1',
    'pageSize': '1000',
    'isSum': 'false',
    'simpleVOs': {
        'field1': {'field': 'totalQuantity', 'op': 'egt', 'value1': ''},
        'field2': {'field': 'auditTime', 'op': 'egt', 'value1': '{{LAST_SYNC_TIME|datetime}}'},
        'field3': {'field': 'org', 'op': 'eq', 'value1': '1553156871271481351'}
    },
    'queryOrders': [{'field': 'id', 'order': 'asc'}]
}

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

# 发起POST请求
response = requests.post('https://api.yonyou.com/yonbip/scm/purchaseorder/list', headers=headers, data=json.dumps(payload))

# 检查响应状态码
if response.status_code == 200:
    data = response.json()

    # 格式化响应数据
    formatted_data = []
    for item in data['data']:
        formatted_item = {
            'new_id': item.get('id'),
            'new_purchaseOrders_id': item.get('purchaseOrders_id'),
            # 添加其他字段转换逻辑...
        }
        formatted_data.append(formatted_item)

    # 输出或存储格式化后的数据
    print(json.dumps(formatted_data, indent=4))
else:
    print(f"Failed to fetch data: {response.status_code}")

通过上述步骤和代码示例,可以高效地从用友BIP系统中获取采购订单数据,并进行必要的数据加工,为后续的数据集成奠定基础。 用友BIP接口开发配置

使用轻易云数据集成平台进行ETL转换并写入旺店通·企业奇门API接口

在数据集成的生命周期中,第二步是将已经集成的源平台数据进行ETL(提取、转换、加载)转换,并转为目标平台所能接收的格式。本文将详细探讨如何使用轻易云数据集成平台,将采购订单数据转换为旺店通·企业奇门API接口所能接收的格式,并最终写入目标平台。

API接口配置与元数据解析

首先,我们需要理解旺店通·企业奇门API接口的配置和元数据。根据提供的元数据配置,目标API接口为wdt.purchase.order.push,请求方法为POST。该接口要求传入多个字段,包括供应商编号、仓库编号、API单号等。

以下是主要字段及其描述:

  • provider_no: 供应商编号
  • warehouse_no: 仓库编号
  • outer_no: API单号
  • is_use_outer_no: 是否使用外部单号作为系统采购单号
  • is_check: 是否自动审核
  • contact: 收货人姓名
  • purchase_name: 采购员
  • remark: 备注
  • details_list: 采购明细节点

数据转换与映射

在进行ETL转换时,我们需要将源平台的数据映射到上述字段中。例如,供应商编号(provider_no)需要从源数据中的vendor_code字段获取,而仓库编号(warehouse_no)则通过查找特定ID获取。

以下是具体的数据映射规则:

[
    {"field":"provider_no","value":"{vendor_code}"},
    {"field":"warehouse_no","value":"_findCollection find code from 4f73f755-1c4f-33e6-b5a1-7e3b8d894800 where id={new_warehouse}"},
    {"field":"outer_no","value":"{code}"},
    {"field":"is_use_outer_no","value":"1"},
    {"field":"is_check","value":"1"},
    {"field":"contact","value":""},
    {"field":"purchase_name","value":"{creator}"},
    {"field":"remark","value":"{memo}"}
]

对于采购明细节点(details_list),我们需要进一步解析每个子字段,如下所示:

[
    {"field":"spec_no","value":"{{detail_list.product_cCode}}"},
    {"field":"num","value":"{{detail_list.purchaseOrders_subQty}}"},
    {"field":"price","value":"{{detail_list.oriTaxUnitPrice}}"},
    {"field":"discount","value":"1"},
    {"field":"tax_price","value":"{{detail_list.oriTaxUnitPrice}}"},
    {"field":"remark","value":"{{detail_list.purchaseOrders_memo}}"}
]

实施ETL转换

在轻易云数据集成平台中,可以通过可视化操作界面配置上述映射规则。以下是具体步骤:

  1. 提取数据:从源平台提取原始采购订单数据。
  2. 清洗数据:确保数据完整性和一致性,例如去除空值或重复项。
  3. 转换数据:根据上述映射规则,将源数据字段转换为目标API接口所需的格式。
  4. 加载数据:调用旺店通·企业奇门API接口,将转换后的数据写入目标平台。

调用API接口

完成ETL转换后,通过HTTP POST请求将处理后的数据发送到目标API接口。以下是一个示例请求体:

{
  "provider_no": "12345",
  "warehouse_no": "WH001",
  "outer_no": "PO123456",
  "is_use_outer_no": "1",
  "is_check": "1",
  "contact": "",
  "purchase_name": "张三",
  "remark": "这是一个测试采购单",
  "details_list": [
    {
      "spec_no": "SKU001",
      "num": "10",
      "price": "100.00",
      "discount": "1",
      "tax_price": "100.00",
      "remark": ""
    }
  ]
}

通过以上步骤,我们实现了从源平台到旺店通·企业奇门API接口的数据无缝对接。这不仅提高了业务流程的效率,还确保了数据的一致性和准确性。 电商OMS与WMS系统接口开发配置

更多系统对接方案