稳健的数据ETL转换:将旺店通退换货数据写入用友BIP

  • 轻易云集成顾问-李国敏

退换货生成销售退货(线上)-v:旺店通·企业奇门数据集成用友BIP技术案例

在本案例中,我们将详细探讨如何通过系统对接,实现旺店通·企业奇门平台的退换货数据无缝集成到用友BIP。本文聚焦于“退换货生成销售退货(线上)-v”方案,该方案旨在利用API接口及定制化的数据处理逻辑,确保数据不漏单,高效且准确地完成集成任务。

数据抓取与接口调用

首先,我们使用wl.refund.query API从旺店通·企业奇门抓取最新的退换货信息。为了保证数据的准确性和时效性,我们实现了定时可靠的数据抓取机制,每隔一定时间周期自动调用API,并正确处理分页和限流问题。这不仅提高了数据获取效率,也减少了对源系统的压力。

{
   "api":"wdt.refund.query",
   "data":{
     ...
   }
}

数据格式转换与映射

由于旺店通·企业奇门和用友BIP之间存在较大的数据格式差异,通过轻易云的平台进行灵活的元数据信息配置,我们能够有效地解决这一问题。在提取到原始JSON数据后,会进行一系列标准化操作,包括字段重命名、类型转换以及复杂嵌套结构解析,确保能与用友BIP所需的数据模型完美匹配。

批量写入与性能优化

接下来,将经过处理后的批量记录发送至用友BIP中的/sd/vouchersalereturn/singleSave API,此过程尤其注重大量数据快速写入及其性能优化。通过并行请求机制和错误重试策略,即便遇到网络故障或异常情况,也能最大程度上提升整体处理成功率。

{
    "url": "/yonbip/sd/vouchersalereturn/singleSave",
    "method": "POST",
    "data": {
      ...
    }
}

异常处理与监控日志

为了增强稳定性,当出现API调用失败等异常情况时,实施了一套完整的错误捕获与告警机制,不仅可以即时报错,还会触发多次重试。此外,实时监控日志记录功能贯穿整个流程,为开发运维人员提供详尽透明的信息反馈,以便迅速排查和解决潜在问题。

以上是此次系统对接项目核心技术点简介,在随后的章节中将进一步分解每一步骤涉及的具体实现细节。 金蝶与MES系统接口开发配置

调用旺店通·企业奇门接口wdt.refund.query获取并加工数据的技术实现

在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细介绍如何通过轻易云数据集成平台调用旺店通·企业奇门接口wdt.refund.query,并对获取的数据进行初步加工。

接口调用配置

首先,我们需要配置接口调用的元数据。根据提供的元数据配置,接口调用采用POST方法,分页大小设置为40,并且需要对特定字段进行条件过滤。

{
  "api": "wdt.refund.query",
  "method": "POST",
  "number": "refund_no",
  "id": "refund_id",
  "pagination": {
    "pageSize": 40
  },
  "idCheck": true,
  "beatFlat": ["refund_order_list"],
  "condition": [
    [
      {"field":"process_status","logic":"egt","value":"70","strictMode":true},
      {"field":"shop_no","logic":"neq","value":"063"},
      ...
      {"field":"shop_no","logic":"neqv2","value":"171"}
    ],
    [
      {"field":"process_status","logic":"egt","value":"70","strictMode":true},
      {"field":"shop_no","logic":"neq","value":"063"},
      ...
      {"field":"shop_no","logic":"neqv2","value":"171"}
    ]
  ],
  "request": [
    {"field":"process_status","label":"退换单处理状态","type":"string"},
    {"field":"time_type","label":"时间类型","type":"string"},
    {"field":"start_time","label":"开始时间","type":"string", "value": "{{LAST_SYNC_TIME|datetime}}"},
    {"field":"end_time","label":"结束时间","type":"string", "value": "{{CURRENT_TIME|datetime}}"},
    {"field":"page_size","label":"分页大小","type":"string", "value": "{PAGINATION_PAGE_SIZE}"},
    ...
  ]
}

数据请求与清洗

在实际操作中,我们需要按照上述配置发送HTTP请求以获取退换货数据。以下是一个示例请求体:

{
  "process_status": "70",
  "time_type": "0",
  "start_time": "{{LAST_SYNC_TIME|datetime}}",
  "end_time": "{{CURRENT_TIME|datetime}}",
  "page_size": 40,
  ...
}

通过这种方式,我们可以获取到符合条件的退换货订单列表。为了确保数据的准确性和完整性,需要对返回的数据进行初步清洗和验证。例如,可以检查每条记录的refund_id是否唯一,并且过滤掉不符合业务逻辑的数据。

数据转换与写入

在完成数据清洗后,下一步是将数据转换为目标系统所需的格式,并写入目标数据库或系统。在这个过程中,可以利用轻易云平台提供的数据转换工具,将原始数据字段映射到目标字段。例如:

{
  "source_field_1": "target_field_1",
  ...
}

通过这种映射关系,可以确保数据在不同系统之间无缝对接。

条件过滤与分页处理

