轻易云ETL实践:如何高效集成和转换系统数据

  • 轻易云集成顾问-彭萍

R(采购)入库单-分布式调入单:系统集成技术案例分享

在本次系统对接集成案例中,我们将深入探讨如何有效地将易仓数据高效集成到金蝶云星空,实现R(采购)入库单-分布式调入单的全流程自动化。本方案主要关注以下几个技术难点和解决策略:

定时可靠的抓取与快速写入

为了确保易仓数据不漏单,首先需要定时可靠地从易仓接口getReceiving抓取所需数据。此过程中,要处理分页和限流问题,以保证获取的数据完整性。同时,大量数据必须能被快速且批量写入到金蝶云星空,此处我们使用了其提供的API接口batchSave

数据格式差异及映射处理

由于易仓与金蝶云星空之间存在一定的数据格式差异,在传输和存储过程中,需要进行定制化的数据映射对接。这不仅可以保持两边系统的一致性,还能够减少因格式不匹配而导致的错误。

异常处理与监控机制

为保障整体流程的稳定运行,本方案设计了一套完善的异常处理与错误重试机制,使得即使在网络波动或其他不可预见的问题发生时,依然能保证数据按预期进入目标系统。此外,通过实时监控各个环节并记录详细日志,可以及时掌握运行情況并迅速定位故障源头。

接下来,本文将逐步解析该方案在实际实施中的具体步骤、配置细节以及克服技术挑战的方法。 如何对接金蝶云星空API接口

调用易仓接口getReceiving获取并加工数据的技术实现

在轻易云数据集成平台中,调用源系统接口是数据处理生命周期的第一步。本文将深入探讨如何通过调用易仓接口getReceiving来获取并加工数据。

接口调用配置

首先,我们需要配置调用易仓接口getReceiving的元数据。根据提供的元数据配置,可以看到该接口使用POST方法,主要参数包括入库单号、客户参考号、跟踪号等。

