使用轻易云进行ETL转换并写入金蝶云星空API

  • 轻易云集成顾问-钟家寿
### 旺店通·企业奇门数据集成到金蝶云星空的技术实现 在本文中,我们将探讨如何高效地将旺店通·企业奇门系统中的采购入库数据顺利集成至金蝶云星空。具体案例涉及接口`wdt.stockin.order.query.purchase`和`batchSave`,并通过轻易云数据集成平台完成对接。 整个实施过程中,我们面临几个关键技术挑战:大规模数据快速写入、分页及限流处理、API资产管理、多样化的数据转换逻辑以及实时监控与告警系统。在逐步解决这些问题的同时,也为整个业务流程的透明度和效率提供了极大保障。 首先,对于旺店通·企业奇门来说,实现高吞吐量的数据获取是任务成功的重要前提。为了确保不漏单,我们使用定时调度机制可靠抓取所需接口的数据,并处理分页和限流问题,从而保证每次执行可以获取完整且及时的数据。下面是我们主要步骤与相应代码示例: ```json { "api": "wdt.stockin.order.query.purchase", "params": { // 填入必要参数,如时间范围、状态等 } } ``` 与此同时,为了适应不同业务场景要求,我们设计了一套自定义转换逻辑,以便符合金蝶云星空的存储需求。这一过程涵盖从字段映射、格式变换到复杂业务规则的计算,确保每条记录无缝衔接到目标系统中。 ```json { "api": "batchSave", "data": [ // 转换后的结构化数据列表 ] } ``` 此外,通过中央监控控制台,可以实时跟踪所有集成任务的执行情况,包括性能指标和异常记录。在遇到任何故障或误操作时,智能告警系统能迅速发出提示,使运维团队能够第一时间介入查看并修复潜在的问题,大幅降低风险。 最后,让我们继续深入探讨具体实现方案... ![如何对接企业微信API接口](https://pic.qeasy.cloud/D15.png~tplv-syqr462i7n-qeasy.image) ### 调用旺店通·企业奇门接口wdt.stockin.order.query.purchase获取并加工数据 在数据集成生命周期的第一步,我们需要从源系统中获取数据,并对其进行初步加工。本文将详细探讨如何通过调用旺店通·企业奇门接口`wdt.stockin.order.query.purchase`来实现这一过程。 #### 接口调用配置 首先,我们需要了解接口的基本配置。根据元数据配置,接口调用采用POST方法,主要参数如下: - **api**: `wdt.stockin.order.query.purchase` - **method**: `POST` - **number**: `order_no` - **id**: `stockin_id` - **pagination**: 分页配置,默认每页50条记录 - **idCheck**: 是否检查ID,设置为true - **omissionRemedy**: 补偿机制,定时任务设置为每小时的第36分钟执行一次 #### 请求参数 请求参数分为两部分:常规请求参数和分页请求参数。 1. **常规请求参数** - `start_time`: 数据开始时间,使用上次同步时间`{{LAST_SYNC_TIME|datetime}}` - `end_time`: 数据结束时间,使用当前时间`{{CURRENT_TIME|datetime}}` - `status`: 状态 - `src_order_no`: 上层单据编号 - `warehouse_no`: 仓库编号 - `stockin_no`: 入库单号 - `stockin_outer_no`: 外部单号(外部系统采购入库单的唯一单据编号) 2. **分页请求参数** - `page_size`: 分页大小,取值为`{PAGINATION_PAGE_SIZE}` - `page_no`: 页号,取值为`{PAGINATION_START_PAGE}` #### 数据获取与处理流程 1. **初始化请求** 首先,根据元数据配置初始化请求参数。这里需要特别注意的是时间参数的设置,通过模板变量动态获取上次同步时间和当前时间,以确保数据的实时性和完整性。 2. **发送请求** 使用POST方法向接口发送请求,并传递上述初始化的参数。由于接口支持分页,因此我们需要在循环中逐页获取数据,直到所有数据被完全提取。 3. **数据清洗** 获取到的数据可能包含多余或格式不一致的信息,需要进行清洗。例如: - 去除空值或无效字段 - 转换字段格式,如日期格式转换、数值类型转换等 - 根据业务需求合并或拆分字段 4. **补偿机制** 在实际操作中,由于网络波动或其他原因可能导致部分数据未能及时获取。此时,可以利用补偿机制中的定时任务(crontab)进行定期补偿请求,以确保数据完整性。 #### 示例代码 以下是一个简化的Python示例代码,用于展示如何调用该接口并处理返回的数据: ```python import requests import datetime # 初始化请求参数 last_sync_time = datetime.datetime.now() - datetime.timedelta(hours=1) current_time = datetime.datetime.now() params = { "start_time": last_sync_time.strftime('%Y-%m-%d %H:%M:%S'), "end_time": current_time.strftime('%Y-%m-%d %H:%M:%S'), "status": "", "src_order_no": "", "warehouse_no": "", "stockin_no": "", "stockin_outer_no": "", "page_size": 50, "page_no": 1, } # 发送请求并处理响应 while True: response = requests.post("https://api.wangdian.cn/openapi2/wdt.stockin.order.query.purchase", data=params) data = response.json() # 数据清洗和处理逻辑 for record in data['orders']: # 清洗和转换字段示例 record['start_time'] = datetime.datetime.strptime(record['start_time'], '%Y-%m-%d %H:%M:%S') record['end_time'] = datetime.datetime.strptime(record['end_time'], '%Y-%m-%d %H:%M:%S') # 其他清洗逻辑... # 判断是否还有下一页 if len(data['orders']) < params['page_size']: break # 更新页号继续下一页请求 params['page_no'] += 1 print("Data processing complete.") ``` 通过以上步骤,我们可以有效地从旺店通·企业奇门接口中获取采购入库订单数据,并进行初步加工,为后续的数据转换与写入阶段打下坚实基础。 ![电商OMS与ERP系统接口开发配置](https://pic.qeasy.cloud/S29.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台:将源平台数据转换并写入金蝶云星空API接口 在数据集成的生命周期中,将已经集成的源平台数据进行ETL转换,并写入目标平台是至关重要的一步。本文将详细探讨如何利用轻易云数据集成平台,将旺店通采购入库的数据转换为金蝶云星空API接口所能接收的格式,并最终写入目标平台。 #### 数据转换与写入过程 在本案例中,我们需要将旺店通采购入库的数据,通过ETL(Extract, Transform, Load)过程,转换为金蝶云星空API接口能够接受的格式,并通过调用API接口将数据写入目标系统。以下是详细步骤: 1. **定义API接口元数据配置** 根据提供的元数据配置,我们需要调用金蝶云星空的`batchSave` API接口。该接口使用POST方法,并且需要进行ID校验。操作方式是批量保存数组形式的数据。 2. **字段映射与转换** 在进行ETL转换时,需要特别注意字段的映射和转换。以下是几个关键字段的处理方式: - **单据类型(FBillTypeID)**:固定值为`RKD01_SYS`,通过`ConvertObjectParser`解析。 - **业务类型(FBusinessType)**:通过MongoDB查询获取,查询条件为单据编号。 - **单据编号(FBillNo)**:直接映射为订单编号`{order_no}`。 - **入库日期(FDate)**:直接映射为检查时间`{check_time}`。 - **收料组织(FStockOrgId)**、**采购组织(FPurchaseOrgId)**、**供应商(FSupplierId)**等字段均通过MongoDB查询并使用`ConvertObjectParser`解析。 3. **处理嵌套结构** 金蝶云星空API要求某些字段以嵌套对象或数组形式提交,例如财务信息和明细信息。在元数据配置中,这些字段被定义为嵌套结构,需要特别处理: - **财务信息(FInStockFin)**:包括结算组织和付款组织,均通过MongoDB查询获取并解析。 - **明细信息(FInStockEntry)**:包含物料编码、应收数量、实收数量、含税单价等多个子字段,这些子字段可能需要通过复杂的查询和解析逻辑来获取。 4. **关联关系处理** 明细信息中的关联关系(FInStockEntry_Link)需要特别注意,通过MongoDB查询匹配采购订单和物料条码,获取源单ID和表体ID。 5. **其他请求参数** 除了上述主要字段外,还需设置一些额外的请求参数,如业务对象表单Id、是否自动提交并审核、执行操作等。这些参数在元数据配置中已明确指定: ```json "otherRequest":[ {"field":"FormId","label":"业务对象表单Id","type":"string","value":"STK_InStock"}, {"field":"IsAutoSubmitAndAudit","label":"提交并审核","type":"bool","value":"true"}, {"field":"Operation","label":"执行的操作","type":"string","value":"Save"}, {"field":"IsVerifyBaseDataField","label":"验证基础资料","type":"bool","value":"true"} ] ``` #### 实际应用案例 在实际应用中,我们可以利用轻易云数据集成平台提供的可视化界面和实时监控功能,确保每个环节都清晰易懂,并及时发现和解决潜在问题。例如,在处理大批量采购入库数据时,可以实时监控每条记录的处理状态,确保所有数据都能准确无误地写入金蝶云星空系统。 通过上述步骤,我们可以高效地将旺店通采购入库的数据转换并写入金蝶云星空,实现不同系统间的数据无缝对接,提高业务透明度和效率。 ![钉钉与MES系统接口开发配置](https://pic.qeasy.cloud/T16.png~tplv-syqr462i7n-qeasy.image)