轻易云平台在ETL过程中的应用与数据写入金蝶云星空

  • 轻易云集成顾问-林峰

易仓数据集成到金蝶云星空案例分享

在本文中,我们将深入探讨一个实际运行的系统对接集成案例——易仓数据集成到金蝶云星空,具体方案名称为“CU不良品其他出库单-金蝶其他出库单”。本次实施任务主要涉及如何快速、准确地将来自易仓的出库单数据通过API接口进行抓取,并批量写入到金蝶云星空系统,确保整个流程高效且稳定。

项目开始时,我们首先需要确定两大核心操作:从易仓获取数据以及向金蝶云星空写入数据。针对数据获取部分,我们采用了易仓提供的getDeliveryDetailList API接口,这一接口支持分页和限流,可防止因一次性拉取大量记录而导致的数据丢失或超载问题。在调度机制上,通过定时任务触发API调用,以保证实现定时可靠的数据抓取,同时避免因为网络波动或服务器负载等因素造成遗漏。

接着,在处理和整合这些获取的数据后,需要使用batchSave API 接口将其批量写入至金蝶云星空。为了最大程度提升效率与准确性,我们对不同字段进行了严格映射与校验,并设计了全面的异常处理与错误重试机制。当检测到某些异常情况(如网络中断、接口返回错误)时,系统会自动重新尝试操作并记录日志,实现全程实时监控。这不仅确保了每条有效支付信息都能成功导入目标系统,还便于我们迅速响应和解决突发问题。

此外,由于易仓和金蝶云在数据格式上存在一定差异,因此必须经过预处理步骤来调整字段类型及结构。这一步骤至关重要,可以显著减少由于不匹配导致的一系列潜在风险。例如,在转换过程中,对数值型、日期型等特定字段进行了专门的格式化处理,以满足两个平台各自的数据规范要求。

总之,通过上述技术手段,我们不仅实现了高速、大量、不漏单地完成核心业务信息从源头端(即易仓)的精准转移,而且为后续分析统计提供了坚实保障。下一节内容,将详细描述具体代码实现及配置步骤。 打通企业微信数据接口

调用源系统易仓接口getDeliveryDetailList获取并加工数据

在数据集成生命周期的第一步,我们需要调用源系统易仓接口getDeliveryDetailList来获取并加工数据。本文将深入探讨该接口的技术细节和元数据配置,以实现高效的数据请求与清洗。

接口概述

getDeliveryDetailList是一个用于查询出库单详细信息的API接口。该接口采用POST方法,主要用于获取指定时间范围内的出库单数据。以下是该接口的元数据配置:

{
  "api": "getDeliveryDetailList",
  "effect": "QUERY",
  "method": "POST",
  "number": "reference_no",
  "id": "il_id",
  "name": "reference_no",
  "idCheck": true,
  "request": [
    {"field": "dateFor", "label": "统计开始日期", "type": "datetime", "describe": "Y-m-d\n时间格式 2020-01-01 或 2020-01-01 00:00 或 2020-01-01 00:00:00 和结束时间不能超过24H", "value": "{{LAST_SYNC_TIME|datetime}}"},
    {"field": "dateTo", "label": "统计截止日期", "type": "datetime", "describe": "Y-m-d\n时间格式 2020-01-01 或 2020-01-01 00:00 或 2020-01-01 00:00:00 和开始时间不能超过24H", "value": "{{CURRENT_TIME|datetime}}"},
    {"field": "warehouse_arr", "label": "仓库id数组", "type": "string", "describe":"默认全部"},
    {"field": "warehouse_code_arr", "label":"仓库code数组","type":"string","describe":"最多1000个"},
    {"field":"product_barcode","label":"产品代码","type":"string","describe":"产品代码"},
    {"field":"product_barcode_type","label":"是否模糊查询产品代码","type":"int","describe":"1:模糊查询,0:精确查询"},
    {"field":"operationUserType","label":"产品负责人","type":"string","describe":"buyer_id:采购负责人,seller_responsible_id:销售负责人,develop_responsible_id:开发负责人"},
    {"field":"person","label":"负责人用户id","type":"string","describe":"负责人用户id"},
    {"field":"category","label":"产品品类","type":"string","describe":"产品品类"},
    {"field":"cu_type","label":"出库类型","type":"string","describe":"0借用,1领用,2不良品,3盘亏,5退货,6良品换货,7次品换良品,8良品转次品,9其他,10线下销售,11组装,12拆分,15按批次拆分,13良品还款,14不良品还款\n可组合查询,若查询多个状态需要用数组形式"},
    {"field":"page","label":"当前页","type":"string","describe":"当前页"},
    {"field":"pageSize","label":"每一页条数","type":"string","describe":"最大1000", “value”:”200”},
    {"field”:”supplier_code”,”label”:”供应商Code”,”type”:”string”,”describe”:”供应商Code”},
    {"field”:”il_id”,”label”:”上一次分页的返回值”,”type”:”string”,”describe”:”利用索引的有序性,提高查询效率"}
  ],
  “autoFillResponse”:true,
  “condition":[
    [{"field”:”cu_type”, “logic”:”eqv2”, “value”:”2"}],
    [{"field”:”cu_type”, “logic”:”eqv2”, “value”:”8"}]
  ]
}