{
  "api": "getReceiving",
  "method": "POST",
  "number": "receiving_code",
  "id": "receiving_id",
  "idCheck": true,
  "request": [
    {"field":"receiving_code","label":"入库单号","type":"string","describe":"入库单号,支持多个示例:[\"R11111111111\",\"R222222222\"]"},
    {"field":"reference_no","label":"客户参考号","type":"string","describe":"客户参考号"},
    {"field":"tracking_number","label":"跟踪号","type":"string","describe":"跟踪号"},
    {"field":"po_code","label":"采购单号","type":"string","describe":"采购单号"},
    {"field":"warehouse_id","label":"仓库Id","type":"string","describe":"仓库Id"},
    {"field":"receiving_type","label":"类型","type":"string","describe":"类型:\n0标准,\n1订单退货,\n2指定产品退件,\n3中转,\n4采购,\n5其它,\n6借用归还入库,\n7初始化库存,\n8不良品入库,\n9盘盈,\n10调拨\n11换货,\n12同步服务商库存,\n13出库单入库,\n14同步添加库存,\n15赠品入库", "value": "4"},
    {"field": "receiving_status", "label": "入库单状态", "type": "string", "describe": "入库单状态:\n0删除,\n1草稿,\n2确认,\n3待审核,\n4审核,\n5在途,\n6收货中,\n7收货完成", "value": "7"},
    {"field": "productBarcode", "label": "产品代码", "type": "string", "describe": "产品代码"},
    {"field": "productBarcode_like", "label": "产品代码(模糊)", "type": "string", "describe": "产品代码(模糊)"},
    {"field": "receiving_add_user", "label": "采购员", "type": "string", "describe": "采购员(用户Id)"},
    {"field": "code_like", "label": "单号", 
![打通企业微信数据接口](https://pic.qeasy.cloud/S23.png~tplv-syqr462i7n-qeasy.image)
### 轻易云数据集成平台生命周期中的ETL转换与写入金蝶云星空API接口

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

#### API接口配置与元数据解析

在本案例中,我们的目标是通过金蝶云星空的`batchSave` API接口将采购入库单的数据写入金蝶系统。以下是主要的元数据配置和解析方法:

```json
{
    "api": "batchSave",
    "method": "POST",
    "idCheck": true,
    "operation": {
        "method": "batchArraySave",
        "rows": 1,
        "rowsKey": "array"
    },
    "request": [
        {"field":"FBillNo","label":"单据编号","type":"string","value":"{receiving_code}"},
        {"field":"FStockOrgID","label":"调入库存组织","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_findCollection find FOwnerInIdHead_FNumber from 834ab03d-8fdb-3d40-9970-f4c2269448b5 where FBillNo={tracking_number}"},
        {"label":"调入货主类型","field":"FOwnerTypeIdHead","type":"string","value":"BD_OwnerOrg"},
        {"label":"调入货主","field":"FOwnerIdHead","type":"string","value":"_findCollection find FOwnerInIdHead_FNumber from 834ab03d-8fdb-3d40-9970-f4c2269448b5 where FBillNo={tracking_number}","parser":{"name":"ConvertObjectParser","params":"FNumber"}},
        {"field":"FDate","label":"日期","type":"string","value":"{receiving_update_time}"},
        {"field":"FBillTypeID","label":"单据类型","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"FBDR01_SYS"},
        {"field":"FTransferDirect","label":"调拨方向","type":"string","value":"GENERAL"},
        {"field":"FNOTE","label":"备注","type":"string","value":"{receiving_description}"},
        {"field":"FCreateDate","label":"创建日期","type":""},
        {"field":""}
    ],
    ...
}

数据请求与清洗

首先,我们需要从源系统中提取相关数据。通过配置request字段中的各个参数,我们可以指定需要提取的数据字段。例如:

{"field": "FBillNo", "label": "单据编号", "type": "string", "value": "{receiving_code}"}

这里我们提取了源系统中的receiving_code作为金蝶系统中的FBillNo

数据转换与解析

为了确保数据能够被目标系统正确接收和处理,我们需要对部分字段进行转换和解析。例如,对于库存组织、货主等字段,需要使用特定的解析器进行转换:

{
    "field": "FStockOrgID",
    "label": "调入库存组织",
    "type": "string",
    "parser": {
        "name": "ConvertObjectParser",
        "params": "FNumber"
    },
    "value": "_findCollection find FOwnerInIdHead_FNumber from 834ab03d-8fdb-3d40-9970-f4c2269448b5 where FBillNo={tracking_number}"
}

上述配置中,使用了ConvertObjectParser解析器,将源系统中的库存组织编码转换为金蝶系统所需的格式。

数据写入

在完成数据清洗和转换后,我们将数据通过API接口写入到金蝶云星空。具体操作如下:

  1. 设置表单ID:确保填写正确的业务对象表单ID,例如STK_TRANSFERIN
  2. 执行操作:指定执行的操作为BatchSave
  3. 提交并审核:根据需求选择是否自动提交并审核。
{
    "otherRequest":[
        {"field": "FormId", "label": "业务对象表单Id", "type": "", value: ""},
        ...
    ]
}

明细信息处理

对于复杂的数据结构,如明细信息,需要进行嵌套处理。例如,在处理物料编码时,需要在子节点中进行配置:

{
    ...
    {
        field: 'FMaterialID',
        label: '物料编码',
        type: 'string',
        parser: { name: 'ConvertObjectParser', params: 'FNumber' },
        value: '_findCollection find FNumber from ...'
    },
    ...
}

通过上述配置,可以确保每个物料编码都能正确映射到金蝶系统中对应的字段。

关联关系表处理

在处理关联关系时,需要特别注意源单内码和分录内码的映射:

{
    field: 'FSTKTSTKRANSFERINENTRY_Link_FSBillId',
    label: '源单内码',
    type: 'string',
    value: '_findCollection find FID from ...'
},
{
    field: 'FSTKTSTKRANSFERINENTRY_Link_FSId',
    label: '源单分录内码',
    type: 'string',
    value: '_findCollection find FSTKTRSOUTENTRY_FEntryID from ...'
}

这些配置确保了关联关系能够正确建立,保证数据的一致性和完整性。

通过以上步骤,我们实现了从源平台到金蝶云星空的ETL转换和数据写入。每个环节都需要精确配置,以确保数据能够无缝对接,实现业务流程的自动化和高效化。 系统集成平台API接口配置

更多系统对接方案