旺店通·旗舰奇门数据集成到金蝶云星空技术案例分享:调拨单对接
在企业供应链管理中,不同系统间的高效数据流转是确保业务平稳运行的基础。在此次案例中,我们将探讨如何通过轻易云平台实现旺店通·旗舰奇门与金蝶云星空之间的数据集成,具体任务为将旺店通·旗舰奇门中的调拨单数据无缝对接至金蝶云星空系统。以下内容重点阐述此过程中涉及到的关键技术点及解决方案。
首先,我们需要调用旺店通·旗舰奇门提供的数据API wdt.wms.stocktransfer.manage.querywithdetail
来获取调拨单详细信息。该API支持高并发访问,可以处理大批量的数据请求,这是保证快速稳定获得所需数据的重要前提。然而,在实际操作中我们还需应对分页和限流等问题,以避免因突发大量请求而导致接口响应异常或超时。
针对从旺店通·旗舰获取的数据,经过初步预处理后,需要进行自定义转换以符合金蝶云星空的格式要求。这里,自定义数据转换逻辑发挥了重要作用,使得各字段精确映射,从而最大程度地减少因格式不匹配带来的错误。此外,为了解决两者之间可能存在的数据结构差异,还将在引入实时监控与日志记录功能,这不仅能帮助及时发现问题,也利于故障诊断和恢复。
完成数据转化后,将借助金蝶云星空提供的 batchSave
API 实现批量写入。这一过程同样面临高吞吐量需求,而为了保障成功率和效率,通过集中监控和告警系统,对每一步执行状态进行追踪,一旦出现异常状况立即启动重试机制加以修正。
整个过程覆盖了从抓取、转换、传输到存储的一系列环节,依托可视化设计工具,把复杂抽象流程变得直观简明,使配置更加容易上手且管理方便。在这些强有力工具支持下,实现了设备端至目标端元数据信息全生命周期无缝衔接,并为未来潜在升级改造打好了坚实基础。
调用旺店通·旗舰奇门接口获取并加工数据
在数据集成生命周期的第一步中,调用源系统的API接口是至关重要的一环。本文将深入探讨如何通过轻易云数据集成平台调用旺店通·旗舰奇门接口wdt.wms.stocktransfer.manage.querywithdetail
,并对获取的数据进行初步加工。
接口概述
接口wdt.wms.stocktransfer.manage.querywithdetail
主要用于查询调拨单的详细信息。该接口采用POST请求方式,支持分页查询,并且可以通过业务参数来过滤数据。
元数据配置解析
以下是元数据配置的详细解析:
{
"api": "wdt.wms.stocktransfer.manage.querywithdetail",
"method": "POST",
"number": "transfer_no",
"id": "transfer_id",
"idCheck": true,
"request": [
{
"field": "pager",
"label": "分页参数",
"type": "object",
"children": [
{
"field": "page_size",
"label": "分页大小",
"type": "string",
"value": "50",
"parent": "pager"
},
{
"field": "page_no",
"label": "页号",
"type": "string",
"value": "1",
"parent": "pager"
}
]
},
{
"field": "params",
"label": "业务参数",
"type": "object",
...
}
],
...
}
请求参数配置
-
分页参数:
page_size
: 每页返回的数据条数,默认设置为50。page_no
: 当前页码,默认设置为1。
-
业务参数:
start_time
: 查询开始时间,使用变量{{LAST_SYNC_TIME|datetime}}
动态获取上次同步时间。end_time
: 查询结束时间,使用变量{{CURRENT_TIME|datetime}}
动态获取当前时间。status
: 入库单状态,固定值90表示已完成状态。
数据请求与清洗
在调用接口后,我们需要对返回的数据进行清洗和初步处理,以确保数据的完整性和一致性。以下是一个示例流程:
-
调用API: 使用轻易云平台提供的可视化界面配置上述元数据,并发起POST请求。
-
处理响应: 对于返回的数据,我们需要检查是否包含必要字段,如
transfer_no
和transfer_id
。如果缺少关键字段,需要记录日志并跳过该条记录。 -
数据清洗:
- 去除重复记录:根据
transfer_id
去重。 - 格式化日期:将日期字段统一格式化为标准格式(如ISO8601)。
- 去除重复记录:根据
-
条件过滤: 根据元数据中的条件过滤器,对返回的数据进行进一步筛选。例如,仅保留调拨单号以"TF"开头且备注为"wms库存异动调拨生成"的记录。
"condition_bk":[
[
{"field":"transfer_no","logic":"like","value":"TF"},
{"field":"remark","logic":"ieqv2","value":"wms库存异动调拨生成"}
]
]
数据转换与写入
在完成数据清洗后,我们需要将处理后的数据转换为目标系统所需的格式,并写入目标系统(如金蝶)。这一步通常包括:
- 字段映射:将源系统字段映射到目标系统字段。
- 数据转换:根据目标系统要求,对某些字段进行类型转换或单位换算。
- 批量写入:通过批量操作提高写入效率。
通过上述步骤,我们可以高效地完成从旺店通·旗舰奇门到金蝶系统的数据集成,实现不同系统间的数据无缝对接。
使用轻易云数据集成平台将旺店通调拨单转换为金蝶云星空直接调拨单
在数据集成过程中,ETL(Extract, Transform, Load)是关键步骤之一。本文将详细介绍如何使用轻易云数据集成平台将旺店通的调拨单数据转换为金蝶云星空API接口所能接收的格式,并最终写入目标平台。
元数据配置解析
首先,我们需要理解元数据配置,以便准确地进行数据转换。以下是金蝶云星空API接口的元数据配置:
{
"api": "batchSave",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"request": [
{"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{transfer_no}"},
{"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","value":"ZJDB01_SYS","parser":{"name":"ConvertObjectParser","params":"FNumber"}},
{"field":"FBizType","label":"调拨类型","type":"string","describe":"下拉列表","value":"NORMAL"},
{"field":"FTransferDirect","label":"调拨方向","type":"string","describe":"下拉列表","value":"GENERAL"},
{"field":"FTransferBizType","label":"业务类型","type":"string","describe":"下拉列表","value":"InnerOrgTransfer"},
{"field":"FSaleOrgId","label":"销售组织","type":"string","describe":"组织","value":"100.01","parser":{"name":"ConvertObjectParser","params":"FNumber"}},
{"field":"FSettleOrgId","label":"结算组织","type":"string","describe":"组织","value":"100.01","parser":{"name":"ConvertObjectParser","params":"FNumber"}},
{"field":"FStockOutOrgId","label":"出库组织","type":"","describe":"","value":"","parser":{"name":"","params":""}},
...
],
"otherRequest": [
{"field": "FormId", "label": "FormId", "type": "string", "describe": "必须填写金蝶的表单ID如:PUR_PurchaseOrder", "value": "STK_TransferDirect"},
{"field": "IsAutoSubmitAndAudit", "label": "IsAutoSubmitAndAudit", "type": "bool", "value": true},
...
],
...
}
数据转换与写入步骤
-
提取源数据 从旺店通系统中提取调拨单数据,包括
transfer_no
,modified_date
,remark
,details_list
等字段。 -
字段映射与转换 根据元数据配置,将提取的数据映射到目标平台所需的字段,并进行必要的格式转换。例如:
transfer_no
映射到FBillNo
modified_date
映射到FDate
remark
映射到FNote
details_list
中的每个物料条目需要分别映射和转换
对于需要使用解析器(parser)的字段,如
FSaleOrgId
,FSettleOrgId
等,需要调用相应的解析器进行处理。解析器通常用于将业务系统中的标识符转换为目标系统能够识别的编码。 -
构建请求体 根据映射和转换后的数据,构建符合金蝶云星空API要求的请求体。例如:
{
"FormId": "STK_TransferDirect",
"IsAutoSubmitAndAudit": true,
...
"Model": {
...
"FBillNo": "{transfer_no}",
...
"FBillEntry":[
{
...
"FMaterialId": "{{details_list.goods_no}}",
...
}
...
]
}
}
-
发送请求 使用HTTP POST方法,将构建好的请求体发送至金蝶云星空API接口。确保请求头包含必要的认证信息和Content-Type设置为application/json。
-
处理响应 接收并处理API响应,检查返回结果是否成功。如果失败,需要记录错误信息并进行相应处理。
示例代码
以下是一个示例代码片段,展示如何使用Python实现上述步骤:
import requests
import json
# 假设已经从旺店通提取了原始数据
source_data = {
'transfer_no': 'TR123456',
'modified_date': '2023-10-01',
'remark': 'Test transfer',
'details_list': [
{'goods_no': 'G123', 'num': 10, 'from_warehouse_no': 'W001', 'to_warehouse_no': 'W002'}
# 更多条目...
]
}
# 构建请求体
request_body = {
'FormId': 'STK_TransferDirect',
'IsAutoSubmitAndAudit': True,
# 更多其他字段...
'Model': {
'FBillNo': source_data['transfer_no'],
# 更多字段映射...
'FBillEntry': [
{
'FMaterialId': detail['goods_no'],
# 更多明细字段映射...
} for detail in source_data['details_list']
]
# 更多模型字段...
}
}
# 将请求体转为JSON格式
json_request_body = json.dumps(request_body)
# 设置请求头
headers = {
'Content-Type': 'application/json',
# 添加认证信息...
}
# 发起POST请求
response = requests.post('https://api.kingdee.com/batchSave', headers=headers, data=json_request_body)
# 检查响应状态码和内容
if response.status_code == 200:
print('Data successfully written to Kingdee Cloud')
else:
print(f'Failed to write data: {response.text}')
以上代码展示了如何从源系统提取数据,进行必要的映射和转换,然后通过HTTP POST方法将其写入目标平台金蝶云星空。通过这种方式,可以实现不同系统间的数据无缝对接,提高业务流程的自动化程度和效率。