ETL转换及数据写入旺店通API的实现方法

  • 轻易云集成顾问-卢剑航

用友U8采购退货单集成到旺店通·企业奇门

在现代的电商和制造业管理中,系统间的数据对接与集成是确保业务高效运行的重要环节。本文将分享一个实际案例:如何通过轻易云数据集成平台,将用友U8系统中的采购退货单无缝对接至旺店通·企业奇门系统。

案例背景

此次案例涉及的具体方案为“C111 u8采购退货单(分页) -> oms采购退货单”,目的是实现用友U8系统和旺店通·企业奇门之间的数据流动,提高数据处理效率,并保证各项操作的准确性和可靠性。在这个过程中,我们主要利用了用友U8获取数据的API接口/apilink/u8api以及旺店通·企业奇门写入数据的API接口wdt.purchase.return.push

关键技术亮点

  1. 定时可靠抓取用友U8接口数据: 利用调度任务模块,配置定时抓取机制,通过调用/apilink/u8api接口,实现稳定且准时地获取最新的采购退货数据信息。这样不仅简化了人工干预,还极大程度上减少了漏单现象。

  2. 处理分页和限流问题: 在面对大量历史订单或大的批量请求时,需解决分页取得与API访问频率限制的问题。我们设计了一套智能分页算法来进行分段拉取,并实现自动重试策略,以便应对网络抖动或者瞬态错误。

  3. 批量快速写入到旺店通·企业奇门: 当获得完整的数据后,通过优化后的映射逻辑,高效打包并使用wdt.purchase.return.push API进行批量提交,从而有效缩短整体响应时间,同时提高上传成功率。

  4. 实时监控与日志记录: 为保障整个过程透明可追踪,我们部署了一系列监控报警措施,对每次信息交换形成详细日志。这种细致化管理方式,不仅有助于异常分析,更利于后续性能优化.

  5. 跨平台格式差异转换: 由于两者系统之间存在格式及字段命名规范的不一致,我们编写并应用了一些自定义脚本,用以完成从源到目标结构的一一对应转换,以确保最终导出结果符合目的端需求。

该项目采用上述多项技术策略,使得我们可以顺畅、高效、无误地将来源于用友U8的复杂原始数据传递给旺店通·企业奇门。这些方法不仅实现了期望目标,也为以后更 数据集成平台API接口配置

调用用友U8接口获取并加工数据的技术案例

在数据集成过程中,调用源系统接口是关键的一步。本文将详细探讨如何通过轻易云数据集成平台调用用友U8接口/apilink/u8api,获取并加工采购退货单数据。

接口配置与请求参数

首先,我们需要配置接口的元数据,以便准确地发送请求和处理响应。以下是元数据配置的详细信息:

{
  "api": "/apilink/u8api",
  "effect": "QUERY",
  "method": "POST",
  "number": "cvenabbname",
  "id": "ccode",
  "name": "id",
  "idCheck": true,
  "request": [
    {
      "field": "data",
      "label": "消息体参数",
      "type": "object",
      "children": [
        {
          "field": "过滤条件_1",
          "label": "过滤条件_1",
          "type": "object",
          "children": [
            {"field": "名称", "label": "开始时间", "type": "string", "value":"dnmaketime"},
            {"field": "比较符号", "label":"大于等于",  "type":"string",     "value":"="},
            {"field":"值","label":"短日期","type":"date","value":"{{LAST_SYNC_TIME|datetime}}"}
          ]
        },
        {
          ...
        }
      ]
    }
  ],
  ...
}

请求参数解析

在这个元数据配置中,我们定义了多个过滤条件来精确地筛选数据:

  • 过滤条件_1:用于指定查询的开始时间,字段名为dnmaketime,比较符号为>=,值为上次同步时间。
  • 过滤条件_2:用于指定查询的结束时间,字段名为dnmaketime,比较符号为<=,值为当前时间。
  • 过滤条件_3:用于筛选红单记录,字段名为bredvouch,比较符号为=,值为1
  • 过滤条件_4:用于筛选特定仓库编码的数据,字段名为cwhcode,比较符号为in,值为特定仓库编码列表(如 601,702,802,803)。

