ETL实施与数据写入:管易云API接口集成技术案例

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

管易云数据集成实例分享:管易采购入库单生成较复杂的管易运损入库单

在企业复杂的数据生态系统中,实现精确高效的数据流转和处理是业务成功的关键。本文将聚焦于一个实际操作中常见且具有代表性的案例:如何使用轻易云数据集成平台实现“管易采购入库单”数据到“管易运损入库单”的无缝对接,从而提升整体运营效率,确保数据不漏单,并提供可靠高效的数据写入能力。

获取与写入API解析

在这个集成案例中,我们主要利用了两个核心API接口:

  • 获取数据API: gy.erp.purchase.arrive.get,用于从源系统提取“管易采购入库单”。
  • 写入数据API: gy.erp.new.purchase.arrive.add,用于将经过处理后的数据推送至目标系统生成新的采购运损/退回记录。

数据抓取与转换逻辑

为了保障我们能够稳定地获取到最新的采购到货信息,我们设置了定时任务,通过调用gy.erp.purchase.arrive.get接口可以批量且可靠地抓取指定时间段内新增或更新过的采购订单。同时,为应对分页和限流问题,我们设计了一套健壮的循环机制,通过持续监控每次抓取过程中的异常情况,如超时或请求失败等,并进行必要重试以确保全量数据被准确捕获。

拿到原始订单后,需要通过自定义转换逻辑来适配目的端所需的数据格式。这一步骤不仅包括简单字段映射,还涉及业务规则应用,例如数量单位换算、成本分摊计算等特定需求。通过轻易云平台提供的可视化工具,这些转换步骤得到了更加直观和便捷管理,大幅度降低了人为出错概率,同时提升了配置效率。

实时监控与告警机制

为确保整个流程顺利进行并及时发现潜在问题,我们启用了平台提供的集中监控和告警功能。在整个ETL(Extract, Transform, Load)过程中,每一个环节都能实时追踪其状态及性能指标。如有任何异常发生,比如某个步骤执行时间过长或者出现错误,即刻触发设定好的告警消息,以便技术人员迅速响应处理。

通过上述规范流程及强大的支持工具,本方案有效解决了跨系统之间因异构结构带来的复杂性,实现双向透明一致的数据流动,使得企业资源得到了更高效利用。以下章节将详细介绍具体实现方法及代码示例......

[待续] 用友与外部系统接口集成开发

调用管易云接口gy.erp.purchase.arrive.get获取并加工数据

在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用管易云接口gy.erp.purchase.arrive.get来获取并加工采购入库单数据。

接口配置与请求参数

首先,我们需要配置接口的元数据,以确保能够正确调用和处理数据。以下是该接口的元数据配置:

{
  "api": "gy.erp.purchase.arrive.get",
  "effect": "QUERY",
  "method": "POST",
  "number": "code",
  "id": "code",
  "idCheck": true,
  "request": [
    {"label": "创建时间开始段", "field": "start_create", "type": "string"},
    {"label": "创建时间结束段", "field": "end_create", "type": "string"},
    {"label": "审核时间开始段", "field": "start_approve", "type": "string"},
    {"label": "审核时间结束段", "field": "end_approve", "type": "string"},
    {"label": "审核状态", "field": "status", "type": "string", "value":"1"},
    {"label": "修改时间开始段", 
        "field":"start_modify","type":"string","value":"{{DAYS_AGO_1|datetime}}"},
    {"label":"修改时间结束段","field":"end_modify","type":"string","value":"{{CURRENT_TIME|datetime}}"},
    {"label":"是否返回已作废的入库单数据","field":"has_cancel_data","type":"string","value":"false"},
    {"field":"code","label":"单据编号","type":"string"}
  ],
  ...
}

请求参数详解

  • 创建时间开始段 (start_create)创建时间结束段 (end_create):用于指定查询的采购入库单的创建时间范围。
  • 审核时间开始段 (start_approve)审核时间结束段 (end_approve):用于指定查询的采购入库单的审核时间范围。
  • 审核状态 (status):固定值为1,表示只查询已审核的入库单。
  • 修改时间开始段 (start_modify)修改时间结束段 (end_modify):分别使用动态变量{{DAYS_AGO_1|datetime}}{{CURRENT_TIME|datetime}}来获取最近一天内修改的数据。
  • 是否返回已作废的入库单数据 (has_cancel_data):固定值为false,表示不返回已作废的数据。
  • 单据编号 (code):用于指定特定的采购入库单编号。

分页与自动填充响应

为了处理大批量的数据,我们设置了分页参数:

"otherRequest":[
  {"field":"page_size","label":"分页大小","type":"string","describe":"默认为10","value":"100"},
  {"field":"page_no","label":"页号","type":"string","describe":"默认1","value":"{PAGINATION_START_PAGE}"}
]

通过设置分页大小为100,可以有效减少每次请求的数据量,提高处理效率。同时,启用了自动填充响应功能(autoFillResponse: true),确保每次请求都能完整地获取到所需的数据。

数据过滤与条件设置

为了进一步精确地筛选数据,我们配置了条件过滤:

