用友U8API接口ETL转换与数据写入技术探讨

  • 轻易云集成顾问-潘裕

领星ERP与用友U8的数据对接:FBA调拨出库到其他出库的集成方案

在实际业务中,如何高效、精准地实现系统间的数据对接和集成,是每个企业信息化过程中不可忽视的重要环节。本文将以"领星-FBA调拨出库-->U8-其他出库【调拨出库】"为例,详细介绍如何使用轻易云数据集成平台,实现从领星ERP到用友U8的数据无缝对接。

首先,我们需要解决从领星ERP接口/cost/center/api/cost/stream抓取数据的问题。其中一个技术挑战是确保所有调拨单据的数据能够被准确获取,而不会出现漏单现象。为此,我们采用了定时可靠的抓取机制,通过任务计划精确控制触发时间,并结合分页处理,以应对接口的限流限制。这一方式不仅保证了数据抓取的完整性,还提升了系统资源利用效率。

在获得FBA调拨出库相关数据后,需要将这些大批量信息快速写入到用友U8系统,这里调用的是其API接口/apilink/u8api。为了适应不同系统之间的数据格式差异,本方案特别实现了定制化的数据映射功能,将来自领星ERP的不规则字段转换为符合用友U8标准规范的字段。同时,为防止因异常导致数据提交失败,我们部署了一套完善的异常处理与错误重试机制。在网络波动或服务器压力过大导致写入失败时,自动重试保证操作成功率,从而避免人工干预带来的延迟风险。此外,通过实时监控日志记录,每一次操作都有迹可循,一旦发生问题,可以迅速定位并解决,大幅降低故障排查成本。

通过以上详细步骤配置和运作,全程保障了两大系統间数据信息传递过程中的稳定、高效及安全性。在接下来部分中,将进一步探讨具体代码实现以及更多细节优化策略,以期提供一个完善、实操性的参考框架。 用友与SCM系统接口开发配置

调用领星ERP接口/cost/center/api/cost/stream获取并加工数据的技术案例

在数据集成过程中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用领星ERP的接口/cost/center/api/cost/stream,获取并加工数据,以实现高效的数据集成。

接口配置与调用

首先,我们需要配置元数据以便正确调用接口。以下是元数据配置的关键字段及其含义:

  • api: /cost/center/api/cost/stream
  • effect: QUERY
  • method: POST
  • number: business_number
  • id: unique_key
  • name: wo_number
  • idCheck: true

这些字段定义了我们将要调用的API路径、请求方法以及一些关键标识符。在实际操作中,我们需要根据这些元数据配置来构建请求。

请求参数解析

请求参数是调用API时必须提供的信息,以下是主要的请求参数及其解析方式:

  1. 仓库名 (wh_names):

    • 类型:string
    • 解析器:StringToArray
    • 示例值:"仓库A,仓库B"
  2. 店铺名 (shop_names):

    • 类型:string
    • 解析器:StringToArray
    • 示例值:"店铺A,店铺B"
  3. SKU (skus):

    • 类型:string
    • 解析器:StringToArray
    • 示例值:"SKU1,SKU2"
  4. MSKU (mskus):

    • 类型:string
    • 解析器:StringToArray
    • 示例值:"MSKU1,MSKU2"
  5. 库存属性 (disposition_types):

    • 类型:string
    • 描述:
      1 可用在途
      2 可用
      3 次品
    • 解析器:StringToArray
    • 示例值:"1,2"
  6. 出入库类型 (business_types):

    • 类型:string
    • 描述:
      15 调拨出库-FBA调仓出库
      215 调拨出库-FBA移除
      ...
    • 解析器:StringToArray
    • 示例值:"15,215"
  7. 日期查询类型 (query_type):

    • 类型:string
    • 描述:
      01 库存动作日期【对应成本计价详情页面单据日期,即在FBA仓库内发生各项库存动作的日期】
      ...
    • 示例值:"01"
  8. 起始日期 (start_date)结束日期 (end_date):

    • 类型:string
    • 格式要求:Y-m-d,不允许跨月
    • 示例值:
      "2024-07-01"
      "2024-07-31"
  9. 业务编号 (business_numbers)源头单据号 (origin_accounts):

    • 类型:string
  10. 页码偏移量 (offset)分页长度 (length):

    • 类型:string
    • 默认值:
      offset: "1"
      length: "200"

数据清洗与转换

在获取到原始数据后,需要进行清洗和转换,以便后续的数据处理和写入。以下是常见的数据清洗与转换操作:

  1. 将字符串类型的字段转换为数组。例如,使用StringToArray解析器将逗号分隔的字符串转换为数组。

  2. 根据业务需求过滤不必要的数据。例如,只保留特定库存属性或出入库类型的数据。

  3. 格式化日期字段,确保所有日期符合统一格式(如Y-m-d)。