此外,我们还定义了分页参数,以便在大量数据时进行分页处理:

  • pagesize:每页返回的数据条数,这里设置为100。
  • pageindex:当前页码,从1开始。

请求示例

根据上述配置,我们可以构建一个具体的请求示例:

{
  "data":{
    ...
    {
      ...
      {
        ...
        {
          ...
          {
            ...
            {
              ...
              {
                ...
                {
                  ...
                  {
                    ...
                    {
                      ...
                      {
                        ...
                        {
                          ...
                          {
                            ...
                            {
                              ...
                              {
                                ...
                                {
                                  ...
                                  {
                                    ... 
                                    { 
                                      ... 
                                      { 
                                        ... 
                                        { 
                                          ... 
                                          { 
                                            ... 
                                            { 
                                              ... 
                                              { 
                                                ... 
                                                { 
                                                  ... 
                                                  { 
                                                    ... 
                                                    { 
                                                      ... 
                                                      { 
                                                        ... 
                                                        {  
                                                          ...  
                                                          {  
                                                            ...  
                                                            {  
                                                              ...  
                                                              {  
                                                                ...  
                                                                {  
                                                                  ...  
                                                                  {  
                                                                    ...  
                                                                    {  
                                                                      ...   
                                                                      {   
                                                                        ...   
                                                                        {   
                                                                          ...   
                                                                          {   
                                                                            ...   
                                                                            {   
                                                                              ...

数据处理与转换

在接收到响应后,需要对数据进行清洗和转换,以符合目标系统OMS采购退货单的要求。以下是一些常见的数据处理步骤:

  1. 字段映射:将源系统中的字段映射到目标系统对应的字段。例如,将用友U8中的 ccode 映射到 OMS 中的 order_code
  2. 格式转换:将日期格式从源系统格式转换为目标系统所需格式。
  3. 数据校验:检查关键字段是否存在,并验证其有效性。

示例代码

以下是一个简化的示例代码,用于展示如何调用接口并处理响应:

import requests
import json
from datetime import datetime

# 定义请求头和URL
url = 'https://your-api-endpoint/apilink/u8api'
headers = {'Content-Type': 'application/json'}

# 构建请求体
payload = {
    'data': {
        '过滤条件_1': {'名称': 'dnmaketime', '比较符号': '>=', '值': '{{LAST_SYNC_TIME|datetime}}'},
        '过滤条件_2': {'名称': 'dnmaketime', '比较符号': '<=', '值': '{{CURRENT_TIME|datetime}}'},
        '过滤条件_3': {'名称': 'bredvouch', '比较符号': '=', '值': '1'},
        '过滤条件_4': {'名称': 'cwhcode', '比较符号': 'in', '值': '601,702,802,803'},
        'apicontext': {'pagesize': 100, 'pageindex': 1}
    }
}

# 发起POST请求
response = requests.post(url, headers=headers, data=json.dumps(payload))

# 检查响应状态码
if response.status_code == 200:
    data = response.json()
    # 数据处理逻辑
    for item in data['items']:
        order_code = item['ccode']
        # 更多处理逻辑...
else:
    print(f"Error: {response.status_code}")

通过上述步骤,我们可以高效地调用用友U8接口获取采购退货单数据,并进行必要的数据清洗和转换,为后续的数据写入做好准备。这一过程不仅提高了数据集成的准确性和效率,也确保了业务流程的顺畅运行。 打通金蝶云星空数据接口

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

在轻易云数据集成平台中,完成数据处理生命周期的第二步,即将已经集成的源平台数据进行ETL(提取、转换、加载)转换,并将其转为目标平台旺店通·企业奇门API接口所能够接收的格式,是一个关键环节。本文将深入探讨这一过程中涉及的技术细节和元数据配置。

1. 数据请求与清洗

在进行ETL转换之前,首先需要从源系统(如U8系统)获取采购退货单的数据。假设我们已经完成了这一阶段,并得到了原始数据。接下来,我们需要对这些数据进行清洗,以确保其质量和一致性。这一步骤包括去除无效数据、填补缺失值以及标准化字段格式等。

2. 数据转换与写入

接下来,我们进入数据生命周期的第二步:将清洗后的数据进行转换,并通过旺店通·企业奇门API接口写入目标平台。以下是详细的元数据配置和实现步骤。

API接口配置

根据提供的元数据配置,我们需要调用wdt.purchase.return.push API接口,该接口采用POST方法提交请求,并且需要进行ID校验(idCheck: true)。具体的请求字段如下:

{
    "api": "wdt.purchase.return.push",
    "effect": "EXECUTE",
    "method": "POST",
    "idCheck": true,
    "request": [
        {
            "field": "provider_no",
            "label": "供应商编号",
            "type": "string",
            "describe": "供应商编号",
            "value": "{cvencode}"
        },
        {
            "field": "outer_no",
            "label": "外部单号",
            "type": "string",
            "describe": "外部单号",
            "value": "{ccode}"
        },
        {
            "field": "warehouse_no",
            "label": "仓库编号",
            "type": "string",
            "describe": "...",
            ...
        },
        {
            ...
        }
    ],
    ...
}
字段映射与转换
  1. 供应商编号 (provider_no)

    • 原始字段:cvencode
    • 类型:字符串
    • 描述:供应商编号直接映射,无需额外处理。
  2. 外部单号 (outer_no)

    • 原始字段:ccode
    • 类型:字符串
    • 描述:外部单号直接映射,无需额外处理。
  3. 仓库编号 (warehouse_no)

    • 原始字段:cwhcode
    • 类型:字符串
    • 描述:仓库编号通过唯一编码映射,在此例中,使用正向映射到目标系统中的仓库编码 640163621499f14120278f6f
  4. 明细列表节点 (detail_list)

    • 类型:数组
    • 描述:包含采购退货单所有货品明细属性信息的数据节点。

    明细列表中的每个字段及其映射关系如下:

    • 商家编码 (spec_no)

      • 原始字段:cinvcode
      • 类型:字符串
      • 描述:直接映射商品编码。
    • 退货数量 (num)

      • 原始字段:iquantity
      • 类型:字符串
      • 描述:退货数量需要乘以-1,以表示退货操作。
        "_function {{body.iquantity}} * (-1)"
    • 单价 (price)

      • 原始字段:iunitcost
      • 类型:字符串
      • 描述:直接映射商品单价。
    • 备注 (detail_remark)

      • 原始字段:cmemo
      • 类型:字符串
      • 描述:直接映射备注信息。
请求参数结构

最终生成的请求参数结构如下:

{
    ...
    {
        ...
        {
            ...
        },
        {
            ...
        },
        {
            ...
        },
        {
            ...
                {
                    ...
                    {
                        ...
                        {
                            ...
                            {
                                ...
                                "_function {{body.iquantity}} * (-1)",
                                ...
                            }
                        }
                    }
                }
        }
    }
}

实现步骤

  1. 配置API请求: 在轻易云平台上,创建一个新的API调用任务,选择POST方法,并填写上述元数据配置中的所有必要字段。

  2. 设置字段映射: 根据元数据配置,对每个字段进行相应的映射和转换。在轻易云平台上,可以通过可视化界面拖拽和设置这些映射关系。

  3. 测试与验证: 配置完成后,执行一次测试调用,检查返回结果是否符合预期。如果出现错误,根据错误信息调整相应的配置或数据格式。

  4. 部署与监控: 测试通过后,将任务部署到生产环境,并利用轻易云平台提供的实时监控功能,跟踪每次API调用的状态和结果,以确保数据准确无误地写入目标系统。

通过以上步骤,我们成功地将U8系统中的采购退货单数据进行了ETL转换,并通过旺店通·企业奇门API接口写入了目标平台。这一过程不仅提升了业务流程的自动化程度,也确保了不同系统间的数据一致性和准确性。 如何对接用友BIP接口

更多系统对接方案