领星ERP数据集成到金蝶云星空:实战案例分享
在本技术案例中,我们将探讨如何高效地将领星ERP系统中的销售出库单自发货数据集成到金蝶云星空平台。通过使用轻易云数据集成平台,我们实现了一个定时可靠、批量处理的解决方案,以确保数据流动的精准和实时性。本次方案命名为“领星销售出库单=>金蝶销售出库单(自发货)”。
首先,通过调用领星ERP接口/erp/sc/routing/wms/order/wmsOrderList
,我们能够定时抓取最新的销售信息。在这过程中,我们特别注意了分页和限流问题,确保每次请求的数据量恰当,同时防止因频繁请求造成接口超载。
接下来的关键步骤是大量数据快速写入到金蝶云星空。这一步骤利用了其提供的batchSave
API,有效地缩短了大规模数据同步所需时间。同时,为保证多元化业务需求,这里还实现了一套灵活且高效的数据映射机制,将不同格式的数据进行转换与匹配。
在整个对接过程中,不可避免会遇到异常情况。例如,当某一API请求失败时,可以触发错误重试机制。这不仅提高了对接的鲁棒性,也减少了手工干预。同时,在两者之间存在显著差异的数据格式方面,通过编写特定转换脚本来处理,使得数据一致性得到保障,并最终成功对接至目标系统。
最后,所有操作都具备实时监控与日志记录功能,让管理人员可以随时掌握任务执行状态、大致进度以及可能出现的问题,从而极大提升运维效率。这种全透明可视化管理就是轻易云平台最显著的特点之一,但同样重点是实际应用给业务带来的便利。
此次分享旨在通过具体实例展示复杂系统间无缝衔接,实现从源头获取、处理再到目标存储的一整套完整解决方案。关于更多细节及代码实现,请参阅后续部分内容。
调用源系统领星ERP接口/erp/sc/routing/wms/order/wmsOrderList获取并加工数据
在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用领星ERP接口/erp/sc/routing/wms/order/wmsOrderList
,并对获取的数据进行初步加工处理。
API接口调用配置
首先,我们需要配置API接口的元数据,以便正确地请求数据。以下是元数据配置的详细信息:
{
"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请求以获取数据。以下是一个示例请求体:
{
"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]
}
收到响应后,需要对数据进行初步清洗和转换,以便后续处理。常见的数据清洗操作包括:
- 字段映射:将API返回的数据字段映射到目标系统所需的字段。例如,将
wo_number
映射到金蝶系统中的订单编号字段。 - 格式转换:确保日期、数字等字段格式符合目标系统要求。
- 数据过滤:根据业务需求过滤掉不必要的数据,例如只保留特定状态或物流状态的订单。
数据转换与写入
在完成数据清洗后,下一步是将数据转换为目标系统所需的格式,并写入目标系统。在本案例中,我们需要将领星ERP的销售出库单数据转换并写入金蝶系统。
以下是一个简单的数据转换示例:
{
// 原始数据
{
"_id" : ObjectId("5f4e8b9b7c213e6a6a5d5e8b"),
...
// 清洗后的数据
{
...
// 映射后的字段
“orderNumber”: “wo_number”,
“orderDate”: “stock_delivered_at”,
...
}
}
通过轻易云平台,可以实现自动化的数据转换和写入过程,大大提高了效率和准确性。
实时监控与异常处理
为了确保整个流程顺利进行,需要实时监控数据流动和处理状态。一旦发现异常(如API请求失败、数据格式错误等),应及时记录日志并发送告警通知,以便快速定位问题并解决。
以上就是调用领星ERP接口获取并加工数据的详细技术方案,通过合理配置API元数据、精细化的数据清洗与转换,以及实时监控与异常处理,可以有效提升业务透明度和效率。
使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口
在数据集成生命周期的第二步,我们将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,转为目标平台金蝶云星空API接口所能够接收的格式,最终写入目标平台。本文将详细介绍如何配置和使用这些元数据,以实现这一过程。
配置元数据
我们需要配置一系列字段,这些字段将从源平台的数据中提取,并转换为金蝶云星空API所需的格式。以下是关键字段及其配置方式:
-
单据类型(FBillTypeID)
- 类型:字符串
- 描述:标准销售出库单
- 值:
XSCKD01_SYS
- 解析器:
ConvertObjectParser
- 参数:
FNumber
-
单据编号(FBillNo)
- 类型:字符串
- 描述:单据编号
- 值:
{platform_order_no}
-
日期(FDate)
- 类型:字符串
- 描述:日期
- 值:
{delivered_at}
-
发货组织(FStockOrgId)
- 类型:字符串
- 描述:组织
- 解析器:
ConvertObjectParser
- 参数:
FNumber
- 值:
107
-
销售组织(FSaleOrgId)
- 类型:字符串
- 描述:组织
- 解析器:
ConvertObjectParser
- 参数:
FNumber
- 值:
107
-
销售部门(FSaleDeptID)
- 类型:字符串
- 描述:
{ "name": "ConvertObjectParser", "params": "FNumber" }
查找条件:
{ "content.FName": {"$eq": "{deliverer}"} }
-
货主类型(FOwnerTypeIdHead)
- 类型:字符串
- 描述:货主类型
- 值:
BD_OwnerOrg
-
货主(FOwnerIdHead)
- 类型:字符串
- 描述:
{ "name": "ConvertObjectParser", "params": "FNumber" }
值:
107
-
客户(FCustomerID)
{ "field": "FCustomerID", "label": "客户", "type": "string", "describe": "基础资料", "parser": {"name":"ConvertObjectParser","params":"FNumber"}, "value":"{sid}" }
-
明细信息(FEntity) 明细信息是一个数组,包含多个子字段,如物料编码、实发数量、含税单价等。每个子字段的配置如下:
{ "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}}" }, { ... }
-
财务信息(SubHeadEntity) 财务信息是一个对象,包含结算组织、结算币别等子字段。每个子字段的配置如下:
{ ... { "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转换后写入到金蝶云星空系统中。这一过程确保了不同系统间的数据无缝对接,提高了业务流程的自动化和效率。