金蝶云星空API调用指南:从旺店通抓取数据到写入

  • 轻易云集成顾问-黄宏棵
### 案例分享:旺店通·企业奇门数据集成到金蝶云星空 在本文中,我们将探讨如何实现从旺店通·企业奇门系统获取销售出库订单数据并高效集成至金蝶云星空。具体案例为"旺店通回写星空销售出库",充分利用轻易云数据集成平台的特性,保障了大批量数据的快速且可靠地传输和存储。 首先,在对接过程中,为确保不漏单的数据完整性,选择了调用旺店通·企业奇门接口`wdt.stockout.order.query.trade`按分页抓取销售出库订单数据,每次请求处理一块可控大小的数据片段,解决了API限流问题。此外,通过轻易云强大的实时监控与日志功能,全程跟踪每一个环节的数据操作,及时捕捉并处理异常情况。 其次,当面对来自不同系统之间的数据格式差异时,我们通过定制化的数据映射,对接两边要求的字段和结构。同时,在批量写入到金蝶云星空过程中,通过调用其`batchSave`接口,一方面极大提升了数据处理效率;另一方面也确保所有交易记录都有迹可循,可重复检测。 最后,在整个项目实施期间,还增强了错误重试机制,以便在网络波动或其他意外情况下,实现自动重试,从而减少人工介入,提高整体流程的鲁棒性。这些技术手段一起构建起一个稳定、可靠、高效的跨平台数据同步方案,为后续业务扩展打下坚实基础。 ![如何开发金蝶云星空API接口](https://pic.qeasy.cloud/D13.png~tplv-syqr462i7n-qeasy.image) ### 调用旺店通·企业奇门接口获取并加工数据 在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口 `wdt.stockout.order.query.trade` 获取并加工数据。 #### 接口调用配置 首先,我们需要配置元数据,以便正确调用 `wdt.stockout.order.query.trade` 接口。以下是具体的元数据配置: ```json { "api": "wdt.stockout.order.query.trade", "method": "POST", "number": "order_no", "id": "stockout_id", "pagination": { "pageSize": 100 }, "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:异常发货", "value": "55" }, { "field": "src_order_no", "label": "系统订单编号", ... } ], ... } ``` #### 请求参数解析 1. **开始时间和结束时间**: - `start_time` 和 `end_time` 用于指定查询的时间范围。这两个字段采用动态参数 `{{LAST_SYNC_TIME|datetime}}` 和 `{{CURRENT_TIME|datetime}}` 来自动填充上次同步时间和当前时间。 2. **状态**: - `status` 字段用于过滤订单状态。在本例中,我们设置为 `55`(已审核),以确保只获取已审核的订单。 3. **分页参数**: - 为了处理大批量的数据,我们使用分页机制。通过设置 `page_size` 和 `page_no` 参数,可以控制每次请求返回的数据条数和页码。 #### 数据请求与清洗 在配置好元数据后,我们可以开始实际的数据请求过程。以下是一个典型的数据请求流程: 1. **发送请求**: - 使用 POST 方法向接口发送请求,并附带上述配置的参数。 2. **接收响应**: - 接收接口返回的数据,并进行初步检查,如检查 HTTP 状态码和响应体结构。 3. **数据清洗**: - 对接收到的数据进行清洗,包括去除无效字段、标准化日期格式、处理缺失值等。例如,将所有日期字段统一转换为 ISO8601 格式。 #### 数据转换与写入 在完成数据清洗后,需要将其转换为目标系统所需的格式,并写入目标数据库或系统。这个过程通常包括以下步骤: 1. **字段映射**: - 将源系统中的字段映射到目标系统中的对应字段。例如,将 `order_no` 映射到目标系统中的 `order_number`。 2. **数据类型转换**: - 根据目标系统的要求,对字段的数据类型进行转换。例如,将字符串类型的日期转换为日期对象。 3. **批量写入**: - 为了提高效率,可以采用批量写入的方式,将处理好的数据一次性写入目标系统。 通过上述步骤,我们可以高效地从旺店通·企业奇门接口获取并加工所需的数据,为后续的数据集成工作打下坚实基础。 ![打通钉钉数据接口](https://pic.qeasy.cloud/S10.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台实现金蝶云星空销售出库数据写入 在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL转换,转为目标平台金蝶云星空API接口所能够接收的格式,并最终写入目标平台。本文将详细探讨如何通过轻易云数据集成平台配置元数据,实现这一过程。 #### API接口配置 首先,我们需要了解金蝶云星空的API接口配置。根据元数据配置,目标API为`batchSave`,请求方法为`POST`。以下是具体的配置细节: ```json { "api": "batchSave", "method": "POST", "idCheck": true, "operation": { "method": "batchArraySave", "rows": 1, "rowsKey": "array" }, "request": [ { "field": "FID", "label": "单据编号", "type": "string", "describe": "单据编号", "value": "_function substring_index('{src_tids}','_',-1)" }, { "field": "FEntity", "label": "明细", "type": "array", "children": [ { "parent": "FPAYBILLENTRY", "label": "单据体", "field": "FEntryID", "type": "string", "value": "_function substring_index('{{details_list.src_oid}}','_',1)" }, { "parent": "FPAYBILLENTRY", "label": "物流单号", "field": "F_VTRK_Text4", "type": "string", "value":"{order_no}" } ], 'value': 'details_list' } ], 'otherRequest': [ { 'field': 'FormId', 'label': '业务对象表单Id', 'type': 'string', 'describe': '必须填写金蝶的表单ID如:PUR_PurchaseOrder', 'value': 'SAL_OUTSTOCK' }, { 'field': 'Operation', 'label': '执行的操作', 'type': 'string', 'value': 'BatchSave' }, { 'field': 'IsUserModelInit', 'label': '是否网控', 'type': 'bool', 'value': true }, { 'field': 'IsDeleteEntry', 'label': '是否删除分录', 'type':'bool', 'describe':'是否删除分录,布尔类,改false(非必录)',   'value':'false'     },     {       'field':'IsVerifyBaseDataField',       'label':'验证基础资料',       'type':'bool',       'describe':'是否验证所有的基础资料有效性,布尔类,默认false(非必录)',       'value':'false'     },     {       'label':'NeedUpDateFields',       'field':'NeedUpDateFields',       'type':'string',       'value':'FEntity,F_VTRK_Text4',       'parser':{         'name':'StringToArray',         'params':','        }     } ] } ``` #### 数据字段映射 在上述配置中,我们定义了多个关键字段及其映射关系: - `FID`: 单据编号,通过函数`substring_index('{src_tids}','_',-1)`从源数据中提取。 - `FEntity`: 明细字段,是一个数组类型,其中包含两个子字段: - `FEntryID`: 单据体,通过函数`substring_index('{{details_list.src_oid}}','_',1)`从源数据中提取。 - `F_VTRK_Text4`: 物流单号,直接映射为源数据中的`order_no`。 此外,还有一些其他请求参数,如业务对象表单ID (`FormId`) 设置为 `SAL_OUTSTOCK`,执行操作 (`Operation`) 为 `BatchSave` 等。 #### 数据转换与写入 在实际操作中,轻易云平台会根据上述元数据配置,将源平台的数据进行相应的转换和处理。具体步骤如下: 1. **提取源数据**: 从源系统中获取原始数据,例如订单编号、物流单号等。 2. **应用转换规则**: 根据元数据中的函数和映射规则,对原始数据进行处理。例如,通过`substring_index`函数提取特定部分的数据。 3. **组装请求体**: 将处理后的数据按照目标API接口要求的格式组装成请求体。 4. **发送请求**: 向金蝶云星空API发送HTTP POST请求,将转换后的数据写入目标系统。 通过这种方式,我们可以确保不同系统之间的数据无缝对接,实现高效的数据集成和处理。 #### 实际案例分析 假设我们有以下源数据: ```json { src_tids: ["ORD_12345"], details_list: [ { src_oid: ["DET_67890"], order_no: ["EXP_123456"] } ] } ``` 根据元数据配置和转换规则,我们可以得到以下目标API请求体: ```json { FormId: “SAL_OUTSTOCK”, Operation: “BatchSave”, IsUserModelInit: true, IsDeleteEntry: false, IsVerifyBaseDataField: false, NeedUpDateFields: ["FEntity", “F_VTRK_Text4”], FID: “12345”, FEntity: [ { FEntryID: “67890”, F_VTRK_Text4: “EXP_123456” } ] } ``` 以上就是使用轻易云平台实现金蝶云星空销售出库数据写入的完整技术案例。通过详细的元数据配置和灵活的数据转换规则,我们可以高效地完成异构系统之间的数据集成任务。 ![钉钉与CRM系统接口开发配置](https://pic.qeasy.cloud/T30.png~tplv-syqr462i7n-qeasy.image)