如何通过轻易云平台实现ETL转换并写入旺店通

  • 轻易云集成顾问-谢楷斌
### 金蝶云星空数据集成到旺店通·企业奇门案例分享 在本次技术案例中,我们实现了金蝶云星空系统的其他入库单数据无缝地集成到旺店通·企业奇门平台,具体为将3000云仓中的入库单信息从金蝶导入到旺店通的委外入库单。为了确保整个流程的高效与准确,本方案采用了一系列技术方法,解决了多种可能出现的问题。 首先,通过调用金蝶云星空提供的`executeBillQuery`接口,将最新生成的其他入库单数据抓取出来。这一步需要考虑接口分页和限流策略,以避免因数据量过大造成系统性能问题或请求延迟。同时,为保证所有订单都能被及时处理,部署了定时任务来可靠地抓取这些接口数据。 接下来,对获取的数据进行预处理以适配旺店通·企业奇门要求的数据格式。在这个过程中,我们特别关注两个方面:一是如何批量转换并映射字段;二是对特殊字段值进行逻辑校验转化。通过定义清晰的数据映射规则,实现了高效率的数据格式转换。 最后,将处理后的数据利用`wdt.vip.wms.stockinout.order.push`接口推送至旺店通·企业奇门。在这一环节中,同样采取了一些措施来提升大批量数据写入速度,并设计异常处理机制与错误重试策略,确保每笔记录能够顺利、安全地完成同步。 本文将进一步详细阐述以上步骤中的关键技术点及实施细节,包括如何有效应对各类挑战、优化系统性能以及保障业务连续性。我们相信,这些实践经验对于类似系统间的数据集成项目具有重要参考价值。 ![电商OMS与WMS系统接口开发配置](https://pic.qeasy.cloud/D16.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口来获取并加工数据。 #### 接口配置与调用 首先,我们需要配置元数据,以便正确调用金蝶云星空的`executeBillQuery`接口。以下是元数据配置的关键部分: ```json { "api": "executeBillQuery", "method": "POST", "number": "FBillNo", "id": "FEntity_FEntryID", "pagination": { "pageSize": 500 }, "idCheck": true, "condition_bk": [ [ { "field": "FBillTypeID", "logic": "in", "value": "ZYD-037,ZYD-113,ZYD-102" } ] ], ... } ``` 在上述配置中,`api`字段指定了要调用的接口名称为`executeBillQuery`,请求方法为`POST`。分页参数设置为每页500条记录,确保在处理大批量数据时能够有效分页。 #### 请求参数设置 为了准确获取所需的数据,我们需要设置请求参数。这些参数包括查询条件、分页信息以及需要返回的字段。以下是请求参数的示例: ```json { "request": [ {"field":"FEntity_FEntryID","label":"FEntryID","type":"string","value":"FEntity_FEntryID"}, {"field":"FID","label":"实体主键","type":"string","value":"FID"}, {"field":"FBillNo","label":"单据编号","type":"string","value":"FBillNo"}, {"field":"FDocumentStatus","label":"单据状态","type":"string","value":"FDocumentStatus"}, {"field":"FStockOrgId_FNumber","label":"库存组织","type":"string","value":"FStockOrgId.FNumber"}, {"field":"FDate","label":"日期","type":"string","value":"FDate"}, {"field":"FBillTypeID","label":"单据类型","type":"string","value":"FBillTypeID.FNumber"}, ... ], ... } ``` 这些字段涵盖了从金蝶云星空系统中获取其他入库单所需的所有信息,如单据编号、单据状态、库存组织、日期等。 #### 条件过滤与分页 为了确保只获取符合条件的数据,我们需要设置过滤条件和分页参数: ```json { "otherRequest": [ { "field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}" }, { "field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}" }, { ... }, { "field": "FilterString", ... // 示例写法 // FSupplierId.FNumber = 'VEN00010' and FApproveDate>='{{LAST_SYNC_TIME|datetime}}' and FStockOrgId.FNumber = '3000' and (FBillTypeID.FNumber='ZYD-037' or FBillTypeID.FNumber='ZYD-102') and FSTOCKID.FNumber='1104' ... } ] } ``` 通过设置这些参数,可以实现对数据的精确过滤。例如,通过设置`FilterString`可以筛选出特定供应商、特定日期范围内的数据,并且仅限于指定库存组织和仓库的数据。 #### 数据清洗与转换 在获取到原始数据后,需要进行清洗和转换,以便后续写入目标系统。在轻易云平台上,可以通过可视化界面定义清洗规则和转换逻辑。例如,可以将日期格式统一转换,将金额字段进行汇总计算等。 以下是一个简单的数据清洗示例: ```json { // 清洗规则示例 // 将日期格式从YYYY-MM-DD转换为DD/MM/YYYY { "$dateFormat(FDate, 'DD/MM/YYYY')" }, // 汇总计算总成本 { "$sum(FAmount)" } } ``` 通过这些清洗和转换操作,可以确保最终写入目标系统的数据是准确且符合业务需求的。 #### 总结 通过轻易云数据集成平台调用金蝶云星空接口`executeBillQuery`,我们可以高效地获取并加工其他入库单的数据。在此过程中,通过合理配置元数据、设置请求参数、应用过滤条件以及进行必要的数据清洗与转换,可以确保整个数据集成过程顺畅无误。这一步骤为后续的数据写入奠定了坚实基础。 ![电商OMS与ERP系统接口开发配置](https://pic.qeasy.cloud/S10.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台实现ETL转换并写入旺店通·企业奇门API接口 在数据集成生命周期的第二阶段,我们需要将已经集成的源平台数据进行ETL转换,并转为目标平台——旺店通·企业奇门API接口所能够接收的格式,最终写入目标平台。本文将详细介绍如何通过轻易云数据集成平台完成这一过程。 #### 元数据配置解析 首先,我们来看一下元数据配置: ```json { "api": "wdt.vip.wms.stockinout.order.push", "effect": "EXECUTE", "method": "POST", "idCheck": true, "operation": { "method": "merge", "field": "FBillNo,FDate,FSTOCKID", "bodyName": "details_listss", "bodySum": ["F_UHZG_JJQty"], "header": ["FBillNo", "FSTOCKID", "FBillTypeID", "FNOTE"], "body": ["FMATERIALID_FNumber", "F_UHZG_JJQty", "FPrice", "FLOT", "FEntryNote"] }, "request": [ { "field": "api_outer_no", "label": "接口外部单号", "type": "string", "describe": "调用本接口时推送的唯一单据编号,避免重复推送数据", "value": "{FBillNo}" }, { "field": "warehouse_no", ... ``` #### 数据请求与清洗 在这个阶段,我们已经从源平台(金蝶)获取了原始入库单数据。接下来,我们需要对这些数据进行清洗和转换,以符合旺店通·企业奇门API接口的要求。 #### 数据转换与写入 1. **定义请求参数** 根据元数据配置,我们需要将原始数据字段映射到目标API所需字段。以下是一些关键字段的映射关系: - `api_outer_no` 映射到 `{FBillNo}` - `warehouse_no` 映射到 `{FSTOCKID}` - `order_type` 固定值为 `2`(表示入库) - `auto_check` 固定值为 `1`(表示自动审核) - `remark` 使用 `_function CASE '{FBillTypeID}' WHEN 'ZYD-037' THEN '赠品其他入库' WHEN 'ZYD-102' THEN '无头件退货入库' END` - `goods_list` 包含多个子字段,如下: - `spec_no` 映射到 `{details_listss.FMATERIALID_FNumber}` - `num` 映射到 `{details_listss.F_UHZG_JJQty}` - `price` 映射到 `{details_listss.FPrice}` - `batch_no` 映射到 `{details_listss.FLOT}` - `remark` 映射到 `{details_listss.FEntryNote}` 2. **构建请求体** 根据上述映射关系,构建请求体如下: ```json { "api_outer_no": "{FBillNo}", ... ... ... } ``` 3. **发送请求** 使用POST方法,将构建好的请求体发送至目标API接口: ```python import requests url = 'https://api.wangdian.cn/openapi2/wdt.vip.wms.stockinout.order.push' headers = { 'Content-Type': 'application/json' } response = requests.post(url, headers=headers, json=request_body) if response.status_code == 200: print("Data successfully pushed to WangDianTong API") else: print(f"Failed to push data: {response.text}") ``` #### 实际案例应用 假设我们有一个具体的金蝶入库单,其主要字段如下: ```json { ... } ``` 通过轻易云数据集成平台,我们可以自动化地将这些字段转换为旺店通·企业奇门API所需的格式,并实时监控整个过程,确保每一步都透明可视。 以上就是使用轻易云数据集成平台实现ETL转换并写入旺店通·企业奇门API接口的详细技术步骤。希望这些技术干货能帮助您更好地理解和应用这一过程。 ![用友与CRM系统接口开发配置](https://pic.qeasy.cloud/T12.png~tplv-syqr462i7n-qeasy.image)