轻易云平台上的ETL转换与数据写入金蝶云星空

  • 轻易云集成顾问-黄宏棵
### 旺店通·旗舰奇门数据集成到金蝶云星空:系统对接技术解析 在本次案例中,我们将探讨如何高效地将旺店通·旗舰奇门平台上的销售出库单数据,通过轻易云数据集成平台,转化并写入到金蝶云星空的其他出库单模块。具体来说,实现过程涉及从旺店通·旗舰奇门获取的数据(API: wdt.wms.stockout.sales.querywithdetail),精确映射至金蝶云星空(API: batchSave)的方法和技术要点。 #### 1. 数据获取与预处理 首先,通过调用`wdt.wms.stockout.sales.querywithdetail`接口,从旺店通提取销售出库单详细信息。这一步需要应对分页和限流问题,同时确保抓取的数据实时性和准确性。为此,我们配置了定时任务,可靠抓取最新交易,并利用重试机制处理异常情况,保证不漏单、不重复。 #### 2. 数据转换与映射 由于两个系统之间的数据结构差异,需要自定义转换逻辑,将从旺店通获取的JSON格式数据,根据业务需求重新整合。例如,对必要字段进行类型转换、单位换算等操作,以适配金蝶云星空的要求。 #### 3. 批量写入与性能优化 在完成数据清洗和转换后,使用`batchSave` API将整理好的其他出库单批量导入至金蝶云星空。这一阶段不仅要关注吞吐量以确保海量数据迅速、安全地写入,还需监控各环节的状态,以便及时发现并解决潜在异常。此外,通过实施故障自动恢复及错误重试机制,提高整体流程的鲁棒性。 通过以上步骤,不仅大幅度提升了两大系统之间的数据交互效率,也保障了业务连续性。在实际应用中,这套方案展现了卓越的可扩展性及稳定性能,为企业库存管理提供了一条高速、透明、安全的信息流转路径。 ![如何对接金蝶云星空API接口](https://pic.qeasy.cloud/D35.png~tplv-syqr462i7n-qeasy.image) ### 使用旺店通·旗舰奇门接口获取并加工销售出库单数据 在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何使用旺店通·旗舰奇门接口`wdt.wms.stockout.sales.querywithdetail`获取销售出库单数据,并进行初步的数据加工。 #### 接口调用配置 首先,我们需要配置接口调用的元数据。以下是`wdt.wms.stockout.sales.querywithdetail`接口的元数据配置: ```json { "api": "wdt.wms.stockout.sales.querywithdetail", "method": "POST", "number": "order_no", "id": "stockout_id", "idCheck": true, "request": [ { "field": "pager", "label": "分页参数", "type": "object", "children": [ {"field": "page_size", "label": "分页大小", "type": "int", "value": "50", "parent": "pager"}, {"field": "page_no", "label": "页号", "type": "int", "value": "1", "parent": "pager"} ] }, { "field": "params", "label": "业务参数", "type": "object", ... } ], ... } ``` #### 请求参数详解 - **分页参数**:为了处理大量数据,我们使用分页机制。`page_size`设置为50,表示每次请求返回50条记录;`page_no`设置为1,表示从第一页开始。 - **业务参数**: - `start_time`和`end_time`:定义了查询的时间范围。这里使用了动态变量,如`{{MINUTE_AGO_40|datetime}}`表示40分钟前的时间。 - `status_type`和`status`:用于过滤出库单状态,这里我们设置为3和110,表示查询特定状态的出库单。 - `warehouse_no`, `stockout_no`, `shop_nos`, `src_order_no`, `need_sn`, `position`等字段,用于进一步细化查询条件。 #### 数据请求与清洗 在获取到原始数据后,需要对其进行清洗和初步加工。这一步骤包括但不限于: 1. **数据格式转换**:将日期时间字段转换为标准格式,确保后续处理的一致性。 2. **字段筛选与重命名**:根据目标系统的需求,筛选必要的字段,并进行适当的重命名。例如,将源系统中的订单编号字段重命名为目标系统所需的名称。 3. **异常数据处理**:过滤掉不符合业务逻辑或存在异常的数据记录,例如缺失关键字段的数据。 以下是一个简单的数据清洗示例: ```python import pandas as pd # 假设我们已经通过API获取到了原始数据 raw_data = [ {"order_no":"12345", ...}, {"order_no":"67890", ...}, # 更多记录... ] # 转换为DataFrame便于处理 df = pd.DataFrame(raw_data) # 数据格式转换 df['start_time'] = pd.to_datetime(df['start_time']) df['end_time'] = pd.to_datetime(df['end_time']) # 字段筛选与重命名 df = df.rename(columns={ 'order_no': '订单编号', 'start_time': '开始时间', 'end_time': '结束时间', # 更多字段... }) # 异常数据处理 df = df.dropna(subset=['订单编号', '开始时间', '结束时间']) # 清洗后的数据 cleaned_data = df.to_dict(orient='records') ``` #### 数据转换与写入 在完成初步的数据清洗后,可以进行进一步的数据转换,并将其写入目标系统。在此过程中,需要确保数据格式和结构符合目标系统的要求。 例如,将清洗后的销售出库单数据转换为金蝶系统所需的其他出库单格式: ```python def transform_to_kingdee_format(data): transformed_data = [] for record in data: transformed_record = { 'KingdeeOrderNo': record['订单编号'], 'StartTime': record['开始时间'].strftime('%Y-%m-%d %H:%M:%S'), 'EndTime': record['结束时间'].strftime('%Y-%m-%d %H:%M:%S'), # 更多字段映射... } transformed_data.append(transformed_record) return transformed_data kingdee_data = transform_to_kingdee_format(cleaned_data) ``` 最后,将转换后的数据通过相应的API或数据库连接写入金蝶系统。 通过上述步骤,我们实现了从旺店通·旗舰奇门接口获取销售出库单数据,并进行了初步的数据清洗和转换,为后续的数据集成奠定了基础。这一过程不仅提高了数据处理效率,还确保了数据的一致性和准确性。 ![钉钉与MES系统接口开发配置](https://pic.qeasy.cloud/S30.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口 在数据集成过程中,将源平台的数据转换为目标平台所需的格式是关键步骤。本文将深入探讨如何使用轻易云数据集成平台,将旺店通的销售出库单数据转换为金蝶云星空API接口能够接收的其他出库单格式,并最终写入目标平台。 #### 数据请求与清洗 首先,我们需要从源系统(旺店通)获取销售出库单数据。这一步骤通常包括数据请求和清洗,确保数据完整且符合目标系统的要求。假设我们已经完成了这一步,接下来重点关注如何将这些数据进行ETL转换,并通过API接口写入金蝶云星空。 #### 数据转换与写入 在轻易云数据集成平台中,我们使用元数据配置来定义如何将源数据映射到目标系统的数据结构。以下是具体的元数据配置示例: ```json { "api": "batchSave", "method": "POST", "idCheck": true, "operation": { "rowsKey": "array", "rows": 1, "method": "batchArraySave" }, "request": [ { "field": "FBillNo", "label": "单据编号", "type": "string", "describe": "单据编号", "value": "{order_no}" }, { ... } ], ... } ``` 在此配置中,我们定义了多个字段及其对应的值和类型,这些字段将被映射到金蝶云星空API接口所需的格式。 ##### 核心字段解析 1. **FBillNo (单据编号)**: ```json { "field": "FBillNo", "label": "单据编号", "type": "string", "describe": "单据编号", "value": "{order_no}" } ``` 将源系统中的订单号`{order_no}`映射为金蝶系统中的单据编号。 2. **FStockOrgId (库存组织)**: ```json { ... "value": "_findCollection find FStockOrgId from c125c169-8234-3b0c-bfea-03f5fcec7a03 where FBillNo={{details_list.src_tid}}" } ``` 使用`_findCollection`方法,从特定集合中查找库存组织ID,并根据源单号`{{details_list.src_tid}}`进行匹配。 3. **FDate (日期)**: ```json { ... "value": "{consign_time}" } ``` 将发货时间`{consign_time}`映射为金蝶系统中的日期字段。 4. **FEntity (明细信息)**: 明细信息是一个数组,其中包含多个子字段,例如物料编码、实发数量、仓库等: ```json { ... { ... "children":[ { ... {"field":"FMaterialID","label":"物料编码","type":"string","describe":"基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{{details_list.goods_no}}","parent":"FEntity"}, {"field":"FQty","label":"实发数量","type":"string","describe":"数量","value":"{{details_list.goods_count}}","parent":"FEntity"}, {"field":"FStockID","label":"仓库","type":"string","describe":"基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{warehouse_no}","parent":"FEntity"} } ] } } ``` ##### 特殊字段处理 1. **FOwnerTypeIdHead (货主类型)** 和 **FOwnerIdHead (货主)**: ```json { ... {"field":"FOwnerTypeIdHead", ... , "value":"BD_OwnerOrg"}, {"field":"FOwnerIdHead", ... , ... "_findCollection find FOwnerId from c125c169-8234-3b0c-bfea-03f5fcec7a03 where FBillNo={{details_list.src_tid}}" } } ``` 设置货主类型为固定值`BD_OwnerOrg`,并通过查找方法获取货主ID。 2. **关联关系表**: 明细信息中的关联关系表用于记录源单和目标单之间的关联: ```json { ... {"field":"FEntity_Link_FSTableName", ... , ... {"value":"T_STK_OUTSTOCKAPPLYENTRY"}, {"field":"FEntity_Link_FRuleId", ... , ... {"value":"STK_OutStockApplyToSTK_MisDelivery"}, {"field":"FEntity_Link_FSBillId", ... , ... "_findCollection find FID from c125c169-8234-3b0c-bfea-03f5fcec7a03 where FBillNo={{details_list.src_tid}}" }, {"field":"FEntity_Link_FSId", ... , ... "_function SUBSTRING_INDEX('{{details_list.src_oid}}', '-', -1)" } ] } } ``` ##### 执行操作 最后,通过调用API接口,将转换后的数据写入金蝶云星空: ```json { ... {"field":"FormId", ... , ... {"value":"STK_MisDelivery"}, {"field":"Operation", ... , ... {"value":"Save"}, {"field":"IsAutoSubmitAndAudit", ... , ... {"value":"true"} }, {"field":"IsVerifyBaseDataField", ... , ... {"value":"true"} }, {"field":"SubSystemId", ... , ... {"value":"21"} }, {"label":"允许负库存", ... , ... {"InterationFlags", ..., ... {"value" : STK_InvCheckResult} } } ] } } ``` 通过上述配置和操作,我们成功地将旺店通的销售出库单数据转换并写入到金蝶云星空,实现了两个异构系统之间的数据无缝对接。这不仅提高了业务流程的自动化程度,还确保了数据的一致性和准确性。 ![企业微信与OA系统接口开发配置](https://pic.qeasy.cloud/T4.png~tplv-syqr462i7n-qeasy.image)