使用轻易云实现旺店通采购入库单与BI柒哦的深度集成

  • 轻易云集成顾问-陈洁琳

旺店通·旗舰奇门数据集成到MySQL:从采购入库单到BI柒哦

在进行复杂的数据集成任务时,透明、高效的管理和监控是关键。在这篇文章中,我们将深入探讨如何通过轻易云平台,将旺店通·旗舰奇门系统中的采购入库单数据高效、可靠地集成到MySQL数据库,并确保在这一过程中不会出现漏单的情况。

首先,通过调用wdt.wms.stockin.purchase.querywithdetail接口,我们可以获取旺店通·旗舰奇门中的详细采购入库单数据。为了应对API分页和限流问题,需要设计一个健壮的数据抓取机制,该机制能够定时且可靠地从接口批量提取数据。此外,为了适应业务需求,还需要自定义转换逻辑以处理两者之间的数据格式差异。

在成功提取并转换数据后,下一步就是利用轻易云的数据写入功能,通过batchexecute API,将大批量的订单数据快速、安全地写入到MySQL。此过程不仅要求高吞吐性能,还需配置周全的错误重试机制,以防止因网络或其他不可抗力导致的写入失败。

为保障整个流程顺畅运行,我们将借助集中监控及告警系统,对每个集成任务进行实时跟踪。一旦检测到异常,可以即时反馈并采取措施。此外,日志记录功能也将在调试和日常维护中发挥重要作用,使得故障定位更加迅速准确。

最后,在实际项目实施阶段,需要特别注意以下几点:

  • 确保所有API资产集中管理,以便于审计与资源优化。
  • 实施高级的数据质量监控方案,有效识别并处理异常状况。
  • 设计合理的数据映射策略,以满足不同系统间多样化、复杂化的数据交换需求。

接下来,让我们具体看看这些技术点如何应用于“旺店通旗舰版-采购入库单-->BI柒哦-采购入库单表”这个实际案例当中。 用友BIP接口开发配置

调用旺店通·旗舰奇门接口获取并加工数据的技术案例

在数据集成生命周期的第一步,我们需要调用源系统的API接口获取原始数据,并对其进行初步加工。本文将详细探讨如何使用轻易云数据集成平台调用旺店通·旗舰奇门接口wdt.wms.stockin.purchase.querywithdetail,以获取采购入库单的详细信息,并进行必要的数据处理。

接口概述

接口wdt.wms.stockin.purchase.querywithdetail用于查询采购入库单的详细信息。该接口采用POST请求方式,支持分页查询,能够返回指定时间范围内的采购入库单数据。

元数据配置解析

根据提供的元数据配置,我们可以看到以下关键字段和参数:

  • api: wdt.wms.stockin.purchase.querywithdetail
  • effect: QUERY
  • method: POST
  • number: order_no
  • id: stockin_id
  • name: tid

请求参数分为两部分:分页参数和业务参数。

  1. 分页参数

    • page_size: 分页大小,默认值为50。
    • page_no: 页号,默认值为1。
  2. 业务参数

    • start_time: 开始时间,动态取值为上次同步时间。
    • end_time: 结束时间,动态取值为当前时间。

此外,还有一个自动填充响应(autoFillResponse)和一个平铺处理(beatFlat)配置,用于处理嵌套数组字段details_list

请求示例

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

{
  "pager": {
    "page_size": "50",
    "page_no": "1"
  },
  "params": {
    "start_time": "{{LAST_SYNC_TIME|datetime}}",
    "end_time": "{{CURRENT_TIME|datetime}}"
  }
}

数据处理流程

  1. 调用API获取数据 使用上述请求示例,通过POST方法调用接口wdt.wms.stockin.purchase.querywithdetail。该接口将返回指定时间范围内的采购入库单详细信息。

  2. 解析响应数据 响应数据通常包含多个字段,其中包括嵌套数组字段details_list。根据元数据配置中的beatFlat设置,需要对该字段进行平铺处理,将嵌套结构展开为平面结构,以便后续的数据存储和分析。

  3. 自动填充响应 配置中的autoFillResponse设置为true,这意味着平台会自动将响应中的相关字段填充到目标系统中,无需手动映射每个字段。这极大简化了数据集成过程,提高了效率。

  4. 延迟处理 配置中的delay设置为5秒,这意味着在每次请求之间会有5秒的延迟,以避免对源系统造成过大的压力。这对于高频率的数据同步场景尤为重要。

实践案例

假设我们需要将从旺店通·旗舰奇门获取的采购入库单数据同步到BI柒哦系统中的采购入库单表。具体步骤如下:

  1. 在轻易云平台上创建一个新的集成任务,并选择源系统为旺店通·旗舰奇门。
  2. 配置API调用参数,如上所述填写分页参数和业务参数。
  3. 设置目标系统为BI柒哦,并选择对应的目标表。
  4. 启用自动填充响应功能,以确保所有必要字段都能正确映射到目标表中。
  5. 配置延迟处理,以避免对源系统造成过大压力。
  6. 启动集成任务,并监控其运行状态,确保数据能够顺利同步到目标系统中。

通过以上步骤,我们可以高效地实现从旺店通·旗舰奇门到BI柒哦系统的数据集成,确保采购入库单信息能够及时、准确地传递到业务分析平台,为后续决策提供可靠的数据支持。 系统集成平台API接口配置

数据集成生命周期的第二步:ETL转换与写入目标平台

在数据集成过程中,ETL(Extract, Transform, Load)转换是至关重要的一环。本文将重点探讨如何将已经集成的源平台数据进行ETL转换,并转为目标平台 MySQL API 接口所能够接收的格式,最终写入目标平台。

