轻易云平台下的数据转换与写入吉客云的ETL实践

  • 轻易云集成顾问-蔡威

畅捷通T+数据集成到吉客云案例分析

在企业信息化系统中,数据孤岛一直是效率提升的重要障碍。本文将探讨如何通过轻易云数据集成平台,实现畅捷通T+与吉客云的无缝连接。本次分享的具体方案是“T+产成品入库单【红字】--->吉客云-出库单创建-好”。

首先,我们需要确保从畅捷通T+获取的数据完整无漏,这就要求我们必须可靠地调用其API接口 /tplus/api/v2/ProductReceiveOpenApi/FindVoucherList。为了避免漏单和数据丢失,我们采用定时任务调度,通过一定频率抓取最新的入库单数据。

为了解决分页和限流问题,每次请求我们都会动态调整查询范围,并对返回结果进行处理。而针对大批量的数据快速写入需求,则需利用轻易云平台提供的并发处理功能,将获取到的数据高效写入至吉客云对应API erp.storage.stockoutcreate

在实际操作中,两个系统间的数据格式差异也是一个重要挑战。例如,畅捷通T+中的某些字段需要重新映射才能符合吉客云的要求。这里我们会使用轻易云提供的自定义脚本,对字段进行转换和映射,从而实现高度兼容。此外,如果任何一步出现异常,例如网络延迟或服务器错误,都有对应的重试机制来保障最终成功完成。

针对这一系列复杂流程,实时监控与日志记录显得尤为重要。这不仅能够帮助发现和解决潜在问题,更能确保整个集成过程稳定运行,为业务流程保驾护航。 企业微信与ERP系统接口开发配置

调用畅捷通T+接口获取并加工数据的技术案例

在数据集成过程中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用畅捷通T+接口/tplus/api/v2/ProductReceiveOpenApi/FindVoucherList获取并加工数据。

接口配置与请求参数

首先,我们需要配置接口的元数据,以便正确调用和处理数据。以下是元数据配置的详细信息:

