从金蝶云星辰V2到旺店通的数据转换和写入实践

  • 轻易云集成顾问-贺强
### 金蝶云星辰V2数据集成到旺店通·企业奇门:采购入库单(委外) 在本文中,我们将探讨如何通过轻易云数据集成平台,实现金蝶云星辰V2的采购入库单(委外)数据高效且可靠地集成至旺店通·企业奇门系统。具体来说,我们关注以下几个关键技术点: 1. **接口调用与数据获取** 通过调用金蝶云星辰V2的API接口 `/jdy/v2/scm/pur_inbound`,实现对采购入库单原始数据的定时抓取。为确保不漏单和错误重试机制,我们设定了详细的数据抓取策略,以保证每条记录都能被安全传输。 2. **大批量数据处理与快速写入** 面对大量采购入库单数据,我们采用批量处理方式,有效解决分页和限流问题。同时,通过优化并发写入策略,将整理后的多条记录快速推送至旺店通·企业奇门系统对应的API `wdt.vip.wms.stockinout.order.push`,从而实现高效的数据同步。 3. **异构格式转换及映射** 数据源与目标系统之间存在着格式差异,这需要我们进行兼容性转换。在此过程中,利用灵活的数据映射功能,对各字段进行一一对应,同时检查和调整字段长度、类型等特征,以确保两端系统间的数据统一性。 4. **实时监控与日志管理** 利用平台内置的实时监控和日志记录功能,我们能够随时掌握整个集成过程中的状态变化,以及捕捉可能出现的问题,从而迅速采取必要措施以避免长时间停滞或错误传播。这极大提升了业务透明度和运维效率。 在下一部分内容中,将详细介绍实际操作步骤,包括参数配置、接口调试以及异常处理等重要细节。 ![如何对接金蝶云星空API接口](https://pic.qeasy.cloud/D7.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星辰V2接口获取并加工数据 在轻易云数据集成平台中,调用源系统接口是数据处理生命周期的第一步。本文将深入探讨如何通过调用金蝶云星辰V2接口`/jdy/v2/scm/pur_inbound`来获取采购入库单(委外)数据,并对其进行初步加工。 #### 接口概述 金蝶云星辰V2接口`/jdy/v2/scm/pur_inbound`用于查询采购入库单信息。该接口采用GET请求方式,支持多种查询参数,能够灵活地筛选所需数据。以下是主要的请求参数及其配置: - `enable`: 可用状态,1表示可用,0表示禁用,-1表示全部。 - `search`: 模糊搜索,可以根据名称、编码、规格、条形码进行模糊匹配。 - `parent_id`: 商品类别ID,用于筛选特定类别的商品。 - `isdataperm`: 数据权限校验,默认值为false。 - `create_start_time`和`create_end_time`: 创建时间范围,格式为时间戳。 - `modify_start_time`和`modify_end_time`: 修改时间范围,格式为时间戳。 - `page`和`page_size`: 分页参数,分别表示当前页和每页显示条数。 - `bill_status`: 单据状态,此处默认值为C。 #### 请求参数配置 在轻易云数据集成平台中,我们需要配置上述请求参数,以便准确地从金蝶云星辰V2获取所需数据。以下是一个典型的请求参数配置示例: ```json { "enable": "1", "search": "", "parent_id": "", "isdataperm": "false", "create_start_time": "-1", "create_end_time": "-1", "modify_start_time": "_function {LAST_SYNC_TIME}*1000", "modify_end_time": "_function {CURRENT_TIME}*1000", "page": "1", "page_size": "10", "bill_status": "C" } ``` #### 数据请求与清洗 在发起GET请求后,我们会收到一批原始的采购入库单数据。这些数据可能包含多个字段,其中一些字段可能需要进一步清洗和转换,以便后续处理。轻易云平台提供了自动填充响应(autoFillResponse)功能,可以简化这一过程。 例如,对于返回的数据结构中的物料实体(material_entity),我们可以使用beatFlat功能将其平铺展开,以便更容易地进行后续的数据处理。 #### 数据转换与写入 在完成初步的数据清洗后,我们需要将这些数据转换为目标系统所需的格式,并写入目标数据库或系统。在这一过程中,可以使用轻易云平台提供的数据转换工具,将原始数据映射到目标字段。例如: ```json { "id": "{id}", "bill_no": "{bill_no}", ... } ``` 通过这种方式,我们可以确保从金蝶云星辰V2获取的数据能够无缝对接到目标系统中,实现不同系统间的数据集成。 #### 实时监控与调试 为了确保数据集成过程的顺利进行,轻易云平台提供了实时监控和调试工具。通过这些工具,我们可以实时查看数据流动和处理状态,及时发现并解决潜在的问题。例如,在调用金蝶云星辰V2接口时,如果遇到网络延迟或响应错误,可以通过日志和监控界面快速定位问题并进行修复。 综上所述,通过合理配置请求参数、清洗和转换数据,以及利用实时监控工具,我们可以高效地实现从金蝶云星辰V2获取采购入库单(委外)数据,并将其无缝集成到目标系统中。这不仅提高了业务透明度和效率,也为企业的数据管理提供了强有力的支持。 ![轻易云数据集成平台金蝶集成接口配置](https://pic.qeasy.cloud/S27.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台ETL转换至旺店通·企业奇门API接口 在数据集成生命周期的第二步中,我们需要将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,转为目标平台旺店通·企业奇门API接口所能够接收的格式,并最终写入目标平台。以下是具体的技术实现案例。 #### 元数据配置解析 元数据配置是整个ETL过程中的关键部分,它定义了如何将源数据转换并映射到目标API接口的字段。我们将详细解析以下元数据配置: ```json { "api": "wdt.vip.wms.stockinout.order.push", "effect": "EXECUTE", "method": "POST", "idCheck": true, "operation": { "method": "merge", "field": "bill_no", "bodyName": "material_entity", "bodySum": ["material_entity_qty"], "header": ["material_entity_src_bill_no", "bill_no", "material_entity_stock_number"], "body": ["material_entity_material_number", "material_entity_qty", "material_entity_tax_price", "material_entity_comment"] }, "request": [ { "field": "api_outer_no", "label": "接口外部单号", "type": "string", "describe": "调用本接口时推送的唯一单据编号,避免重复推送数据", "value": "{bill_no}" }, { ... } ], ... } ``` #### 数据转换与映射 1. **请求头部信息映射** 在请求头部信息中,我们需要映射如下字段: - `api_outer_no`: 接口外部单号,对应`{bill_no}`。 - `warehouse_no`: 仓库编号,对应`{{material_entity.material_entity_stock_number}}`。 - `order_type`: 出入类型,固定值为`2`表示入库。 - `auto_check`: 自动审核,固定值为`1`表示自动审核。 2. **请求体信息映射** 请求体信息主要是货品列表节点`goods_list`,其子字段包括: - `spec_no`: 商家编码,对应`{{material_entity.material_entity_material_number}}`。 - `num`: 入库数量,对应`{{material_entity.material_entity_qty}}`。 - `price`: 委外出入库货品价格,对应`{{material_entity.material_entity_tax_price}}`。 - `position_no`: 货位编号,可以为空或根据ERP配置自动获取。 - `remark`: 备注,对应`{{material_entity.material_entity_comment}}`。 - `batch_no`: 批次编号,需要传客户端中存在的批次编号。 #### 数据处理逻辑 在处理过程中,我们首先需要从源平台提取原始数据,然后进行清洗和转换,将其格式化为目标API所需的结构。以下是一个示例代码片段,用于展示如何进行这些操作: ```python import requests import json # 假设我们已经从源平台提取了原始数据 source_data = { 'bill_no': '123456', 'material_entity': [ { 'material_entity_material_number': 'SKU123', 'material_entity_qty': '100', 'material_entity_tax_price': '10.00', 'material_entity_comment': '无' } ] } # 构建目标API请求体 target_data = { 'api_outer_no': source_data['bill_no'], 'warehouse_no': source_data['material_entity'][0]['material_entity_stock_number'], 'order_type': '2', 'auto_check': '1', 'goods_list': [] } for item in source_data['material_entity']: goods_item = { 'spec_no': item['material_entity_material_number'], 'num': item['material_entity_qty'], 'price': item['material_entity_tax_price'], # 可选字段 # 'position_no': '', 'remark': item['material_entity_comment'] # 可选字段 # 'batch_no': '' } target_data['goods_list'].append(goods_item) # 将请求体转换为JSON格式 json_payload = json.dumps(target_data) # 发起POST请求到旺店通·企业奇门API接口 response = requests.post( url='https://api.wangdian.cn/openapi/2/wdt.vip.wms.stockinout.order.push', headers={'Content-Type': 'application/json'}, data=json_payload ) # 检查响应状态和内容 if response.status_code == 200: print('Data pushed successfully:', response.json()) else: print('Failed to push data:', response.text) ``` #### 注意事项 - **ID检查**:确保每个请求都有唯一的单据编号以避免重复推送,这通过设置元数据中的`idCheck: true`来实现。 - **自动审核**:根据业务需求设置是否自动审核,这里我们设置为自动审核(值为1)。 - **错误处理**:在实际应用中,应增加错误处理机制,以便在请求失败时进行重试或记录日志。 通过上述步骤和代码示例,我们可以高效地将源平台的数据转换并写入到旺店通·企业奇门API接口,实现系统间的数据无缝对接。 ![电商OMS与WMS系统接口开发配置](https://pic.qeasy.cloud/T22.png~tplv-syqr462i7n-qeasy.image)