API接口在企业数据集成中的应用实例:从旺店通到金蝶云

  • 轻易云集成顾问-谢楷斌
### 旺店通·旗舰奇门数据集成到金蝶云星空:从采购退货单到其他出库单的技术实现 在企业物流管理中,效率和准确性是至关重要的因素。为了优化业务流程,将旺店通·旗舰奇门系统中的采购退货单高效地集成到金蝶云星空系统中的其他出库单【生产退货】成为了我们的主要任务。本案例将详细描述如何通过API接口,高效、安全且无缝地完成这一数据对接。 首先,通过调用旺店通·旗舰奇门提供的数据查询API `wdt.wms.stockout.purchasereturn.querywithdetail`,我们能够定时可靠地抓取采购退货相关信息。这些信息需要经过自定义的数据转换逻辑,以适应金蝶云星空的特定数据结构,如单位换算、字段重命名等。同时,为了确保数据质量,我们引入了异常检测机制,即使在抓取过程中遇到分页和限流问题,也能够及时发现并处理,从而保证数据不漏单。 接下来,处理后的数据会批量写入金蝶云星空。此过程中使用的是它们提供的`batchSave` API接口,该接口支持高吞吐量的数据写入能力,可以快速、高效地存储大量订单信息。此外,我们还启用了实时监控与告警系统,在整个集成过程实时跟踪每个任务状态和性能表现,让团队可以及时响应任何异常情况。 尤其值得注意的是,由于两大平台间存在不同的数据格式要求,必须进行细致周全的数据映射和转化。在对接实施中,还需充分考虑错误重试机制,当发生网络抖动或临时不可用情况时,可自动重新尝试提交以确保最终一致性。 通过上述技术手段,不仅实现了两个系统之间的大规模、高效率双向同步,更为日后类似项目奠定了坚实基础,实现资源高效利用与优化配置。 ![如何开发企业微信API接口](https://pic.qeasy.cloud/D14.png~tplv-syqr462i7n-qeasy.image) ### 调用源系统旺店通·旗舰奇门接口获取并加工数据 在数据集成生命周期的第一步中,调用源系统的API接口是关键环节。本文将详细探讨如何通过轻易云数据集成平台调用旺店通·旗舰奇门接口`wdt.wms.stockout.purchasereturn.querywithdetail`获取并加工数据。 #### 接口配置与请求参数 首先,我们需要配置接口的元数据。根据提供的metadata,我们可以看到该接口使用POST方法,主要用于查询采购退货单的详细信息。以下是请求参数的详细配置: ```json { "api": "wdt.wms.stockout.purchasereturn.querywithdetail", "method": "POST", "number": "order_no", "id": "stockout_id", "idCheck": true, "formatResponse": [ { "old": "remark", "new": "remark_new", "format": "string" } ], "request": [ { "field": "params", "label": "查询参数", "type": "object", "describe": "查询参数", "children": [ { "field": "status", "label": "出库单状态", "type": "string", "describe": `由逗号分隔的整数数组\n\n出库单状态: \n5已取消 \n48 未确认 \n50 待审核 \n77 拣货中,PDA拣货后 \n110已完成`, "value":"110" }, { ... } ] }, { ... } ], ... } ``` 在上述配置中,`params`对象包含了多个子字段,用于指定查询条件。例如,`status`字段用于过滤出库单状态,这里我们设置为"110"表示已完成状态。此外,还可以通过`stockout_no`、`out_start_time`、`warehouse_no`等字段进一步细化查询条件。 #### 请求示例 基于上述配置,我们构建一个实际的请求示例: ```json { "params": { "status": ["110"], ... // 其他必要的查询参数 }, ... } ``` 在这个请求中,我们指定了出库单状态为已完成,并根据业务需求添加了其他必要的查询条件,如出库时间范围和仓库编号等。 #### 数据清洗与格式转换 获取到原始数据后,需要进行清洗和格式转换。根据metadata中的配置,我们需要将返回结果中的`remark`字段重命名为`remark_new`,并确保其格式为字符串。这一步骤可以通过轻易云平台提供的数据处理功能轻松实现。 以下是一个简单的数据转换示例: ```json { ... // 原始响应数据 { ... remark: 'some remark' ... }, // 转换后的数据 { ... remark_new: 'some remark' ... } } ``` #### 实践案例 假设我们需要从旺店通系统中获取所有在特定时间段内已完成的采购退货单,并将其导入到金蝶系统作为其他出库单。以下是具体操作步骤: 1. **配置接口元数据**:按照metadata中的要求,在轻易云平台上配置好接口元数据。 2. **构建请求**:根据业务需求构建具体的API请求,设置必要的查询参数。 3. **调用接口**:通过轻易云平台发起API调用,获取原始数据。 4. **清洗与转换**:对返回的数据进行清洗和格式转换,将必要字段重命名并调整格式。 5. **写入目标系统**:将处理后的数据写入金蝶系统,完成从采购退货单到其他出库单的数据集成。 通过以上步骤,我们实现了从旺店通系统到金蝶系统的数据无缝对接,有效提升了业务流程的自动化和效率。 ![泛微OA与ERP系统接口开发配置](https://pic.qeasy.cloud/S13.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台生命周期第二步:ETL转换与数据写入金蝶云星空API接口 在轻易云数据集成平台的生命周期中,第二步是将已经集成的源平台数据进行ETL转换,并转为目标平台金蝶云星空API接口所能够接收的格式,最终写入目标平台。本文将详细探讨这一过程中的技术细节和实现方法。 #### 数据请求与清洗 首先,我们需要从源系统(如旺店通)获取采购退货单的数据。这一步主要涉及数据请求和清洗,将原始数据转化为适合进一步处理的结构化数据。 #### 数据转换与写入 接下来,我们重点讨论如何将清洗后的数据通过ETL转换,写入到金蝶云星空系统中。以下是具体的元数据配置和操作步骤: ##### 元数据配置解析 1. **API接口配置**: ```json { "api": "batchSave", "method": "POST", "idCheck": true, "operation": { "rowsKey": "array", "rows": 1, "method": "batchArraySave" } } ``` 这里定义了API接口为`batchSave`,使用HTTP POST方法进行数据提交,并启用了ID检查功能。`operation`字段指定了批量保存操作的细节。 2. **请求参数配置**: 请求参数主要分为两部分:表头信息和明细信息。 - **表头信息**: ```json [ {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{order_no}"}, {"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"QTCKD14_SYS"}, {"field":"FPickOrgId","label":"领用组织","type":"string","value":"100.01","parser":{"name":"ConvertObjectParser","params":"FNumber"}}, {"field":"FStockOrgId","label":"库存组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"100.01"}, {"field":"FDate","label":"日期","type":"string","describe":"日期","value":"{{consign_time|datetime}}"}, {"field":"FOwnerTypeIdHead","label":"货主类型","type":"string","describe":"多类别基础资料列表","value":"BD_OwnerOrg"}, {"field":"FOwnerIdHead","label":"货主","type":"string","describe":"多类别基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"100.01"}, {"field":"FDeptId","label":"领料部门","type":"string","describe":"","value":"","parser":{"name":"","params":""}}, {"field":"","label":"","type":"","describe":"","value":""}, {"field":"","label":"","type":"","describe":"","value":""} ] ``` 这些字段包括了单据编号、单据类型、领用组织、库存组织、日期、货主类型、货主等关键信息。使用了`ConvertObjectParser`解析器来转换特定字段值。 - **明细信息**: ```json { "FEntity":[ {"field":"","label":"","type":"","describe":"","value":"","parent":""}, {"field":"","label":"","type":"","describe":"","value":"","parent":""}, {"field":"","label":"","type":"","describe":"","value":"", "parent":""} ] } ``` 明细信息部分包含物料编码、实发数量、发货仓库等详细字段,同样使用了解析器来处理特定字段值。 3. **其他请求参数**: ```json [ {"field":"", "label":"", "type":"", "describe":"", "value":"", }, {"field":"", "label":"", "type":"", "describe":"", "value":"", }, {"field":"", "label":"", "type":"", "describe":"", "value":"", } ] ``` 4. **示例代码**: ```python import requests import json # 定义API URL url = 'https://api.kingdee.com/batchSave' # 定义请求头 headers = { 'Content-Type': 'application/json' } # 定义请求体 payload = { 'FormId': 'STK_MisDelivery', 'IsAutoSubmitAndAudit': True, 'IsVerifyBaseDataField': True, 'Operation': 'Save', 'InterationFlags': 'STK_InvCheckResult', 'Model': { 'FBillNo': order_no, 'FBillTypeID': {'FNumber': 'QTCKD14_SYS'}, ... } } # 发送POST请求 response = requests.post(url, headers=headers, data=json.dumps(payload)) # 打印响应结果 print(response.json()) ``` 上述代码展示了如何通过Python脚本向金蝶云星空API接口发送POST请求,将处理后的采购退货单数据写入目标系统。 #### 总结 通过详细解析元数据配置和实际操作步骤,我们展示了如何利用轻易云数据集成平台实现从源系统到目标系统的数据ETL转换和写入过程。这一过程不仅确保了数据的一致性和完整性,还极大提升了业务处理效率。 ![金蝶与外部系统打通接口](https://pic.qeasy.cloud/T10.png~tplv-syqr462i7n-qeasy.image)