### 领星ERP数据集成到金蝶云星空:实战案例分享
在本技术案例中,我们将探讨如何高效地将领星ERP系统中的销售出库单自发货数据集成到金蝶云星空平台。通过使用轻易云数据集成平台,我们实现了一个定时可靠、批量处理的解决方案,以确保数据流动的精准和实时性。本次方案命名为“领星销售出库单=>金蝶销售出库单(自发货)”。
首先,通过调用领星ERP接口`/erp/sc/routing/wms/order/wmsOrderList`,我们能够定时抓取最新的销售信息。在这过程中,我们特别注意了分页和限流问题,确保每次请求的数据量恰当,同时防止因频繁请求造成接口超载。
接下来的关键步骤是大量数据快速写入到金蝶云星空。这一步骤利用了其提供的`batchSave` API,有效地缩短了大规模数据同步所需时间。同时,为保证多元化业务需求,这里还实现了一套灵活且高效的数据映射机制,将不同格式的数据进行转换与匹配。
在整个对接过程中,不可避免会遇到异常情况。例如,当某一API请求失败时,可以触发错误重试机制。这不仅提高了对接的鲁棒性,也减少了手工干预。同时,在两者之间存在显著差异的数据格式方面,通过编写特定转换脚本来处理,使得数据一致性得到保障,并最终成功对接至目标系统。
最后,所有操作都具备实时监控与日志记录功能,让管理人员可以随时掌握任务执行状态、大致进度以及可能出现的问题,从而极大提升运维效率。这种全透明可视化管理就是轻易云平台最显著的特点之一,但同样重点是实际应用给业务带来的便利。
此次分享旨在通过具体实例展示复杂系统间无缝衔接,实现从源头获取、处理再到目标存储的一整套完整解决方案。关于更多细节及代码实现,请参阅后续部分内容。
![如何开发金蝶云星空API接口](https://pic.qeasy.cloud/D16.png~tplv-syqr462i7n-qeasy.image)
### 调用源系统领星ERP接口/erp/sc/routing/wms/order/wmsOrderList获取并加工数据
在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用领星ERP接口`/erp/sc/routing/wms/order/wmsOrderList`,并对获取的数据进行初步加工处理。
#### API接口调用配置
首先,我们需要配置API接口的元数据,以便正确地请求数据。以下是元数据配置的详细信息:
```json
{
"api": "/erp/sc/routing/wms/order/wmsOrderList",
"method": "POST",
"number": "wo_number",
"id": "wo_id",
"idCheck": true,
"request": [
{"label": "店铺ID", "field": "sid", "type": "int"},
{"label": "时间查询类型", "field": "time_type", "type": "string", "value": "stock_delivered_at"},
{"label": "开始日期", "field": "start_date", "type": "string", "value": "{{LAST_SYNC_TIME|date}}"},
{"label": "结束日期", "field": "end_date", "type": "string", "value": "{{CURRENT_TIME|date}}"},
{"label": "页数", "field": "page", "type": "string", "value":"1"},
{"label":"行数","field":"page_size","type":"string","value":"50"},
{"field":"status_arr","label":"状态","type":"string","value":"3"},
{"field":"logistics_status_arr","label":"物流状态","type":"string"}
]
}
```
#### 请求参数解析
- **店铺ID (sid)**: 用于指定需要查询的店铺。
- **时间查询类型 (time_type)**: 固定值为`stock_delivered_at`,表示按出库时间查询。
- **开始日期 (start_date)** 和 **结束日期 (end_date)**: 分别表示查询的时间范围。这里使用了模板变量`{{LAST_SYNC_TIME|date}}`和`{{CURRENT_TIME|date}}`,确保每次请求都能获取最新的数据。
- **页数 (page)** 和 **行数 (page_size)**: 用于分页请求,默认值分别为1和50。
- **状态 (status_arr)**: 固定值为3,表示只查询特定状态的数据。
- **物流状态 (logistics_status_arr)**: 可选参数,用于进一步过滤物流状态。
#### 数据请求与清洗
在完成API配置后,我们可以通过轻易云平台发起POST请求以获取数据。以下是一个示例请求体:
```json
{
"sid": 123,
"time_type": "stock_delivered_at",
"start_date": "{{LAST_SYNC_TIME|date}}",
"end_date": "{{CURRENT_TIME|date}}",
"page": 1,
"page_size": 50,
"status_arr": [3],
// 可选字段
// “logistics_status_arr”: [1,2,3]
}
```
收到响应后,需要对数据进行初步清洗和转换,以便后续处理。常见的数据清洗操作包括:
1. **字段映射**:将API返回的数据字段映射到目标系统所需的字段。例如,将`wo_number`映射到金蝶系统中的订单编号字段。
2. **格式转换**:确保日期、数字等字段格式符合目标系统要求。
3. **数据过滤**:根据业务需求过滤掉不必要的数据,例如只保留特定状态或物流状态的订单。
#### 数据转换与写入
在完成数据清洗后,下一步是将数据转换为目标系统所需的格式,并写入目标系统。在本案例中,我们需要将领星ERP的销售出库单数据转换并写入金蝶系统。
以下是一个简单的数据转换示例:
```json
{
// 原始数据
{
"_id" : ObjectId("5f4e8b9b7c213e6a6a5d5e8b"),
...
// 清洗后的数据
{
...
// 映射后的字段
“orderNumber”: “wo_number”,
“orderDate”: “stock_delivered_at”,
...
}
}
```
通过轻易云平台,可以实现自动化的数据转换和写入过程,大大提高了效率和准确性。
#### 实时监控与异常处理
为了确保整个流程顺利进行,需要实时监控数据流动和处理状态。一旦发现异常(如API请求失败、数据格式错误等),应及时记录日志并发送告警通知,以便快速定位问题并解决。
以上就是调用领星ERP接口获取并加工数据的详细技术方案,通过合理配置API元数据、精细化的数据清洗与转换,以及实时监控与异常处理,可以有效提升业务透明度和效率。
![泛微OA与ERP系统接口开发配置](https://pic.qeasy.cloud/S30.png~tplv-syqr462i7n-qeasy.image)
### 使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口
在数据集成生命周期的第二步,我们将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,转为目标平台金蝶云星空API接口所能够接收的格式,最终写入目标平台。本文将详细介绍如何配置和使用这些元数据,以实现这一过程。
#### 配置元数据
我们需要配置一系列字段,这些字段将从源平台的数据中提取,并转换为金蝶云星空API所需的格式。以下是关键字段及其配置方式:
1. **单据类型(FBillTypeID)**
- 类型:字符串
- 描述:标准销售出库单
- 值:`XSCKD01_SYS`
- 解析器:`ConvertObjectParser`
- 参数:`FNumber`
2. **单据编号(FBillNo)**
- 类型:字符串
- 描述:单据编号
- 值:`{platform_order_no}`
3. **日期(FDate)**
- 类型:字符串
- 描述:日期
- 值:`{delivered_at}`
4. **发货组织(FStockOrgId)**
- 类型:字符串
- 描述:组织
- 解析器:`ConvertObjectParser`
- 参数:`FNumber`
- 值:`107`
5. **销售组织(FSaleOrgId)**
- 类型:字符串
- 描述:组织
- 解析器:`ConvertObjectParser`
- 参数:`FNumber`
- 值:`107`
6. **销售部门(FSaleDeptID)**
- 类型:字符串
- 描述:
```json
{
"name": "ConvertObjectParser",
"params": "FNumber"
}
```
查找条件:
```json
{
"content.FName": {"$eq": "{deliverer}"}
}
```
7. **货主类型(FOwnerTypeIdHead)**
- 类型:字符串
- 描述:货主类型
- 值:`BD_OwnerOrg`
8. **货主(FOwnerIdHead)**
- 类型:字符串
- 描述:
```json
{
"name": "ConvertObjectParser",
"params": "FNumber"
}
```
值:`107`
9. **客户(FCustomerID)**
```json
{
"field": "FCustomerID",
"label": "客户",
"type": "string",
"describe": "基础资料",
"parser": {"name":"ConvertObjectParser","params":"FNumber"},
"value":"{sid}"
}
```
10. **明细信息(FEntity)**
明细信息是一个数组,包含多个子字段,如物料编码、实发数量、含税单价等。每个子字段的配置如下:
```json
{
"field":"FMaterialID",
"label":"物料编码",
"type":"string",
"describe":"基础资料",
"parser":{"name":"ConvertObjectParser","params":"FNumber"},
"value":"{{product_info.sku}}"
},
{
"field":"FRealQty",
"label":"实发数量",
"type":"string",
"describe":"数量",
"value":"{{product_info.count}}"
},
{
...
}
```
11. **财务信息(SubHeadEntity)**
财务信息是一个对象,包含结算组织、结算币别等子字段。每个子字段的配置如下:
```json
{
...
{
"field":"FSettleOrgID",
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
```
#### 数据转换与写入
在完成上述元数据配置后,我们需要通过轻易云的数据处理功能,将源平台的数据按照上述配置进行转换,并调用金蝶云星空的API接口进行写入。
1. **数据请求与清洗**:
2. **数据转换**:
3. **数据写入**:
以下是一个示例代码片段,用于调用金蝶云星空API接口并传递转换后的数据:
```python
import requests
url = 'https://api.kingdee.com/batchSave'
headers = {'Content-Type': 'application/json'}
data = {
'FormId': 'SAL_OUTSTOCK',
'Operation': 'Save',
'IsAutoSubmitAndAudit': False,
'IsVerifyBaseDataField': True,
'SubSystemId': '21',
'InterationFlags': 'STK_InvCheckResult',
'Model': transformed_data # 转换后的数据对象
}
response = requests.post(url, headers=headers, json=data)
if response.status_code == 200:
print('Data successfully written to Kingdee Cloud.')
else:
print('Failed to write data:', response.text)
```
通过上述步骤,我们可以成功地将源平台的数据经过ETL转换后写入到金蝶云星空系统中。这一过程确保了不同系统间的数据无缝对接,提高了业务流程的自动化和效率。
![如何对接金蝶云星空API接口](https://pic.qeasy.cloud/T23.png~tplv-syqr462i7n-qeasy.image)