为了提高查询效率和减少不必要的数据传输,可以利用元数据中的条件过滤功能。例如,通过设置process_status大于等于70,并排除特定店铺编号的数据,可以有效地缩小查询范围。此外,分页处理也是必不可少的一部分,通过设置每页返回的数据条数为40,可以分批次获取大规模数据,从而避免一次性传输过多数据导致的性能问题。

{
  "pagination": {
    "pageSize": 40
  }
}

实时监控与日志记录

为了确保整个过程的透明度和可追溯性,需要对每次接口调用进行实时监控和日志记录。通过轻易云平台提供的监控工具,可以实时查看每个环节的数据流动和处理状态,并在出现异常时及时报警。

总结来说,通过合理配置元数据、有效利用条件过滤和分页处理,以及实时监控和日志记录,可以高效地实现旺店通·企业奇门接口wdt.refund.query的数据请求与清洗,为后续的数据转换与写入打下坚实基础。 电商OMS与ERP系统接口开发配置

数据集成与ETL转换:将源平台数据写入用友BIP

在数据集成生命周期的第二阶段,我们需要将已经集成的源平台数据进行ETL转换,并转为目标平台用友BIP API接口所能够接收的格式,最终写入目标平台。以下是具体的技术实现步骤。

1. 数据请求与清洗

首先,我们需要从源平台获取数据并进行初步清洗,以确保数据的完整性和一致性。假设我们已经完成了这一阶段,接下来进入数据转换与写入阶段。

2. 数据转换与写入

在这一阶段,我们需要将清洗后的数据按照用友BIP API接口要求的格式进行转换,并通过POST请求将其写入目标平台。以下是具体步骤:

2.1 配置API接口

根据元数据配置,我们需要调用/yonbip/sd/vouchersalereturn/singleSave接口,使用POST方法提交数据。为了保证请求的幂等性,我们需要生成一个全局唯一的resubmitCheckKey

{
    "api": "/yonbip/sd/vouchersalereturn/singleSave",
    "method": "POST",
    "idCheck": true,
    "BIPAudit": "/yonbip/sd/vouchersalereturn/approve"
}
2.2 构建请求头和请求体

根据元数据配置中的字段映射关系,我们需要构建请求头和请求体。这里我们重点关注几个关键字段:

  • refund_no: 退货单号
  • shop_no: 店铺编号
  • remark: 备注
  • modified: 修改时间
  • actual_refund_amount: 实际退款金额
  • warehouse_no: 仓库编号
  • tid: 原始单号
{
    "resubmitCheckKey": "{refund_no}",
    "code": "{refund_no}",
    "salesOrgId": "_findCollection find mapping_sale_org from 4769a428-14c4-33b8-91fd-e8da3b39d5cb where shop_no={shop_no}",
    "transactionTypeId": "1480261131563434158",
    "agentId": "_findCollection find mapping_customer from 4769a428-14c4-33b8-91fd-e8da3b39d5cb where shop_no={shop_no}",
    "retailInvestors": false,
    "headFreeItem!define2": "{remark}",
    "saleDepartmentId": "",
    "vouchdate": "{modified}",
    "corpContact": "",
    ...
}
2.3 构建表体详情

表体详情部分涉及到退货商品的具体信息,如商品规格、退货数量、含税金额等。我们需要根据元数据配置中的字段映射关系,将源平台的数据转换为目标平台所需的格式。

{
    "saleReturnDetails": [
        {
            "productId": "{{refund_order_list.refund_order_list_spec_no}}",
            "skuId": "{{refund_order_list.refund_order_list_spec_no}}",
            ...
            "subQty": "{{refund_order_list.refund_order_list_refund_num}}",
            ...
            "_status": "Insert"
        }
        ...
    ]
}
2.4 调用API接口

构建好请求头和请求体后,通过HTTP POST方法调用用友BIP API接口,将转换后的数据写入目标平台。

import requests

url = 'https://api.yonyouup.com/yonbip/sd/vouchersalereturn/singleSave'
headers = {'Content-Type': 'application/json'}
data = {
    # 请求头和请求体内容
}

response = requests.post(url, headers=headers, json=data)
if response.status_code == 200:
    print("Data successfully written to Yonyou BIP.")
else:
    print(f"Failed to write data: {response.status_code}, {response.text}")
2.5 审核流程

如果需要对提交的数据进行审核,可以调用/yonbip/sd/vouchersalereturn/approve接口进行审核操作。

audit_url = 'https://api.yonyouup.com/yonbip/sd/vouchersalereturn/approve'
audit_data = {
    # 审核所需参数
}

audit_response = requests.post(audit_url, headers=headers, json=audit_data)
if audit_response.status_code == 200:
    print("Data successfully approved in Yonyou BIP.")
else:
    print(f"Failed to approve data: {audit_response.status_code}, {audit_response.text}")

通过上述步骤,我们可以实现从源平台到用友BIP平台的数据ETL转换与写入操作,确保每个环节的数据准确性和一致性。 打通企业微信数据接口

更多系统对接方案