旺店通·企业奇门数据集成到金蝶云星空:高效、可靠的数据对接方案
在本篇技术案例中,我们将分享一个关于如何通过轻易云平台,将旺店通·企业奇门中的其他出库单数据,成功集成至金蝶云星空系统的实际运行方案。该方案名为“旺店通其他出库单>云星空其他出库单”。
我们首先面临的挑战是确保从旺店通·企业奇门获取的数据不漏单,并能快速、批量地写入到金蝶云星空。这一过程中,需要调用wdt.stockout.order.query
接口来抓取源数据,同时使用batchSave
API实现数据的批量写入。
为了保证数据集成过程的顺利进行,以下几个技术点尤为重要:
- 实时监控与日志记录:通过设置详细的实时监控和日志记录机制,可以确保每个步骤都清晰可见,从而及时发现并解决潜在问题。
- 异常处理与错误重试:针对可能出现的数据传输错误或网络波动,实现自动化的异常处理和重试机制,以提升系统稳定性。
- 数据格式差异处理:由于旺店通·企业奇门与金蝶云星空之间存在不同的数据格式需求,需要定制化映射策略,以确保信息准确无误地转换和存储。
特别是在分页和限流方面,为了避免因大量请求造成服务器压力过大,这套方案细致设计了分页请求及速率限制控制,从而保障了接口调用效率及整体系统性能。此外,通过定时任务模块,我们能够可靠地周期性抓取最新订单数据,进一步提升业务流程自动化程度。
下面,我们将逐步解析这一具体实施方案,包括API调用设置、分段逻辑实现以及最终的数据验证方法。在实际操作中,这些技术要点不仅提高了数据信息传递速度,还显著增强了整个流程执行的一致性与安全性。
调用源系统旺店通·企业奇门接口wdt.stockout.order.query获取并加工数据
在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何使用轻易云数据集成平台配置元数据,通过调用旺店通·企业奇门接口wdt.stockout.order.query
来获取并加工出库单数据。
接口调用配置
首先,我们需要配置接口调用的元数据。根据提供的元数据配置,接口wdt.stockout.order.query
采用POST方法进行调用,主要参数如下:
- 开始时间(start_time):按最后修改时间增量获取数据,格式为
yyyy-MM-dd HH:mm:ss
。使用模板变量{{LAST_SYNC_TIME|datetime}}
动态获取上次同步时间。 - 结束时间(end_time):按最后修改时间增量获取数据,格式为
yyyy-MM-dd HH:mm:ss
。使用模板变量{{CURRENT_TIME|datetime}}
动态获取当前时间。 - 出库单类型(order_type):值为7,表示其他出库。
- 出库单状态(status):值为95,表示已发货状态。
- 仓库编号(warehouse_no):代表仓库唯一编码,用于区分不同仓库。
- 源单号(src_order_no):源单号字段。
- 出库单号(stockout_no):出库单号字段,可以不传时间。
此外,还包括分页参数:
- 分页大小(page_size):每页返回的数据条数,默认值为100。
- 页号(page_no):默认从0页开始。
请求参数示例
以下是一个请求参数的示例:
{
"start_time": "{{LAST_SYNC_TIME|datetime}}",
"end_time": "{{CURRENT_TIME|datetime}}",
"order_type": "7",
"status": "95",
"warehouse_no": "WH001",
"page_size": "100",
"page_no": "0"
}
数据清洗与转换
在获取到原始数据后,需要对其进行清洗和转换,以便后续的数据处理和写入操作。以下是一些常见的数据清洗与转换步骤:
-
字段映射与重命名:
- 将原始字段映射到目标系统所需的字段。例如,将原始字段
order_no
映射为目标系统中的订单编号字段。
- 将原始字段映射到目标系统所需的字段。例如,将原始字段
-
数据类型转换:
- 确保所有字段的数据类型符合目标系统的要求。例如,将日期字符串转换为标准的日期格式。
-
过滤无效数据:
- 根据业务规则过滤掉无效或不需要的数据。例如,只保留状态为已发货的记录。
-
增量更新处理:
- 使用开始时间和结束时间进行增量更新处理,仅同步自上次同步以来的新数据。
示例代码
以下是一个简化的Python示例代码,用于演示如何调用接口并处理返回的数据:
import requests
import datetime
# 配置请求参数
params = {
"start_time": datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
"end_time": datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
"order_type": "7",
"status": "95",
"warehouse_no": "WH001",
"page_size": 100,
"page_no": 0
}
# 调用接口
response = requests.post("https://api.wangdiantong.com/wdt.stockout.order.query", data=params)
data = response.json()
# 数据清洗与转换
cleaned_data = []
for record in data['orders']:
cleaned_record = {
'订单编号': record['order_no'],
'出库单号': record['stockout_no'],
'仓库编号': record['warehouse_no'],
'状态': record['status'],
'最后修改时间': record['modified']
}
cleaned_data.append(cleaned_record)
# 打印清洗后的数据
print(cleaned_data)
通过上述步骤,我们可以高效地从旺店通·企业奇门接口获取并加工出库单数据,为后续的数据写入和业务处理打下坚实基础。在实际应用中,可以根据具体需求进一步优化和扩展这些步骤,以满足复杂多变的业务场景。
使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口的技术案例
在数据集成生命周期的第二步,我们将已经集成的源平台数据进行ETL转换,转为目标平台金蝶云星空API接口所能够接收的格式,并最终写入目标平台。本文将详细探讨如何利用轻易云数据集成平台实现这一过程。
1. 数据请求与清洗
首先,从源系统(如旺店通)中获取其他出库单的数据。这一步骤包括数据请求和初步清洗,以确保数据的准确性和完整性。
2. 数据转换与写入
接下来,我们重点关注如何将清洗后的数据转换为金蝶云星空API接口所需的格式,并通过API接口将其写入目标系统。以下是具体步骤和元数据配置的应用。
2.1 配置API接口
根据元数据配置,金蝶云星空API接口采用batchSave
方法,通过POST请求进行批量保存操作。以下是关键字段及其配置:
- FBillNo(单据编号): 从源系统获取并映射到金蝶云星空中的
FBillNo
字段。 - FBillTypeID(单据类型): 固定值
QTCKD01_SYS
,通过ConvertObjectParser
解析为金蝶内部编码。 - FStockOrgId(库存组织) 和 FPickOrgId(领用组织): 固定值
100
,同样通过ConvertObjectParser
解析。 - FDate(日期): 从源系统获取并映射到金蝶云星空中的
FDate
字段。 - FCustId(客户) 和 FDeptId(领料部门): 需要通过解析器将客户和部门信息转换为金蝶内部编码。
- FPickerId(领料人): 通过MongoDB查询获取操作员编号,并映射到金蝶系统。
- FOwnerTypeIdHead(货主类型) 和 FOwnerIdHead(货主): 固定值分别为
BD_OwnerOrg
和100
,通过解析器处理。
2.2 配置明细信息
对于明细信息,需要特别注意数组结构的处理。每个明细项包含多个字段,如下所示:
- FMaterialId(物料编码): 从源系统获取并映射到金蝶云星空中的物料编码,通过解析器转换。
- FQty(实发数量): 从源系统获取并映射到金蝶云星空中的数量字段。
- FStockId(发货仓库) 和 FOwnerId(货主): 分别从源系统获取仓库编号和货主信息,通过解析器转换。
2.3 其他请求参数
除了主要字段外,还需要配置其他请求参数:
- FormId(业务对象表单Id): 固定值为
STK_MisDelivery
,表示其他出库单表单ID。 - IsAutoSubmitAndAudit(提交并审核): 布尔值,设置为false表示不自动提交和审核。
- IsVerifyBaseDataField(验证基础资料): 布尔值,设置为true表示验证所有基础资料有效性。
- Operation(执行的操作): 固定值为
Save
,表示保存操作。
3. 实现代码示例
以下是一个简化的代码示例,用于展示如何利用轻易云数据集成平台进行ETL转换并调用金蝶云星空API接口:
{
"api": "batchSave",
"method": "POST",
"idCheck": true,
"operation": {
"rowsKey": "array",
"rows": 1,
"method": "batchArraySave"
},
"request": [
{"field":"FBillNo","value":"{order_no}"},
{"field":"FBillTypeID","value":"QTCKD01_SYS"},
{"field":"FStockOrgId","value":"100"},
{"field":"FPickOrgId","value":"100"},
{"field":"FDate","value":"{consign_time}"},
{"field":"FCustId"},
{"field":"FDeptId","value":"BM000017"},
{"field":"FPickerId","value":"_mongoQuery cccd77b8-cea5-3862-99c0-c3cc6815a86a findField=content.FNumber where={\"content.FName\":{\"$eq\":\"{operator_name}\"}}"},
{"field":"FOwnerTypeIdHead","value":"BD_OwnerOrg"},
{"field":"FOwnerIdHead","value":"100"},
{"field":"FNote","value":"{remark}"},
{
"field": "FEntity",
"children": [
{"field":"FMaterialId","value":"{{details_list.goods_no}}"},
{"field":"FQty","value":"{{details_list.goods_count}}"},
{"field":"FStockId","value":"{warehouse_no}"},
{"field":"FOwnerTypeId","value":"BD_OwnerOrg"},
{"field":"FOwnerId","value":"100"}
],
"value": "details_list"
}
],
"otherRequest": [
{"field": "FormId", "value": "STK_MisDelivery"},
{"field": "IsAutoSubmitAndAudit", "value": false},
{"field": "IsVerifyBaseDataField", "value": true},
{"field": "Operation", "value": "Save"}
]
}
通过上述配置,我们可以实现从源系统到目标系统的数据无缝对接,并确保数据格式符合目标平台要求。这种方法不仅提高了数据处理效率,还保证了数据的一致性和准确性。