{
  "api": "/tplus/api/v2/ProductReceiveOpenApi/FindVoucherList",
  "effect": "QUERY",
  "method": "POST",
  "number": "Code",
  "id": "Code",
  "idCheck": true,
  "request": [
    {
      "field": "selectFields",
      "label": "查询字段",
      "type": "string",
      "describe": "部门编码",
      "value": "VoucherCode,CustomerCode,WarehouseCode,Inventory,InventoryCode,Specification,Unit,Quantity"
    },
    {
      "field": "pageIndex",
      "label": "pageIndex",
      "type": "string",
      "describe": "部门名称"
    },
    {
      "field": "pageSize",
      "label": "pageSize",
      "type": "string",
      "describe": "指定返回字段",
      "value": "5"
    },
    {
      "field": "paramDic_1",
      ...

请求参数解析

  1. selectFields: 指定需要查询的字段,包括VoucherCode, CustomerCode, WarehouseCode, Inventory, InventoryCode, Specification, Unit, Quantity等。
  2. pageIndex: 当前页码,用于分页查询。
  3. pageSize: 每页返回的数据条数,这里设置为5。
  4. paramDic_1: 包含两个键值对,分别是RDRecord__AuditedDate和时间范围(上次同步时间和当前时间)。
  5. paramDic_2: 包含两个键值对,分别是Warehouse__ID和仓库ID列表。

条件过滤

为了确保获取的数据符合业务需求,可以在请求中添加条件过滤。例如:

"condition":[
  [
    {"field":"RDRecordDetails.Quantity","logic":"lt","value":"0"},
    {"field":"RDRecordDetails.InventoryCode","logic":"in","value":"050301CMP-11-001,050301CMP-13-001,..."}
  ]
]

此处条件表示仅获取数量小于0且库存代码在指定列表中的记录。

数据请求与清洗

通过上述配置,我们可以发送POST请求到指定API,并获取响应数据。接下来,需要对响应的数据进行清洗和转换,以便后续处理。

{
  ...
  // 示例响应数据
  {
    ...
    // 清洗后的数据格式
    {
        ...
        // 转换后的目标格式
        ...
    }
}

在清洗过程中,可以根据业务需求对字段进行重命名、类型转换、单位换算等操作。

数据转换与写入

完成数据清洗后,需要将其转换为目标系统所需的格式,并写入目标系统。此步骤通常涉及调用另一个API或数据库操作。

{
  ...
  // 转换后的目标格式示例
  {
    ...
    // 写入目标系统的API调用示例
    ...
}

通过以上步骤,我们实现了从畅捷通T+系统获取、清洗、转换并写入目标系统的数据集成过程。这不仅提高了数据处理效率,还确保了数据的一致性和准确性。 金蝶与外部系统打通接口

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

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

数据请求与清洗

在数据请求与清洗阶段,我们从源系统(如ERP系统)获取原始数据,并进行必要的清洗操作,以确保数据质量。这些操作包括去除冗余字段、标准化日期格式、处理缺失值等。在此阶段结束后,数据已经具备了进入下一步转换的基础。

数据转换与写入

接下来,我们进入数据转换与写入阶段。此阶段的核心任务是将清洗后的数据按照目标平台API接口的要求进行格式转换,并通过API接口将数据写入目标系统。以下是具体的技术实现细节:

API接口元数据配置

根据提供的元数据配置,我们需要调用吉客云的erp.storage.stockoutcreate API接口。该接口采用POST方法,以下是具体字段及其描述:

{
  "api": "erp.storage.stockoutcreate",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "request": [
    {
      "field": "outWarehouseCode",
      "label": "仓库编码",
      "type": "string",
      "describe": "仓库编码",
      "value": "{{Warehouse.Code}}"
    },
    {
      "field": "outType",
      "label": "入库类型",
      "type": "string",
      "describe": "入库类型 101=采购入库 102=调拨入库 103=盘盈入库 104=其他入库",
      "value": "205"
    },
    {
      "field": "relDataId",
      ...
    }
  ]
}
数据映射与转换
  1. 仓库编码(outWarehouseCode)

    • 从源系统中提取仓库编码,并映射到outWarehouseCode字段。
    • 示例:"value":"{{Warehouse.Code}}"
  2. 出库类型(outType)

    • 固定值205,表示“其他出库”。
    • 示例:"value":"205"
  3. 关联单据编号(relDataId)

    • 使用源系统中的单据编号进行映射,确保唯一性。
    • 示例:"value":"{Code}"
  4. 申请出库时间(applyDate)

    • 提取并格式化源系统中的审核日期。
    • 示例:"value":"{AuditedDate}"
  5. 备注信息(memo)

    • 添加自定义备注信息。
    • 示例:"value":"产成品入库单红字-{Code}"
  6. 固定值source

    • 固定为“OPEN”。
    • 示例:"value":"OPEN"
  7. 出库明细(stockOutDetailViews)

    • 包含多个子字段,如货品编号、条形码、出库数量等。
子字段详细配置
  • 货品编号(goodsNo)

    • 从源系统中提取货品编号。
    • 示例:"value":"{{RDRecordDetails.InventoryCode}}"
  • 条形码(skuBarcode)

    • 根据货品信息匹配外部货品编号。
    • 示例:"value":"{{RDRecordDetails.InventoryCode}}{{RDRecordDetails.freeitem0}}{{RDRecordDetails.freeitem1}}"
  • 出库数量(skuCount)

    • 将入库数量取负值作为出库数量。
    • 示例:"value":"_function '{{RDRecordDetails.ArrivalQuantity}}'*(-1)"
  • 批次信息集合(batchList): 包含批号、生产日期、质保期等信息。

批次信息详细配置
  • 批号(batchNo)

    • 提取批号信息。
    • 示例:"value":"{{RDRecordDetails.Batch}}"
  • 生产日期(productionDate)

    • 提取生产日期。
    • 示例:"value":"{{RDRecordDetails.ProductionDate}}"
  • 质保期单位(shelfLiftUnit)

    • 提取质保期单位,如年、月、天。
    • 示例:"value":"{{RDRecordDetails.InventoryExpiredUnit}}"
  • 到期时间(expirationDate)

    • 提取到期时间。
    • 示例:"value":"{{RDRecordDetails.ExpiryDate}}"

实现步骤

  1. 提取并清洗源系统数据
  2. 按照元数据配置进行字段映射和转换
  3. 构建符合吉客云API要求的数据结构
  4. 通过POST方法调用吉客云API接口

通过以上步骤,我们成功地将源平台的数据转换为目标平台所需的格式,并完成了数据写入。这不仅提升了业务流程的自动化程度,也确保了不同系统间的数据一致性和准确性。 用友BIP接口开发配置

更多系统对接方案