轻易云平台实现金蝶云星辰与旺店通的数据集成攻略

  • 轻易云集成顾问-潘裕
### 金蝶云星辰V2数据集成到旺店通·企业奇门:从出库单到出库单的无缝对接 在现代业务环境中,跨系统的数据集成需求日益增多。本文将详细探讨如何通过一个实际案例,将金蝶云星辰V2平台上的“其他出库单”数据高效、可靠地集成到旺店通·企业奇门的平台上,实现两个不同系统之间的顺畅联动。在本次实例中,我们使用了轻易云数据集成平台来简化和优化整个过程。 #### 案例背景 此次案例主要涉及以下两个步骤: 1. 从金蝶云星辰V2获取“其他出库单”数据。 2. 将这些数据批量写入到旺店通·企业奇门作为新的“其他出库单”。 我们具体采用了金蝶云星辰V2提供的API接口`/jdy/v2/scm/inv_other_out`以拉取所需的数据,同时利用旺店通·企业奇门的API接口`wdt.stockout.order.push`实现目标系统中的快速写入。 #### 技术挑战及解决方案 **1. 确保集成过程中不漏单** 为确保所有需要传输的“其他出库单”数据不会丢失,我们设定了周期性任务,通过定时器机制每隔一定时间抓取一次最新的数据。同时,为进一步保障可靠性,每次处理后会记录读取位置,以防止重复拉取或遗漏。 **2. 大量数据批量处理与高效传输** 由于可能需要处理大量的订单信息,我们进行了批量化操作设计。一方面,在拉取阶段充分利用分页技术应对限流问题;另一方面,在写入阶段实施批量提交,提高传输效率并减少与目标API交互次数,从而大幅提升整体效率。 **3. 处理两者间的数据格式差异** 面对源系统和目标系统在字段命名、结构等方面存在的一些差异,我们在轻易云平台上进行了必要的数据映射配置。例如,统一字段转换规则以及编排符合目标API需求的数据结构,从而实现平滑过渡。 **4. 实现实时监控和日志记录** 为了能够随时掌握整个流程运行情况及快速定位问题,我们启用了实时监控功能,并配置全面的日志记录。不仅能即时捕捉异常,还可自动触发错误重试机制进行自我修复,大幅提升稳定性和容错能力。 以上是我们在本案例中的几项核心技术策略。接下来,将进一步深入细节,分享具体步骤和代码示例,以期帮助您更好地理解此类跨系统数据对接项目。如果您有任何疑问或遇到类似 ![如何对接钉钉API接口](https://pic.qeasy.cloud/D14.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星辰V2接口获取并加工数据 在轻易云数据集成平台的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过调用金蝶云星辰V2接口`/jdy/v2/scm/inv_other_out`获取并加工数据,以实现高效的数据集成。 #### 接口调用配置 首先,我们需要配置元数据以便正确调用金蝶云星辰V2接口。以下是元数据配置的详细内容: ```json { "api": "/jdy/v2/scm/inv_other_out", "effect": "QUERY", "method": "GET", "number": "bill_no", "id": "id", "name": "{random}", "idCheck": true, "request": [ { "field": "bill_status", "label": "单据状态(所有:“”,已审核:“C”,未审核:“Z”)", "type": "string", "value": "C" }, { "field": "modify_end_time", "label": "修改时间-结束时间的时间戳(毫秒)", "type": "string", "value": "{CURRENT_TIME}000" }, { "field": "modify_start_time", "label": "修改时间-开始时间的时间戳(毫秒)", "type": "string", "value": "{LAST_SYNC_TIME}000" } ], "otherRequest": [ { "field": "detailAPI", "label": "detailAPI", "type": "string", "value": "/jdy/v2/scm/inv_other_out_detail" } ], "autoFillResponse": true, "beatFlat": ["material_entity"] } ``` #### 请求参数解析 1. **单据状态**:`bill_status`字段用于过滤单据状态,值为“C”表示只获取已审核的单据。 2. **修改时间范围**:`modify_start_time`和`modify_end_time`字段分别表示查询的开始和结束时间,这两个字段使用了动态变量 `{LAST_SYNC_TIME}` 和 `{CURRENT_TIME}` 来确保查询的是最新的数据。 3. **详细API**:`detailAPI`字段指定了获取单据详情的接口路径。 #### 数据请求与清洗 在配置好元数据后,我们可以发起GET请求来获取所需的数据。以下是一个示例请求: ```http GET /jdy/v2/scm/inv_other_out?bill_status=C&modify_start_time=1633046400000&modify_end_time=1633132800000 Host: api.kingdee.com ``` 响应的数据可能包含多个字段,为了简化处理,我们可以利用 `autoFillResponse` 参数自动填充响应中的关键字段,并使用 `beatFlat` 参数将嵌套结构扁平化。例如: ```json { "_id":"1234567890abcdefg", "_source":{ ... "_embedded":{ ... "_links":{ ... } }, ... "_flat":{ ... "_material_entity":[] } } ``` #### 数据转换与写入 在获取并清洗完数据后,下一步是将其转换为目标系统所需的格式,并写入目标系统。在这个案例中,我们需要将金蝶云星辰其他出库单的数据转换为旺店通其他出库单的数据格式。 转换过程通常包括以下步骤: 1. **字段映射**:将源系统的字段映射到目标系统对应的字段。 2. **数据格式转换**:根据目标系统要求,对数据进行必要的格式转换。 3. **校验与处理异常**:确保所有必填字段都有值,并处理可能出现的数据异常。 例如,假设我们需要将金蝶云星辰中的 `bill_no` 字段映射到旺店通中的 `order_no` 字段,可以进行如下配置: ```json { ... "_mapping":{ "_source.bill_no":"_target.order_no" } } ``` 通过以上步骤,我们能够高效地完成从金蝶云星辰到旺店通的数据集成,实现不同系统间的数据无缝对接。 总结来说,通过合理配置元数据并利用轻易云平台强大的数据处理能力,我们能够简化复杂的数据集成过程,提高业务效率和透明度。 ![钉钉与ERP系统接口开发配置](https://pic.qeasy.cloud/S19.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入旺店通·企业奇门API接口 在数据集成生命周期的第二步,我们需要将已经从源平台(金蝶云星辰)获取的数据进行ETL(Extract, Transform, Load)转换,最终写入目标平台(旺店通·企业奇门API接口)。本文将详细探讨这一过程中的技术细节和实现方法。 #### 数据转换与写入配置 为了将金蝶云星辰的其他出库单数据转换为旺店通·企业奇门API接口所能接收的格式,我们需要进行以下步骤: 1. **定义API接口元数据配置**:首先,我们需要明确目标API接口的元数据配置。根据提供的配置文件,目标API为`wdt.stockout.order.push`,采用`POST`方法进行数据提交。以下是元数据配置的关键部分: ```json { "api": "wdt.stockout.order.push", "effect": "EXECUTE", "method": "POST", "idCheck": true, "operation": { "method": "merge", "field": "bill_no", "bodyName": "items", "bodySum": ["material_entity_qty"], "header": ["id", "bill_no", "material_entity_stock_number"], "body": ["material_entity_material_number", "material_entity_qty"] }, ... } ``` 2. **请求参数映射**:根据元数据配置文件,我们需要将源平台的数据字段映射到目标API接口所需的字段。以下是主要的字段映射关系: - `outer_no` 映射为 `{bill_no}-{id}` - `warehouse_no` 映射为 `{material_entity_stock_number}` - `remark` 映射为 `金蝶其他出库单对接-{bill_no}` - `is_check` 固定值 `1` - `detail_list` 为货品列表节点,其中: - `spec_no` 映射为 `{{items.material_entity_material_number}}` - `num` 映射为 `{{items.material_entity_qty}}` 3. **构建请求体**:根据上述映射关系,构建最终的请求体。假设我们从源平台获取到的数据如下: ```json { "id": 123, "bill_no": "KD20231001", "material_entity_stock_number": "WH001", "items": [ {"material_entity_material_number": "ITEM001", "material_entity_qty": 10}, {"material_entity_material_number": "ITEM002", "material_entity_qty": 20} ] } ``` 根据映射规则,构建出的请求体应如下所示: ```json { "outer_no": "KD20231001-123", "warehouse_no": "WH001", "remark": "金蝶其他出库单对接-KD20231001", "is_check": 1, "detail_list": [ {"spec_no": "ITEM001", "num": 10, "price": ""}, {"spec_no": "ITEM002", "num": 20, "price": ""} ], ... } ``` 4. **发送请求**:使用HTTP POST方法,将构建好的请求体发送至旺店通·企业奇门API接口。 #### 实现代码示例 以下是一个简单的Python代码示例,用于展示如何实现上述ETL转换并发送请求: ```python import requests import json # 源平台数据 source_data = { 'id': 123, 'bill_no': 'KD20231001', 'material_entity_stock_number': 'WH001', 'items': [ {'material_entity_material_number': 'ITEM001', 'material_entity_qty': 10}, {'material_entity_material_number': 'ITEM002', 'material_entity_qty': 20} ] } # 构建请求体 request_body = { 'outer_no': f"{source_data['bill_no']}-{source_data['id']}", 'warehouse_no': source_data['material_entity_stock_number'], 'remark': f"金蝶其他出库单对接-{source_data['bill_no']}", 'is_check': 1, 'detail_list': [ {'spec_no': item['material_entity_material_number'], 'num': item['material_entity_qty'], 'price': ''} for item in source_data['items'] ], ... } # 设置目标API URL api_url = 'https://api.wangdian.cn/openapi2/wdt.stockout.order.push' # 发送POST请求 response = requests.post(api_url, json=request_body) # 打印响应结果 print(response.json()) ``` 通过上述步骤和代码示例,我们可以实现从金蝶云星辰到旺店通·企业奇门API接口的数据ETL转换和写入操作。这一过程不仅确保了数据的一致性和准确性,还大大提升了业务流程的自动化程度。 ![钉钉与ERP系统接口开发配置](https://pic.qeasy.cloud/T6.png~tplv-syqr462i7n-qeasy.image)