轻易云数据平台如何优化金蝶云星空API的调用与分页处理

  • 轻易云集成顾问-钟家寿
### 案例分享:金蝶云星空数据集成到旺店通·旗舰版 在企业的日常运营中,系统间的数据集成是实现高效业务流程的关键步骤。本文将详细介绍一个实际运行中的技术方案:通过轻易云平台,将金蝶云星空的数据集成到旺店通·旗舰版进行出库业务处理。 以标准-金蝶-子品组装——>旺店通-委外仓退(出库业务)为例,我们重点探讨如何确保数据在整个流转过程中不漏单、高效写入及稳定性。这其中包括从金蝶云星空接口executeBillQuery抓取订单信息,再经由批量加工和格式转化,最终调用旺店通·旗舰版的wms.stockother.Out.push接口完成出库操作。 首先,为保障数据准确性,通过定时可靠地抓取金蝶云星空API executeBillQuery接口的数据,每次抓取后的分页和限流问题会采用自定义逻辑进行优化,以保证全面获取、无遗漏。在这一过程中,我们还要处理两套系统之间可能存在的数据格式差异,这需要对接前置处理逻辑做精细调整,确保每条记录都能顺利传输并被正确解析。 为了进一步提高效率,大量订单的信息需快速写入到目标平台内。我们采用了批量提交方式,通过分片处理来减少网络开销,提高总吞吐率。而对于高频交易下可能出现的异常情况和错误重试机制,则设计了一套完善的监控与日志记录体系,实时跟踪每条数据流转状态并及时发现解决问题。这不仅提升了整体稳定性,还提供了有力的运维支撑。 最后,对于用户特别关注的数据安全与隐私,通过实施严格权限控制和准入审查制度,在任何情况下,都能尽最大努力保护敏感信息不被泄露或误用,使得整个过程更加可靠、安全。 ![打通钉钉数据接口](https://pic.qeasy.cloud/D14.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成过程中,调用源系统的API接口是获取数据的关键步骤。本文将深入探讨如何使用轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口,以获取并加工所需的数据。 #### 接口概述 金蝶云星空的`executeBillQuery`接口用于查询业务单据信息。该接口采用POST请求方式,支持多种查询条件和字段选择,能够灵活地满足各种业务需求。以下是该接口的主要元数据配置: - **API**: `executeBillQuery` - **Method**: `POST` - **Effect**: `QUERY` - **FormId**: `STK_AssembledApp`(业务对象表单ID) #### 请求参数配置 在调用`executeBillQuery`接口时,需要配置一系列请求参数。这些参数包括实体主键、单据编号、单据状态等,具体如下: ```json { "FID": "实体主键", "FBillNo": "单据编号", "FDocumentStatus": "单据状态", "FStockOrgId_FNumber": "库存组织", "FDate": "日期", "FBillTypeID": "单据类型", ... } ``` 其中,关键字段如`FBillNo`(单据编号)、`FDocumentStatus`(单据状态)等在实际业务中尤为重要。例如,可以通过设置`FDocumentStatus`为特定值来筛选出不同状态的单据。 #### 分页与过滤条件 为了提高查询效率和避免数据量过大导致的性能问题,分页和过滤条件是必不可少的配置项: - **Limit**: 最大行数 - **StartRow**: 开始行索引 - **FilterString**: 过滤条件,例如: ```sql FApproveDate >= '{{LAST_SYNC_TIME|datetime}}' AND FStockOrgId.FNumber = '101' AND FStockIDSETY.F_TBIK_Assistant_qtr = '委外仓' AND FAffairType = 'Assembly' AND FDate >= '2024-08-05 17:30:00' ``` 通过上述过滤条件,可以精确地筛选出符合特定时间范围、库存组织、事务类型等要求的数据。 #### 字段选择 为了避免不必要的数据传输,可以通过配置`FieldKeys`来指定需要查询的字段集合。例如: ```json { "FieldKeys": [ "FID", "FBillNo", "FDocumentStatus", ... ] } ``` 这些字段将决定返回结果中的数据结构,有助于后续的数据处理和分析。 #### 调用示例 以下是一个完整的调用示例,通过轻易云平台发起POST请求: ```json { "api": "executeBillQuery", "method": "POST", "request": { "FormId": "STK_AssembledApp", "FieldKeys": ["FID", "FBillNo", ...], "FilterString": "FApproveDate >= '{{LAST_SYNC_TIME|datetime}}' AND FStockOrgId.FNumber = '101' AND FStockIDSETY.F_TBIK_Assistant_qtr = '委外仓' AND FAffairType = 'Assembly' AND FDate >= '2024-08-05 17:30:00'", ... } } ``` 该请求将返回符合条件的业务单据信息,供后续的数据清洗和转换使用。 #### 数据清洗与加工 获取到原始数据后,需要对其进行清洗和加工,以满足目标系统的数据格式要求。例如,可以对日期格式进行转换,对金额字段进行汇总计算等。这一步骤通常在轻易云平台内通过可视化操作界面完成,使得整个过程透明且高效。 #### 总结 调用金蝶云星空的`executeBillQuery`接口是数据集成生命周期中的关键环节。通过合理配置请求参数、分页与过滤条件,以及字段选择,可以高效地获取所需数据,并为后续的数据清洗与转换奠定基础。在实际应用中,应根据具体业务需求灵活调整这些配置,以实现最佳效果。 ![企业微信与ERP系统接口开发配置](https://pic.qeasy.cloud/S13.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台实现ETL转换并写入旺店通·旗舰版API接口 在数据集成生命周期的第二步,主要任务是将已经集成的源平台数据进行ETL转换,并转为目标平台所能够接收的格式。本文将详细探讨如何使用轻易云数据集成平台,将标准-金蝶-子品组装的数据转换为旺店通·旗舰版API接口所需的格式,并最终写入目标平台。 #### 1. API接口元数据配置 首先,我们需要了解目标API接口的元数据配置。这是确保数据能够正确传输和写入的重要基础。以下是我们需要遵循的元数据配置: ```json { "api": "wms.stockother.Out.push", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ { "field": "order", "label": "单据头", "type": "object", "children": [ {"field": "outer_no", "label": "外部单号", "type": "string", "value": "{FBillNo}"}, {"field": "warehouse_no", "label": "仓库编号", "type": "string", "value": "{FStockIDSETY_FNumber}"}, {"field": "reason", "label": "出库原因", "type": "string", "value": "子品组装出库"}, {"field": "is_check", "label": "是否审核", "type":"string","value":"true"}, {"field":"remark","label":"备注","type":"string","value":"{FNote}"}, {"field":"receiver_name","label":"收件人名称","type":"string","value":"接口传单"}, {"field":"receiver_mobile","label":"收件人电话","type":"string","value":"18888888888"}, {"field":"receiver_province","label":"省","type":"string","value":"广东省"}, {"field":"receiver_city","label":"市","type":"string","value":"广州市"}, {"field":"receiver_district","label":"区","type":"string","value":"白云区"}, {"field":"receiver_address","label":"地址","type":"string","value":"接口传单"} ] }, { "field": “order_details”, “label”: “单据明细”, “type”: “array”, “value”: “list”, “children”: [ {“field”: “spec_no”, “label”: “商家编码”, “type”: “string”, “value”: “{FMaterialIDSETY_FNumber}”}, {“field”: “num”, “label”: “数量”, “type”: “string”, “value”: “{FQtySETY}”}, {“field”:“remark”,“label”:”明细备注“,“type”:”string“,“value”:”{FDescriptionSETY}“} ] } ], ”groupCalculate”:{ ”headerGroup”:[“FBillNo”,“FStockIDSETY_FNumber”,“FID”,“FNote”], ”bodyGroup”:[“FMaterialIDSETY_FNumber”,“FDescriptionSETY”,“FMaterialIDSETY_FRefCost”], ”bodyName”:”list”, ”calculate”:{ ”FQtySETY”:”$sum” } }, ”buildModel”:true } ``` #### 2. 数据请求与清洗 在开始ETL转换之前,首先需要从源系统(金蝶)获取原始数据,并进行必要的清洗和预处理。这一步骤确保了数据的一致性和完整性,为后续的转换工作打下基础。 #### 3. 数据转换与写入 接下来,我们进入关键步骤:将清洗后的数据按照目标API接口的要求进行转换,并通过POST方法写入旺店通·旗舰版。以下是详细步骤: ##### a. 构建请求头(Order) 根据元数据配置,我们需要构建一个包含多个字段的请求头对象`order`。每个字段都需要从源系统的数据中提取并映射到相应的位置。例如: - `outer_no` 映射到 `{FBillNo}` - `warehouse_no` 映射到 `{FStockIDSETY_FNumber}` - `reason` 固定值为 `子品组装出库` - `is_check` 固定值为 `true` - `remark` 映射到 `{FNote}` - 收件人信息(如名称、电话、省、市、区、地址)可以设定为固定值或根据业务需求动态生成。 ##### b. 构建请求体(Order Details) 请求体部分是一个数组,包含多个订单明细对象`order_details`。每个对象也需要从源系统的数据中提取并映射。例如: - `spec_no` 映射到 `{FMaterialIDSETY_FNumber}` - `num` 映射到 `{FQtySETY}` - `remark` 映射到 `{FDescriptionSETY}` ##### c. 聚合计算 在构建过程中,需要对某些字段进行聚合计算。例如,对于数量字段`num`,我们可能需要对同一订单中的多个项目进行求和操作,这可以通过配置中的 `$sum` 实现。 ##### d. 最终构建与发送请求 最后,将所有构建好的数据对象组合起来,通过HTTP POST方法发送至目标API接口。示例代码如下: ```python import requests import json url = 'https://api.wangdian.cn/openapi2/wms.stockother.Out.push' headers = {'Content-Type': 'application/json'} data = { 'order': { 'outer_no': FBillNo, 'warehouse_no': FStockIDSETY_FNumber, 'reason': '子品组装出库', 'is_check': 'true', 'remark': FNote, 'receiver_name': '接口传单', 'receiver_mobile': '18888888888', 'receiver_province': '广东省', 'receiver_city': '广州市', 'receiver_district': '白云区', 'receiver_address': '接口传单' }, 'order_details': [ { 'spec_no': FMaterialIDSETY_FNumber, 'num': FQtySETY, 'remark': FDescriptionSETY } # 可以有多个明细对象 ] } response = requests.post(url, headers=headers, data=json.dumps(data)) print(response.json()) ``` 通过上述步骤,我们成功地将标准-金蝶-子品组装的数据转换并写入旺店通·旗舰版API接口,实现了跨系统的数据无缝对接。 ![金蝶与MES系统接口开发配置](https://pic.qeasy.cloud/T13.png~tplv-syqr462i7n-qeasy.image)