企业级数据集成:轻松实现管易与金蝶数据对接

  • 轻易云集成顾问-胡秀丛
### 案例分享:管易云数据集成到金蝶云星空 在企业日常运营中,效率和准确性是至关重要的两个要素。本文将聚焦于一个具体的系统对接集成案例,通过详细解析如何将管易采购入库单的数据高效、准确地集成至金蝶云星空,确保业务流程无缝衔接。本项目运行方案名称为“管易采购入库单-->金蝶采购入库单”,主要实现的是将管易合格品对接到星空卖品仓。 #### 系统环境及API接口概述 * **管易云API接口:** `gy.erp.purchase.arrive.get` - 此接口用于获取最新的采购入库单数据。在处理过程中,我们需要解决例如分页和限流等问题,以确保数据完整不漏。 * **金蝶云星空API接口:** `batchSave` - 通过此接口,可批量写入处理后的数据到金蝶云星空中。这使得大量数据能以较高吞吐量快速传输,并且能够及时反映业务变化。 #### 关键技术点 1. **定时可靠的数据抓取** 使用轻易云平台内置的任务调度功能,设置定时任务抓取管易云提供的`gy.erp.purchase.arrive.get` API 数据。这一过程不仅保证了实时性,而且还能应对临时网络波动带来的延迟或失败,通过重试机制保障连续操作不间断进行。 2. **自定义数据转换逻辑** 管易与金蝶各自使用不同的数据结构,为了解决这一问题,引入了自定义的转化逻辑。首先提取并初步清洗从管易获得的数据,然后根据需求映射成符合金蝶要求的新格式,再利用可视化工具设计直观可控的数据流路径,提高整体操作透明度。 3. **实时监控与异常处理** 集成过程中不可避免会遇到各种异常情况,如网络故障、API响应错误等。我们的解决方案采用集中式监控和告警系统,对每一个步骤中的状态进行跟踪。一旦发现异常即刻触发告警,并启动自动错误重试机制,从而减少人为干预,实现稳定可靠的数据传输。 4. **优化大规模数据写入性能** 针对于大量历史记录或突增峰值场景,我们优化了写入策略,使其支持高吞吐量,以加快向`batchSave` API 写入速度。同时通过日志记录分析瓶颈环节,不断调整参数配置提高整体性能表现。 这些技术要点构建起了一个稳定、高效且便捷的一体化系统。在实际部署中,不仅提升了工作效率,更消除了信息 ![钉钉与CRM系统接口开发配置](https://pic.qeasy.cloud/D20.png~tplv-syqr462i7n-qeasy.image) ### 调用管易云接口gy.erp.purchase.arrive.get获取并加工数据 在数据集成生命周期的第一步中,调用源系统接口获取数据是至关重要的。本文将详细探讨如何通过轻易云数据集成平台调用管易云接口`gy.erp.purchase.arrive.get`来获取采购入库单数据,并对其进行初步加工。 #### 接口调用配置 首先,我们需要配置接口调用的元数据,以确保请求能够正确发送并接收预期的数据。以下是元数据配置的关键部分: ```json { "api": "gy.erp.purchase.arrive.get", "method": "POST", "number": "code", "id": "code", "pagination": { "pageSize": 100 }, "idCheck": true, "request": [ {"label": "创建时间开始段", "field": "start_create", "type": "string"}, {"label": "创建时间结束段", "field": "end_create", "type": "string"}, {"label": "审核时间开始段", "field": "start_approve", "type": "string"}, {"label": "审核时间结束段", "field": "end_approve", "type": "string"}, {"label": "审核状态", "field": "status", "type":"string","value":"1"}, {"label":"修改时间开始段","field":"start_modify","type":"string","value":"{{DAYS_AGO_1|datetime}}"}, {"label":"修改时间结束段","field":"end_modify","type":"string","value":"{{CURRENT_TIME|datetime}}"}, {"label":"是否返回已作废的入库单数据","field":"has_cancel_data","type":"string","value":"false"}, {"field":"code","label":"单据编号","type":"string"}, {"field":"supplier_code","label":"供应商代码","type":"string"}, {"field":"warehouse_code","label":"仓库代码","type":"string"} ], ... } ``` #### 请求参数设置 在请求参数中,我们需要特别注意以下几个字段: - `start_create` 和 `end_create`:用于指定查询的创建时间范围。 - `start_approve` 和 `end_approve`:用于指定查询的审核时间范围。 - `status`:审核状态,值为"1"表示只查询已审核的数据。 - `start_modify` 和 `end_modify`:用于指定查询的修改时间范围,默认值分别为一天前和当前时间。 - `has_cancel_data`:是否返回已作废的入库单数据,默认值为"false"。 这些参数确保我们能够精确地获取所需的数据,并避免冗余信息。 #### 分页处理 为了处理大量数据,我们需要进行分页请求。元数据中的分页配置如下: ```json { ... "pagination":{ "pageSize":100 }, ... } ``` 每次请求将返回最多100条记录,通过调整`page_no`参数可以遍历所有数据页。 #### 数据清洗与转换 在获取到原始数据后,需要对其进行清洗和转换,以便后续写入目标系统。以下是一个简单的数据清洗示例: ```python def clean_data(raw_data): cleaned_data = [] for record in raw_data: if record['status'] == '1': # 确保只处理已审核的数据 cleaned_record = { '单据编号': record['code'], '供应商代码': record['supplier_code'], '仓库代码': record['warehouse_code'], '创建时间': record['create_time'], '修改时间': record['modify_time'] } cleaned_data.append(cleaned_record) return cleaned_data ``` 此函数过滤掉未审核的数据,并提取出关键字段进行重命名和格式化。 #### 自动填充响应 元数据配置中的`autoFillResponse: true`选项允许自动填充响应结果,这样可以简化后续的数据处理步骤。 ```json { ... autoFillResponse: true, ... } ``` #### 条件过滤 为了进一步筛选符合业务需求的数据,可以使用条件过滤。例如,筛选备注包含特定关键词的数据: ```json { ... condition: [ [{"field": "note", "logic": "like", "value": "%BZCGSL%"}], [{"field": "note", "logic": ":like", value: "%BZWWSL%"}] ] } ``` 这些条件确保我们只处理与业务相关的数据,提高了效率和准确性。 通过以上步骤,我们成功实现了从管易云系统中获取采购入库单数据并进行初步加工,为后续的数据转换与写入奠定了基础。这一过程展示了如何利用轻易云平台高效地进行异构系统间的数据集成。 ![金蝶云星空API接口配置](https://pic.qeasy.cloud/S15.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台将管易采购入库单转换并写入金蝶云星空 在数据集成过程中,将管易采购入库单的数据转换为金蝶云星空API接口所能接收的格式是一个关键步骤。以下将详细介绍如何使用轻易云数据集成平台进行这一过程的ETL(Extract, Transform, Load)操作。 #### 1. 数据请求与清洗 首先,我们需要从源系统(管易)获取采购入库单的数据,并进行必要的清洗和预处理。这一步骤确保了数据的准确性和一致性,为后续的转换和写入奠定基础。 #### 2. 数据转换与写入 在数据清洗完成后,我们需要将这些数据转换为金蝶云星空API接口所能接受的格式,并通过API接口将其写入目标系统。以下是具体的元数据配置及其解析。 ##### 元数据配置解析 ```json { "api": "batchSave", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ { "field": "FBillTypeID", "label": "单据类型", "type": "string", "describe": "单据类型", "value": "_findCollection find FBillTypeID from be010cf8-b052-3707-ab37-c8c9f7b344e1 where FBillNo={note}", "parser": { "name": "ConvertObjectParser", "params": "FNumber" }, "mapping": { "target": "66beb7e8d8e3374d95424b27", "direction": "positive" } }, { "field": "FBillNo", "label": "单据编号", ... }, ... ], ... } ``` ##### 主要字段解析 - **FBillTypeID**: 单据类型,通过`_findCollection`方法从源系统中查找对应的单据类型ID,并使用`ConvertObjectParser`进行解析。 - **FBillNo**: 单据编号,直接从源系统中获取。 - **FStockOrgId**: 收料组织,通过类似的方法从源系统中查找并解析。 - **FDate**: 入库日期,直接使用创建日期。 - **FOwnerIdHead**: 货主,同样通过查找和解析获取。 - **FPurchaseOrgId**: 采购组织,通过查找和解析获取。 - **FSupplierId**: 供应商,通过查找和解析获取。 - **F_UQRW_Text**: OMS单号,直接从源系统中获取。 ##### 明细字段解析 明细部分的数据结构较为复杂,需要逐一映射各个字段: ```json { ... { "field": "FInStockEntry", ... { ... { "field": "FMaterialId", ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... } } } } } } } } } } } } }, ... } ``` 例如: - **FMaterialId**: 物料编码,通过`_findCollection`方法从源系统中查找对应的物料编码,并使用`ConvertObjectParser`进行解析。 - **FRealQty**: 实收数量,直接从源系统中获取。 - **FTaxPrice**: 含税单价,直接从源系统中获取。 ##### 其他请求参数 ```json { ..., { ..., { ..., { ..., { ... } }, }, ..., { ... }, ..., { ... }, }, } ``` 例如: - **FormId**: 表单ID,固定值为`STK_InStock`。 - **Operation**: 操作类型,固定值为`Save`。 - **IsAutoSubmitAndAudit**: 是否自动提交和审核,布尔值设置为`true`。 #### 实际应用案例 在实际应用中,我们可以根据上述配置,将管易采购入库单的数据通过轻易云平台转换为金蝶云星空所需的格式,并通过API接口批量保存到目标系统。这一过程不仅提高了数据处理效率,还确保了数据的一致性和准确性。 通过这种方式,我们能够实现不同系统之间的数据无缝对接,为企业提供高效、可靠的数据集成解决方案。 ![如何开发金蝶云星空API接口](https://pic.qeasy.cloud/T25.png~tplv-syqr462i7n-qeasy.image)