轻易云平台实现金蝶云星空API接口数据转换与写入详解

  • 轻易云集成顾问-卢剑航
### 查询聚水潭库存生成金蝶物料盘点作业 在当今快速发展的商业环境中,企业对数据的高效和准确处理需求日益增加。本文将分享一个具体的系统集成案例:如何通过轻易云平台将聚水潭的数据无缝集成到金蝶云星空,以实现准确且及时的物料盘点。此次案例重点探讨了从获取聚水潭库存数据到写入金蝶云星空整个过程中涉及的一些技术细节和挑战。 为了确保数据不漏单,我们首先利用定时任务可靠地抓取聚水潭接口(/open/inventory/query)的分页数据。这一步关键在于处理接口分页和限流问题,保证每次调用都能获得完整的数据集。此外,通过实时监控与日志记录,我们能够动态追踪每一次API调用状态,有效避免因网络等因素导致的数据遗漏。 接下来,为了应对大量数据快速写入至金蝶云星空的问题,我们采用批量处理机制,将整理后的库存信息通过batchSave API进行统一写入。在这个过程中,必须注意两端系统之间的数据格式差异。例如,需要对不同字段进行映射,并根据实际情况进行必要的转换,这可以通过轻易云提供的定制化数据映射功能来实现。 最后,对于整个集成流程中可能出现的异常,我们设计了一套完善的错误重试机制。一旦检测到某个环节发生失败,可以自动触发重试操作,从而最大程度上保障了数据传输的一致性与稳定性。 本文着重展示了一系列解决方案,如实时监控、分页处理、批量写入及错误重试等,希望为大家提供实用且可操作性的技术参考。 ![金蝶与CRM系统接口开发配置](https://pic.qeasy.cloud/D3.png~tplv-syqr462i7n-qeasy.image) ### 调用聚水潭接口获取并加工数据 在数据集成的生命周期中,调用源系统接口是关键的第一步。本文将深入探讨如何通过调用聚水潭接口 `/open/inventory/query` 获取库存数据,并对其进行必要的加工处理,以便后续的数据转换和写入操作。 #### 接口配置与请求参数 首先,我们需要配置调用聚水潭接口所需的元数据。以下是具体的元数据配置: ```json { "api": "/open/inventory/query", "method": "POST", "number": "sku_id", "id": "sku_id", "pagination": { "pageSize": 50 }, "formatResponse": [ { "old": "modified", "new": "new_modified", "format": "date" } ], "request": [ { "field": "wms_co_id", "label": "分仓公司编号", "type": "int", "describe": "值不传或为0查询所有仓的总库存,传值为指定仓的库存即为库存查询(分仓)界面的数据;" }, { "label": "开始页码", "field": "page_index", "type": "string", "value": "1", "describe": "第几页,从第一页开始,默认1" }, { "label": "每页条数", "field": "page_size", "type": "string", "value": "{PAGINATION_PAGE_SIZE}", "describe": "默认30,最大不超过100" }, { "label": "商品编码", "field": "sku_ids", "type": "string", 'describe': '商品编码,多个用逗号分隔,与修改时间不能同时为空,最大不超过100个' }, { 'label': '修改开始时间', 'field': 'modified_begin', 'type': 'string', 'describe': '修改起始时间,和结束时间必须同时存在,时间间隔不能超过七天', 'value': '{{LAST_SYNC_TIME|datetime}}' }, { 'label': '修改结束时间', 'field': 'modified_end', 'type': 'string', 'describe': '修改结束时间,和结束时间必须同时存在,时间间隔不能超过七天', 'value': '{{CURRENT_TIME|datetime}}' }, { 'field': 'has_lock_qty', 'label': '是否查询库存锁定数', 'type': 'bool' }, { 'field': 'names', 'label': '商品名称', 'type': 'string', 'describe': '最多100个,多个商品名称用逗号隔开' }, { field: ‘i_ids’, label: ‘款式编码’, type: ‘string’, describe: ‘最多100个,多个商品名称用逗号隔开’ } ] } ``` #### 请求参数详解 - `wms_co_id`: 分仓公司编号,用于指定查询某一特定仓库的库存。如果不传或为0,则查询所有仓库的总库存。 - `page_index`: 开始页码,从第一页开始。 - `page_size`: 每页条数,默认30条,最大不超过100条。 - `sku_ids`: 商品编码,可以传多个,用逗号分隔。与修改时间不能同时为空。 - `modified_begin` 和 `modified_end`: 修改起始和结束时间,需要同时存在且间隔不能超过七天。 - `has_lock_qty`: 是否查询库存锁定数。 - `names`: 商品名称,可以传多个,用逗号分隔。 - `i_ids`: 款式编码,可以传多个,用逗号分隔。 #### 数据请求与响应格式化 在发送请求时,我们需要确保分页参数正确设置,以便能够逐页获取完整的数据集。以下是一个示例请求体: ```json { “wms_co_id”: 0, “page_index”: “1”, “page_size”: “50”, “sku_ids”: “”, “modified_begin”: “2023-01-01T00:00:00”, “modified_end”: “2023-01-07T23:59:59”, “has_lock_qty”: false, “names”: “”, “i_ids”: “” } ``` 响应数据可能包含如下字段: ```json { “data”: [ { “sku_id”: ”12345”, “name”: ”商品A”, “quantity”: ”100”, “modified”: ”2023-01-05T12:34:56” } ], ”total_count”: ”200” } ``` 根据元数据配置,我们需要对响应中的字段进行格式化处理。例如,将字段 `modified` 转换为新的字段名 `new_modified` 并格式化为日期类型。 #### 数据清洗与加工 在获取到原始数据后,需要进行清洗和加工,以确保数据符合目标系统的要求。具体操作包括但不限于: 1. **字段重命名**:将 `modified` 重命名为 `new_modified`。 2. **日期格式化**:将日期字符串转换为标准日期格式。 3. **分页处理**:根据返回的总记录数(`total_count`),循环请求下一页的数据直至全部获取完毕。 通过上述步骤,我们可以高效地从聚水潭系统中获取并加工库存数据,为后续的数据转换和写入做好准备。这一过程不仅确保了数据的一致性和准确性,也极大提升了业务透明度和效率。 ![电商OMS与WMS系统接口开发配置](https://pic.qeasy.cloud/S14.png~tplv-syqr462i7n-qeasy.image) ### 利用轻易云数据集成平台实现金蝶云星空API接口的数据转换与写入 在数据集成生命周期的第二步中,我们需要将已经集成的源平台数据进行ETL转换,转为目标平台金蝶云星空API接口所能够接收的格式,并最终写入目标平台。以下是一个详细的技术案例,展示如何通过轻易云数据集成平台配置元数据,实现查询聚水潭库存并生成金蝶物料盘点作业。 #### 配置元数据 首先,我们需要根据提供的元数据配置,定义如何将源数据转换为金蝶云星空API接口所需的数据格式。以下是关键的元数据配置部分: ```json { "api": "batchSave", "method": "POST", "number": "FBillNo", "pagination": { "pageSize": 500 }, "idCheck": true, "operation": { "rowsKey": "array", "rows": 1, "method": "batchArraySave" }, "groupCalculate": { "headerGroup": ["new_date"], "bodyGroup": ["sku_id", "qty"], "bodyName": "details", "targetBodyName": "FEntity", "bodyMaxLine": 200, "calculate": { "qty": "$sum" } }, ... } ``` #### 请求字段映射 在请求字段映射部分,我们需要将源数据字段映射到目标平台所需的字段。例如: - `FBillNo` 映射到 `{new_date}` - `FStockOrgId` 固定值 `100` - `FDate` 映射到 `{new_date}` - `FBillEntry` 是一个数组,包含多个子字段,例如 `FMaterialId`, `FStockId`, `FCountQty` 等。 具体配置如下: ```json { ... "request": [ {"field":"FBillNo","label":"单据编码","type":"string","value":"{new_date}"}, {"field":"FStockOrgId","label":"库存组织","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"100"}, {"field":"FDate","label":"日期","type":"string","value":"{new_date}"}, ... {"field":"FBillEntry","label":"单据体","type":"array","children":[ {"field":"FMaterialId","label":"物料编码","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{{details.sku_id}}","parent":"FBillEntry"}, {"field":"FStockId","label":"仓库编码","type":"string","value":"11161780","parent":"FBillEntry","parser":{"name":"ConvertObjectParser","params":"FNumber"}}, {"field":"FCountQty","label":"盘点数量","type":"string","value":"{{details.qty}}","parent":"FBillEntry"}, ... ],"value":"details"} ], ... } ``` #### 操作与计算 在操作与计算部分,我们定义了如何处理和计算批量数据。例如,通过 `groupCalculate` 配置,我们可以对相同日期、SKU 的数量进行汇总: ```json { ... "groupCalculate":{ ... "calculate":{ "qty": "$sum" } }, ... } ``` #### API请求示例 根据上述配置,我们可以构建一个完整的API请求示例: ```json { "FormId": "STK_StockCountInput", "Operation": "BatchSave", ... { ..., { ..., { ..., { ..., { ..., { ..., { ..., { ..., { ..., { ..., { ..., { ..., { ..., { ..., { ..., { ..., { ..., { ... } } } } } } } } } } } } } } } } }, ... } ``` 通过上述步骤,我们成功地将聚水潭库存数据转换为金蝶云星空API接口所需的数据格式,并实现了批量写入操作。这个过程展示了轻易云数据集成平台在处理异构系统间数据无缝对接方面的强大能力。 ![金蝶与CRM系统接口开发配置](https://pic.qeasy.cloud/T5.png~tplv-syqr462i7n-qeasy.image)