从旺店通到金蝶云星空的数据加工与转换策略

  • 轻易云集成顾问-吕修远
### 案例分析:旺店通·企业奇门到金蝶云星空的系统对接集成 在实际运营中,企业往往面临从不同平台获取数据并整合到统一管理系统中的挑战。此次我们将分享一个具体案例,即通过轻易云数据集成平台实现旺店通·企业奇门的数据无缝对接至金蝶云星空。这一过程涵盖了从数据抓取、转换到最终写入的一系列技术要点与细节处理。 #### 解决方案名称:旺店通其他入库单>云星空其他入库单 为了准确高效地完成这一任务,我们将主要利用以下特性: 1. 高吞吐量的数据写入能力,确保大量数据能快速引入。 2. 实时监控和告警机制,对每个步骤进行全程跟踪与管理。 3. 自定义数据转换逻辑,以适应业务需求和避免因格式不匹配导致的问题。 首先,通过调用旺店通·企业奇门的API接口 `wdt.stockin.order.query` 获取其他入库单数据信息,该接口支持分页查询,并需要考虑限流问题。在设置API调用时,应重点关注分页参数和速率限制,以避免大批量请求带来的性能瓶颈。同时,为了保证不漏单,可以采用定时任务方式定期拉取新增或变更的数据。 其次,在获取原始数据后,需要进行一些必要的清洗与转换。这里可以利用可视化的数据流设计工具,对原始JSON字段进行映射,并调整为符合金蝶云星空要求的格式。在这个过程中,自定义逻辑是关键,例如字段类型转换、多源合并及去重等操作,需要根据实际业务需求灵活配置。 最后,将整理好的数据通过 `batchSave` API 批量写入到金蝶云星空系统中。对于批量提交,我们需特别注意事务一致性以及错误重试机制。如果在传输过程中发生异常,需要具备一定的容错策略,如记录错误日志并自动重试失败任务,以确保最终所有有效数据均成功导入目标系统。此外,通过实时监控功能,可随时查看每个任务执行情况,一旦发现异常立即触发预警,从而迅速作出响应调整。 以上仅为该方案实施的一部分核心要点展开介绍,后续将进一步详细阐述各步骤实现细节及相关代码示例。 ![金蝶与外部系统打通接口](https://pic.qeasy.cloud/D33.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台调用旺店通·企业奇门接口wdt.stockin.order.query获取并加工数据 在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细介绍如何通过轻易云数据集成平台调用旺店通·企业奇门接口`wdt.stockin.order.query`,并对获取的数据进行初步加工。 #### 接口调用配置 首先,我们需要配置接口调用的元数据。以下是关键的元数据配置项: - **API**: `wdt.stockin.order.query` - **Method**: `POST` - **Pagination**: 每页返回50条记录 - **条件过滤**: 仅获取“内部领用退回”的入库单 - **增量获取**: 使用`start_time`和`end_time`字段按最后修改时间增量获取数据 #### 请求参数配置 在实际操作中,我们需要根据业务需求设置请求参数。以下是主要的请求参数及其说明: 1. **开始时间 (`start_time`)**: - 类型:字符串 - 描述:按最后修改时间增量获取数据,格式为`yyyy-MM-dd HH:mm:ss` - 示例值:`{{LAST_SYNC_TIME|datetime}}` 2. **结束时间 (`end_time`)**: - 类型:字符串 - 描述:按最后修改时间增量获取数据,格式为`yyyy-MM-dd HH:mm:ss` - 示例值:`{{CURRENT_TIME|datetime}}` 3. **源单据类别 (`order_type`)**: - 类型:字符串 - 描述:源单据类别,6表示其他入库 - 示例值:`6` 4. **入库单状态 (`status`)**: - 类型:字符串 - 描述:入库单状态,默认查询已完成(80)的单据 5. **仓库编号 (`warehouse_no`)**: - 类型:字符串 - 描述:用于区分不同仓库的唯一编码 6. **上层单据编号 (`src_order_no`)**: - 类型:字符串 - 描述:传该字段可以不传开始时间和结束时间 7. **入库单号 (`stockin_no`)**: - 类型:字符串 - 描述:传该字段可以不传开始时间和结束时间 8. **分页大小 (`page_size`)**: - 类型:字符串 - 描述:每页返回的数据条数,默认40条 - 示例值:`{PAGINATION_PAGE_SIZE}` 9. **页号 (`page_no`)**: - 类型:字符串 - 描述:不传值默认从0页开始 - 示例值:`{PAGINATION_START_PAGE}` #### 数据过滤与清洗 在调用接口后,我们会得到一批原始数据。为了确保数据质量,需要对这些数据进行过滤和清洗。根据元数据配置中的条件过滤项,我们只保留“内部领用退回”的入库单。 ```json { "condition": [ [ { "field": "stockin_reason", "logic": "eqv2", "value": "内部领用退回" } ] ] } ``` #### 数据转换与写入 经过初步清洗后的数据,需要进行格式转换以适应目标系统的要求。例如,将日期格式统一转换为目标系统所需的格式,或者将某些字段的值映射到目标系统的对应字段。 ```json { "transformations": [ { "field": "date", "operation": "format", "params": { "from": "yyyy-MM-dd HH:mm:ss", "to": "MM/dd/yyyy" } }, { "field": "status", "operation": "map", "params": { "80": "Completed" } } ] } ``` #### 实时监控与日志记录 为了确保整个过程顺利进行,我们需要实时监控接口调用和数据处理的状态,并记录日志以便于后续排查问题。这可以通过轻易云平台提供的监控工具实现。 ```json { "monitoring": { "enabled": true, "logLevel": "INFO" } } ``` 通过上述步骤,我们能够高效地从旺店通·企业奇门接口获取并加工所需的数据,为后续的数据集成奠定坚实基础。 ![钉钉与WMS系统接口开发配置](https://pic.qeasy.cloud/S7.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台生命周期第二步:ETL转换与写入金蝶云星空API接口 在轻易云数据集成平台的生命周期中,第二步是将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,转为目标平台金蝶云星空API接口所能够接收的格式,并最终写入目标平台。本文将详细探讨如何通过元数据配置实现这一过程。 #### API接口配置 在本案例中,我们需要将旺店通的其他入库单数据转换并写入到金蝶云星空的其他入库单中。首先,我们需要配置金蝶云星空的API接口。以下是元数据配置示例: ```json { "api": "batchSave", "method": "POST", "idCheck": true, "operation": { "rowsKey": "array", "rows": 1, "method": "batchArraySave" }, "request": [ {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{order_no}"}, {"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_function case when '{stockin_reason}' ='null' then 'QTRKD01_SYS' else '{stockin_reason}' end","mapping":"6359ed1326bb8142a52ba3ad","mappingDirection":"positive"}, {"field":"FStockOrgId","label":"库存组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"100"}, {"field":"FStockDirect","label":"库存方向","type":"string","describe":"下拉列表","value":"1"}, {"field":"FDate","label":"日期","type":"string","describe":"日期","value":"{stockin_time}"}, {"field":"FSUPPLIERID","label":"供应商","type":"string","describe":"基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"}}, {"field":"FDEPTID","label":"部门","type":"string","describe":"基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"BM000002"}, {"field":"FOwnerTypeIdHead","label":"货主类型","type":"","describe":"","value":"","parent":"","children":[]}, {"field":"","label":"","type":"","describe":"","parent":"","children":[]} ], "otherRequest":[ {"field": "FormId", "label": "业务对象表单Id", "type": "string", "describe": "必须填写金蝶的表单ID如:PUR_PurchaseOrder", "value": "STK_MISCELLANEOUS"}, {"field": "IsVerifyBaseDataField", "label": "验证基础资料", "type": "bool", "describe": "", value: true}, {"field": "", label: "", type: "", describe: "", value: ""} ] } ``` #### 数据字段映射与转换 在ETL过程中,需要对源数据字段进行映射和转换,以符合目标系统的要求。以下是一些关键字段及其转换逻辑: - **FBillNo(单据编号)**:直接映射为 `{order_no}`。 - **FBillTypeID(单据类型)**:使用 `ConvertObjectParser` 将 `{stockin_reason}` 转换为目标系统所需的编码。如果 `stockin_reason` 为 `null`,则默认值为 `QTRKD01_SYS`。 - **FStockOrgId(库存组织)**:固定值 `100`,使用 `ConvertObjectParser` 转换。 - **FDate(日期)**:直接映射为 `{stockin_time}`。 - **FSUPPLIERID(供应商)**、**FDEPTID(部门)** 等基础资料字段均使用 `ConvertObjectParser` 转换。 #### 明细信息处理 对于明细信息,需要特别处理嵌套数组结构。例如: ```json { "field": "FEntity", "label": "明细信息", ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { field: 'num', label: '单位', type: 'string', value: '{{details_list.num}}' } } } } } } } } } } } } } ``` #### 提交与审核 最后,通过设置 `IsAutoSubmitAndAudit` 为 `true`,实现自动提交并审核功能: ```json { ... { field: 'IsAutoSubmitAndAudit', label: '提交并审核', type: 'bool', value: true } } ``` 通过上述配置,我们可以高效地将旺店通的其他入库单数据转换并写入到金蝶云星空,实现不同系统间的数据无缝对接。这一过程不仅提升了数据处理效率,也确保了业务流程的透明和可追溯性。 ![电商OMS与WMS系统接口开发配置](https://pic.qeasy.cloud/T19.png~tplv-syqr462i7n-qeasy.image)