金蝶云星空API接口的数据转换与写入方案解析

  • 轻易云集成顾问-卢剑航
### 旺店通销售出库单数据集成至金蝶云星空的技术案例分享 在大量订单管理和仓储运营过程中,系统之间的数据同步与精准对接显得尤为关键。本文将介绍如何通过轻易云数据集成平台,实现将旺店通·企业奇门(以下简称“旺店通”)的销售出库单数据无缝集成到金蝶云星空,特别是补货与换货类型的订单处理。 为了确保整个流程中每一笔订单都能准确地从旺店通传递到金蝶云星空,我们采取了多项措施来保证数据不漏单,并优化了批量写入操作。在接下来的内容中,将详细讲解我们具体实施这一方案时的一些关键技术点和策略。 首先,通过调用旺店通提供的`wdt.stockout.order.query.trade`接口,我们定时可靠地抓取待处理的销售出库单数据。此接口支持分页查询,但需注意其限流政策,因此,我们设计了一套合适的请求速率控制机制,以避免触发API限制。此外,为保证高效采集大量订单信息,在提取数据后立即进行本地缓存和预处理,从而减少网络延迟及重复请求次数。 其次,对于获取到的大量销售出库单,经由轻易云的数据映射工具,对其进行格式转换,使之符合金蝶云星空所要求的数据规范。这一步骤包含了复杂字段匹配、值域转换等操作,即便两者之前存在较大结构差异,也可通过灵活配置自定义规则来完成平滑过渡。 最后,在将整理好的订单批量写入金蝶云星空时,我们选择使用其官方提供的`batchSave` API,该接口能够有效提升大规模数据传输效率。同时,为应对可能出现的异常情况,如网络波动或服务器故障等,每次写入操作都会结合错误重试机制及详细日志记录,以便能快速追踪并解决问题,确保业务不中断运行。 总结来说,本次系统对接不仅涉及API层面的交互,还涵盖全面的数据生命周期管理。通过这些细致且严谨的方法步骤,不仅实现了两个系统间高效、稳定的数据交互,更为企业日常运营中的各类场景提供了有力保障。 ![电商OMS与ERP系统接口开发配置](https://pic.qeasy.cloud/D32.png~tplv-syqr462i7n-qeasy.image) ### 调用旺店通·企业奇门接口wdt.stockout.order.query.trade获取并加工数据 在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口`wdt.stockout.order.query.trade`来获取并加工销售出库单数据。 #### 接口配置与请求参数 首先,我们需要配置接口的元数据。根据提供的元数据配置,接口使用POST方法进行调用,主要参数如下: - `start_time` 和 `end_time`:用于增量获取数据,分别表示开始时间和结束时间,格式为`yyyy-MM-dd HH:mm:ss`。 - `status`:表示订单状态,如已取消、已审核、已发货等。 - `src_order_no`、`src_tid`、`stockout_no`:分别表示系统订单编号、原始单号和出库单号。 - `shop_no` 和 `warehouse_no`:分别表示店铺编号和仓库编号,用于区分不同店铺和仓库的数据。 此外,还有分页参数: - `page_size`:每页返回的数据条数,默认值为40。 - `page_no`:页号,不传值默认从0页开始。 #### 请求示例 以下是一个典型的请求示例: ```json { "start_time": "2023-10-01 00:00:00", "end_time": "2023-10-02 00:00:00", "status": "95", "shop_no": "SHOP123", "warehouse_no": "WAREHOUSE456", "page_size": "40", "page_no": "0" } ``` #### 数据清洗与转换 在获取到原始数据后,需要对其进行清洗与转换,以便后续写入目标系统。在这个过程中,可以利用轻易云平台提供的可视化工具,对数据进行以下处理: 1. **字段映射**:将源系统中的字段映射到目标系统中对应的字段。例如,将源系统中的`stockout_no`映射到目标系统中的出库单号字段。 2. **数据过滤**:根据业务需求过滤掉不需要的数据。例如,只保留状态为已发货(status=95)的订单。 3. **格式转换**:将日期时间格式统一转换为目标系统所需的格式。 #### 自动填充响应 轻易云平台支持自动填充响应功能,即在请求完成后自动将响应结果填充到指定的数据结构中。这一步骤极大地简化了数据处理流程,使得开发人员可以专注于业务逻辑而非底层实现。 #### 条件过滤 在实际应用中,我们可能需要对请求结果进行进一步的条件过滤。根据元数据配置,可以添加如下条件: ```json "condition":[ {"field":"trade_type","logic":"in","value":"2,3,7,101,8"}, {"field":"shop_name","logic":"neqv2","value":"系统分销店铺ae89e42"} ] ``` 这些条件确保了我们只获取符合特定业务规则的数据,从而提高了数据处理的效率和准确性。 #### 实时监控与调试 轻易云平台提供实时监控功能,可以实时查看数据流动和处理状态。在调试阶段,可以通过日志和监控界面快速定位问题并进行修正。这对于确保数据集成过程的稳定性和可靠性至关重要。 通过上述步骤,我们可以高效地调用旺店通·企业奇门接口获取销售出库单数据,并对其进行清洗与转换,为后续的数据写入做好准备。这一过程不仅提升了业务透明度,也极大地提高了工作效率。 ![金蝶与MES系统接口开发配置](https://pic.qeasy.cloud/S12.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台实现金蝶云星空API接口的数据转换与写入 在数据集成生命周期的第二步,我们将已经集成的源平台数据进行ETL转换,转为目标平台金蝶云星空API接口所能够接收的格式,并最终写入目标平台。本文将详细探讨如何通过轻易云数据集成平台配置元数据,实现这一过程。 #### API接口配置 在本案例中,我们使用金蝶云星空的`batchSave` API接口来处理销售出库单的数据写入。该接口采用POST方法,并且需要验证基础资料的有效性。以下是具体的元数据配置: ```json { "api": "batchSave", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ { "field": "FBillTypeID", "label": "单据类型", "type": "string", "describe": "单据类型", "value": "_function CASE {trade_type} WHEN '2' THEN 'ZYD-017' WHEN '3' THEN 'ZYD-104' WHEN '7' THEN 'ZYD-105' WHEN '8' THEN 'ZYD-105' WHEN '101' THEN 'ZYD-103' END", "parser": { "name": "ConvertObjectParser", "params": "FNUMBER" } }, { "field": "FBillNo", "label": "单据编号", "type": "string", "describe": "单据编号", "value": "{order_no}" }, { ... } ], ... } ``` #### 配置解析 1. **FBillTypeID(单据类型)**: - 使用了一个条件函数 `_function CASE {trade_type} ... END` 来根据 `trade_type` 字段值动态生成单据类型。 - `parser` 使用 `ConvertObjectParser` 将其转换为金蝶系统识别的 `FNUMBER` 格式。 2. **FBillNo(单据编号)**: - 直接映射 `order_no` 字段,无需额外处理。 3. **FDate(日期)**: - 映射 `consign_time` 字段,表示出库日期。 4. **FSaleOrgId(销售组织)**: - 使用条件函数 `_function CASE '{shop_no}' ... END` 根据 `shop_no` 字段值确定销售组织。 - 同样使用 `ConvertObjectParser` 转换为 `FNumber` 格式。 5. **FCustomerID(客户)**: - 映射 `shop_no` 字段,并使用 `ConvertObjectParser` 转换为 `FNumber` 格式。 6. **FStockOrgId(发货组织)**: - 与销售组织类似,通过条件函数和解析器进行映射和转换。 7. **FSaleDeptID(销售部门)**: - 映射并转换 `shop_no` 字段,附加了一个映射关系 `{mapping}` 用于特定字段转换。 #### 子表配置 对于子表数据,我们需要处理每个明细行的数据: ```json { ... { "field": "FEntity", ... "children": [ { ... { "field": "FMaterialID", ... { ... {"field":"FLot","label":"批{batch_no}","type":"string","value":"_function CASE WHEN {spec_no} LIKE '8%' THEN '0' ELSE '' END","parser":{"name":"ConvertObjectParser","params":"FNumber"}} } } } ] } } ``` 1. **FMaterialID(物料编码)**: - 映射 `spec_no` 字段,并使用解析器转换为金蝶系统识别的物料编码格式。 2. **FStockID(仓库)**: - 使用 `_findCollection find FNumber from ... where FName={warehouse_name}` 查找并映射仓库信息。 3. **FLot(批次号)**: - 使用条件函数 `_function CASE WHEN {spec_no} LIKE '8%' THEN '0' ELSE '' END` 根据物料编码生成批次号,并进行解析转换。 #### 其他请求参数 除了主要字段外,还需要配置一些其他请求参数,以确保API调用成功: ```json { ... {"field":"FormId","label":"FormId","type":"string","describe":"必须填写金蝶的表单ID如:PUR_PurchaseOrder","value":"SAL_OUTSTOCK"}, {"field":"Operation","label":"Operation","type":"string","value":"Save"}, {"field":"IsAutoSubmitAndAudit","label":"IsAutoSubmitAndAudit","type":"bool","value":"true"}, {"field":"IsVerifyBaseDataField","label":"IsVerifyBaseDataField","type":"bool","describe":"是否验证所有的基础资料有效性,布尔类,默认false(非必录)","value":"true"}, {"field":"SubSystemId","label":"SubSystemId","type":"string","describe":"默认仓库模块","value":"21"}, {"field":"IgnoreInterationFlag","label":"IgnoreInterationFlag","type":"string","value":"true"}, {"field":"InterationFlags","label":"InterationFlags","type":"string","value":"STK_InvCheckResult"} } ``` 这些参数确保了数据能够正确地提交到金蝶云星空系统,并触发相应的操作,如自动提交和审核、验证基础资料有效性等。 通过上述配置,我们可以实现从源平台到金蝶云星空API接口的数据无缝对接,确保每个字段都能正确映射和转换,从而保证数据的一致性和完整性。 ![如何对接企业微信API接口](https://pic.qeasy.cloud/T20.png~tplv-syqr462i7n-qeasy.image)