轻易云数据集成平台的ETL转换与聚水潭API接口写入详解

  • 轻易云集成顾问-李国敏

金蝶云星空数据集成到聚水潭的实际案例:直接调拨单对接其他入库单

在本次技术案例中,我们将详细探讨如何通过轻易云数据集成平台,将金蝶云星空系统中的直接调拨单高效、安全地集成到聚水潭系统内作为其他入库单。整个过程不仅涉及批量数据处理和接口调用,还需要解决分页、限流以及数据格式差异等一系列复杂问题。

首先,金蝶云星空提供了一套功能强大的API接口,其中executeBillQuery是用于获取业务单据信息的重要接口。我们可以通过定时任务可靠地抓取这些数据信息。然而,为确保数据不漏单,以及考虑大规模的数据吞吐需求,我们采用了分段式分页抓取策略,有效避免了API的限流问题,并保证每个环节的数据完整性。

在成功获取到金蝶云星空的数据后,接下来便是利用轻易云平台将其写入到聚水潭系统。这一步骤使用的是聚水潭的/open/jushuitan/otherinout/upload API,将已转换为目标格式的直接调拨单信息上传至聚水潭作为其他入库单。在这一过程中,自定义的数据转换逻辑至关重要,因为两者之间存在显著的数据结构差异。同时,通过完全可视化的数据流设计工具,使得整个映射关系更加直观和易于管理。

为了进一步提升可靠性和透明度,集中监控和告警机制实时跟踪着每一个数据集成任务的状态与性能。当遇到异常状况时,即使采用了自动重试机制来保障流程稳定运行,也能第一时间通知相关操作人员进行人工干预。此外,对数据质量监控及异常检测也不可或缺,这不仅有助于提前发现并解决潜在的问题,还提升了整体业务流程效率与准确性。

总之,通过上述方案,我们实现了从金蝶云星空直接调拨单到聚水潭其他入库单双向无缝对接,为企业构建起高效、稳定且安全的跨平台数据交互通道。 用友与SCM系统接口开发配置

调用金蝶云星空接口executeBillQuery获取并加工数据

在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery接口来获取和加工数据。

接口配置与调用

首先,我们需要配置调用金蝶云星空接口的元数据。以下是我们使用的元数据配置:

