ETL转换与金蝶云星空API接口结合的案例解析

  • 轻易云集成顾问-蔡威
### 吉客云到金蝶云星空的数据集成实战案例 在实际的系统集成项目中,如何高效且准确地将吉客云的调拨单数据成功对接到金蝶云星空,是一项具有挑战但非常重要的任务。本文将分享一个具体案例,通过轻易云数据集成平台,实现吉客云(erp.storage.goodsdocin.v2)接口读取的数据,写入至金蝶云星空(batchSave)接口。 为了确保整个过程中的数据不漏单、实时监控及高效处理,我们使用了集中监控和告警系统,并结合自定义的数据转换逻辑。这些工具不仅帮助我们应对跨系统间不同的数据格式,还能及时发现和处理任何可能出现的异常情况。 首先,我们通过调用吉客云API `erp.storage.goodsdocin.v2` 定时可靠地抓取最新的调拨单数据。这一步需要特别注意的是分页和限流问题,以确保大批量数据能够被分段、有序地获取。同时,为了适应业务需求,配置了自定义转换规则,将获取的数据转换为符合金蝶云星空要求的格式。 在写入阶段,通过调用金蝶API `batchSave` 接口,将经过转换后的调拨单快速批量写入到金蝶云星空中。针对大量数据并发写入所带来的吞吐量挑战,我们采用了一系列优化措施,提高了整体效率。此外,还实现了详尽而细致的错误重试机制,当出现对接异常时,可以自动进行重试修正,从而最大程度保障数据的一致性与完整性。 另外,通过统一视图控制台,对整个API资产进行了有效管理,实现资源利用率最大化。在此过程中,由于使用可视化的数据流设计工具,大大简化了复杂流程,使得每个操作步骤更加直观易懂,也便于后期维护和迭代更新。 这个技术方案不仅提升了企业内部多系统协同工作的效率,更为其全生命周期管理提供有力支持。通过精准高效的数据集成,进一步巩固企业信息化建设成果,不断推动业务发展。 ![电商OMS与WMS系统接口开发配置](https://pic.qeasy.cloud/D9.png~tplv-syqr462i7n-qeasy.image) ### 调用吉客云接口erp.storage.goodsdocin.v2获取并加工数据 在数据集成生命周期的第一步,我们需要从源系统吉客云中获取数据,并对其进行初步加工。本文将详细探讨如何通过调用吉客云的`erp.storage.goodsdocin.v2`接口来实现这一过程。 #### 接口调用配置 我们使用POST方法来调用`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":"102" }, {"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,applyCompanyId,applyCompanyName,applyCompanyCode,applyDepartId,applyDepartName,departCode,applyUserId,applyUserName,outBillNo,gmtModified,companyCode,vendCustomerId,..."} ], "autoFillResponse" : true } ``` #### 请求参数解析 1. **分页参数**: - `pageIndex`: 当前页码,使用占位符 `{PAGINATION_START_ROW}` 动态填充。 - `pageSize`: 每页记录数,使用占位符 `{PAGINATION_PAGE_SIZE}` 动态填充。 2. **时间范围参数**: - `startDate`: 数据开始时间,使用占位符 `{{LAST_SYNC_TIME|datetime}}` 动态填充。 - `endDate`: 数据结束时间,使用占位符 `{{CURRENT_TIME|datetime}}` 动态填充。 3. **业务类型参数**: - `inouttype`: 出入库类型,这里固定为102(调拨入库)。 4. **选择字段参数**: - `selelctFields`: 指定需要返回的字段列表,包括基础信息和详细信息字段。 #### 调用示例 以下是一个具体的HTTP请求示例: ```http POST /api/erp.storage.goodsdocin.v2 HTTP/1.1 Host: api.jikexyun.com Content-Type: application/json { ![钉钉与CRM系统接口开发配置](https://pic.qeasy.cloud/S8.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台生命周期的第二步:ETL转换与写入金蝶云星空API接口 在轻易云数据集成平台中,数据处理过程的第二步是将已经集成的源平台数据进行ETL(提取、转换、加载)转换,并将其转为目标平台——金蝶云星空API接口所能够接收的格式,最终写入目标平台。本文将详细探讨如何通过元数据配置实现这一过程。 #### 数据请求与清洗 在ETL流程中,首先需要从源系统(吉客云)中提取调拨单数据。这些数据通常包括单据编号、日期、调入数量等字段。在提取过程中,我们需要对这些数据进行清洗,以确保其准确性和一致性。例如,对日期格式进行标准化处理,对字符串进行去重等。 #### 数据转换 接下来,我们需要将清洗后的数据按照金蝶云星空API接口的要求进行转换。以下是一个详细的元数据配置示例,用于将吉客云中的调拨单数据转换为金蝶云星空API接口所需的格式: ```json { "api": "batchSave", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ {"field": "FBillNo", "label": "单据编号", "type": "string", "value": "{billNo}"}, {"field": "FDate", "label": "日期", "type": "string", "value": "{inOutDate}"}, {"field": "FBillTypeID", "label": "单据类型", "type": "string", "value": "FBDR01_SYS", "parser":{"name":"ConvertObjectParser","params":"FNumber"}}, {"field": "FOwnerTypeIdHead", "label": "调入货主类型", "type":"string","value":"BD_OwnerOrg"}, {"field":"FOwnerIdHead","label":"调入货主","type":"string","value":"100", "parser":{"name":"ConvertObjectParser","params":"FNumber"}}, {"field":"FTransferDirect","label":"调拨方向","type":"string","value":"GENERAL"}, {"field":"FNOTE","label":"备注","type":"string","value":"{inOutReason}"}, {"field":"FTransferMode","label":"调拨方式","type":"string","value":"DIRECT"}, {"field":"FVESTONWAY","label":"携带在途归属","type":"string","value":"A"}, {"field":"FOwnerTypeOutIdHead","label":"调出货主类型", "type":"string","value":"BD_OwnerOrg"}, {"field":"FOwnerOutIdHead","label":"调出货主", "type":"string","value":"100", "parser":{"name":"ConvertObjectParser","params":"FNumber"}}, {"field": "FBizType", "label": "业务类型", "type": "string", "value": "NORMAL"} ], ... } ``` 上述配置定义了请求参数及其对应的数据字段和类型。例如,`FBillNo`字段对应于源系统中的`billNo`字段,`FDate`字段对应于`inOutDate`字段。此外,还可以通过解析器(如`ConvertObjectParser`)对某些字段进行进一步处理。 #### 数据写入 完成数据转换后,我们需要将这些数据通过金蝶云星空API接口写入目标系统。以下是继续上述元数据配置中的关键部分: ```json { ... { "field": "FSTKTRSINENTRY", ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... ``` 在这个部分,我们定义了如何将明细信息(如物料编码、调入仓库、调入数量等)写入目标系统。每个字段都进行了详细配置,包括其标签、类型和值来源。 例如: - `FMaterialID` 对应于 `goodsDocDetailList.goodsNo` - `FDestStockID` 对应于 `warehouseCode` - `FQty` 对应于 `goodsDocDetailList.quantity` 此外,还可以通过解析器对某些复杂字段进行处理,如批号和生产日期等。 #### 实际操作 在实际操作中,我们会调用金蝶云星空的 `batchSave` API 接口,通过 POST 方法提交转换后的 JSON 数据。这一步骤通常包括以下几个关键点: 1. **构建请求体**:根据元数据配置生成符合 API 要求的 JSON 请求体。 2. **发送请求**:使用 HTTP 客户端(如 Postman 或编程语言内置的 HTTP 库)发送 POST 请求。 3. **处理响应**:解析 API 返回的响应,检查是否有错误或警告,并根据需要进行后续处理。 通过以上步骤,我们可以实现从吉客云到金蝶云星空的数据无缝对接,确保业务流程的顺畅运行。 ![打通用友BIP数据接口](https://pic.qeasy.cloud/T23.png~tplv-syqr462i7n-qeasy.image)