数据请求与清洗

在数据集成的第一阶段,我们已经从源平台(如旺店通旗舰版)获取了采购入库单的数据。这些数据通常是原始且未经过处理的,需要进行清洗和转换,以便适应目标平台(如BI柒哦)的要求。

数据转换与写入

接下来,我们进入数据生命周期的第二步:将清洗后的数据进行转换并写入目标平台。以下是具体的步骤和技术细节。

配置元数据

我们使用如下元数据配置来定义如何将源数据映射到目标 MySQL 表中:

{
    "api": "batchexecute",
    "effect": "EXECUTE",
    "method": "SQL",
    "number": "id",
    "id": "id",
    "name": "id",
    "idCheck": true,
    "request": [
        {"field":"stockin_id","label":"入库单id","type":"string","value":"{stockin_id}"},
        {"field":"order_no","label":"入库单号","type":"string","value":"{order_no}"},
        {"field":"warehouse_no","label":"仓库编号","type":"string","value":"{warehouse_no}"},
        {"field":"status","label":"状态","type":"string","value":"{status}"},
        {"field":"modified","label":"修改时间","type":"string","value":"{{modified|datetime}}"},
        {"field":"created_time","label":"制单时间","type":"string","value":"{{created_time|datetime}}"},
        {"field":"remark","label":"备注","type":"string","value":"{remark}"},
        {"field":"logistics_type_name","label":"入库单物流类型","type":"string","value":"{logistics_type_name}"},
        {"field":"check_time","label":"审核时间","type":"string","value":"{{check_time|datetime}}"},
        {"field":"purchase_id","label":"采购单id","type":"string","value":"{purchase_id}"},
        {"field":"purchase_no","label":"采购单号","type":"string","value":"{purchase_no}"},
        {"field":...}
    ],
    "otherRequest": [
        {
            "field": "main_sql",
            "label": "主语句",
            "type": "string",
            "describe": "SQL首次执行的语句,将会返回:lastInsertId",
            "value": "REPLACE INTO wdt_wms_stockin_purchase_querywithdetail (stockin_id, order_no, warehouse_no, status, modified, created_time, remark, logistics_type_name, check_time, purchase_id, purchase_no, goods_count, provider_no, provider_name, logistics_no, logistics_name, goods_amount, total_price, tax_amount, total_stockin_price, flag_name, operator_name) VALUES"
        },
        {
            "field": "limit",
            "label": "limit",
            "type": "string",
            "value": "100"
        }
    ]
}
SQL 语句构建

在上述配置中,main_sql 字段定义了我们将要执行的 SQL 语句模板。这个模板使用了 REPLACE INTO 语法,以确保如果记录已经存在,则更新该记录;否则插入新记录。

REPLACE INTO wdt_wms_stockin_purchase_querywithdetail (
    stockin_id,
    order_no,
    warehouse_no,
    status,
    modified,
    created_time,
    remark,
    logistics_type_name,
    check_time,
    purchase_id,
    purchase_no,
    goods_count,
    provider_no,
    provider_name,
    logistics_no,
    logistics_name,
    goods_amount,
    total_price,
    tax_amount,
    total_stockin_price,
    flag_name,
    operator_name
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
数据映射与格式化

在执行 SQL 语句之前,我们需要确保所有字段的数据类型和格式都符合 MySQL 的要求。例如,日期字段需要格式化为标准的 YYYY-MM-DD HH:MM:SS 格式,这可以通过配置中的 {{modified|datetime}}{{created_time|datetime}} 等来实现。

执行批量操作

为了提高效率,我们使用批量操作来一次性处理多条记录。配置中的 limit 字段设置了每次批量操作处理的最大记录数。在实际执行时,我们可以根据需要调整这个值,以平衡性能和资源消耗。

{
  ...
  {
      field: 'limit',
      label: 'limit',
      type: 'string',
      value: '100'
  }
}

实际案例分析

假设我们从源系统获取了一条采购入库单记录,其字段值如下:

{
  stockin_id: '12345',
  order_no: 'PO12345',
  warehouse_no: 'WH001',
  status: 'completed',
  modified: '2023-10-01T12:00:00Z',
  created_time: '2023-09-30T08:00:00Z',
  remark: 'No issues',
  logistics_type_name: 'Express',
  check_time: '2023-10-01T15:00:00Z',
  purchase_id: '67890',
  purchase_no: 'PR67890',
  goods_count: '100',
  provider_no: 'PV001',
  provider_name: 'Supplier A'
}

根据上述元数据配置和 SQL 模板,这条记录将被转换并插入到 MySQL 表中:

REPLACE INTO wdt_wms_stockin_purchase_querywithdetail (
   stockin_id,
   order_no,
   warehouse_no,
   status,
   modified,
   created_time,
   remark,
   logistics_type_name,
   check_time,
   purchase_id,
   purchase_no,
   goods_count,
   provider_no,
   provider_name
) VALUES (
   '12345', 
   'PO12345', 
   'WH001', 
   'completed', 
   '2023-10-01 12:00:00', 
   '2023-09-30 08:00:00', 
   'No issues', 
   'Express', 
   '2023-10-01 15:00:00', 
   '67890', 
   'PR67890', 
   '100', 
   'PV001', 
   'Supplier A'
)

通过这种方式,我们实现了从源系统到目标系统的数据无缝对接,并确保每个字段的数据都经过了适当的清洗和转换,符合目标系统的要求。 钉钉与MES系统接口开发配置

更多系统对接方案