通过轻易云平台实现领星ERP与金蝶云星空的数据无缝对接

  • 轻易云集成顾问-潘裕
### 领星-利润报表数据集成到金蝶云星空技术案例 在本次系统对接集成项目中,我们的目标是将领星ERP生成的店铺平台收入数据无缝集成到金蝶云星空系统,并最终形成蓝字应收单数据。这个过程涉及API调用、分页处理、大量数据写入等多个环节,每一步都需要精准配置和实时监控,以确保业务稳定运行。 #### 确保集成领星ERP数据不漏单 首先,为了保证从领星ERP获取的数据完整且无遗漏,我们使用其提供的API接口`/bd/profit/report/open/report/seller/list`定时抓取相关信息。通过设置可靠的定时任务机制,自动化地从该接口提取最新的报表数据,并进行初步验证和过滤,确保所需所有记录均已成功抓取。特别针对分页和限流问题,我们设计了一套容错机制,可以有效处理各种异常情况,防止因网络波动或接口返回错误而导致的数据丢失。 #### 大量数据快速写入至金蝶云星空 关于如何将大批量的数据快速并准确地写入到金蝶云星空,这是另一技术核心点。我们借助于`batchSave` API,通过批量操作显著提升了数据传输效率。在实际实施过程中,还需考虑两端系统间的数据格式差异。例如,需要对领星ERP中的JSON格式进行适当转换以匹配金蝶云要求。同时,在高效提交大量数据信息后,对每个传输包设置独立日志记录和状态监控,从而在出现任何异常时能够及时追踪并重试特定失败部分。 上述方案不仅提高了整个集成流程的透明度,也极大简化了日常运维工作。在接下来的具体步骤中,将进一步详细描述如何配置及执行这些关键环节的方法与技巧,包括实时监控、异常处理以及自定义映射规则等诸多方面。 ![用友与SCM系统接口开发配置](https://pic.qeasy.cloud/D27.png~tplv-syqr462i7n-qeasy.image) ### 调用源系统领星ERP接口/bd/profit/report/open/report/seller/list获取并加工数据 在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用领星ERP的`/bd/profit/report/open/report/seller/list`接口,并对获取的数据进行加工处理。 #### 接口概述 该接口用于查询店铺平台的利润报表,支持按月或按天查询。以下是元数据配置的详细信息: - **API路径**: `/bd/profit/report/open/report/seller/list` - **请求方法**: `POST` - **功能类型**: `QUERY` - **唯一标识符**: `{storeName}-{postedDateLocale}` - **名称**: `亚马逊订单` #### 请求参数配置 根据元数据配置,接口请求参数如下: 1. **monthlyQuery** - 类型: `string` - 描述: 是否按月查询 - 默认值: `true` 2. **startDate** - 类型: `string` - 描述: 开始时间(结算时间,双闭区间) - 默认值: `_function DATE_FORMAT(DATE_SUB(LAST_DAY(NOW()), INTERVAL 1 MONTH), '%Y-%m')` 3. **endDate** - 类型: `string` - 描述: 结束时间(结算时间,双闭区间) - 默认值: `_function DATE_FORMAT(DATE_SUB(LAST_DAY(NOW()), INTERVAL 1 MONTH), '%Y-%m')` 4. **summaryEnabled** - 类型: `string` - 默认值: `true` 5. **offset** - 类型: `string` 6. **length** - 类型: `string` - 默认值: `50` #### 数据请求与清洗 首先,通过轻易云平台配置上述请求参数并调用领星ERP接口。以下是具体步骤: 1. **设置请求参数**: ```json { "monthlyQuery": "true", "startDate": "_function DATE_FORMAT(DATE_SUB(LAST_DAY(NOW()), INTERVAL 1 MONTH), '%Y-%m')", "endDate": "_function DATE_FORMAT(DATE_SUB(LAST_DAY(NOW()), INTERVAL 1 MONTH), '%Y-%m')", "summaryEnabled": "true", "offset": "0", "length": "50" } ``` 2. **发送请求**: 使用POST方法将上述参数发送到`/bd/profit/report/open/report/seller/list`接口。 3. **接收响应并自动填充**: 根据元数据配置中的`autoFillResponse`属性,系统会自动解析响应数据并填充到相应字段中。 #### 数据转换与写入 在接收到原始数据后,需要对其进行转换,以便写入目标系统(金蝶云星空)。以下是关键步骤: 1. **解析响应数据**: 假设响应数据格式如下: ```json { "data": [ { "storeName": "Store A", "postedDateLocale": "2023-09", "profitAmount": 10000, ... }, ... ] } ``` 2. **数据清洗与转换**: 对接收到的数据进行必要的清洗和转换。例如,将日期格式统一,将金额字段转换为目标系统所需的格式等。 3. **生成目标系统所需的数据结构**: 将清洗后的数据组织成金蝶云星空蓝字应收单所需的格式。例如: ```json { "receivableList": [ { "storeName": "Store A", "date": "2023-09", "amount": 10000, ... }, ... ] } ``` 4. **写入目标系统**: 最后,通过轻易云平台将转换后的数据写入金蝶云星空,实现全流程的数据集成。 通过上述步骤,我们成功实现了从领星ERP获取利润报表数据,并将其加工处理后写入金蝶云星空。这不仅提高了业务透明度和效率,还确保了不同系统间的数据无缝对接。 ![轻易云数据集成平台金蝶集成接口配置](https://pic.qeasy.cloud/S12.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台将源平台数据转换为金蝶云星空API接口格式并写入 在数据集成的生命周期中,第二步是将已经集成的源平台数据进行ETL转换,转为目标平台所能接收的格式。在本案例中,我们将领星-利润报表-店铺平台收入的数据转换为金蝶云星空蓝字应收单的格式,并通过API接口写入目标平台。以下是详细的技术实现过程。 #### 1. API接口配置 我们使用金蝶云星空提供的`batchSave` API接口来批量保存数据。该接口采用POST请求方式,具体配置如下: ```json { "api": "batchSave", "effect": "EXECUTE", "method": "POST", "idCheck": true, "operation": { "rowsKey": "array", "rows": 1, "method": "batchArraySave" }, "request": [ { "field": "FBillTypeID", "label": "单据类型", "type": "string", "describe": "单据类型:1.标准应付单:YFD01_SYS\n2.标准应付单:YFD02_SYS\n3.资产调拨应付:YFD03_SYS\n4.转销应付单:YFD04_SYS", "parser": { "name": "ConvertObjectParser", "params": "FNumber" }, "value": "YSD01_SYS" }, { ... } ], ... } ``` #### 2. 数据字段映射与转换 在配置中,我们需要将源平台的数据字段映射到目标平台对应的字段,并进行必要的数据转换。以下是主要字段的映射与转换规则: - **FBillTypeID(单据类型)**: - 值为`YSD01_SYS`,表示标准应收单。 - **FBillNo(单据编号)**: - 使用模板字符串生成,例如 `{storeName}{postedDateLocale}`。 - **FDATE(业务日期)**: - 使用函数拼接日期字符串 `_function CONCAT('{postedDateLocale}', '-01 00:00:00')`。 - **FSALEORGID(销售组织)**: - 固定值 `105`,并通过 `ConvertObjectParser` 转换为目标系统识别的编码。 - **FCUSTOMERID(客户)**: - 动态值 `{storeName}`,并通过 `ConvertObjectParser` 转换。 - **FCURRENCYID(币别)**: - 动态查找货币编码 `_findCollection find FNumber from ... where FCODE={currencyCode}`。 #### 3. 明细数据处理 对于明细数据,我们需要处理数组类型的数据结构,并进行相应的字段映射和转换。例如: ```json { ... { "field": "FEntityDetail", "label": "明细", "type": "array", ... "children": [ { ... { "field": "FMATERIALID", ... "value": "_function ABS({{details.value}})" }, ... } ] } } ``` 在这里,我们处理了物料编码、含税单价、计价数量等字段,并使用函数对数值进行绝对值计算。 #### 4. 表头财务信息处理 表头财务信息包含多个子字段,需要逐一映射和转换。例如: ```json { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... ![打通金蝶云星空数据接口](https://pic.qeasy.cloud/T19.png~tplv-syqr462i7n-qeasy.image)