"condition":[
  [{"field":"note","logic":"like","value":"DBSQDJ"},{"field":"details.note","logic":"neqv2","value":"运损"}]
]

该条件表示只获取备注包含“DBSQDJ”且明细备注不等于“运损”的采购入库单。这种精细化的条件设置可以帮助我们更准确地获取所需的数据。

异常处理与接管机制

为了应对可能出现的数据遗漏问题,我们配置了异常处理和接管机制:

"omissionRemedy":{
    "crontab":"5 */3 * * *",
    "takeOverRequest":[
        {"field":"start_modify",
            "value":
                "_function FROM_UNIXTIME({CURRENT_TIME}-2678400,'%Y-%m-%d %H:%i:%s')",
            "type":
                "string",
            "label":
                "接管字段",
            "formModel":{"enable":false},
            "tableModel":{"enable":false},
            "physicalModel":{"enable":false}
        }
   ]
}

该配置表示每三小时检查一次,并在必要时接管上一个月内的数据修改记录,以确保不会遗漏任何重要信息。

通过上述步骤,我们成功实现了对管易云接口gy.erp.purchase.arrive.get的调用和数据加工,为后续的数据转换与写入奠定了坚实基础。 如何对接金蝶云星空API接口

轻易云数据集成平台生命周期第二步:ETL转换与管易云API接口集成技术案例

在数据集成的过程中,ETL(Extract, Transform, Load)是关键步骤之一。本文将深入探讨如何使用轻易云数据集成平台,将源平台的数据进行ETL转换,并最终通过管易云API接口写入目标平台。

数据请求与清洗

在数据请求与清洗阶段,我们已经从源系统获取了原始数据。这些数据通常包含多种格式和结构,需要进行标准化处理,以便后续的转换和加载操作。

数据转换与写入

接下来,我们重点讨论如何将清洗后的数据进行转换,并通过管易云API接口写入目标平台。以下是具体的元数据配置和操作步骤:

元数据配置解析
{
  "api": "gy.erp.new.purchase.arrive.add",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "request": [
    {
      "field": "warehouse_code",
      "label": "仓库代码",
      "type": "string",
      "describe": "仓库代码",
      "value": "_function case _findCollection find FStockInOrgID from 65ecfea9-6416-381a-b85e-6f6cddd2cbd4 where FSrcBillNo={note} _endFind when '100' then '2601' when '103' then 'SXF0009' end"
    },
    {
      "field": "note",
      "label": "备注",
      "type": "string",
      "describe": "备注",
      "value": "{note}"
    },
    {
      "field": "supplier_code",
      "label": "供应商",
      "type": "string",
      "value": "{supplier_code}"
    },
    {
      "field": "order_type",
      "label": "单据类型代码",
      "type": "string",
      "describe": "order_type",
      "value": "001"
    },
    {
      "field": "detail_list",
      "label": "商品列表",
      "type": "array",
      ...
配置细节
  1. API接口gy.erp.new.purchase.arrive.add,表示新增采购到货单。
  2. 请求方法POST,使用HTTP POST方法发送请求。
  3. 字段映射
    • warehouse_code:仓库代码,通过函数 _function case _findCollection ... end 动态映射,根据 FSrcBillNo 的值决定具体的仓库代码。
    • note:备注,直接映射 {note}
    • supplier_code:供应商代码,直接映射 {supplier_code}
    • order_type:单据类型代码,固定值为 001
    • detail_list:商品列表,是一个数组,每个商品包含条码、数量、价格和备注。
数据转换逻辑
  1. 仓库代码: 使用 _function case _findCollection ... end 函数,根据源系统的 FSrcBillNo 字段动态决定目标系统的仓库代码。例如,当 FSrcBillNo100 时,映射为 2601;当为 103 时,映射为 SXF0009

  2. 商品列表: 商品列表中的每个商品需要进行以下转换:

    • 条码 (barcode):直接映射源系统的 item_code
    • 数量 (qty):通过 _function '{{details.new_qty}}'-'{{details.qty}}' 动态计算新数量减去原数量的差值。
    • 实际进价 (price):直接映射源系统的 price
    • 备注 (note):固定值为“运损”。
数据写入操作

完成上述配置后,通过轻易云平台发送HTTP POST请求,将转换后的数据写入管易云。具体操作如下:

{
  ...
  // 构建POST请求体
  {
    ...
    // 填充各字段的数据
    {
        // 仓库代码
        warehouse_code: dynamicWarehouseCode,
        // 备注
        note: sourceNote,
        // 供应商代码
        supplier_code: sourceSupplierCode,
        // 单据类型代码
        order_type: '001',
        // 商品列表
        detail_list: transformedDetailsList
    }
  }
}

在实际操作中,通过轻易云提供的全透明可视化界面,可以实时监控和调整每个环节的数据流动和处理状态,确保最终的数据准确无误地写入目标平台。

以上是关于如何使用轻易云数据集成平台进行ETL转换,并通过管易云API接口实现数据写入的一些技术细节和案例分享。希望这些内容能够对您在实际项目中有所帮助。 泛微OA与ERP系统接口开发配置

更多系统对接方案