从金蝶到管易:数据集成最佳实践

  • 轻易云集成顾问-姚缘
### 案例分享:金蝶盘盈单数据如何快速集成到管易其他入库单 在企业信息系统中,不同平台之间的数据对接与集成是确保业务流程顺畅运行的关键一步。本文将详细介绍如何利用轻易云数据集成平台,将金蝶云星空中的盘盈单数据,无缝、快速地集成到管易云的其他入库单中。 首先,我们需要从金蝶云星空获取盘盈单的数据。这一步骤主要通过调用其API接口`executeBillQuery`来实现。为了降低接口调用的复杂度和提高效率,我们在数据提取过程中引入了分页处理机制,以应对可能存在的大量数据。本次案例特别关注高吞吐量的数据写入能力,确保大量盘盈单数据能够及时、高效地被传输并写入到管易云系统中。 其次,由于金蝶云星空与管易云之间的数据格式存在差异,因此自定义转换逻辑显得尤为重要。在此过程中,我们充分利用了轻易云提供的可视化流设计工具,直观地构建并管理整个数据流。从而,最终形成便捷、高效且符合业务需求的数据转换流程。 最后,在向管易云提交其它入库单时,通过调用`gy.erp.stock.other.in.add` API完成批量写入操作。同时,为保障整个过程的可靠性和准确性,配置了集中监控和告警系统,对每个步骤进行实时跟踪,一旦发现异常情况,可迅速采取应对措施。此外,还实现了错误重试机制,当某些请求失败时,可以自动进行重试,有力保证了整体任务成功率。 本篇文章将聚焦技术细节,包括如何巧妙解决分页与限流问题,以及不同平台间API接口参数匹配等核心内容,并结合实际应用场景,为您清晰演示这一过程中的突破点及最佳实践。 ![如何对接用友BIP接口](https://pic.qeasy.cloud/D17.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细介绍如何通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口来获取盘盈单数据,并进行初步加工处理。 #### 接口配置与请求参数 首先,我们需要配置接口的元数据,以便正确调用金蝶云星空的API。以下是元数据配置的关键部分: ```json { "api": "executeBillQuery", "effect": "QUERY", "method": "POST", "number": "FBillNo", "id": "FBillEntry_FEntryID", "name": "FBillNo", "idCheck": true, "request": [ {"field":"FBillEntry_FEntryID","label":"FBillEntry_FEntryID","type":"string","describe":"FEntryID","value":"FBillEntry_FEntryID"}, {"field":"FID","label":"实体主键","type":"string","describe":"实体主键","value":"FID"}, {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"FBillNo"}, {"field":"FNoteHead","label":"备注","type":"string","describe":"备注","value":"FNoteHead"}, {"field":"FGainQty","label":"盘盈数量","type":"string","describe":"盘盈数量","value":"FGainQty"}, {"field":"F_UQRW_BaseProperty","label":"物料外部码","type":"string","describe":"物料外部码","value":"F_UQRW_BaseProperty"}, {"field":"F_UQRW_BaseProperty1","label":"仓库外部码","type":"string","describe":"仓库外部码","value":"F_UQRW_BaseProperty1"}, {"field":"F_352_cangkuleixing","label":"仓库类型","type":"string","value":"F_352_cangkuleixing"}, {"field":"FMaterialId","label":"物料编码","type":"string","value":"FMaterialId"} ], "otherRequest": [ {"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}"}, {"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}"}, {"field": "TopRowCount", "label": "返回总行数", "type": "int", "describe": "返回总行数"}, {"field": "FilterString", "label": "过滤条件", "type": "datetime", "describe": "示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=", "value": "FApproveDate>='{{LAST_SYNC_TIME|dateTime}}'"}, {"field": "FieldKeys", "label": "需查询的字段key集合", "type": "array", "describe": "金蝶分录主键ID格式:FPOOrderEntry_FEntryId,其它格式 FPurchaseOrgId.FNumber", "parser": {"name": "ArrayToString", "params": "},"}}, {"field": "FormId", "label": "业务对象表单Id", "type": "string", "describe": "必须填写金蝶的表单ID如:PUR_PurchaseOrder", "value": STK_StockCountGain} ], ... } ``` #### 请求示例 在实际操作中,我们需要构建一个HTTP POST请求来调用`executeBillQuery`接口。以下是一个请求示例: ```json { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... ![金蝶与MES系统接口开发配置](https://pic.qeasy.cloud/S20.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入管易云API接口 在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,使其符合目标平台管易云API接口所能接收的格式,并最终写入目标平台。以下是具体的技术实现细节。 #### API接口配置 首先,我们需要了解管易云API接口的配置。根据提供的元数据配置,目标API为`gy.erp.stock.other.in.add`,使用POST方法进行数据提交。此API接口用于创建其他入库单,关键字段包括仓库代码、备注、第三方系统单号、物流单号以及入库明细。 #### 请求参数解析 元数据配置中定义了请求参数及其对应的字段映射关系: - `warehouse_code`(仓库代码):映射到源数据中的`{F_UQRW_BaseProperty1}`。 - `note`(备注):映射到源数据中的`{FNoteHead}`。 - `wms_bizcode`(第三方系统单号):映射到源数据中的`{FBillNo}`,用于判断排重。 - `mail_no`(物流单号):同样映射到源数据中的`{FBillNo}`。 - `details`(入库明细):是一个数组,包含商品代码和数量两个字段,分别映射到源数据中的`{F_UQRW_BaseProperty}`和`{FGainQty}`。 #### 数据转换与写入流程 1. **提取数据**:从源平台金蝶盘盈单中提取所需字段的数据。 2. **转换格式**:将提取的数据转换为管易云API所需的格式。 3. **写入目标平台**:通过POST请求将转换后的数据写入管易云。 以下是具体实现步骤: ##### 1. 提取数据 首先,从金蝶盘盈单中提取相关字段的数据。例如: ```json { "F_UQRW_BaseProperty1": "WH001", "FNoteHead": "盘盈单备注", "FBillNo": "123456789", "details": [ { "F_UQRW_BaseProperty": "ITEM001", "FGainQty": "10" }, { "F_UQRW_BaseProperty": "ITEM002", "FGainQty": "20" } ] } ``` ##### 2. 转换格式 根据元数据配置,将提取的数据转换为管易云API所需的格式: ```json { "warehouse_code": "WH001", "note": "盘盈单备注", "wms_bizcode": "123456789", "mail_no": "123456789", "details": [ { "item_code": "ITEM001", "qty": "10" }, { "item_code": "ITEM002", "qty": "20" } ] } ``` ##### 3. 写入目标平台 使用HTTP POST方法,将转换后的JSON对象发送到管易云API: ```python import requests import json url = 'https://api.guanyiyun.com/gy.erp.stock.other.in.add' headers = {'Content-Type': 'application/json'} data = { 'warehouse_code': 'WH001', 'note': '盘盈单备注', 'wms_bizcode': '123456789', 'mail_no': '123456789', 'details': [ {'item_code': 'ITEM001', 'qty': '10'}, {'item_code': 'ITEM002', 'qty': '20'} ] } response = requests.post(url, headers=headers, data=json.dumps(data)) print(response.json()) ``` 以上代码示例展示了如何通过Python脚本将转换后的数据发送至管易云API,实现其他入库单的创建。 #### 数据校验与监控 在整个ETL过程中,需要对每个环节的数据进行校验,以确保数据准确性和一致性。例如,在发送请求前,可以对关键字段进行非空校验和格式验证。同时,通过轻易云平台提供的实时监控功能,可以随时查看数据流动和处理状态,及时发现并解决潜在问题。 通过以上步骤,我们成功地完成了从金蝶盘盈单到管易其他入库单的数据集成过程。这不仅提高了业务流程的自动化程度,也确保了不同系统间的数据一致性和准确性。 ![用友BIP接口开发配置](https://pic.qeasy.cloud/T28.png~tplv-syqr462i7n-qeasy.image)