ETL过程详解:从领星ERP到金蝶云星空的数据转换与写入
### 领星ERP入库单集成至金蝶云星空销售退货单【备注区分】技术案例分享
在此次系统对接集成项目中,我们的目标是将领星ERP(Lingxing ERP)系统中的入库单数据,精确、高效地集成到金蝶云星空平台中的销售退货单模块。为了实现这一目标,需要处理多个方面的技术挑战,包括数据抓取、分页限流、格式差异处理以及异常重试机制等。
首先,确定了调用领星ERP获取入库订单数据的API接口:`/erp/sc/routing/storage/inbound/getOrders`。该接口支持定时可靠的数据抓取,可以确保我们同步得到最新和准确的数据。在面对大规模数据量传输需求时,通过批量请求处理进一步提升效率,并保障了每一笔订单都能被完整写入到系统中。
在获取到原始数据后,下一步是针对该订单进行必要的数据转换与加工,以匹配金蝶云星空需要的格式。这其中涉及复杂的字段映射与数值处理,比如日期格式和金额单位等。针对这些问题,通过定制化的数据映射方案加以解决,让不同系统间的数据无缝对接成为可能。
随后,将已清洗转化完毕的数据通过金蝶云提供的batchSave API进行批量写入操作。在这个过程中,对长期运行任务建立实时监控与日志记录机制,一旦发生错误能够立即捕捉并触发自动重试,从而保证整个流程高效且不中断。
对于在实际操作过程中遇到的一些具体问题,例如如何有效应对API限流、如何快速一体化处理大量用户请求及其带来的性能压力,也采取了一系列优化措施。例如,在实现页面级别缓存以减轻服务器负载的同时,还引入多线程并行下载策略来提高整体响应速度。
总体而言,该篇文章旨在分享完整、高效、安全地完成从领星ERP《入库单》到金蝶云星空《销售退货单》的技术对接过程,重点聚焦实际操作细节及潜在风险控制,同时也希望为类似业务场景提供有益参考。
![轻易云数据集成平台金蝶集成接口配置](https://pic.qeasy.cloud/D36.png~tplv-syqr462i7n-qeasy.image)
### 调用领星ERP接口获取并加工数据
在数据集成过程中,调用源系统的API接口是关键的一步。本文将深入探讨如何通过轻易云数据集成平台调用领星ERP的`/erp/sc/routing/storage/inbound/getOrders`接口获取入库单数据,并进行必要的数据加工。
#### 接口调用配置
首先,配置API接口的元数据。根据提供的元数据配置,我们需要设置以下请求参数:
- **偏移量(offset)**:用于分页查询,类型为字符串。
- **偏移长度(length)**:每次查询返回的数据条数,默认值为50。
- **系统仓库id(wid)**:指定查询的仓库ID。
- **时间搜索维度(search_field_time)**:用于指定时间字段,默认值为`opt_time`。
- **日期查询开始时间(start_date)**:查询的起始时间,使用变量`{{LAST_SYNC_TIME|date}}`动态获取上次同步时间。
- **日期查询结束时间(end_date)**:查询的结束时间,使用变量`{{CURRENT_TIME|date}}`动态获取当前时间。
- **入库单单号(order_sn)**:入库单编号,用于精确查询。
- **入库单状态(status)**:默认值为40,表示已完成状态。
- **入库类型(type)**:默认值为1,表示正常入库。
这些参数确保了我们能够精确地从领星ERP系统中获取所需的入库单数据。
#### 数据请求与清洗
在请求数据时,我们采用POST方法发送请求。以下是一个示例请求体:
```json
{
"offset": "0",
"length": "50",
"wid": "12345",
"search_field_time": "opt_time",
"start_date": "{{LAST_SYNC_TIME|date}}",
"end_date": "{{CURRENT_TIME|date}}",
"order_sn": "",
"status": "40",
"type": "1"
}
```
此请求体将返回符合条件的入库单列表。为了确保数据的一致性和完整性,我们需要对返回的数据进行清洗和转换。
#### 数据转换与写入
在获取到原始数据后,需要对其进行一定的处理。例如,根据业务需求,我们可能需要将入库单转换为金蝶销售退货单。在此过程中,可以利用轻易云平台提供的数据转换功能,对数据进行格式化和映射。
以下是一个简单的数据映射示例:
```json
{
"order_sn": "sales_return_order_sn",
"wid": "warehouse_id",
// 更多字段映射...
}
```
通过这种方式,我们可以将领星ERP中的字段映射到金蝶系统所需的字段。同时,可以根据业务逻辑添加必要的备注信息,以区分不同类型的单据。
#### 条件过滤与自动填充
为了进一步优化数据处理过程,可以利用元数据配置中的条件过滤和自动填充功能。例如,通过设置条件过滤,仅保留“销售退货”类型的单据:
```json
"condition_bk":[[{"field":"单据类型","logic":"eqv2","value":"销售退货"}]]
```
同时,通过自动填充功能,可以在响应中自动填充某些字段,以减少手动操作,提高效率:
```json
"autoFillResponse": true
```
#### 实时监控与日志记录
在整个数据集成过程中,实时监控和日志记录是不可或缺的一部分。轻易云平台提供了全面的监控功能,可以实时跟踪每个环节的数据流动和处理状态。一旦出现异常情况,可以及时发现并处理,从而确保数据集成过程的稳定性和可靠性。
通过上述步骤,我们可以高效地调用领星ERP接口获取并加工入库单数据,实现不同系统间的数据无缝对接。这不仅提升了业务透明度和效率,也为后续的数据分析和决策提供了坚实的数据基础。
![金蝶与WMS系统接口开发配置](https://pic.qeasy.cloud/S30.png~tplv-syqr462i7n-qeasy.image)
### 轻易云数据集成平台:将源数据转换为金蝶云星空API格式并写入目标平台
在数据集成的生命周期中,ETL(Extract, Transform, Load)转换是一个至关重要的环节。本文将详细探讨如何使用轻易云数据集成平台,将已经集成的源平台数据转换为金蝶云星空API接口所能接收的格式,并最终写入目标平台。
#### 数据请求与清洗
首先,我们需要从源系统中提取并清洗数据。假设我们已经完成了这一阶段,现在进入数据转换与写入阶段。我们需要将领星入库单的数据转换为金蝶销售退货单,并通过金蝶云星空API接口进行写入。
#### 元数据配置解析
元数据配置是实现这一过程的关键。以下是我们需要配置的主要字段及其解析方法:
1. **FBillTypeID(单据类型)**
- 类型:字符串
- 描述:单据类型
- 解析器:`ConvertObjectParser`,参数为`FNumber`
- 值:`XSTHD01_SYS`
2. **FBillNo(单据编号)**
- 类型:字符串
- 描述:单据编号
- 值:`{{编号}}`
3. **FSaleOrgId(销售组织)**
- 类型:字符串
- 描述:组织
- 解析器:`ConvertObjectParser`,参数为`FNumber`
- 值:`107`
4. **FStockOrgId(库存组织)**
- 类型:字符串
- 描述:组织
- 解析器:`ConvertObjectParser`,参数为`FNumber`
- 值:`107`
5. **FRetcustId(退货客户)**
- 类型:字符串
- 描述:基础资料
- 解析器:`ConvertObjectParser`,参数为`FNumber`
- 值:`{{店铺}}`
6. **FSaledeptid(销售部门)**
- 类型:对象
- 子字段:
- FNumber: `_findCollection find FDept from 5b577853-b5a2-3950-9171-cc4267fd691a where FName={opt_realname}`
7. **FDate(日期)**
- 类型:字符串
- 描述:日期
- 值:`{opt_time}`
8. **FHeadNote(备注)**
- 类型:字符串
- 描述:多行文本
- 值:`{remark}`
9. **FEntity(明细信息)**
明细信息包含多个子字段,如物料编码、零售条形码、实退数量等。每个子字段都需要根据具体需求进行配置。例如:
```json
{
"field": "FMaterialId",
"label": "物料编码",
"type": "string",
"describe": "基础资料",
"parser": {
"name": "ConvertObjectParser",
"params": "FNumber"
},
"value": "{{list.item_list_sku}}",
"parent": "FEntity"
}
```
10. **SubHeadEntity(财务信息)**
财务信息也包含多个子字段,如结算组织、结算币别等。例如:
```json
{
"field": "FSettleOrgId",
"label": "结算组织",
"type": "string",
"describe": "组织",
"parser": {
"name": "ConvertObjectParser",
"params": "FNumber"
},
"value": "107",
"parent": "SubHeadEntity"
}
```
#### API接口调用
配置好元数据后,我们需要调用金蝶云星空API接口进行数据写入。以下是关键的API调用配置:
- API: `batchSave`
- 方法: `POST`
- 请求体:
```json
{
...
// 上文配置的所有字段和值,包括主表和明细表的信息。
...
{
field: 'FormId',
value: 'SAL_RETURNSTOCK'
},
{
field: 'Operation',
value: 'Save'
},
{
field: 'IsAutoSubmitAndAudit',
value: true
},
{
field: 'IsVerifyBaseDataField',
value: true
},
{
field: 'SubSystemId',
value: '21'
}
}
```
通过以上配置,我们可以确保源平台的数据经过ETL转换后,能够被金蝶云星空API接口成功接收并处理。
#### 小结
通过详细解析元数据配置和API调用,我们展示了如何使用轻易云数据集成平台,将领星入库单的数据转换为金蝶销售退货单,并成功写入金蝶云星空系统。这一过程不仅确保了数据的一致性和准确性,还大大提高了业务处理效率。
![用友与WMS系统接口开发配置](https://pic.qeasy.cloud/T24.png~tplv-syqr462i7n-qeasy.image)