从API调用到数据清洗:轻易云平台的数据处理全解析

  • 轻易云集成顾问-杨嫦

吉客云与金蝶云星空系统对接集成案例分享:JY-BDS调拨单

在本技术案例中,我们将深入探讨如何通过轻易云数据集成平台,实现吉客云与金蝶云星空的无缝对接,具体聚焦于JY-BDS调拨单的高效处理。此方案不仅需要关注大量数据的快速写入和读取,还需应对不同系统的数据格式差异和接口调用中的分页、限流等挑战。

首先,通过吉客云API erp.allocate.get 定时可靠地抓取所需数据,并确保不漏单是整个流程中至关重要的一环。得益于轻易云平台强大的高吞吐量数据写入能力,大批量的数据能够迅速传输到金蝶云星空系统内,显著提升了业务操作效率。

同时,为了实现顺利的数据映射和转换,我们利用自定义的数据转换逻辑来适应特定的业务需求。这一过程通过可视化的数据流设计工具进行配置,使每个步骤都更加直观、便捷。此外,通过集中监控和告警系统实时跟踪任务状态及性能,及时发现并解决潜在问题,从而确保整个集成流程的稳定性与可靠性。

为了全面掌握API资产使用情况并优化资源配置,我们采用了统一视图和控制台功能,对两套系统之间进行全方位管理。在处理异常及错误重试机制方面,本方案包含详细策略,以保证即使出现意外状况也能及时恢复并继续运行,从而保障业务连续性。

这只是开端,下文我们将详细展开具体实施步骤,包括分页处理技巧以及如何克服接口限流限制,同时介绍相关代码示例以供参考。 金蝶与SCM系统接口开发配置

调用吉客云接口erp.allocate.get获取并加工数据

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

接口概述

吉客云的erp.allocate.get接口主要用于获取调拨单信息。该接口采用POST请求方式,支持分页查询,并提供多种过滤条件以满足不同业务需求。以下是该接口的元数据配置:

{
  "api": "erp.allocate.get",
  "method": "POST",
  "number": "allocateNo",
  "id": "allocateId",
  "pagination": {
    "pageSize": 50
  },
  "idCheck": true,
  "request": [
    {"field":"pageIndex","label":"页码(默认从0开始)","type":"string"},
    {"field":"pageSize","label":"每页条数(默认50)","type":"string","value":"50"},
    {"field":"status","label":"调拨单状态(多个中间逗号隔开)","type":"string","value":"20"},
    {"field":"startCreateTime","label":"创建时间的起始时间","type":"string","value":"_function DATE_FORMAT(DATE_ADD(NOW(),INTERVAL - 30 DAY),'%Y-%m-%d 00:00:00')"},
    {"field":"endCreateTime","label":"创建时间结束时间","type":"string","value":"{{CURRENT_TIME|datetime}}"},
    {"field":"inWarehouseCode","label":"调入仓库编号","type":"string"},
    {"field":"outSkuCode","label":"外部货品主键(支持批量 例:123,456)","type":"string"},
    {"field":"outWarehouseCode","label":"调出仓库编号","type":"string"},
    {"label":"调拨单号,多个中间逗号隔开","field":"allocateNos","type":"string"},
    {"label":"入库状态 (支持批量查询,多个值逗号隔开 1=入库等待,2=部分入库,3=入库完成)","field":"instatus","type":"string","value":"3"},
    {"label":"出库状态(支持批量,多个值逗号隔开 1=出库等待,2=部分出库,3=出库完成)","field":"outstatus","type":"string","value":"3"}
  ]
}

请求参数详解

  1. 分页参数

    • pageIndex: 页码,从0开始。
    • pageSize: 每页条数,默认值为50。
  2. 过滤条件

    • status: 调拨单状态,多个状态使用逗号分隔。
    • startCreateTime: 创建时间的起始时间,通过函数动态计算过去30天的日期。
    • endCreateTime: 创建时间结束时间,当前时间。
    • inWarehouseCode: 调入仓库编号。
    • outSkuCode: 外部货品主键,可批量查询。
    • outWarehouseCode: 调出仓库编号。
    • allocateNos: 调拨单号,可批量查询。
    • instatus: 入库状态,可批量查询。
    • outstatus: 出库状态,可批量查询。

数据请求与清洗

在轻易云平台上配置上述元数据后,我们可以通过以下步骤进行数据请求与清洗:

  1. 配置API调用 在轻易云平台上创建一个新的API调用任务,并填写上述元数据配置。确保所有必填字段都已正确配置。

  2. 执行API请求 启动任务后,平台会自动向吉客云发送POST请求,并根据分页参数逐页获取数据。

  3. 数据清洗 获取的数据可能包含冗余或不符合业务需求的信息。我们可以通过轻易云的数据清洗功能,对返回的数据进行过滤、转换和标准化处理。例如:

    {
     "cleaningRules": [
       {
         "field": "status",
         "operation": "filter",
         "condition": ["20"]
       },
       {
         "field": "createTime",
         "operation": "format",
         "pattern": "%Y-%m-%d %H:%M:%S"
       }
     ]
    }
  4. 存储与转换 清洗后的数据可以直接写入目标数据库或系统。在写入之前,可以根据业务需求对数据进行进一步转换,例如字段映射、单位转换等。

实践案例

假设我们需要获取过去30天内所有状态为“20”的调拨单,并且这些调拨单必须已经完成出库和入库操作。我们可以按如下方式配置请求参数:

{
  "pageIndex": "0",
  "pageSize": "50",
  "status": "20",
  "startCreateTime": "_function DATE_FORMAT(DATE_ADD(NOW(),INTERVAL - 30 DAY),'%Y-%m-%d 00:00:00')",
  "endCreateTime": "{{CURRENT_TIME|datetime}}",
  "instatus": "3",
  "outstatus": "3"
}

通过这种方式,我们能够高效地从吉客云获取所需的调拨单信息,并在轻易云平台上进行进一步的数据处理和集成。这不仅提高了数据处理效率,还确保了数据的一致性和准确性。 用友与外部系统接口集成开发

轻易云数据集成平台:ETL转换与金蝶云星空API接口集成

在轻易云数据集成平台的生命周期中,第二步涉及将已经集成的源平台数据进行ETL转换,并转为目标平台金蝶云星空API接口所能够接收的格式,最终写入目标平台。本文将详细探讨这一过程中涉及的技术细节和元数据配置。

元数据配置解析

元数据配置是ETL转换过程中的核心,它定义了如何将源数据映射到目标系统所需的格式。以下是一个典型的元数据配置示例:

{
  "api": "batchSave",
  "method": "POST",
  "idCheck": true,
  "operation": {
    "rowsKey": "array",
    "rows": 10,
    "method": "batchArraySave"
  },
  "request": [
    {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{allocateNo}"},
    {"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"ZJDB01_SYS"},
    {"field":"FStockOrgId","label":"调入库存组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_findCollection find textField_l2ib4q9s from 0ce3a160-9fb2-36e5-a2ac-57f5ad0f3c72 where textField_l2ib4q9p={intWarehouseCode}"},
    {"field":"FSettleOrgId","label":"结算组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"}},
    {"field":"FSaleOrgId","label":"销售组织","type":"string","describe":"下拉列表","parser":{"name":"ConvertObjectParser","params":"FNumber"}},
    {"field":"FDate","label":"日期","type":"string","describe":"日期","value":"_function FROM_UNIXTIME( ( {auditDate} / 1000 ) ,'%Y-%m-%d %T' )"},
    {"field":"FStockOutOrgId","label":"调出库存组织","type":"string","describe":"基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_findCollection find textField_l2ib4q9s from 0ce3a160-9fb2-36e5-a2ac-57f5ad0f3c72 where textField_l2ib4q9p={outWarehouseCode}"},
    {"field":"FOwnerTypeOutIdHead","label":"","type":"","describe":"","parser":{"name":"","params":""},"value":""},
    {"field":"","label":"","type":"","describe":"","parser":{"name":"","params":""},"value":""}
  ],
  "otherRequest":[
    {"field": "FormId", "label": "业务对象表单Id", "type": "string", "describe": "", "value": ""},
    {"field": "", "label": "", "type": "", "describe": "", "value": ""}
  ]
}

数据字段解析与转换

  1. 单据编号(FBillNo)

    • 类型:字符串
    • 描述:单据编号
    • 值:{allocateNo},表示从源系统中获取的调拨单号。
  2. 单据类型(FBillTypeID)

    • 类型:字符串
    • 描述:单据类型
    • 转换器:ConvertObjectParser,参数为FNumber
    • 值:固定值ZJDB01_SYS,表示标准调拨单。
  3. 调入库存组织(FStockOrgId)

    • 类型:字符串
    • 描述:组织
    • 转换器:ConvertObjectParser,参数为FNumber
    • 值:通过SQL查询获取,如 _findCollection find textField_l2ib4q9s from ... where textField_l2ib4q9p={intWarehouseCode}
  4. 日期(FDate)

    • 类型:字符串
    • 描述:日期
    • 值:使用函数转换,如 _function FROM_UNIXTIME( ( {auditDate} / 1000 ) ,'%Y-%m-%d %T' )

明细信息处理

对于明细信息(FBillEntry),需要处理多个子字段:

  1. 物料编码(FMaterialId)

    • 类型:字符串
    • 描述:基础资料
    • 转换器:ConvertObjectParser,参数为FNumber
    • 值:从源系统获取,如 {{stockAllocateDetailViews.goodsNo}}
  2. 实发数量(FQty)

    • 类型:字符串
    • 描述:数量
    • 值:从源系统获取,如 {{stockAllocateDetailViews.skuCount}}
  3. 调出仓库(FSrcStockId)

    • 类型:字符串
    • 描述:基础资料
    • 转换器:ConvertObjectParser,参数为FNumber
    • 值:如 {outWarehouseCode}
  4. 调入仓库(FDestStockId)

    • 类型:字符串
    • 描述:维度关联字段
    • 转换器:ConvertObjectParser,参数为FNumber
    • 值:如 {intWarehouseCode}

API调用与其他请求参数

  1. 业务对象表单ID(FormId)

    • 必须填写金蝶的表单ID,如 STK_TransferDirect
  2. 提交并审核(IsAutoSubmitAndAudit)

    • 布尔值,默认为 true
  3. 验证基础资料有效性(IsVerifyBaseDataField)

    • 布尔值,默认为 true

通过上述配置,我们可以实现对源数据的有效转换,并通过金蝶云星空API接口将数据写入目标平台。这一过程确保了不同系统间的数据无缝对接,并提高了业务处理的效率和准确性。 打通企业微信数据接口

更多系统对接方案