自动化ETL实现:从OMS销售退货单到用友U8系统

  • 轻易云集成顾问-彭亮

A111 oms销售退货单 => u8退货单:旺店通·企业奇门数据集成到用友U8的实践

在本案例中,我们将详细探讨如何通过轻易云数据集成平台,实现旺店通·企业奇门的数据无缝对接至用友U8系统。具体方案代码命名为“A111 oms销售退货单 => u8退货单”。此次集成任务不仅要确保从旺店通获取的每一条退款订单不漏单,还需实现快速、大批量地写入用友U8。以下是我们在这个过程中遇到的一些技术难点及解决方法。

接口调用与数据抓取

首先,我们采用了定时任务的方式,可靠地抓取旺店通·企业奇门API wdt.stockin.order.query.refund 的数据。从这一API接口可以获取全部需要处理的销售退货订单信息,为后续的数据加工和转发奠定基础。在抓取过程中,通过分页机制和限流设置,避免一次性请求量过大导致的数据丢失或接口压力过高问题。

格式转换与映射处理

由于(Data Format)两套系统对同类业务对象的数据格式存在差异,因此必须进行严格的数据格式转换。例如,旺店通返回的JSON结构和字段名称,需要根据需求映射为用友U8可接受的XML或者其他指定数据格式。同时,由于不同字段含义可能存在差异,此部分也涉及了较多自定义映射规则,以保证所有关键信息准确传递。

快速与批量写入

面对大量退款订单写入需求,用友U8提供灵活且稳定的公共API /apilink/u8api 供开发者使用。通过优化SQL语句和合并多个小请求为大块提交,我们极大提升了数据吞吐率,同时降低负载。在这一环节中的批量操作,不仅减少网络延迟,也有效规避了频繁调用带来的潜在风险。

异常处理与重试机制

集成过程中的任何异常,如网络波动、权限不足等都会记录日志并触发错误重试机制。这一设计能确保即便出现中断或失败,也不会造成关键业务信息丢失,并能够在问题修复后自动恢复正常工作流程。

如何对接金蝶云星空API接口

调用旺店通·企业奇门接口获取并加工数据

在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口wdt.stockin.order.query.refund来获取并加工数据,以实现A111 oms销售退货单到u8退货单的集成。

接口概述

接口wdt.stockin.order.query.refund用于查询销售退货单的相关信息。该接口采用POST请求方式,主要参数包括订单状态、时间范围、分页信息和店铺编号等。以下是元数据配置的详细说明:

{
  "api": "wdt.stockin.order.query.refund",
  "effect": "QUERY",
  "method": "POST",
  "number": "order_no",
  "id": "stockin_id",
  "name": "order_no",
  "idCheck": true,
  "request": [
    {"field": "status", "label": "状态", "type": "int", "describe": "入库单状态 10已取消20编辑中30待审核60待结算80已完成(默认查询80已完成单据)"},
    {"field": "start_time", "label": "开始时间", "type": "datetime", "describe": "开始时间", "value":"{{LAST_SYNC_TIME|datetime}}"},
    {"field": "end_time", "label": "结束时间", "type": "datetime", "describe":"结束时间","value":"{{CURRENT_TIME|datetime}}"},
    {"field":"page_size","label":"分页大小","type":"string","describe":"分页大小","value":"100"},
    {"field":"page_no","label":"页号","type":"string","describe":"页号"},
    {"field":"shop_nos","label":"店铺编号","type":"string","value":"111001,111002,111003,111010"}
  ],
  "autoFillResponse": true
}

请求参数解析

  1. 状态(status):表示入库单的状态,默认查询已完成的单据(状态码80)。
  2. 开始时间(start_time):查询的起始时间,使用变量{{LAST_SYNC_TIME|datetime}}自动填充。
  3. 结束时间(end_time):查询的结束时间,使用变量{{CURRENT_TIME|datetime}}自动填充。
  4. 分页大小(page_size):每次请求返回的数据条数,默认设置为100。
  5. 页号(page_no):当前请求的页码,用于分页处理。
  6. 店铺编号(shop_nos):指定需要查询的店铺编号列表。

数据请求与清洗

在实际操作中,通过轻易云平台配置上述元数据后,可以自动生成相应的API请求。以下是一个典型的数据请求示例:

{
  "status": 80,
  "start_time": "{{LAST_SYNC_TIME|datetime}}",
  "end_time": "{{CURRENT_TIME|datetime}}",
  "page_size": 100,
  "page_no": 1,
  "shop_nos": ["111001", "111002", "111003", "111010"]
}

该请求将返回符合条件的销售退货单数据。在接收到响应后,需要对数据进行清洗和转换,以便后续处理和写入目标系统。

数据转换与写入

在清洗过程中,需要确保数据格式的一致性。例如,将日期格式统一转换为目标系统所需的格式,对数值字段进行必要的单位转换等。以下是一个简单的数据清洗示例:

