如何通过ETL实现金蝶数据与旺店通的无缝对接

  • 轻易云集成顾问-吴伟
### 金蝶云星空与旺店通·旗舰版的数据集成实践 在本案例中,我们将详细探讨如何通过轻易云数据集成平台,将金蝶云星空的采购退料单数据,准确而高效地对接到旺店通·旗舰版中的内部仓退模块(其他出库)。我们采用的方案名称是:标准-金蝶-采购退料单——>旺店通-内部仓退(其他出库)。 首先,要确保我们能够从金蝶云星空获取完整且准确的数据,这要求使用其提供的API接口 `executeBillQuery`。为了避免漏单问题,在调用该接口时,我们实现了分页和限流机制,以确保即使在大数据量场景下也不会出现请求失败或部分缺失。 其次,为了快速而有效地将这些大量数据写入到旺店通·旗舰版,我们利用了其开放API `wms.stockout.Other.createOther`。通过批量操作来提升效率,并结合定时任务以保持稳定性和可靠性,使得整个流程自动化程度更高。此外,还需要注意两者之间的数据格式差异,为此我们做了相应的数据映射处理。 最后,考虑到任何系统对接都可能会面对异常情况,比如网络波动或服务不可用等。因此,在实现过程中我们特别设置了异常处理与错误重试机制。一旦出现问题,系统会自动记录并尝试重新发送相关请求,从而保证不会因为偶发故障导致数据丢失。 总之,通过上述技术手段,我们顺利构建了一套可靠、高效、透明的数据集成解决方案,将来自金蝶云星空的业务信息无缝衔接到旺店通·旗舰版,提高了整体业务运作效率,同时也确保每一笔交易都得到精确处理。在后续部分,我将进一步深入讲解具体实施细节和代码示例,以便各位读者参考实际应用。 ![金蝶与外部系统打通接口](https://pic.qeasy.cloud/D38.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成的生命周期中,第一步是从源系统获取数据并进行初步加工。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空接口`executeBillQuery`来实现这一过程。 #### 接口配置与调用 首先,我们需要了解接口的基本配置和调用方式。根据提供的元数据配置,`executeBillQuery`接口采用POST方法进行调用,主要用于查询金蝶云星空中的采购退料单信息。以下是该接口的关键参数配置: - **api**: `executeBillQuery` - **method**: `POST` - **number**: `FBillNo` - **id**: `FPURMRBENTRY_FEntryID` - **idCheck**: `true` #### 请求参数解析 请求参数分为两部分:必填字段和其他请求字段。必填字段包括单据编号、实体主键等,而其他请求字段则用于分页和过滤条件设置。 ##### 必填字段 ```json [ {"field":"FPURMRBENTRY_FEntryID","label":"明细信息ID","type":"string","describe":"明细信息ID","value":"FPURMRBENTRY_FEntryID"}, {"field":"FID","label":"实体主键","type":"string","describe":"实体主键","value":"FID"}, {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"FBillNo"}, {"field":"FDocumentStatus","label":"单据状态","type":"string","describe":"单据状态\n暂存:Z\n创建:A\n审核中:B\n已审核:C","value":"FDocumentStatus"} ] ``` 这些字段是每次请求必须提供的,用于标识和筛选具体的采购退料单。 ##### 其他请求字段 ```json [ {"field":"Limit","label":"最大行数","type":"string","describe":"金蝶的查询分页参数","value":"{PAGINATION_PAGE_SIZE}"}, {"field":"StartRow","label":"开始行索引","type":"string","describe":"金蝶的查询分页参数","value":"{PAGINATION_START_ROW}"}, {"field":"FilterString","label":"过滤条件","type":"string","describe":"","value":""}, {"field":"FieldKeys","label":"需查询的字段key集合","type":"array"} ] ``` 这些字段用于控制返回结果的分页和过滤条件,例如: - **Limit**: 每页返回的最大行数。 - **StartRow**: 查询起始行索引。 - **FilterString**: 自定义过滤条件,用于精确筛选数据。 - **FieldKeys**: 指定需要返回的字段集合。 #### 数据获取与初步加工 在实际操作中,我们通常会根据业务需求设置具体的过滤条件和分页参数。例如: ```json { "Limit": "100", "StartRow": "0", "FilterString": "FApproveDate>='2023-01-01' and FStockOrgId.FNumber='101'", "FieldKeys": ["FBillNo", "FDate", "FSupplierID_FNumber", "FStockOrgId_FNumber"] } ``` 上述示例中,我们设置了每页返回100条记录,从第0行开始,并且只查询2023年1月1日之后审核通过且库存组织编号为101的数据,同时只返回指定的几个关键字段。 #### API调用示例 以下是一个完整的API调用示例: ```json { "api": "executeBillQuery", "method": "POST", "number": "FBillNo", "id": "FPURMRBENTRY_FEntryID", "idCheck": true, "request": [ {"field": "FPURMRBENTRY_FEntryID", "value": ""}, {"field": "FID", "value": ""}, {"field": "FBillNo", "value": ""}, {"field": "FDocumentStatus", "value": ""} ], "otherRequest": [ {"field": "Limit", "value": "{PAGINATION_PAGE_SIZE}"}, {"field": "StartRow", "value": "{PAGINATION_START_ROW}"}, {"field": "FilterString", "value": "'FApproveDate>='2023-01-01' and FStockOrgId.FNumber='101' and FSTOCKID.F_TBIK_Assistant_qtr = '内部仓' and FDate>='2024-08-05 17:30:00'"}, {"field": FieldKeys, value:["FBillNo", FDate, FSupplierID_FNumber, FStockOrgId_FNumber]} ] } ``` 在这个示例中,我们通过设置具体的`FilterString`和`FieldKeys`来精确控制查询结果,并使用分页参数来管理大数据量的返回。 #### 数据清洗与转换 获取到原始数据后,需要对其进行清洗和转换,以便后续处理。例如,可以对日期格式进行标准化处理,对金额字段进行单位转换等。这一步骤可以利用轻易云平台提供的数据处理工具实现,确保数据在进入下一阶段时已经过初步整理,符合目标系统要求。 通过以上步骤,我们完成了从金蝶云星空获取采购退料单数据并进行初步加工,为后续的数据转换与写入奠定了基础。在实际应用中,可以根据具体业务需求进一步优化查询和处理逻辑,以提升数据集成效率和准确性。 ![如何对接用友BIP接口](https://pic.qeasy.cloud/S3.png~tplv-syqr462i7n-qeasy.image) ### 数据集成与ETL转换:从金蝶采购退料单到旺店通·旗舰版内部仓退 在数据集成的生命周期中,ETL(Extract, Transform, Load)转换是至关重要的一步。本文将详细探讨如何将金蝶系统中的采购退料单数据,通过轻易云数据集成平台,转换为旺店通·旗舰版API接口所能接收的格式,并最终写入目标平台。 #### 1. API接口配置与元数据解析 首先,我们需要理解目标平台——旺店通·旗舰版的API接口配置。根据提供的元数据配置,目标API为`wms.stockout.Other.createOther`,请求方法为`POST`。以下是关键字段及其对应关系: - `outer_no` 对应 `FBillNo` - `warehouse_no` 对应 `FSTOCKID_FNumber` - `remark` 对应 `供应商:{FSupplierID_FNumber} {FDESCRIPTION}` - `is_check` 固定值 `"true"` - `reason` 固定值 `"采购退料出库"` - `goods_list` 为一个数组,包含SKU、出库数量和明细备注 #### 2. 数据请求与清洗 在进行ETL转换之前,需要确保从源系统(金蝶)获取的数据已经过清洗和预处理。这一步通常包括数据验证、格式化和初步的字段映射。例如: ```json { "FBillNo": "PO123456", "FSTOCKID_FNumber": "WH001", "FDESCRIPTION": "退货描述", "FSupplierID_FNumber": "SUP123", "FMATERIALID_FNumber": "MAT001", "FRMREALQTY": 100, "FNOTE": "无" } ``` #### 3. 数据转换与构建请求体 根据元数据配置,我们需要将上述清洗后的数据进行字段映射,并构建符合旺店通·旗舰版API要求的请求体。以下是具体步骤: ##### a. 构建表头部分 表头部分包括外部单号、仓库编号、备注、是否审核和出库原因。这些字段直接映射即可: ```json { "outer_no": "{FBillNo}", "warehouse_no": "{FSTOCKID_FNumber}", "remark": "供应商:{FSupplierID_FNumber} {FDESCRIPTION}", "is_check": "true", "reason": "采购退料出库" } ``` ##### b. 构建明细部分 明细部分是一个数组,每个元素包含SKU、出库数量和备注: ```json "goods_list": [ { "spec_no": "{FMATERIALID_FNumber}", "num": "{FRMREALQTY}", "remark": "{FNOTE}" } ] ``` 结合表头和明细部分,完整的请求体如下: ```json { "outer_no": "PO123456", "warehouse_no": "WH001", "remark": "供应商:SUP123 退货描述", "is_check": true, "reason": "采购退料出库", "goods_list": [ { "spec_no": "MAT001", "num": 100, "remark": "" } ] } ``` #### 4. 数据写入目标平台 最后,将构建好的JSON请求体通过HTTP POST方法发送到旺店通·旗舰版API接口: ```http POST /wms.stockout.Other.createOther HTTP/1.1 Host: api.wangdian.cn Content-Type: application/json { // JSON 请求体内容 } ``` 通过轻易云数据集成平台,可以实时监控这一步骤的数据流动和处理状态,确保每个环节都透明可视。 #### 总结 本文详细探讨了如何使用轻易云数据集成平台,将金蝶系统中的采购退料单数据进行ETL转换,并写入到旺店通·旗舰版内部仓退API接口中。通过对元数据配置的深入理解和应用,我们能够实现不同系统间的数据无缝对接,大大提升了业务流程的效率和透明度。 ![钉钉与WMS系统接口开发配置](https://pic.qeasy.cloud/T17.png~tplv-syqr462i7n-qeasy.image)