从吉客云到金蝶云星空的数据集成与转换技术详解

  • 轻易云集成顾问-陈洁琳
### 吉客云数据集成到金蝶云星空案例分享 在系统集成过程中,实现不同平台之间的数据无缝对接常常是技术挑战之一。本篇文章将聚焦于一个具体的实例,展示如何通过轻易云数据集成平台,将吉客云中的盘盈入库单数据高效、可靠地集成到金蝶云星空的盘盈单中。 #### 确保集成吉客云数据不漏单 为了确保在从吉客云抓取数据时实现高细精度,我们配置了调用吉客云API `erp.storage.goodsdocin.v2` 的流程。这一流程特别注重分页与限流机制,以应对大规模数据获取可能带来的性能问题。通过定时任务自动抓取接口数据,并对每次交互进行日志记录和实时监控,我们极大提高了操作的透明度与可靠性。 #### 大量数据快速写入到金蝶云星空 针对大量从吉客云获取的数据,需要处理它们并迅速批量写入至金蝶云星空。在这一环节中,调用金蝶API `batchSave` 成为不可或缺的一部分。通过轻易平台提供的大规模并行处理能力,配合批量操作,我们成功实现高速、高效的数据传输。此外,还需要注意不同系统间的数据格式差异,通过定制化映射确保准确性。 #### 数据异常处理及错误重试机制 在实际运行过程中,不可避免会遇到网络抖动或接口响应失误等情况。因此,在整体方案设计上已经预先加入了错误捕捉和重试机制。一旦检测到异常状态,系统将自动记录错误日志,并按照设定策略重新尝试执行失败的步骤,从而保障最终业务结果的一致性和完整性。 以此开头,我们将在后续详述整个集成过程中的具体配置步骤、关键代码片段以及更多技术细节,来帮助你全面了解这个复杂而又典型的系统对接解决方案。 ![钉钉与ERP系统接口开发配置](https://pic.qeasy.cloud/D2.png~tplv-syqr462i7n-qeasy.image) ### 调用吉客云接口获取并加工数据 在轻易云数据集成平台中,调用源系统接口是数据处理生命周期的第一步。本文将详细探讨如何通过调用吉客云接口 `erp.storage.goodsdocin.v2` 获取盘盈入库单数据,并对其进行初步加工。 #### 接口配置与调用 首先,我们需要配置并调用吉客云的 `erp.storage.goodsdocin.v2` 接口。以下是该接口的元数据配置: ```json { "api": "erp.storage.goodsdocin.v2", "effect": "QUERY", "method": "POST", "number": "goodsdocNo", "id": "recId", "idCheck": true, "request": [ {"field":"pageIndex","label":"pageIndex","type":"int","describe":"111","value":"{PAGINATION_START_ROW}"}, {"field":"pageSize","label":"pageSize","type":"int","describe":"111","value":"{PAGINATION_PAGE_SIZE}"}, {"field":"startDate","label":"startDate","type":"string","describe":"111","value":"{{LAST_SYNC_TIME|datetime}}"}, {"field":"endDate","label":"endDate","type":"string","describe":"111","value":"{{CURRENT_TIME|datetime}}"}, {"field":"inouttype","label":"出入库类型","type":"int","describe":"出入库类型(201-销售出库 202调拨出库 204-其他出库 205采购退货 206生产领料 207组装拆卸出库 208翻新出库 209报废出库 210残次品出库 211倒冲领料 212 包材出库 215维修还厂 299可用库存修正 231成本调整出库)","value":"103"}, {"field":"selelctFields","label":"selelctFields","type":"string","value": "recId,goodsdocNo,billNo,inOutDate,gmtCreate,inouttype,inouttypeName,vendCustomerCode,vendCustomerName,currencyCode,currencyRate,userName,warehouseCode,warehouseName,comment,memo,logisticName,logisticNo,companyId,companyName,logisticType,logisticCode,inOutReason,sourceBillNo,channelId,channelCode,channelName,redStatus,field1,field2,field3,field4,field5,financeBillStatus,..."} ], "autoFillResponse": true, "condition": [ [{"field": "memo", "logic": "neqv2", "value": "产品编码调整"}, {"field": "memo", "logic": "neqv2", "value": "批号调整"}] ] } ``` #### 请求参数解析 在请求参数中,我们需要特别注意以下几个字段: - `pageIndex` 和 `pageSize`:用于分页查询,确保我们能够逐页获取大批量的数据。 - `startDate` 和 `endDate`:定义了数据同步的时间范围。通过使用 `{LAST_SYNC_TIME|datetime}` 和 `{CURRENT_TIME|datetime}` 动态变量,可以确保每次同步都是增量的。 - `inouttype`:指定了盘盈入库单的类型为 `103`。 - `selelctFields`:列出了所有需要获取的字段,包括基本信息和详细信息。 #### 数据过滤与条件设置 为了避免获取无关的数据,我们在条件设置中排除了 `memo` 字段值为“产品编码调整”和“批号调整”的记录。这些条件可以根据实际业务需求进行调整。 #### 数据请求与清洗 调用接口后,返回的数据可能包含多种格式和内容。在轻易云平台上,我们可以利用自动填充响应功能 (`autoFillResponse: true`) 来简化数据清洗过程。这一步骤确保了返回的数据结构一致且符合预期。 #### 数据转换与写入准备 在完成数据请求和初步清洗后,下一步就是将这些数据转换为目标系统(如金蝶云)所需的格式,并准备写入操作。这部分工作通常包括字段映射、数据类型转换以及必要的数据校验。 例如,对于盘盈入库单中的商品明细,我们可能需要将吉客云中的字段名映射到金蝶云所需的字段名,并确保所有必填字段都有正确的值。 ```json { // 示例映射关系 "recId": "{goodsDocDetailList.recId}", ... } ``` 通过以上步骤,我们可以高效地从吉客云获取并加工盘盈入库单数据,为后续的数据转换与写入打下坚实基础。 ![泛微OA与ERP系统接口开发配置](https://pic.qeasy.cloud/S19.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口的技术案例 在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL转换,并转为目标平台金蝶云星空API接口所能够接收的格式,最终写入目标平台。本文将详细探讨如何利用轻易云数据集成平台完成这一过程。 #### 元数据配置解析 首先,我们需要理解元数据配置中的各个字段及其含义: ```json { "api": "batchSave", "method": "POST", "idCheck": true, "operation": { "rowsKey": "array", "rows": 1, "method": "batchArraySave" }, "request": [ { "field": "FBillTypeID", "label": "单据类型", "type": "string", "value": "PY01_SYS", "parser": { "name": "ConvertObjectParser", "params": "FNUMBER" } }, { ... } ], ... } ``` #### 数据转换与写入步骤 1. **请求配置**: - `api`和`method`字段定义了我们将使用的API接口和HTTP方法。在这里,我们使用的是`batchSave` API,并通过POST方法提交请求。 - `idCheck`设置为true,表示在进行操作前会检查ID是否存在。 - `operation`字段定义了批量保存操作的具体方式,其中`rowsKey`为"array",表示数据以数组形式传递,`rows`设置为1,表示每次处理一行数据。 2. **请求体构建**: - 每个请求字段都包含以下信息: - `field`: 对应金蝶云星空API中的字段名。 - `label`: 字段标签,用于描述字段含义。 - `type`: 数据类型,如string、array等。 - `value`: 数据来源或固定值。例如,`FBillTypeID`的值为"PY01_SYS",表示单据类型为盘盈单。 - `parser`: 用于特定字段的数据解析器,例如,将物料编码转换为金蝶云星空识别的格式。 3. **嵌套结构处理**: - 对于复杂的嵌套结构,如盘盈单中的明细列表,我们使用`children`字段来定义子项。例如,`FBillEntry`是一个数组,包含多个物料明细,每个明细又包含多个子字段,如物料编码、仓库编码、数量等。 4. **其他请求参数**: - `otherRequest`部分定义了一些额外的请求参数,如业务对象表单Id、是否验证基础资料、执行的操作类型(保存)、以及是否自动提交并审核。 #### 实际应用案例 假设我们从吉客云获取到以下盘盈入库单数据: ```json { "goodsdocNo": "PY20231001", "inOutDate": "2023-10-01", ... "goodsDocDetailList": [ { ... "goodsNo": "MAT001", ... "warehouseCode": "WH001", ... "quantity": 100, ... ... } ] } ``` 我们需要将其转换为金蝶云星空API能够接受的格式,并通过轻易云平台进行写入。具体步骤如下: 1. **映射基础信息**: - 将吉客云中的盘盈入库单编号映射到金蝶云星空中的单据编号(FBillNo)。 - 将日期映射到FDate。 2. **处理明细列表**: - 遍历goodsDocDetailList,将每个物料明细映射到FBillEntry数组中。 - 使用ConvertObjectParser解析器将物料编码(goodsNo)和仓库编码(warehouseCode)转换为金蝶云星空识别的格式。 3. **构建最终请求体**: ```json { ... { ... { ... { ... { ... { ... { ... { FBillTypeID: { FNUMBER: 'PY01_SYS' }, FBillNo: 'PY20231001', FDate: '2023-10-01', FNoteHead: 'PY20231001', FBillEntry: [ { FMaterialId: { FNumber: 'MAT001' }, FStockId: { FNumber: 'WH001' }, FCountQty: '100', FLOT: { FNumber: '' }, FGAINQTY: '100', FBaseGainQty: '100' } ] } } } } } } } } ``` 通过上述步骤,我们成功地将吉客云中的盘盈入库单数据转换并写入到金蝶云星空系统中。这个过程充分利用了轻易云数据集成平台强大的元数据配置功能,实现了高效的数据转换与写入。 ![数据集成平台可视化配置API接口](https://pic.qeasy.cloud/T1.png~tplv-syqr462i7n-qeasy.image)