技术详解:用友BIP与旺店通数据集成的ETL转换及实战案例

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

用友BIP数据集成到旺店通·企业奇门:采购订单(红字) => 采购退料单-v

在进行用友BIP与旺店通·企业奇门系统的对接过程中,我们选择了一个典型案例——将“采购订单(红字)”的数据集成到“采购退料单-v”。此次集成主要涉及从用友BIP接口获取原始数据,并通过高效、安全的方法将其写入到旺店通·企业奇门。

由于该场景下的数据量较大且需保证无遗漏,我们实现了定时可靠的抓取用友BIP接口数据,同时处理分页和限流问题,以确保每一条有效信息都能被及时、准确地获取。具体执行中,调用用友BIP API /yonbip/scm/purchaseorder/list,按分批次读取数据,是第一步关键环节。

然而,仅仅是成功抓取并不足以完成整个流程。在大量数据向目标系统—旺店通·企业奇门的快速写入过程中,仍然需要应对多种挑战,如处理两者之间的数据格式差异,对接异常情况以及错误重试机制等。例如,在调用API wdt.purchase.return.push 时,通过自定义映射规则,将源系统复杂多样的数据结构转换为目标系统所需格式,成为确保顺利操控的重要步骤。此外,通过实时监控和日志记录,实现透明化管理,也有效提升了运作效率与稳定性。

在以下部分,我们将详细探讨各个技术步骤及解决方案,包括如何保障集成过程中的无缝衔接、抑制潜在风险,以及增进整体业务流畅度,从而使得这一集成方案得以成功落地应用。 数据集成平台API接口配置

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

在轻易云数据集成平台中,调用源系统用友BIP接口/yonbip/scm/purchaseorder/list是数据集成生命周期的第一步。本文将详细探讨如何配置和调用该接口,并对返回的数据进行加工处理。

接口调用配置

首先,我们需要配置API请求参数。根据元数据配置,接口使用POST方法,以下是具体的请求参数:

  • pageIndex: 页码,默认值为1。
  • pageSize: 每页数,默认值为1000。
  • isSum: 查询表头,默认值为false。
  • simpleVOs: 查询条件对象,包括多个过滤条件。
  • queryOrders: 排序字段数组。

示例请求体如下:

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

数据格式化与转换

在获取到原始数据后,需要对其进行格式化和转换。根据元数据配置,我们需要将原始字段名转换为新的字段名,并指定格式。以下是具体的字段映射关系:

  • id -> new_id
  • purchaseOrders_id -> new_purchaseOrders_id
  • headFreeItem.define1 -> new_headFreeItem
  • vendor -> new_vendor
  • warehouse -> new_warehouse

例如,假设原始响应数据如下:

{
  "id": 12345,
  "purchaseOrders_id": 67890,
  "headFreeItem.define1": "item001",
  "vendor": {"name":"Vendor A"},
  "warehouse":{"location":"Warehouse A"}
}

经过格式化处理后的数据应为:

{
  "new_id": "12345",
  "new_purchaseOrders_id": "67890",
  "new_headFreeItem": "item001",
  "new_vendor": {"name":"Vendor A"},
  "new_warehouse":{"location":"Warehouse A"}
}

实现步骤

  1. 配置API请求:在轻易云平台上配置API调用参数,如页码、每页数量、查询条件和排序字段等。
  2. 发送请求:通过POST方法向用友BIP接口发送请求,获取采购订单列表。
  3. 接收响应:接收并解析API响应数据。
  4. 数据格式化:根据元数据配置,对响应中的字段进行重命名和格式转换。
  5. 存储或进一步处理:将格式化后的数据存储到目标系统或进行进一步的数据处理。

注意事项

  • 确保查询条件中的时间戳(如{{LAST_SYNC_TIME|datetime}})正确替换,以保证增量同步的准确性。
  • 在实际应用中,根据业务需求调整过滤条件和排序字段,以获取所需的数据集。
  • 数据格式化过程中,应确保所有必需字段均已正确映射,以避免后续处理中的数据缺失或错误。

通过上述步骤,我们可以高效地从用友BIP系统中获取采购订单数据,并进行必要的加工处理,为后续的数据写入和业务分析打下坚实基础。 如何对接金蝶云星空API接口

使用轻易云数据集成平台将采购订单转换为旺店通·企业奇门API接口的技术案例

