旺店通·企业奇门数据集成到金蝶云星辰V1的技术实现
在企业信息化系统之间进行数据集成时,确保高效、准确的数据传输是一项关键任务。本文将聚焦于通过轻易云数据集成平台,实现旺店通·企业奇门与金蝶云星辰V1之间的数据对接。本案例中的方案名称为“物料同步(星辰v1)”,其核心目标是通过wdt.goods.query接口从旺店通·企业奇门提取商品物料数据,并利用jdy/basedata/material_save接口将其批量写入到金蝶云星辰V1中。
为达到高效稳定的集成效果,我们采取了一系列技术措施:
首先,为了处理大规模的数据量,我们充分利用了平台支持的高吞吐量能力,通过并行处理和分片机制,加速了大量数据从旺店通·企业奇门系统向外输出。具体而言,在调用wdt.goods.query接口时,设计了分页获取策略,并设置合理的限流参数,以避免API请求频繁触发风控机制,从而保障数据抓取过程的稳定性和连续性。
其次,通过自定义的数据转换逻辑,解决两种异构系统间格式差异的问题。例如,将旺店通返回的数据结构进行解析后,根据需求重新映射字段,再按照金蝶云星辰V1 API规范封装。在这一过程中,还特别关注异常处理机制:当出现格式错误或网络异常时,及时记录日志并触发重试流程,确保不丢失任何重要数据信息。
为了强化全程监控与控制,我们借助集中监控和告警系统,对每一个数据集成环节进行实时跟踪。这不仅包括任务状态和性能指标,也涵盖详细的日志记录以及即时问题提醒功能,使得运维人员能够迅速定位和解决可能存在的问题,大幅提升故障排除效率。
最后,通过可视化工具设计与管理数据流动,使得复杂的数据处理流程变得更加直观且易于操作。从源头抓取,到中间转换,再到最终写入,每一步骤都清晰显示在统一界面上,有助于深入理解并优化整个业务流程。
调用源系统旺店通·企业奇门接口wdt.goods.query获取并加工数据
在数据集成生命周期的第一步中,调用源系统接口获取数据是至关重要的一环。本文将深入探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口wdt.goods.query
来获取物料信息,并对其进行初步加工。
接口概述
wdt.goods.query
接口用于查询物料信息,支持按最后修改时间增量查询。该接口采用POST请求方式,返回的数据包含物料的基本信息,如条码、名称等。
元数据配置解析
元数据配置如下:
{
"api": "wdt.goods.query",
"effect": "QUERY",
"method": "POST",
"number": "goods_no",
"id": "goods_no",
"name": "goods_name",
"idCheck": true,
"request": [
{
"field": "start_time",
"label": "开始时间",
"type": "datetime",
"describe": "按最后修改时间增量查询数据,start_time作为开始时间,格式:yyyy-MM-dd HH:mm:ss",
"value": "{{LAST_SYNC_TIME|datetime}}"
},
{
"field": "end_time",
"label": "结束时间",
"type": "datetime",
"describe": "按最后修改时间增量查询数据,end_time作为结束时间,格式:yyyy-MM-dd HH:mm:ss",
"value": "{{CURRENT_TIME|datetime}}"
},
{
"field": "deleted",
"label": "已删除货品",
"type": "string",
"describe": "默认为0, 0:只返回未删除货品 1:返回未删除和已删除货品"
},
{
"field": "goods_no",
"label": "条码",
"type": "string",
"describe": ""
}
],
...
}
请求参数详解
-
start_time 和 end_time:
start_time
和end_time
用于指定查询的时间范围。通过设置这两个参数,可以实现按最后修改时间的增量查询。{{LAST_SYNC_TIME|datetime}}
和{{CURRENT_TIME|datetime}}
分别代表上次同步时间和当前时间,这些占位符会在实际请求时被替换为具体的日期时间值。
-
deleted:
- 此参数用于指定是否包含已删除的货品。默认值为0,即只返回未删除的货品。如果需要同时返回已删除和未删除的货品,可以将其设置为1。
-
goods_no:
- 用于指定要查询的物料条码。如果不传值,则返回所有符合条件的物料。
-
分页参数:
page_size
和page_no
用于控制分页查询。通过设置分页大小和页号,可以有效管理大批量数据的获取。
调用示例
以下是一个调用该接口的示例代码:
import requests
import datetime
# 设置请求URL
url = 'https://api.wangdian.cn/openapi2/goods_query.php'
# 设置请求头
headers = {
'Content-Type': 'application/json'
}
# 设置请求参数
params = {
'start_time': (datetime.datetime.now() - datetime.timedelta(days=1)).strftime('%Y-%m-%d %H:%M:%S'),
'end_time': datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
'deleted': '0',
'page_size': '100',
'page_no': '0'
}
# 发起POST请求
response = requests.post(url, headers=headers, json=params)
# 检查响应状态码
if response.status_code == 200:
data = response.json()
# 对返回的数据进行处理
else:
print(f"Error: {response.status_code}")
数据加工与清洗
在获取到原始数据后,需要对其进行初步加工与清洗,以确保后续的数据转换与写入过程顺利进行。常见的数据加工操作包括:
-
字段映射:
- 将接口返回的数据字段映射到目标系统所需的字段。例如,将
goods_no
映射为目标系统中的物料编号字段。
- 将接口返回的数据字段映射到目标系统所需的字段。例如,将
-
数据过滤:
- 根据业务需求过滤掉不需要的数据。例如,只保留状态为“有效”的物料记录。
-
格式转换:
- 将日期、数值等字段转换为目标系统所需的格式。例如,将日期格式从字符串转换为日期对象。
通过上述步骤,我们可以高效地从旺店通·企业奇门接口获取并加工物料数据,为后续的数据转换与写入奠定基础。
使用轻易云数据集成平台实现金蝶云星辰V1 API接口的数据转换与写入
在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,转为目标平台金蝶云星辰V1 API接口所能够接收的格式,并最终写入目标平台。本文将详细探讨如何使用轻易云数据集成平台配置元数据,实现这一过程。
配置元数据
首先,我们需要了解金蝶云星辰V1 API接口的具体要求。根据提供的元数据配置,API接口信息如下:
- API路径:
jdy/basedata/material_save
- 请求方法:
POST
- 是否检查ID:
true
请求字段主要包括商品编码、商品名称、计量单位ID、商品类别编码等。以下是一些关键字段及其配置说明:
-
商品编码 (number):
- 类型:
string
- 描述: 商品编码,不传递则由后台生成(不设置有编码规则和更新时必传)
- 值:
{spec_list_spec_no}
- 类型:
-
商品名称 (name):
- 类型:
string
- 描述: 商品名称
- 值:
{goods_name}
- 类型:
-
计量单位ID (baseunitid_id):
- 类型:
string
- 描述: 计量单位ID
- 值:
_mongoQuery 580a8aad-97c9-336e-9338-883ef74bb6d6 findField=content.id where={"content.number":{"$eq":"{spec_list_spec_unit_name}"}}
- 类型:
-
商品类别编码 (parent_number):
- 类型:
string
- 值:
01
- 类型:
-
辅1属性组ID (yt_auxtypeid1_id):
- 类型:
string
- 值:
1670214487648519168
- 类型:
-
辅2属性组ID (yt_auxtypeid2_id):
- 类型:
string
- 值:
1670214653189364736
- 类型:
-
规格型号 (model):
- 类型:
string
- 值:
{spec_list_spec_name}
- 类型:
-
辅助属性 (auxentity): 辅助属性是一个数组,包含多个子字段,如辅1 ID、辅2 ID等。
数据转换与写入
在实际操作中,我们需要按照以上配置进行数据转换和写入。以下是具体步骤:
-
提取数据: 从源系统中提取相关字段的数据,例如商品编码、商品名称等。
-
转换数据: 根据元数据配置,将提取的数据转换为目标格式。例如,通过
_mongoQuery
查询获取计量单位ID,将其填充到baseunitid_id
字段中。 -
构建请求体: 将所有转换后的字段值按照API要求组织成JSON格式的请求体。例如:
{ "number": "12345", "name": "示例商品", "baseunitid_id": "580a8aad-97c9-336e-9338-883ef74bb6d6", "parent_number": "01", "yt_auxtypeid1_id": "1670214487648519168", "yt_auxtypeid2_id": "1670214653189364736", "model": "示例型号", "auxentity": [ { "auxid1_id": "1670214733006969856", "auxid1_number": "010001", ... }, ... ], ... }
-
发送请求: 使用HTTP POST方法将构建好的请求体发送到金蝶云星辰V1 API接口
jdy/basedata/material_save
。 -
处理响应: 接收并处理API响应,确保数据成功写入目标系统。如果出现错误,根据错误信息进行相应调整和重试。
示例代码
以下是一个简化的Python示例代码,用于展示如何实现上述步骤:
import requests
import json
# 构建请求体
data = {
"number": "12345",
"name": "示例商品",
...
}
# 发送POST请求
response = requests.post(
url="https://api.kingdee.com/jdy/basedata/material_save",
headers={"Content-Type": "application/json"},
data=json.dumps(data)
)
# 处理响应
if response.status_code == 200:
print("Data successfully written to Kingdee Cloud.")
else:
print(f"Failed to write data. Status code: {response.status_code}, Response: {response.text}")
通过以上步骤,我们可以高效地将源平台的数据转换并写入到金蝶云星辰V1 API接口,从而实现不同系统间的数据无缝对接。