请求参数详解

  1. dateFordateTo

    • 用于指定统计的开始和结束日期,格式为Y-m-d或更精确到秒级别。
    • 示例值分别为{{LAST_SYNC_TIME|datetime}}{{CURRENT_TIME|datetime}},确保了时间范围在24小时内。
  2. warehouse_arrwarehouse_code_arr

    • 分别用于指定仓库ID和仓库代码数组。如果不传入这些参数,则默认查询所有仓库的数据。
  3. product_barcodeproduct_barcode_type

    • 用于根据产品代码进行查询,可以选择模糊查询或精确查询。
  4. operationUserTypeperson

    • 指定产品负责人的类型和具体用户ID,以便过滤相关负责人的出库单信息。
  5. category

    • 用于按产品品类进行过滤。
  6. cu_type

    • 出库类型,包括多种类型,如不良品、良品换货等。可以组合多个状态进行查询。
  7. pagepageSize

    • 分页参数,用于控制每次请求的数据量。默认每页200条记录。
  8. supplier_code

    • 用于根据供应商Code进行过滤。
  9. il_id

    • 上一次分页返回值,用于提高分页查询效率。

数据请求与清洗

在调用该接口时,需要特别注意以下几点:

  1. 确保请求参数中的日期范围不超过24小时,以避免超时或数据量过大导致的性能问题。
  2. 使用分页参数(page和pageSize)合理控制每次请求的数据量,避免一次性拉取大量数据。
  3. 根据业务需求设置合适的过滤条件,如出库类型、仓库ID、产品代码等,以精准获取所需数据。
  4. 利用上一次分页返回值(il_id)提高分页查询效率,确保数据处理过程顺畅无阻。

通过上述配置和技术细节,我们能够高效地调用易仓接口getDeliveryDetailList获取所需的出库单详细信息,并对其进行初步清洗,为后续的数据转换与写入打下坚实基础。 泛微OA与ERP系统接口开发配置

使用轻易云数据集成平台将源数据转换为金蝶云星空API接口格式

在数据集成的过程中,ETL(Extract, Transform, Load)是关键步骤之一。本文将详细探讨如何使用轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,并最终写入目标平台金蝶云星空API接口所能接收的格式。

元数据配置解析

元数据配置是实现ETL过程的核心。以下是具体的元数据配置内容及其解析:

{
  "api": "batchSave",
  "method": "POST",
  "idCheck": true,
  "operation": {
    "method": "merge",
    "field": "reference_no",
    "bodyName": "details",
    "bodySum": [],
    "header": ["reference_no", "cu_type", "warehouse_code", "add_time", "cu_note"],
    "body": ["product_barcode", "quantity", "warehouse_code"]
  },
  ...
}

该配置定义了目标API接口batchSave,采用POST方法提交请求,并启用了ID检查功能。操作部分指定了合并方法和相关字段信息。

数据请求与清洗

在ETL流程中,首先需要从源系统请求并清洗数据。假设我们已经获取到如下原始数据:

{
  "reference_no": "12345",
  "cu_type": "不良品",
  "warehouse_code": "WH001",
  "add_time": "2023-10-01T12:00:00Z",
  "cu_note": "",
  ...
}

这些数据需要根据元数据配置进行清洗和转换,以符合金蝶云星空API接口的要求。

数据转换与写入

根据元数据配置,将源数据字段映射到目标字段。例如:

  • reference_no 映射到 FBillNo
  • warehouse_code 映射到 FStockOrgId
  • add_time 映射到 FDate
  • cu_note 映射到 FNote

以下是具体的字段映射和转换规则:

[
  {"field":"FBillNo","label":"单据编号","type":"string","value":"{reference_no}"},
  {"field":"FBillTypeID","label":"单据类型","type":"string","value":"QTCKD10_SYS"},
  {"field":"FStockOrgId","label":"库存组织","type":"string","value":"{warehouse_code}"},
  {"field":"FDate","label":"日期","type":"string","value":"{add_time}"},
  {"field":"FNote","label":"备注","type":"string","value":"{cu_note}"}
]

对于明细信息部分,配置如下:

{
  "field": "FEntity",
  ...
}

明细信息中的每一项都需要进行相应的转换,例如:

  • product_barcode 映射到 FMaterialId
  • quantity 映射到 FQty
  • warehouse_code 映射到 FStockId

具体配置如下:

[
  {"field":"FMaterialId","label":"物料编码","type":"string","value":"_findCollection find FNumber from ... where FOldNumber={product_barcode}"},
  {"field":"FQty","label":"实发数量","type":"string","value":"{quantity}"},
  {"field":"FStockId","label":"发货仓库","type":"string","value":"{warehouse_code}"}
]

提交请求

完成所有字段映射和转换后,构建最终的请求体,并通过轻易云平台提交至金蝶云星空API接口。

示例请求体:

{
  ...
}

通过POST方法将上述请求体发送至目标API接口,实现数据写入。

总结

本文详细介绍了如何利用轻易云数据集成平台,将源系统的数据进行ETL转换,并最终写入金蝶云星空API接口。通过合理配置元数据,实现了高效、准确的数据集成和传输。这一过程不仅提升了业务透明度和效率,还确保了不同系统间的数据无缝对接。 打通用友BIP数据接口