ETL实践:将旺店通入库数据转换并写入金蝶云星空

  • 轻易云集成顾问-曾平安
### 旺店通·企业奇门数据集成到金蝶云星空的技术案例分享 在系统集成项目中,如何高效、精准地对接不同平台的数据一直是一个关键挑战。本案例聚焦于将旺店通·企业奇门中的入库确认数据通过调用`wdt.stockin.order.query`接口,实时、高效地写入金蝶云星空系统,并生成直接调拨单。 为了确保整个数据处理过程无遗漏,我们首先设计了一个可靠的接口调用机制,通过定时任务抓取旺店通·企业奇门的数据。我们采用分页方式检索大批量数据,有效解决了API限流问题。每次成功获取的数据都经过严格校验和格式转换,使其符合金蝶云星空的输入标准,然后使用`batchSave` API批量写入到目标系统。 值得注意的是,在实现过程中,我们重点解决了以下几个技术难题: 1. **接口分页和限流处理**:通过合理设置分页参数和请求频率,确保不会触发API限制,同时能够快速、大量地采集源端数据。 2. **数据格式差异调整**:源端与目标端的数据结构存在显著差异,需要进行精细化的映射与转换,以便适配金蝶云星空。 3. **异常处理及重试机制**:针对可能出现的网络波动、API错误等情况,实现自动异常捕获和智能重试,提高整体任务执行成功率。 4. **实时监控与日志记录**:搭建完善的监控方案,对每个步骤进行跟踪,及时发现并处理潜在问题。 整体方案不仅提升了业务透明度,还极大简化了操作复杂度,为后续运维提供了便利。接下来,将详细展示具体实现步骤及代码示例。 ![金蝶与WMS系统接口开发配置](https://pic.qeasy.cloud/D35.png~tplv-syqr462i7n-qeasy.image) ### 调用旺店通·企业奇门接口wdt.stockin.order.query获取并加工数据 在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口`wdt.stockin.order.query`,并对获取的数据进行初步加工。 #### 接口配置与调用 首先,我们需要配置元数据以便正确调用`wdt.stockin.order.query`接口。以下是关键的元数据配置: ```json { "api": "wdt.stockin.order.query", "effect": "QUERY", "method": "POST", "number": "order_no", "id": "stockin_id", "name": "order_no", "idCheck": true, "formatResponse": [ { "old": "stockin_time", "new": "stockin_date", "format": "date" } ], "joinBatch": "wdt.stockin.batch.detail", "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", ... ``` #### 请求参数设置 在请求参数中,我们设置了几个关键字段: - `start_time` 和 `end_time` 用于定义数据的增量获取范围。 - `status` 设置为80,表示只查询已完成的单据。 - `order_type` 设置为1,表示查询采购入库单据。 这些参数确保我们能够精准地获取所需的数据,并避免冗余信息。 #### 数据格式转换 在数据返回后,我们需要对其进行初步加工。通过元数据中的`formatResponse`配置,我们将字段`stockin_time`转换为`stockin_date`并格式化为日期类型。这一步骤确保了后续处理和分析的统一性和规范性。 ```json "formatResponse":[ { ... { old: 'stockin_time', new: 'stockin_date', format: 'date' } ] ] ``` #### 批次详情关联 为了进一步丰富数据,我们使用了`joinBatch`功能,将入库单与批次详情进行关联。通过指定批次详情表`wdt.stockin.batch.detail`,我们可以获取每个入库单的详细批次信息。这对于后续的数据分析和业务决策非常重要。 ```json "joinBatch":"wdt.stockin.batch.detail" ``` #### 数据过滤与条件设置 为了确保数据的准确性和相关性,我们还设置了条件过滤。例如,仅保留品牌名称为“金添食品”的记录: ```json "condition":[ [ { field: 'details_list.brand_name', logic: 'eq', value: '金添食品' } ] ] ``` 这种条件过滤机制能够有效地剔除无关数据,提高处理效率。 #### 自动填充响应 最后,通过设置`autoFillResponse:true`,我们可以自动填充响应结果。这一步骤简化了后续的数据处理流程,使得整个集成过程更加高效和自动化。 ```json "autoFillResponse":true ``` 综上所述,通过轻易云数据集成平台调用旺店通·企业奇门接口并对返回的数据进行初步加工,可以实现高效、精准的数据集成,为后续的数据转换与写入奠定坚实基础。 ![企业微信与OA系统接口开发配置](https://pic.qeasy.cloud/S14.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台将旺店通入库确认数据转换并写入金蝶云星空API接口 在数据集成过程中,将源平台的数据转换为目标平台所需的格式是关键步骤之一。本文将详细探讨如何使用轻易云数据集成平台将旺店通的入库确认数据进行ETL(提取、转换、加载)处理,最终写入金蝶云星空API接口。 #### 1. 数据请求与清洗 在开始数据转换之前,首先需要从源系统(旺店通)获取原始数据并进行必要的清洗和预处理。这部分操作通常包括数据格式的标准化、无效数据的过滤以及字段映射等。假设我们已经完成了这一步,接下来进入核心的ETL转换阶段。 #### 2. 数据转换与写入 通过轻易云数据集成平台,我们可以利用其强大的元数据配置功能,将清洗后的源数据转换为金蝶云星空API接口所需的格式,并实现自动化写入。以下是具体的元数据配置及其应用解析: ##### 2.1 元数据配置解析 ```json { "api": "batchSave", "effect": "EXECUTE", "method": "POST", "idCheck": true, "operation": { "method": "merge", "field": "stockin_no", "bodyName": "items", "bodySum": ["details_list__batch_list_num"], "header": ["stockin_no", "stockin_date"], "body": ["details_list__batch_list_num", "details_list_goods_no", "details_list__batch_list_batch"] }, ... } ``` 上述配置定义了调用金蝶云星空`batchSave` API的方法和参数。关键字段解析如下: - `api`: 指定调用的API名称,这里是`batchSave`。 - `method`: HTTP请求方法,这里使用`POST`。 - `idCheck`: 启用ID检查,确保唯一性。 - `operation`: 定义了如何处理请求中的头部和主体字段。 ##### 2.2 请求参数配置 ```json "request": [ {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{stockin_no}"}, {"field":"FBillTypeID","label":"单据类型","type":"string","describe":"标准直接调拨单:ZJDB01_SYS\n寄售直接调拨单:ZJDB02_SYS\n委外直接调拨单:ZJDB03_SYS\n分销直接调拨单:ZJDB04_SYS\nVMI直接调拨单:ZJDB05_SYS\n不对接标准直接调拨单:ZJDB06_SYS","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"ZJDB01_SYS"}, ... ] ``` 这些请求参数定义了具体的数据映射关系,例如: - `FBillNo`: 对应旺店通中的`stockin_no`,作为金蝶云星空中的单据编号。 - `FBillTypeID`: 固定值为`ZJDB01_SYS`,表示标准直接调拨单。 ##### 2.3 明细信息配置 ```json "children":[ {"field":"FMaterialId","label":"物料编码","type":"string","describe":"基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{{items.details_list_goods_no}}"}, {"field":"FSrcStockId","label":"调出仓库","type":"string","describe":"基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"CK001"}, ... ] ``` 明细信息部分定义了每一条记录的具体字段映射,例如: - `FMaterialId`: 对应旺店通中的物料编码`details_list_goods_no`。 - `FSrcStockId`: 固定值为`CK001`,表示调出仓库。 ##### 2.4 其他请求参数 ```json "otherRequest":[ {"field":"FormId","label":"业务对象表单Id","type":"string","describe":"必须填写金蝶的表单ID如:PUR_PurchaseOrder","value":"STK_TransferDirect"}, {"field":"IsAutoSubmitAndAudit","label":"提交并审核","type":"bool","describe":"提交并审核","value":"true"}, ... ] ``` 这些参数用于控制额外的操作,例如: - `FormId`: 指定业务对象表单ID,这里为`STK_TransferDirect`。 - `IsAutoSubmitAndAudit`: 设置为`true`,表示自动提交并审核。 #### 3. 实现自动化写入 通过上述元数据配置,我们可以利用轻易云平台实现自动化的数据转换与写入过程。当源系统的数据发生变化时,平台会根据预先配置好的规则自动触发ETL流程,将处理后的数据写入金蝶云星空,实现无缝对接。 这种方式不仅提高了工作效率,还减少了人为错误,同时保证了数据的一致性和准确性。通过灵活的元数据配置,我们可以轻松适应不同业务场景下的数据集成需求。 ![如何开发用友BIP接口](https://pic.qeasy.cloud/T9.png~tplv-syqr462i7n-qeasy.image)