轻易云同步销售退货数据至金蝶云星空的全流程解读

  • 轻易云集成顾问-何语琴
### 旺店通·企业奇门数据集成金蝶云星空:销售退货同步实战 在实现旺店通·企业奇门与金蝶云星空的数据无缝对接过程中,"销售退货同步到金蝶"这一方案展示了其卓越的技术解决能力。在本案例中,我们将重点聚焦如何高效、准确地将旺店通·企业奇门中的销售退货数据,通过API接口`wdt.stockin.order.query.refund`获取,并利用轻易云的数据集成平台,将这些数据批量写入到金蝶云星空的API `batchSave`。 首先,为确保集成过程不漏单且具备实时性,我们设计了一套定时可靠的抓取机制。通过调用`wdt.stockin.order.query.refund`接口,系统能够周期性地从旺店通·企业奇门提取新增或更新的销售退货订单。这一操作不仅提升了数据同步效率,还保证了业务环节中的每一条关键数据都能及时被捕捉和处理。 其次,在大量数据快速写入到金蝶云星空阶段,通过采用批量处理的方法,我们显著减少了网络请求次数。同时,为应对分页和限流问题,实现分区间断式读取并记录日志,以便后续快速定位和重试未成功的数据块,大大提高了整体写入速度和系统稳定性。 最后,对于不同平台间存在的数据格式差异,我们运用了定制化的数据映射策略,使得原始获取的数据在转存前就已经符合目标系统要求,从而简化后期处理流程。此外,对于可能出现的任何异常情况,建立了一整套错误重试机制,以确保即使在发生意外中断时,所有传输步骤也能被精准恢复并继续进行。 通过上述关键步骤及多项优化措施,此项目有效解决了跨平台、跨格式、大规模交易数据的实时交互难题,为构建稳定、高效的信息化管理体系奠定坚实基础。下一部分我们将详细探讨具体实施细节,包括API调用方法、参数配置以及实际运行中的挑战与解决方案。 ![金蝶与外部系统打通接口](https://pic.qeasy.cloud/D2.png~tplv-syqr462i7n-qeasy.image) ### 调用旺店通·企业奇门接口wdt.stockin.order.query.refund获取并加工数据 在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口`wdt.stockin.order.query.refund`,以实现销售退货数据的同步和加工。 #### 接口概述 接口`wdt.stockin.order.query.refund`用于查询销售退货订单信息。该接口采用POST请求方式,支持增量获取数据,通过传递时间参数来控制数据范围。以下是该接口的元数据配置: ```json { "api": "wdt.stockin.order.query.refund", "effect": "QUERY", "method": "POST", "number": "order_no", "id": "stockin_id", "idCheck": true, "request": [ {"field":"start_time","label":"开始时间","type":"datetime","describe":"增量获取数据,start_time作为开始时间,格式:yyyy-MM-dd HH:mm:ss","value":"{{LAST_SYNC_TIME|datetime}}"}, {"field":"end_time","label":"结束时间","type":"datetime","describe":"增量获取数据,end_time作为结束时间,格式:yyyy-MM-dd HH:mm:ss","value":"{{CURRENT_TIME|datetime}}"}, {"field":"status","label":"状态","type":"string","describe":"5已取消,55已审核,95已发货,105 部分打款,110已完成,113:异常发货"}, {"field":"src_order_no","label":"系统订单编号","type":"string"}, {"field":"src_tid","label":"原始单号","type":"string"}, {"field":"stockout_no","label":"出库单号","type":"string"}, {"field":"shop_no","label":"店铺编号","type":"string","describe":"代表店铺所有属性的唯一编码,用于店铺区分,ERP内支持自定义(ERP店铺界面设置),用于获取指定店铺单据数据信息"}, {"field":"warehouse_no","label":"仓库编号","type":"string","describe":"代表仓库所有属性的唯一编码,用于仓库区分,ERP内支持自定义(ERP仓库界面设置),用于获取指定仓库单据数据信息(不支持一次推送多个仓库编号)"}, {"label": "is_by_modified", "field": "is_by_modified", "type": "string"} ], "otherRequest": [ {"field": "page_size", "label": "page_size", "type": "string", "describe": "每页返回的数据条数,输入值范围1~50,不传本参数,输入值默认为40", "value": "{PAGINATION_PAGE_SIZE}"}, {"field": "page_no", "label": "page_no", "type": "string", "describe": "不传值默认从0页开始", "value": "{PAGINATION_START_PAGE}"} ], "autoFillResponse": true } ``` #### 请求参数配置 1. **时间参数**: - `start_time` 和 `end_time` 用于指定查询的时间范围。通过使用模板变量 `{{LAST_SYNC_TIME|datetime}}` 和 `{{CURRENT_TIME|datetime}}` 可以动态生成请求时的时间戳。 2. **状态参数**: - `status` 用于过滤不同状态的订单,例如已取消、已审核、已发货等。 3. **其他关键字段**: - `src_order_no`, `src_tid`, `stockout_no`, `shop_no`, 和 `warehouse_no` 等字段用于进一步细化查询条件。 4. **分页参数**: - `page_size` 和 `page_no` 用于控制分页请求,每次请求返回的数据条数和页码。 #### 数据处理流程 1. **调用接口**: 使用上述配置,通过POST请求调用接口获取销售退货订单数据。确保传递正确的时间范围和其他必要参数,以实现增量数据获取。 2. **数据清洗与转换**: 获取到的数据可能包含冗余或不符合目标系统要求的信息,需要进行清洗和转换。例如,将日期格式统一、过滤无效记录、根据业务需求重新组织字段等。 3. **写入目标系统**: 清洗和转换后的数据需要写入到目标系统(如金蝶)。这一步通常包括将处理后的数据映射到目标系统的数据结构,并通过相应API或数据库操作完成写入。 #### 实践案例 假设我们需要同步某一时间段内所有状态为“已完成”的销售退货订单到金蝶系统。具体步骤如下: 1. **配置请求参数**: ```json { "start_time": "{{LAST_SYNC_TIME|datetime}}", "end_time": "{{CURRENT_TIME|datetime}}", "status": "110", ... } ``` 2. **发送请求并接收响应**: 使用轻易云平台发送POST请求,并接收返回的数据列表。 3. **处理响应数据**: 对返回的数据进行清洗,如去除空值字段、转换日期格式等。 4. **写入金蝶系统**: 将处理后的数据通过金蝶API或数据库操作写入到金蝶系统中。 通过上述步骤,我们可以高效地实现销售退货订单从旺店通到金蝶系统的同步和加工。这不仅提高了业务流程的自动化程度,还确保了数据的一致性和准确性。 ![金蝶与SCM系统接口开发配置](https://pic.qeasy.cloud/S4.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台将销售退货数据同步到金蝶云星空 在数据集成生命周期的第二阶段,我们需要将已经集成的源平台数据进行ETL转换,转为目标平台金蝶云星空API接口所能够接收的格式,并最终写入目标平台。以下是如何利用元数据配置完成这一任务的详细技术步骤。 #### 配置API接口 首先,我们需要配置金蝶云星空的API接口。根据元数据配置,我们使用的是`batchSave`接口,方法为`POST`,并且需要执行操作(effect: EXECUTE)。以下是具体的配置细节: ```json { "api": "batchSave", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ { "field": "FBillTypeID", "label": "单据类型", "type": "string", "parser": { "name": "ConvertObjectParser", "params": "FNumber" }, "value": "XSTHD01_SYS" }, { "field": "FBillNo", "label": "单据编号", "type": "string", "value": "{stockin_no}" }, ... ], ... } ``` #### 数据字段解析与转换 在这个过程中,我们需要对多个字段进行解析和转换,以确保数据格式符合金蝶云星空API的要求。例如,`FBillTypeID`字段使用了`ConvertObjectParser`进行解析,其参数为`FNumber`,值为`XSTHD01_SYS`。类似地,其他字段如`FSaleOrgId`, `FStockOrgId`, `FRetcustId`, `ForaBase`, `FEntity.FMaterialId`, `FEntity.FReturnType`, `FEntity.FStockId`等也都使用了相应的解析器和参数。 #### 明细信息处理 对于明细信息(即数组类型的数据),我们需要特别处理。以下是明细信息部分的配置: ```json { "field": "FEntity", "label": "明细信息", "type": "array", ... } ``` 每个明细项包含多个字段,如物料编码、实退数量、单价、含税单价等。这些字段同样需要进行相应的解析和转换。例如: ```json { ... { "field": "FMaterialId", "label": "物料编码", ... } } ``` #### 完整请求体构建 最终,我们需要将所有字段组合成一个完整的请求体,以便发送给金蝶云星空API。以下是一个示例请求体: ```json { ... { ... { ... { ... } } } } } ``` #### 执行批量保存操作 最后,我们通过调用轻易云数据集成平台提供的方法,将构建好的请求体发送到金蝶云星空API,并执行批量保存操作。具体代码实现如下: ```python import requests url = 'https://api.kingdee.com/k3cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.BatchSave' headers = {'Content-Type': 'application/json'} data = { # 构建好的请求体 } response = requests.post(url, headers=headers, json=data) if response.status_code == 200: print("Data successfully saved to Kingdee Cloud") else: print("Failed to save data") ``` 通过以上步骤,我们成功地将销售退货数据从源平台转换并写入到金蝶云星空,实现了系统间的数据无缝对接。这一过程不仅提高了业务效率,还确保了数据的一致性和准确性。 ![打通用友BIP数据接口](https://pic.qeasy.cloud/T14.png~tplv-syqr462i7n-qeasy.image)