利用轻易云进行OMS退货单到用友U8的ETL转换

  • 轻易云集成顾问-叶威宏

案例分享:旺店通·企业奇门数据集成到用友U8

在现代化的企业管理系统中,数据的集成与同步至关重要。本文将分享一个具体案例,如何通过轻易云数据集成平台实现旺店通·企业奇门销售退货单的数据高效、无缝地对接到用友U8系统。方案名称为 A oms销售退货单 => u8退货单100001

数据获取与处理流程

首先,从接口 wdt.stockin.order.query.refund 获取旺店通·企业奇门中的销售退货单数据,这是我们整个流程的起点。在此过程中,我们需要特别注意如何处理分页和限流问题,以确保能够全面、准确地抓取所有必要的数据。而在批量获取这些数据后,还要进行定时可靠的调用操作以避免漏单情况发生。

随后,需要对从旺店通获取到的数据进行预处理,解决两者间可能存在的数据格式差异。这是为了保证后续写入用友U8时能顺利匹配其API要求 /apilink/u8api

数据匹配与写入用友U8

要实现大量数据快速且安全地写入到用友U8,对接过程中还需格外小心考虑诸如映射关系、字段对应等细节。特别是在面对定制化需求时,将不同系统间的数据字段精准映射显得尤为关键。此外,通过实时监控与日志记录机制,可以及时发现并处理异常情况,比如网络波动导致的传输失败,并实施错误重试机制来保障每条数据信息都正确录入。

以上介绍了从抓取源头数据,到中间规范化处理,再至最终快速写入目标数据库的一整套流程框架。而以下内容将详细讲述各步骤中的具体技术实施及关键点解析,包括但不限于API调用配置、分页限流策略设计以及异常和错误重试机制等实际操作手法。 轻易云数据集成平台金蝶集成接口配置

调用源系统旺店通·企业奇门接口wdt.stockin.order.query.refund获取并加工数据

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

接口概述

接口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":"100001"}
  ],
  “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: 店铺编号,类型为字符串。固定值为100001。

数据请求与清洗

在调用API接口时,我们需要构建一个POST请求,并填充上述参数。以下是一个示例请求体:

{
  “status”: 80,
  “start_time”: “2023-01-01T00:00:00”,
  “end_time”: “2023-01-31T23:59:59”,
  “page_size”: “100”,
  “page_no”: “1”,
  “shop_nos”: “100001”
}

通过轻易云平台,我们可以自动填充这些参数,并发送请求以获取数据。在获取到响应数据后,需要对其进行初步清洗和转换,以便后续处理。

数据转换与写入

响应数据通常包含多个字段,我们需要根据业务需求选择性地提取和转换这些字段。例如,将订单号(order_no)和入库单ID(stockin_id)映射到目标系统中的相应字段。

{
  “order_no”: “SO123456”,
  “stockin_id”: “SI789012”
}

在轻易云平台中,可以通过配置映射规则,将这些字段自动转换并写入目标系统,如U8退货单。

自动填充响应

元数据配置中的autoFillResponse属性设置为true,这意味着平台会自动处理响应数据,并将其填充到预定义的目标结构中。这大大简化了开发工作量,提高了集成效率。

通过上述步骤,我们实现了从旺店通·企业奇门接口获取销售退货单数据,并对其进行初步加工,为后续的数据处理和写入奠定基础。这一过程展示了轻易云平台在数据集成中的强大功能和灵活性。 如何开发钉钉API接口

数据集成生命周期中的ETL转换:将OMS销售退货单转换为用友U8退货单

在数据集成的生命周期中,ETL(Extract, Transform, Load)转换是一个关键步骤。本文将深入探讨如何使用轻易云数据集成平台将OMS销售退货单的数据转换为用友U8API接口所能接收的格式,并最终写入用友U8系统。

API接口配置与元数据解析

首先,我们需要了解目标平台用友U8API接口的配置。以下是元数据配置的详细内容:

{
  "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}","mapping":{"target":"6400020b52113f5a7c4a6184","direction":"positive"}},
            {"field":"销售部门","label":"销售部门","type":"string","describe":"销售部门","value":"{shop_name}","mapping":{"target":"64001885eca23f12d4430214","direction":"positive"}},
            {"field":"业务员","label":"业务员","type":"string","describe":"业务员"},
            {"field":"备注","label":"备注","type":"string","describe":"备注","value":"{remark}"},
            {"field":"退货日期","label":"退货日期","type":"string","value":"{check_time}"},
            {"field":"制单人","label":"制单人","type":"string","value":"{refund_operator_name}"}
          ]
        },
        {
          "field": "单据体",
          "label": "单据体",
          "type": "array",
            "describe" : “单据体”,
            "value" : “details_list”,
            "children":[
                {"field" : “行”, 
                "label" : “行”, 
                "type" : “object”, 
                "describe" : “行”,
                "children":[
                    {"field" : “仓库名称”, 
                    "label" : “仓库名称”, 
                    "type" : “string”, 
                    "describe” : “仓库名称”, 
                    "value” : "{warehouse_no}", 
                    “mapping”:{“target”:“640163621499f14120278f6f”,“direction”:“reverse”}},
                    {"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”:"_function {{details_list.tax_amount}}/{{details_list.goods_count}}" }
              ]
            }
         ]
       }
     ]
   }
 ],
 其他请求:[{
   ”字段”: ”apiurl”,
   ”标签”: ”接口”,
   ”类型”: ”字符串”,
   ”描述”: ”创建退货订单”,
   ”值”: returnorder / create”
 }, {
   字段: 审核,
   标签: 审核接口,
   类型: 字符串,
   值: returnorder / audit”
 }]
}

数据转换步骤

  1. 提取数据: 从OMS系统中提取销售退货单数据,这些数据通常以JSON格式存储。假设我们从OMS系统中获得了如下数据:
{
  order_no: 'RT20231001',
  shop_name: 'ABC Store',
  remark: '客户要求退货',
  check_time: '2023-10-01',
  refund_operator_name: '张三',
  details_list: [
    {goods_no: 'P001', goods_count: 10, tax_amount: 1000, warehouse_no: 'W001'},
    {goods_no: 'P002', goods_count: 5, tax_amount: 500, warehouse_no: 'W002'}
  ]
}
  1. 数据清洗: 确保所有必要字段都存在且格式正确。例如,检查order_noshop_namecheck_time等字段是否符合预期格式。

  2. 数据转换: 根据元数据配置,将OMS系统的数据映射到用友U8API所需的格式。以下是转换后的JSON结构:

{
  data: {
    单据头: {
      退货单号: 'RT20231001',
      销售类型: '国内零售',
      客户简称: 'ABC Store',
      销售部门: 'ABC Store',
      业务员: '',
      备注: '客户要求退货',
      退货日期: '2023-10-01',
      制单人: '张三'
    },
    单据体:[{
       行:{
         仓库名称:'W001',
         货物编码:'P001',
         数量:-10,
         含税单价:(1000/10)
       }
     },{
       行:{
         仓库名称:'W002',
         货物编码:'P002',
         数量:-5,
         含税单价:(500/5)
       }
     }]
   },
 apiurl:'returnorder/create'
}
  1. 加载数据: 使用POST方法将上述JSON结构的数据发送到用友U8API接口,实现数据写入。
fetch('/apilink/u8api', {
    method: 'POST',
    headers:{
        'Content-Type': 'application/json'
    },
    body: JSON.stringify({
        data:{
            单据头:{
                ...
            },
            单据体:[
                ...
            ]
        },
        apiurl:'returnorder/create'
    })
}).then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));

通过以上步骤,我们实现了从OMS系统到用友U8系统的ETL转换和数据写入。这一过程不仅确保了不同系统间的数据无缝对接,也提高了业务处理的效率和准确性。 金蝶与外部系统打通接口

更多系统对接方案