def clean_data(raw_data):
    cleaned_data = []
    for item in raw_data:
        cleaned_item = {
            'order_no': item['order_no'],
            'stockin_id': item['stockin_id'],
            'status': item['status'],
            'created_at': convert_datetime_format(item['created_at']),
            # 更多字段处理...
        }
        cleaned_data.append(cleaned_item)
    return cleaned_data

在完成数据清洗后,可以通过轻易云平台将处理后的数据写入目标系统u8退货单,实现完整的数据集成流程。

总结

通过轻易云数据集成平台调用旺店通·企业奇门接口wdt.stockin.order.query.refund,可以高效地获取销售退货单数据,并通过清洗和转换步骤,实现A111 oms销售退货单到u8退货单的数据集成。这一过程充分利用了平台提供的全生命周期管理功能,使得整个数据处理过程透明、高效。 企业微信与ERP系统接口开发配置

数据集成与ETL转换:将OMS销售退货单转为用友U8退货单

在数据集成生命周期的第二步,我们需要将已经从源平台(如OMS系统)获取的数据进行ETL转换,确保其符合目标平台(如用友U8)的API接口要求,并最终写入目标平台。本文将详细介绍如何利用轻易云数据集成平台配置元数据,将OMS销售退货单转换为用友U8退货单。

1. 配置元数据

首先,我们需要配置元数据以适配用友U8的API接口。以下是具体的元数据配置示例:

{
  "api": "/apilink/u8api",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "request": [
    {
      "field": "data",
      "label": "data参数",
      "type": "object",
      "describe": "data参数",
      "children": [
        {
          "field": "单据头",
          "label": "单据头",
          "type": "object",
          "describe": "单据头",
          "children": [
            {"field":"退货单号","label":"退货单号","type":"string","value":"{order_no}"},
            {"field":"销售类型","label":"销售类型","type":"string","describe":"销售类型","value":"国内零售"},
            {"field":"客户简称","label":"客户简称","type":"string","describe":"客户简称","value":"{shop_name}"},
            {"field":"销售部门","label":"销售部门","type":"string","describe":"销售部门","value":"{shop_name}"},
            {"field":"业务员","label":"业务员","type":"string","describe":"业务员"},
            {"field":"备注","label":"备注","type":"string","describe":"备注","value":"{remark}"},
            {"field":"退货日期","label":"退货日期","type":"string","value":"{created_time}"},
            {"field":"制单人","label":"制单人","type":"string","value":"{refund_operator_name}"},
            {"field":"订单号","label":"订单号","type":"string","value":"{tid}"}
          ]
        },
        {
          "field": "单据体",
          "label": "单据体",
          "type": "array",
          "describe": "单据体",
          "value": "details_list",
          "children": [
            {
              "field": "行",
              "label": "行",
              "type": "object",
              "describe": "行",
              "children":[
                {"field": “仓库名称”, “label”: “仓库名称”, “type”: “string”, “describe”: “仓库名称”, “value”: “{warehouse_no}”},
                {"field”: “货物编码”, “label”: “货物编码”, “type”: “string”, “describe”: “存货名称”, “value”: "{{details_list.goods_no}}"},
                {"field”: “数量”, “label”: “数量”, “type”: “string”, “describe”:“数量”,“value”:"_function {{details_list.goods_count}} * (-1)"},
                {"field”:“含税单价”,“label”:“含税单价”,“type”:“string”,“value”:"{{details_list.src_price}}"}
              ]
            }
          ]
        }
      ]
    }
  ],
  ...
}

2. 数据转换与映射

在上述配置中,request字段定义了发送到用友U8 API的数据结构。我们需要特别注意以下几个关键字段的映射和转换:

  • 退货单号 (order_no):直接映射为{order_no}
  • 客户简称 (shop_name):映射为{shop_name},并且通过mapping属性指向特定的目标字段。
  • 数量 (goods_count):由于是退货,需要将数量乘以-1,即通过函数 _function {{details_list.goods_count}} * (-1)实现。
  • 含税单价 (src_price):直接映射为{{details_list.src_price}}

3. 接口调用与数据写入

配置完成后,我们通过POST方法调用用友U8的API接口,将转换后的数据写入目标平台。以下是具体的API调用示例:

{
  ...
  {
    field: 'apiurl',
    label: '接口',
    type: 'string',
    describe: '创建退货单',
    value: 'returnorder/create'
  },
  {
    field: 'audit',
    label: '审核接口',
    type: 'string',
    value: 'consignment/audit'
  }
}

在实际操作中,我们需要确保每个字段的数据格式和内容都符合用友U8 API的要求,以保证数据能够成功写入并被正确处理。

总结

通过上述步骤,我们可以高效地将OMS系统中的销售退货单数据转换为用友U8所需的格式,并成功写入目标平台。这一过程不仅提高了数据处理的效率,还保证了不同系统间的数据一致性和准确性。 打通用友BIP数据接口

更多系统对接方案