在数据集成过程中,将已经集成的源平台数据进行ETL转换,并最终写入目标平台是一个关键步骤。本文将详细探讨如何使用轻易云数据集成平台,将采购订单(红字)转换为采购退料单,并通过旺店通·企业奇门API接口写入目标平台。

API接口配置

首先,我们需要配置旺店通·企业奇门的API接口。根据提供的元数据配置,API接口为wdt.purchase.return.push,使用POST方法提交请求。以下是主要字段和其对应的配置:

  • 供应商编号provider_no):从源数据中的vendor_code字段获取。
  • 外部单号outer_no):从源数据中的code字段获取。
  • 是否审核is_check):固定值为1,表示自动审核。
  • 出库仓库编号warehouse_no):通过映射从源数据中的new_warehouse字段获取。
  • 备注remark):组合了源数据中的new_memoorg_name字段。

数据转换与写入

在进行数据转换时,我们需要特别注意以下几点:

  1. 明细列表节点(detail_list):这是请求参数的二级数据节点,包含采购退货单所有货品明细属性信息的数据节点。我们需要将源数据中的明细列表映射到这个节点中。

  2. 字段映射

    • spec_no: 从源数据中的 product_cCode
    • num: 退货数量,需要将源数据中的 purchaseOrders_subQty 乘以 -1
    • price: 从源数据中的 oriUnitPrice
    • tax: 税率,需要将源数据中的 listTaxRate 乘以 0.01
    • detail_remark: 从源数据中的 new_purchaseOrders_memo

以下是具体的元数据配置示例:

{
    "api": "wdt.purchase.return.push",
    "method": "POST",
    "idCheck": true,
    "operation": {
        "method": "merge",
        "field": "vendor,warehouse,code,new_headFreeItem,new_memo",
        "bodyName": "detail_list",
        "bodySum": ["purchaseOrders_subQty"],
        "header": ["new_vendor", "new_warehouse", "code", "new_headFreeItem", "new_memo", "org_name", "vendor_code"],
        "body": ["product_cCode", "purchaseOrders_subQty", "oriUnitPrice", "listTaxRate", "new_purchaseOrders_memo"]
    },
    "request": [
        {
            "field": "provider_no",
            "label": "供应商编号",
            "type": "string",
            "describe": "供应商编号",
            "value": "{vendor_code}"
        },
        {
            "field": "outer_no",
            "label": "外部单号",
            "type": "string",
            "describe": "外部单号",
            "value": "{code}"
        },
        {
            "field": "is_check",
            ...

数据处理逻辑

在实际操作中,轻易云平台会按照上述配置进行ETL处理:

  1. 提取:从源系统中提取采购订单的数据。
  2. 清洗:对提取的数据进行必要的清洗和校验,例如确保所有必填字段都有值。
  3. 转换:按照元数据配置,将提取的数据字段映射到目标系统所需的格式。例如,将退货数量乘以-1,将税率乘以0.01等。
  4. 加载:通过调用旺店通·企业奇门API接口,将转换后的数据写入目标系统。

实际应用案例

假设我们有一条采购订单,其原始数据如下:

{
    ...
    // 省略其他不相关字段
    ...
    {
        ...
        // 明细列表
        detail_list: [
            {
                product_cCode: 'P001',
                purchaseOrders_subQty: 10,
                oriUnitPrice: 100,
                listTaxRate: 13,
                new_purchaseOrders_memo: '退货原因'
            }
        ],
        vendor_code: 'V001',
        code: 'PO123456',
        new_warehouse: 'W001',
        new_memo: '紧急退货',
        org_name: '公司A'
    }
}

经过ETL处理后,生成的请求体如下:

{
    ...
    // 省略其他不相关字段
    ...
    {
        provider_no: 'V001',
        outer_no: 'PO123456',
        is_check: '1',
        warehouse_no: '_findCollection find omsOutWarehouse from fa193860-6aa8-37a8-b996-a856e9a8a96f where ysOutWarehouse=W001 mappingType=3',
        remark: '紧急退货-公司A',
        detail_list: [
            {
                spec_no: 'P001',
                num: '-10', // 原始数量乘以-1
                price: '100',
                tax: '0.13', // 原始税率乘以0.01
                detail_remark: '退货原因'
            }
        ]
    }
}

通过上述步骤,我们成功地将采购订单的数据转换为符合旺店通·企业奇门API接口要求的格式,并完成了写入操作。这种标准化和自动化的数据处理流程,大大提高了业务效率和准确性。 用友与SCM系统接口开发配置

更多系统对接方案