{
  "api": "executeBillQuery",
  "effect": "QUERY",
  "method": "POST",
  "number": "FBillNo",
  "id": "FBillEntry_FEntryID",
  "name": "FBillNo",
  "idCheck": true,
  "request": [
    {"field":"FBillEntry_FEntryID","label":"FEntryID","type":"string","describe":"FEntryID","value":"FBillEntry_FEntryID"},
    {"field":"FID","label":"实体主键","type":"string","describe":"实体主键","value":"FID"},
    {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"FBillNo"},
    {"field":"FDocumentStatus","label":"单据状态","type":"string","describe":"单据状态","value":"FDocumentStatus"},
    {"field":"FStockOrgId_FNumber","label":"调入库存组织","type":"string","describe":"调入库存组织","value":"FStockOrgId.FNumber"},
    {"field":"FDate","label":"日期","type":"string","describe":"日期","value":"FDate"},
    {"field":"FBillTypeID_FNumber","label":"单据类型","type":"string","describe":"单据类型","value":"FBillTypeID.FNumber"},
    {"field":"FTransferBizType","label":"调拨类型","type":"string","describe":"调拨类型","value":"FTransferBizType"},
    {"field":"FStockOutOrgId_FNumber","label":"调出库存组织","type":"string","describe":"调出库存组织","value":"FStockOutOrgId.FNumber"},
    {"field":...},
    ...
  ],
  "otherRequest": [
    {"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "500"},
    {"field": "FieldKeys", "label": "需查询的字段key集合", "type": "array", 
        "describe": "金蝶分录主键ID格式:FPOOrderEntry_FEntryId,其它格式 FPurchaseOrgId.FNumber", 
        "parser":{"name": "ArrayToString", "params": ","}},
    {"field": ...},
    ...
  ],
  ...
}

请求参数解析

在请求参数中,我们需要特别注意以下几个关键字段:

  • FormId: 表示业务对象表单Id,必须填写金蝶的表单ID,例如STK_TransferDirect
  • FilterString: 用于过滤条件,例如FSupplierId.FNumber = 'VEN00010' and FApproveDate>= '2023-12-01T00:00:00'
  • FieldKeys: 表示需查询的字段key集合,通过逗号分隔多个字段。

数据请求与清洗

通过上述配置,我们可以发送POST请求到金蝶云星空的executeBillQuery接口。以下是一个示例请求体:

{
  "FormId": "STK_TransferDirect",
  "FieldKeys": ["FBillNo", ..., ...].join(","),
  ...
}

在接收到响应后,我们需要对数据进行清洗和转换。清洗过程包括但不限于:

  1. 字段映射:将原始字段映射到目标系统所需的字段。
  2. 数据格式转换:例如日期格式、数值精度等。
  3. 异常处理:处理缺失值、无效值等异常情况。

数据转换与写入

清洗后的数据需要进一步转换,以适应目标系统的数据结构。例如,将金蝶云星空中的直接调拨单转换为聚水潭中的其他入库单。这一步通常涉及复杂的业务逻辑和规则,需要根据具体需求进行定制。

以下是一个简单的数据转换示例:

{
  // 金蝶云星空返回的数据
  {
    ...
    FBillNo: 'DB20231201001',
    FDate: '2023-12-01',
    FQty: '100',
    ...
  }

  // 转换后的聚水潭其他入库单
  {
    order_no: 'DB20231201001',
    date: '2023-12-01',
    quantity: '100',
    ...
  }
}

实时监控与日志记录

为了确保数据集成过程的透明性和可追溯性,我们需要对每个环节进行实时监控,并记录详细的日志信息。这些日志不仅有助于问题排查,还能为后续优化提供宝贵的数据支持。

通过以上步骤,我们实现了从金蝶云星空获取并加工数据,完成了生命周期中的第一步。接下来,可以继续进行数据写入和目标系统对接等操作。 金蝶云星空API接口配置

轻易云数据集成平台生命周期第二步:ETL转换与聚水潭API接口写入

在数据集成过程中,ETL(Extract, Transform, Load)转换是至关重要的一步。本文将深入探讨如何将已经集成的源平台数据通过ETL转换,转为目标平台聚水潭API接口所能够接收的格式,并最终写入目标平台。

数据请求与清洗

在进行ETL转换之前,我们首先需要确保从源平台(金蝶)获取的数据已经经过清洗和预处理。这一步骤包括对数据的验证、格式化和标准化,以确保数据质量和一致性。

数据转换与写入

接下来,我们将详细介绍如何使用轻易云数据集成平台将清洗后的数据转换为聚水潭API接口所需的格式,并通过POST请求写入目标平台。

API接口元数据配置

根据提供的元数据配置,我们需要向聚水潭API /open/jushuitan/otherinout/upload 发送一个POST请求。以下是具体的字段配置及其对应关系:

  • is_confirm: 是否确认单据,默认值为 1
  • excute_confirming: 是否审核单据,默认值为 true
  • wms_co_id: 分仓编号,对应金蝶中的 FDestStockId_FNumber 字段。
  • warehouse: 仓库类型,默认值为 1(主仓)。
  • type: 出入库类型,默认值为 in(入库)。
  • external_id: 外部单号,对应金蝶中的 FBillNo 字段。
  • remark: 备注,对应金蝶中的 FNote 字段,不允许为空。
  • drp_co_name: 出库类型,需根据业务需求填写。
  • items: 商品列表,包括商品编码、商品单价、备注、数量、生产日期和有效期至等字段。
JSON请求体构建

根据上述字段配置,我们可以构建如下JSON请求体:

{
  "is_confirm": 1,
  "excute_confirming": true,
  "wms_co_id": "{FDestStockId_FNumber}",
  "warehouse": 1,
  "type": "in",
  "external_id": "{FBillNo}",
  "remark": "{FNote}",
  "drp_co_name": "",
  "items": [
    {
      "sku_id": "{FMaterialId_FNumber}",
      "sale_price": null,
      "remark": "",
      "qty": "{FQty}",
      "produced_date": "",
      "expiration_date": ""
    }
    // 可以有多个商品项
  ]
}
数据映射与计算

为了确保数据正确映射到目标字段,我们需要进行以下操作:

  1. 字段映射:通过元数据中的 mapping 属性,将源平台字段映射到目标平台字段。例如,将 FDestStockId_FNumber 映射到 wms_co_id
  2. 分组计算:根据元数据中的 groupCalculate 配置,对特定字段进行分组和计算。例如,对商品数量(FQty)进行求和操作。
延迟处理

元数据中包含一个延迟属性(delay:3),表示在执行该步骤时需要等待3秒钟。这可以用于处理一些异步任务或确保前一步骤完成后再进行下一步操作。

实际案例应用

假设我们从金蝶系统获取了一条直接调拨单的数据,其结构如下:

{
  "FDestStockId_FNumber": "001",
  "FBillNo": "20231001",
  "FNote": "调拨测试",
  "items": [
    {
      "FMaterialId_FNumber": "P001",
      "FQty": 10
    },
    {
      "FMaterialId_FNumber": "P002",
      "FQty": 5
    }
  ]
}

根据上述数据,我们可以构建出如下符合聚水潭API要求的JSON请求体:

{
  "is_confirm": true,
  "excute_confirming": true,
  "wms_co_id": "001",
  "warehouse": 1,
  "type": "in",
  "external_id": "20231001",
  "remark": "调拨测试",
  // drp_co_name 根据业务需求填写
  // items 列表中包含两个商品项
}

通过轻易云数据集成平台,我们可以自动化这一过程,从而实现不同系统间的数据无缝对接,大大提升了业务效率和准确性。 如何开发钉钉API接口

更多系统对接方案