基于轻易云的数据集成:从领星ERP到金蝶云星空的技术实现

  • 轻易云集成顾问-彭亮
### 领星ERP数据集成到金蝶云星空:领星入库单=>金蝶其他入库单【备注区分】 在实现企业资源规划(ERP)系统与财务管理系统的无缝对接过程中,确保各业务环节的数据高效、安全传输至关重要。本文将介绍如何使用轻易云数据集成平台,将领星ERP中的入库单数据高效、可靠地集成到金蝶云星空的其他入库单模块,并进行必要的定制化处理。 本次案例采用了从领星ERP接口`/erp/sc/routing/storage/inbound/getOrders`获取实时订单数据,通过轻易云平台定时抓取这些数据,并批量写入到金蝶云星空的API `batchSave`中。在实际操作中,我们要面对以下几个技术挑战: 1. **确保集成数据不漏单**: - 实现定时可靠的抓取机制,以避免任何一笔订单遗漏。 2. **快速写入大量数据**: - 优化批量写入逻辑,提升大规模文件处理效率,实现高速稳定的数据传输。 3. **分页和限流问题处理**: - 针对API返回的数据分页,以及可能出现的限流问题,制定相应解决方案以保证连续性和完整性。 4. **异常处理与重试机制**: - 确保在任一环节发生错误时,都能有完善的异常检测及自动重试机制,以减少人工干预提高整体运行稳定性。 5. **实时监控与日志记录**: - 对整个流程进行全面监控和日志记录,使每个步骤都可以追溯,有助于及时发现并解决潜在问题。 通过以上技术点,本篇文章将详细分享如何配置元数据以及API调用细节,从而实现有效、高质、稳定的数据同步。同时,会探讨一些常见的问题,如不同系统间的数据格式差异以及针对特定需求进行自定义映射的方法。让我们进入具体实施阶段,共同探索这项系统对接过程中的精妙之处。 ![企业微信与OA系统接口开发配置](https://pic.qeasy.cloud/D20.png~tplv-syqr462i7n-qeasy.image) ### 调用源系统领星ERP接口/erp/sc/routing/storage/inbound/getOrders获取并加工数据 在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用领星ERP接口`/erp/sc/routing/storage/inbound/getOrders`来获取入库单数据,并进行初步加工。 #### 接口配置与调用 首先,我们需要配置元数据以便正确调用领星ERP的API接口。以下是元数据配置的详细内容: ```json { "api": "/erp/sc/routing/storage/inbound/getOrders", "method": "POST", "number": "order_sn", "id": "order_sn", "idCheck": true, "autoFillResponse": true, "request": [ {"label": "偏移量", "field": "offset", "type": "string"}, {"label": "偏移长度", "field": "length", "type": "string", "value": "50"}, {"label": "系统仓库id", "field": "wid", "type": "string"}, {"label": "时间搜索维度", "field": "search_field_time", "type": "string", "value":"opt_time"}, {"label": "日期查询开始时间", "field":"start_date","type":"string","value":"{{LAST_SYNC_TIME|date}}"}, {"label":"日期查询结束时间","field":"end_date","type":"string","value":"{{CURRENT_TIME|date}}"}, {"label":"入库单单号","field":"order_sn","type":"string"}, {"label":"入库单状态","field":"status","type":"string","value":"40"}, {"label":"入库类型","field":"type","type":"string","value":"1"} ], "condition":[ [{"field":"单据类型","logic":"neqv2","value":"销售退货"}] ] } ``` #### 参数详解 1. **偏移量(offset)**:用于分页查询,避免一次性拉取大量数据导致性能问题。 2. **偏移长度(length)**:每次请求拉取的数据条数,默认设置为50。 3. **系统仓库id(wid)**:指定查询的仓库ID。 4. **时间搜索维度(search_field_time)**:用于指定按哪个时间字段进行查询,这里选择操作时间`opt_time`。 5. **日期查询开始时间(start_date)**和**结束时间(end_date)**:用于限定查询的时间范围,分别使用上次同步时间和当前时间。 6. **入库单单号(order_sn)**:可选参数,用于精确查询特定的入库单。 7. **入库单状态(status)**:固定值40,表示已完成状态的入库单。 8. **入库类型(type)**:固定值1,表示普通入库。 #### 请求示例 以下是一个实际请求示例: ```json { "offset": "0", "length": "50", "wid": "<仓库ID>", "search_field_time": "opt_time", "start_date": "{{LAST_SYNC_TIME|date}}", "end_date": "{{CURRENT_TIME|date}}", "status": "40", "type": "1" } ``` #### 数据清洗与转换 在获取到原始数据后,需要对其进行清洗和转换,以便后续处理。主要包括以下步骤: 1. **去除无效字段**:剔除不必要的数据字段,仅保留业务需要的信息。 2. **格式转换**:将日期、数值等字段转换为目标系统所需的格式。 3. **条件过滤**:根据业务需求过滤掉不符合条件的数据,例如剔除“销售退货”类型的单据。 例如,对于返回的数据结构: ```json { "_embedded":{ ... }, "_links":{ ... } } ``` 我们只保留`_embedded`中的有效信息,并根据条件过滤掉不需要的数据。 #### 数据写入 经过清洗和转换后的数据,将被写入目标系统。在本案例中,我们将处理后的领星ERP入库单数据写入金蝶其他入库单模块。具体实现方式包括: - 使用轻易云平台提供的多种连接器,实现与金蝶系统的无缝对接。 - 配置相应的映射规则,将清洗后的数据字段映射到金蝶系统对应的字段中。 通过上述步骤,我们可以高效地完成从领星ERP到金蝶系统的数据集成过程,实现不同系统间的数据无缝对接。 ![数据集成平台可视化配置API接口](https://pic.qeasy.cloud/S30.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台将源平台数据转换并写入金蝶云星空API接口 在数据集成过程中,ETL(提取、转换、加载)是关键步骤之一。本文将深入探讨如何使用轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,转为金蝶云星空API接口所能接收的格式,并最终写入目标平台。 #### 1. 数据请求与清洗 在此阶段,我们假设已经完成了对源数据的提取和初步清洗。接下来,我们将重点放在如何将这些清洗后的数据通过ETL过程转换为金蝶云星空API所需的格式。 #### 2. 数据转换与写入 我们需要配置元数据,以确保数据能够正确地映射到金蝶云星空的API接口中。以下是具体的元数据配置: ```json { "api": "batchSave", "method": "POST", "idCheck": true, "operation": { "rowsKey": "array", "rows": 1, "method": "batchArraySave" }, "request": [ {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{order_sn}"}, {"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{{单据类型}}","mapping":{"target":"64b9f407fbfedf53a5284541","direction":"positive"}}, {"field":"FStockOrgId","label":"库存组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"107"}, {"field":"FStockDirect","label":"库存方向","type":"string","describe":"下拉列表"}, {"field":"FDate","label":"日期","type":"string","describe":"日期","value":"{commit_time}"}, {"field":"FSUPPLIERID","label":"供应商{supplier_id}VEN00007","type":"string","describe":"基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"}}, {"field":"FDEPTID","label":"部门","type":"string","describe":"基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value": "_mongoQuery 5b577853-b5a2-3950-9171-cc4267fd691a findField=content.FDept where={\"content.FName\":{\"$eq\":\"{create_realname}\"}}"}, {"field":"FOwnerTypeIdHead","label":"货主类型","type":"string","describe":"","value": "BD_OwnerOrg"}, {"field": "FOwnerIdHead", "label": "货主", "type": "string", "describe": "", "parser":{ "name": "ConvertObjectParser", "params": "FNumber" }, "value": "107" }, { "field": "FNOTE", "label": "", "type": "", "", "": "_function LEFT( '{remark}' , 50)" }, { "", "", "", [ { "", "", "", "" } ] } ], [ { "", "", "", "" } ] } ``` #### 元数据字段解析 - **FBillNo**: 单据编号,直接从源数据中的`order_sn`字段获取。 - **FBillTypeID**: 单据类型,通过`ConvertObjectParser`解析器将值转换为目标系统所需格式。 - **FStockOrgId**: 库存组织,固定值`107`。 - **FDate**: 日期,从源数据中的`commit_time`字段获取。 - **FSUPPLIERID**: 供应商,通过`ConvertObjectParser`解析器处理。 - **FDEPTID**: 部门,通过MongoDB查询获取相应部门信息。 - **FOwnerTypeIdHead**: 货主类型,固定值`BD_OwnerOrg`。 - **FOwnerIdHead**: 货主,通过`ConvertObjectParser`解析器处理,固定值`107`。 - **FNOTE**: 备注,通过函数截取前50个字符。 #### 明细信息(FEntity) 明细信息包含多个子字段,如物料编码、零售条形码、收货仓库等。这些字段通过遍历源数据中的`item_list`进行填充,并使用相应的解析器进行转换。 例如: - **FMATERIALID**: 物料编码,从源数据中的`item_list.sku`获取,并通过解析器处理。 - **FQty**: 实收数量,从源数据中的`item_list.product_total`获取。 #### 执行操作配置 其他请求配置项包括: - `FormId`: 固定值,表示业务对象表单ID,如:`STK_MISCELLANEOUS` - `IsVerifyBaseDataField`: 布尔值,表示是否验证基础资料有效性,默认为 `true` - `Operation`: 执行的操作,如: `Save` - `IsAutoSubmitAndAudit`: 布尔值,表示是否自动提交并审核,默认为 `true` 通过以上配置,我们能够确保源平台的数据经过ETL转换后,以正确的格式写入金蝶云星空系统,实现不同系统间的数据无缝对接。 ![钉钉与ERP系统接口开发配置](https://pic.qeasy.cloud/T5.png~tplv-syqr462i7n-qeasy.image)