实际案例操作步骤

  1. 构建请求体:

    {
        "wh_names": "仓库A,仓库B",
        "shop_names": "店铺A,店铺B",
        "skus": "SKU1,SKU2",
        "mskus": "MSKU1,MSKU2",
        "disposition_types": "1,2",
        "business_types": "15,215",
        "query_type": "01",
        "start_date": "2024-07-01",
        "end_date": "2024-07-31",
        "offset": "1",
        "length": "200"
    }
  2. 使用POST方法发送请求到API /cost/center/api/cost/stream

  3. 接收响应并进行数据清洗与转换。例如,将响应中的SKU字段从字符串转换为数组,并过滤掉不需要的库存属性。

  4. 将清洗后的数据保存到目标系统或数据库中,以便后续处理和分析。

通过以上步骤,我们可以高效地调用领星ERP接口获取所需数据,并进行必要的清洗和转换,为后续的数据处理奠定基础。这种方法不仅提高了数据集成效率,还确保了数据的一致性和准确性。 用友与SCM系统接口开发配置

用友U8API接口ETL转换与数据写入技术案例

在数据集成的过程中,将源平台的数据转换为目标平台用友U8API接口所能接收的格式,并最终写入目标平台,是一个关键步骤。本文将深入探讨这一过程中的技术细节,特别是如何利用元数据配置完成这一任务。

数据请求与清洗

在进行ETL转换之前,首先需要从源平台(如领星-FBA调拨出库)请求并清洗数据。这一步骤确保了数据的准确性和一致性,为后续的转换和写入奠定了基础。

数据转换与写入

轻易云数据集成平台提供了强大的ETL工具,可以将清洗后的数据转换为用友U8API接口所需的格式。以下是详细的技术实现过程:

1. API接口配置

根据元数据配置,我们需要将数据通过POST方法发送到/apilink/u8api接口。该接口用于执行创建其他出库单的操作。

{
  "api": "/apilink/u8api",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "operation": {
    "method": "merge",
    "field": "wh_name",
    "bodySum": ["change_quantity"],
    "bodyName": "goods_list",
    "header": ["wh_name", "shop_name"],
    "body": ["sku", "change_quantity"]
  }
}
2. 单据头配置

单据头部分包含了出库日期、仓库、出库类别、部门、业务员、客户、备注和制单人等字段。以下是单据头部分的详细配置:

{
  "field": "单据头",
  "label": "单据头",
  "type": "object",
  "describe": "单据头",
  "children": [
    {"field":"出库日期","label":"出库日期","type":"string","describe":"出库日期","value":"2024-07-31"},
    {"field":"仓库","label":"仓库","type":"string","describe":"仓库","value":"_function CASE '{wh_name}' WHEN 'DTECH Multimedia-IN印度仓' THEN 'DT-IN印度仓' ELSE '{wh_name}' END"},
    {"field":"出库类别","label":"出库类别","type":"string","describe":"出库类别","value":"调拨出库"},
    {"field":"部门","label":"部门","type":"string","describe":"部门"},
    {"field":"业务员","label":"业务员","type":"string","value":"{shop_name}"},
    {"field":"客户","label":"客户","type":"string","value":"{shop_name}"},
    {"field":"备注","label":"备注","type":"string"},
    {"field":"制单人","label":"制单员","type":"string","value":"钟艳珍"}
  ]
}
3. 单据体配置

单据体部分包含了具体的商品信息,如存货编码和数量。以下是单据体部分的详细配置:

{
  "field": "单据体",
  "label": "单据体",
  "type": "array",
  "describe": "单据体",
  "value": "goods_list",
  "children": [
    {
      "field": "行",
      "label": "行",
      "type": "object",
      "describe": "行",
      {
        children: [
          {"field": “存货编码”, “label”: “存货编码”, “type”: “string”, “describe”: “存货编码”, “value”: “{sku}”},
          {"field”: “数量”, “label”: “数量”, “type”: “string”, “describe”: “数量”, “value”: "_function ABS( {change_quantity} )"}
        ]
      }
    }
  ]
}
4. 请求参数组装

根据上述配置,我们需要将请求参数组装成符合用友U8API要求的格式。以下是一个示例请求体:

{
  data: {
    单据头: {
      出库日期: '2024-07-31',
      仓库: 'DT-IN印度仓',
      出库类别: '调拨出库',
      部门: '销售部',
      业务员: '张三',
      客户: '张三',
      备注: '',
      制单人: '钟艳珍'
    },
    单据体: [
      {
        行: {
          存货编码: 'SKU12345',
          数量: '10'
        }
      },
      {
        行: {
          存货编码: 'SKU67890',
          数量: '5'
        }
      }
    ]
  },
  apiurl: 'otherout/create'
}
技术要点总结
  1. 字段映射与转换:通过元数据配置中的_functionCASE语句,实现字段值的动态映射与转换。
  2. 请求参数组装:根据元数据配置,正确组装请求参数,确保符合用友U8API接口要求。
  3. 异步处理:利用轻易云平台的全异步处理机制,提高数据处理效率,确保系统性能稳定。

通过以上步骤,我们成功地将源平台的数据转换为目标平台用友U8API接口所能接收的格式,并完成了数据写入。这一过程不仅提高了数据集成的效率,也确保了数据的一致性和准确性。 金蝶与外部系统打通接口

更多系统对接方案