利用数据集成平台进行ETL转换并接入旺店通·旗舰版

  • 轻易云集成顾问-黄宏棵
### 金蝶云星空数据集成到旺店通·旗舰版:标准-金蝶-其他出库单——>旺店通-委外仓退(出库业务) 在企业管理系统中,实现不同平台之间的数据无缝对接往往是一项复杂而关键的任务。本文将介绍如何通过轻易云数据集成平台,完成从金蝶云星空到旺店通·旗舰版的系统对接,重点分享“标准-金蝶-其他出库单——>旺店通-委外仓退(出库业务)”这一方案。 首先,我们需要从金蝶云星空获取相关出库单信息。为此,可使用executeBillQuery API接口进行调用。例如,通过API定时可靠地抓取接口数据,以确保不会漏单。这一过程不仅要处理好分页和限流的问题,还需建立起实时监控与日志记录机制,对每一次API调用进行跟踪和分析,从而保证所有数据都能准确采集。 获取到的数据通常存在格式差异,因此在写入到旺店通·旗舰版之前,需要进行必要的数据转换和映射。利用高效灵活的轻易云数据映射工具,可以处理这些源端与目标端之间的数据格式不一致问题。在转化过程中,要注意针对特定需求对接开发自定义规则,以便满足业务逻辑要求。 之后,将经转化后的批量数据快速写入至旺店通·旗舰版,可以调用wms.stockother.Out.push API来实现这一操作。同样也必须确保该过程中的异常处理及错误重试机制,这可以有效应对可能出现的数据冲突或网络异常等问题,提高整体流程的稳定性和鲁棒性。同时,也可以通过实时监控功能持续关注整个传输链路上的状态变化,一旦发现状况能够及时响应调整。 这个技术案例不仅展示了如何将两个不同系统间实现高效、可靠的数据交互,更体现了多种技术细节,例如分页、限流控制,自定义映射以及异常重试等多个方面的深度应用。 ![金蝶与CRM系统接口开发配置](https://pic.qeasy.cloud/D11.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将深入探讨如何使用轻易云数据集成平台,通过调用金蝶云星空的`executeBillQuery`接口来获取并加工数据,以实现标准-金蝶-其他出库单到旺店通-委外仓退(出库业务)的集成。 #### 接口配置与请求参数 首先,我们需要配置调用金蝶云星空接口的元数据。以下是元数据配置的详细内容: ```json { "api": "executeBillQuery", "effect": "QUERY", "method": "POST", "number": "FBillNo", "id": "FEntity_FEntryID", "name": "FBillNo", "idCheck": true, "request": [ {"field":"FEntity_FEntryID","label":"FEntryID","type":"string","describe":"FEntryID","value":"FEntity_FEntryID"}, {"field":"FID","label":"实体主键","type":"string","describe":"实体主键","value":"FID"}, {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"FBillNo"}, {"field":"FDocumentStatus","label":"单据状态","type":"string","describe":"单据状态","value":"FDocumentStatus"}, {"field":"FStockOrgId_FNumber","label":"库存组织","type":"string","describe":"库存组织","value":"FStockOrgId.FNumber"}, {"field":"FDate","label":"日期","type":"string","describe":"日期","value":"FDate"}, {"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","value":"FBillTypeID"}, {"field":"FNOTE","label":"备注","type":"string","describe":"备注","value":"FNOTE"}, {"field":...} ], "otherRequest": [ {"field":...} ], "autoFillResponse": true } ``` #### 请求参数解析 1. **基本字段**:如`FBillNo`(单据编号)、`FID`(实体主键)、`FDate`(日期)等,这些字段是从金蝶云星空获取出库单信息所必须的。 2. **过滤条件**:通过`FilterString`字段设置过滤条件,例如: ```sql FApproveDate>='{{LAST_SYNC_TIME|datetime}}' and FStockOrgId.FNumber='101' and FSTOCKID.F_TBIK_Assistant_qtr = '委外仓' and FBillTypeID.FNUMBER in ('QTCKD01_SYS') and FDate>='2024-08-05 00:00:00' ``` 此过滤条件确保只获取符合特定条件的数据,如指定库存组织、出库类型等。 3. **分页参数**:通过`Limit`和`StartRow`字段控制查询结果的分页,确保一次请求不会返回过多数据,影响性能。 #### 调用接口与处理响应 在配置好元数据后,通过轻易云平台发起POST请求,调用金蝶云星空的`executeBillQuery`接口。以下是一个示例请求体: ```json { "FormId": "STK_MisDelivery", "FieldKeys": ["FID", "FBillNo", ...], "FilterString": "...", "Limit": 100, "StartRow": 0 } ``` 响应示例如下: ```json { "Result": { ... "Data": [ { "FID": "...", "FBillNo": "...", ... }, ... ] } } ``` #### 数据清洗与转换 获取到原始数据后,需要对其进行清洗和转换,以便后续写入目标系统。常见的数据清洗操作包括: 1. **字段映射**:将金蝶云星空中的字段映射到目标系统对应的字段。例如,将`FBillNo`映射为目标系统中的订单编号。 2. **数据格式转换**:将日期格式从金蝶的格式转换为目标系统所需的格式。 3. **值校验与处理**:检查关键字段是否为空或无效,并进行必要的处理。 以下是一个简单的数据清洗示例: ```python def clean_data(raw_data): cleaned_data = [] for entry in raw_data: cleaned_entry = { 'order_id': entry['FBillNo'], 'date': convert_date_format(entry['FDate']), ... } cleaned_data.append(cleaned_entry) return cleaned_data ``` #### 写入目标系统 经过清洗和转换后的数据可以通过轻易云平台写入到目标系统,如旺店通。此过程通常涉及调用目标系统提供的API接口,将处理后的数据批量写入。 总结而言,通过轻易云平台调用金蝶云星空的`executeBillQuery`接口,并对获取的数据进行清洗和转换,可以实现不同系统间的数据无缝对接。这一过程不仅提高了业务透明度和效率,还确保了数据的一致性和准确性。 ![数据集成平台API接口配置](https://pic.qeasy.cloud/S16.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入旺店通·旗舰版API接口 在数据集成生命周期的第二步中,我们将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,转为目标平台——旺店通·旗舰版API接口所能够接收的格式,并最终写入目标平台。本文将详细探讨如何通过轻易云数据集成平台实现这一过程。 #### API接口配置 在本案例中,我们需要调用旺店通·旗舰版的`wms.stockother.Out.push` API接口。该接口用于处理出库业务,具体元数据配置如下: ```json { "api": "wms.stockother.Out.push", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ { "field": "order", "label": "单据头", "type": "object", "children": [ {"field": "outer_no", "label": "外部单号", "type": "string", "value": "{FBillNo}"}, {"field": "warehouse_no", "label": "仓库编号", "type": "string", "value": "{FSTOCKID_FNumber}"}, {"field": "reason", "label": "出库原因", "type": "string", "value": "{F_TBIK_CKLX}"}, {"field": "is_check", "label": "是否审核", "type":"string","value":"true"}, {"field":"remark","label":"备注","type":"string","value":"{FNOTE}"}, {"field":"receiver_name","label":"收件人名称","type":"string","value":"接口传单"}, {"field":"receiver_mobile","label":"收件人电话","type":"string","value":"18888888888"}, {"field":"receiver_province","label":"省","type":"string","value":"广东省"}, {"field":"receiver_city","label":"市","type":"string","value":"广州市"}, {"field":"receiver_district","label":"区","type":"string","value":"白云区"}, {"field":"receiver_address","label":"地址","type":"string","value":"接口传单"} ] }, { "field": "order_details", "label": "单据明细", "type": ["array"], "value" : ["list"], children: [ { field: 'spec_no', label: '商家编码', type: 'string', value: '{FMATERIALID_FNumber}' }, { field: 'num', label: '数量', type: 'string', value: '{FBaseQty}' }, { field: 'remark', label: '明细备注', type: 'string', value: '{FEntryNote}' } ] } ], groupCalculate:{ headerGroup:["FBillNo",...], bodyGroup:["FMATERIALID_FNumber"...], bodyName:"list", calculate:{ FBaseQty:"$sum" } }, buildModel:true } ``` #### 数据请求与清洗 首先,我们从源系统(金蝶)中提取出库单的数据。这一步骤涉及到对原始数据的清洗和初步转换,以确保其符合目标系统的要求。例如,将金蝶中的字段`FBillNo`映射到目标系统中的`outer_no`字段。 #### 数据转换与写入 在轻易云数据集成平台上,我们可以利用其强大的ETL功能,将清洗后的数据进一步转换为旺店通·旗舰版API所需的格式。以下是具体步骤: 1. **定义请求结构**:根据元数据配置定义请求结构,包括单据头和单据明细部分。 2. **字段映射**:将源系统的数据字段映射到目标系统的字段。例如: - `FBillNo` -> `outer_no` - `FSTOCKID_FNumber` -> `warehouse_no` - `F_TBIK_CKLX` -> `reason` 3. **聚合计算**:对于需要聚合计算的字段,如数量(`FBaseQty`),我们可以使用内置的计算函数(如求和 `$sum`)来完成。 4. **构建模型**:根据定义好的请求结构和映射关系,构建最终的数据模型。 #### 示例代码 以下是一个示例代码片段,展示如何利用轻易云平台进行上述操作: ```python import requests import json # 构建请求头 order = { 'outer_no': source_data['FBillNo'], 'warehouse_no': source_data['FSTOCKID_FNumber'], 'reason': source_data['F_TBIK_CKLX'], 'is_check': True, 'remark': source_data['FNOTE'], 'receiver_name': '接口传单', 'receiver_mobile': '18888888888', 'receiver_province': '广东省', 'receiver_city': '广州市', 'receiver_district': '白云区', 'receiver_address': '接口传单' } # 构建请求体 order_details = [] for item in source_data['details']: order_details.append({ 'spec_no': item['FMATERIALID_FNumber'], 'num': item['FBaseQty'], 'remark': item['FEntryNote'] }) payload = { 'order': order, 'order_details': order_details } # 发起POST请求 response = requests.post('https://api.wangdian.cn/wms.stockother.Out.push', json=payload) print(response.json()) ``` 通过上述步骤,我们成功地将金蝶系统中的出库单数据转换为旺店通·旗舰版API所能接受的格式,并通过POST请求将其写入目标系统。这一过程充分利用了轻易云数据集成平台的ETL功能,实现了不同系统间的数据无缝对接。 ![如何开发金蝶云星空API接口](https://pic.qeasy.cloud/T25.png~tplv-syqr462i7n-qeasy.image)