使用轻易云平台进行ETL转换:从金蝶云星空到旺店通接口数据写入

  • 轻易云集成顾问-彭亮
### 集成金蝶云星空与旺店通·企业奇门:组装-委外仓父项入库方案解析 在企业日常运营中,不同系统间的数据对接常常是一大难点。本篇文章将聚焦于如何高效、可靠地实现金蝶云星空数据集成到旺店通·企业奇门,重点探讨“组装-委外仓父项入库”这一实际应用案例。 为确保数据不漏单且快速写入,我们首先利用金蝶云星空的API接口`executeBillQuery`定时可靠地抓取相关数据。这个接口允许我们灵活配置查询参数,从而获取所需的账单信息。在实时监控和日志记录方面,采用全程透明化管理手段,可以随时查看数据处理进展,有效提升业务透明度和对异常情况的响应速度。 在处理来自金蝶云星空的数据后,下一个关键环节是调用旺店通·企业奇门的API `wdt.vip.wms.stockinout.order.push`进行大量数据写入。考虑到两者之间可能存在的数据格式差异,我们通过定制化映射解决这一问题,使得每个字段都准确无误地传递至目标系统。同时,为了应对分页及限流问题,我们设计了一套机制,在分批次读取与推送过程中保障效率与稳定性。 此外,针对网络波动或其他异常情况,本案例特别引入了错误重试机制,以最大程度保证整个过程不中断。此外,通过批量集成和预警通知等多重措施,提高整体操作成功率,并减少重复劳动。 总之,通过上述技术手段与优化策略,本案例不仅完成了复杂环境下的数据无缝衔接,还为未来类似项目提供了一条清晰可参考的实施路径。 ![金蝶与WMS系统接口开发配置](https://pic.qeasy.cloud/D28.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在轻易云数据集成平台中,调用源系统接口是数据集成生命周期的第一步。本文将详细探讨如何通过调用金蝶云星空的`executeBillQuery`接口来获取并加工数据,以实现组装-委外仓父项入库的集成方案。 #### 接口配置与请求参数 在轻易云数据集成平台中,我们通过配置元数据来定义接口请求参数。以下是针对`executeBillQuery`接口的元数据配置: ```json { "api": "executeBillQuery", "method": "POST", "number": "FBillNo", "id": "FEntity_FEntryID", "pagination": { "pageSize": 500 }, "idCheck": true, "request": [ {"field":"FID","label":"实体主键","type":"string","value":"FID"}, {"field":"FBillNo","label":"单据编号","type":"string","value":"FBillNo"}, {"field":"FDocumentStatus","label":"单据状态","type":"string","value":"FDocumentStatus"}, {"field":"FStockOrgId_FNumber","label":"库存组织","type":"string","value":"FStockOrgId.FNumber"}, {"field":"FDate","label":"日期","type":"string","value":"FDate"}, {"field":"FBillTypeID","label":"单据类型","type":"string","value":"FBillTypeID"}, {"field":"FOwnerTypeIdHead","label":"成品货主类型","type":"string","value":"FOwnerTypeIdHead"}, {"field":"FOwnerIdHead_FNumber","label":"成品货主","type":"string","value":"FOwnerIdHead.FNumber"}, {"field":"FAffairType","label":"事务类型","type":"string","value":"FAffairType"}, {"field":"FEE","label":"费用","type":"string","value":"FEE"}, {"field":"FDeptID_FNumber","label":"部门","type":"string","value":"FDeptID.FNumber"}, {"field":"FNote","label":"","备注"type:""string,""value:""FNote}, ... ], "otherRequest": [ {"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}"}, {"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}"}, ... ] } ``` #### 请求示例 根据上述元数据配置,我们可以构建一个具体的API请求。例如,假设我们需要查询最近同步时间之后的所有组装事务,并且库存组织为编号39的记录,具体请求体如下: ```json { "FormId": "STK_AssembledApp", "FieldKeys": [ ... // 列出所有需要查询的字段 ... ], // 分页参数 { Limit:500, StartRow:0, TopRowCount:1000, FilterString:"FApproveDate>='2023-01-01' and FAFFAIRTYPE = 'Assembly' and FStockID.FNumber ='39'" } } ``` #### 数据清洗与转换 在获取到原始数据后,需要对其进行清洗和转换,以便后续的数据处理和写入。在轻易云平台上,可以通过自定义脚本或内置的数据处理工具进行这些操作。 1. **数据清洗**:去除无效或重复的数据。例如,通过检查`FID`字段来确保每条记录都是唯一且有效的。 2. **数据转换**:将原始数据转换为目标系统所需的格式。例如,将日期格式从`YYYY-MM-DD`转换为目标系统所需的格式。 #### 实践案例 以下是一个实际应用中的脚本示例,用于清洗和转换从金蝶云星空获取的数据: ```python def clean_and_transform(data): cleaned_data = [] for record in data: if not record['FID']: continue transformed_record = { 'bill_no': record['FBillNo'], 'status': record['FDocumentStatus'], 'stock_org': record['FStockOrgId_FNumber'], 'date': transform_date(record['FDate']), 'owner_type': record['FOwnerTypeIdHead'], 'owner_id': record['FOwnerIdHead_FNumber'], ... } cleaned_data.append(transformed_record) return cleaned_data def transform_date(date_str): # 假设目标系统需要 YYYYMMDD 格式 return date_str.replace('-', '') ``` 通过上述步骤,我们可以高效地调用金蝶云星空接口,获取并加工所需的数据,为后续的数据写入和处理打下坚实基础。 ![如何开发用友BIP接口](https://pic.qeasy.cloud/S19.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入旺店通·企业奇门API接口 在数据集成的生命周期中,将已经集成的源平台数据进行ETL转换,并转为目标平台所能接收的格式是至关重要的一步。本文将详细探讨如何使用轻易云数据集成平台,将数据转换为旺店通·企业奇门API接口所需的格式,并最终写入目标平台。 #### API接口元数据配置 在进行ETL转换之前,首先需要了解目标API接口的元数据配置。以下是旺店通·企业奇门API接口`wdt.vip.wms.stockinout.order.push`的元数据配置: ```json { "api": "wdt.vip.wms.stockinout.order.push", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ {"field": "api_outer_no", "label": "接口外部单号", "type": "string", "value": "{FBillNo}"}, {"field": "outer_no", "label": "接口外部单号", "type": "string", "describe": "调用本接口时推送的唯一单据编号,避免重复推送数据", "value": "{FBillNo}"}, {"field": "warehouse_no", "label": "仓库编号", "type": "string", "describe": "...", "value": "{FStockID_FNumber}"}, {"field": "order_type", "label": "出入类型", "type": "string", "describe": "...", "value":"2"}, {"field": "contact", ... }, ... ], ... } ``` #### 数据请求与清洗 在ETL流程中,首先需要从源系统请求并清洗数据。这一步骤确保获取的数据是准确且符合业务需求的。在轻易云平台上,可以通过可视化界面配置数据请求和清洗规则。例如: ```json { // 数据请求配置 } ``` #### 数据转换与写入 接下来,我们将重点讨论如何将清洗后的数据进行转换,以符合旺店通·企业奇门API接口的要求,并最终写入目标平台。 1. **字段映射**:根据元数据配置,将源系统中的字段映射到目标系统所需的字段。例如: ```json { // 源系统字段 FBillNo: '12345', FStockID_FNumber: 'W001', FEntity: [ { FMaterialID_FNumber: 'SKU001', FQty: '10' }, ... ] } ``` 对应到目标系统字段: ```json { api_outer_no: '12345', outer_no: '12345', warehouse_no: 'W001', order_type: '2', contact: '1', auto_check: '1', goods_list: [ { spec_no: 'SKU001', num: '10', price: '1' }, ... ] } ``` 2. **数组处理**:对于复杂结构的数据,如`goods_list`,需要遍历并逐一映射每个子项。轻易云平台提供了强大的数组处理功能,可以通过简单配置实现: ```json { // 数组处理配置 } ``` 3. **API调用**:完成字段映射和数组处理后,通过POST方法将转换后的数据发送到旺店通·企业奇门API接口。具体实现如下: ```json { method: 'POST', url: 'https://api.wangdian.cn/openapi2/stockinout_order_push.php', headers: { Content-Type: 'application/json' }, body: JSON.stringify({ api_outer_no: '{FBillNo}', outer_no: '{FBillNo}', warehouse_no: '{FStockID_FNumber}', order_type: '2', contact: '1', auto_check: '1', goods_list: '{FEntity}' }) } ``` #### 实时监控与日志记录 为了确保整个ETL过程顺利进行,实时监控和日志记录是必不可少的。轻易云平台提供了全面的监控和日志功能,可以实时查看每个环节的数据流动和处理状态。例如: ```json { // 日志记录配置 } ``` 通过上述步骤,我们可以高效地将源平台的数据转换为旺店通·企业奇门API接口所需的格式,并成功写入目标平台。这不仅提高了业务透明度和效率,还确保了数据的一致性和准确性。 ![用友BIP接口开发配置](https://pic.qeasy.cloud/T17.png~tplv-syqr462i7n-qeasy.image)