金蝶云星空数据集成到旺店通·企业奇门 - 实现系统无缝对接的技术方案
在本文中,将分享如何实现金蝶云星空的数据高效稳定地集成到旺店通·企业奇门,通过实际运行的“金蝶分布式调出单=>旺店通调拨单(3000云仓组织内)”方案展开详细介绍。
首先,为了确保从金蝶云星空获取的数据不漏单,我们使用了executeBillQuery
接口进行定时可靠的数据抓取。在调用该接口时,特别注意处理分页和限流问题,以确保数据完整性与请求的成功率。通过设置合理的分页参数与灵活调整接口调用频次,有效避免了可能产生的API限流错误。
其次,针对大量数据需要快速写入到旺店通·企业奇门这一需求,我们采用了批量操作的方法来提高效率,即利用wdt.stock.transfer.push
接口进行一次性的大量数据传输。同时,通过定制化的数据映射,对不同系统间的数据格式差异进行了细致处理,使得信息能够准确无误地被识别并存储。另外,在此过程中还引入了一套完善的异常处理机制,一旦出现对接异常,可自动触发错误重试策略,极大提升了整体流程的鲁棒性。
在业务操作透明度方面,将实时监控与日志记录纳入整个数据处理链条,对于每个环节都提供清晰直观的信息反馈。这不仅便于管理人员随时掌握数据流动情况,也为快速定位和解决问题提供有力支持。通过上述多种技术手段协同应用,实现了两大平台之间高效、稳定、安全的数据对接。
调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细介绍如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery
接口来获取并加工数据。
接口配置与请求参数
首先,我们需要配置调用金蝶云星空接口的元数据。以下是元数据配置的关键部分:
{
"api": "executeBillQuery",
"method": "POST",
"number": "FBillNo",
"id": "FSTKTRSOUTENTRY_FEntryID",
"pagination": {
"pageSize": 500
},
"idCheck": true,
"request": [
{"field":"FSTKTRSOUTENTRY_FEntryID","label":"FEntryID","type":"string","value":"FSTKTRSOUTENTRY_FEntryID"},
{"field":"FID","label":"实体主键","type":"string","value":"FID"},
{"field":"FBillNo","label":"单据编号","type":"string","value":"FBillNo"},
{"field":"FDocumentStatus","label":"单据状态","type":"string","value":"FDocumentStatus"},
{"field":"FStockOrgID_FNumber","label":"调入库存组织","type":"string","value":"FStockOrgID.FNumber"},
{"field":"FDate","label":"日期","type":"string","value":"FDate"},
{"field":"FBillTypeID","label":"单据类型","type":"string","value":"FBillTypeID"},
{"field":"FTransferDirect","label":"调拨方向","type":"string","value":"FTransferDirect"},
{"field":"FNOTE","label":"备注","type":"string","value":"FNOTE"},
{"field":"FCreateDate","label":"创建日期","type":"string","value":"FCreateDate"},
{"field":"FApproveDate","label":"审核日期","type":"string","value":"FApproveDate"},
{"field":...}
],
"otherRequest": [
{"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}"},
{"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}"},
{"field":...}
]
}
请求参数详解
- API和方法:我们使用
POST
方法调用executeBillQuery
API。 - 分页设置:每次请求返回500条记录,通过
Limit
和StartRow
控制分页。 - 过滤条件:通过
FilterString
字段设置过滤条件,例如:FApproveDate >= '{{LAST_SYNC_TIME|dateTime}}' and FTransferBizType = 'InnerOrgTransfer' and FOwnerID.FNumber = '3000'
- 字段选择:通过
FieldKeys
指定需要查询的字段集合。
数据请求与清洗
在轻易云平台上,我们可以使用可视化界面配置上述元数据,并发起请求。以下是一个示例请求体:
{
"FormId": "STK_TRANSFEROUT",
"FieldKeys": [
...
],
"FilterString": "...",
...
}
发送请求后,系统会返回符合条件的数据集。接下来,我们需要对这些数据进行清洗和转换,以便后续处理。
数据转换与写入
清洗后的数据需要进行格式转换,以适应目标系统的要求。例如,将日期格式从YYYY-MM-DD转换为目标系统所需的格式,或者将某些字段值进行映射。
在轻易云平台上,可以通过拖拽组件实现这些转换操作。例如:
- 日期格式转换:
- 使用“日期转换”组件,将YYYY-MM-DD格式转换为MM/DD/YYYY格式。
- 字段映射:
- 使用“字段映射”组件,将源系统中的字段名映射到目标系统中的字段名。
实际案例
假设我们需要将金蝶分布式调出单的数据集成到旺店通调拨单中,具体操作如下:
- 配置元数据:按照上述步骤配置元数据,包括API、方法、分页、过滤条件和字段选择。
- 发起请求:通过轻易云平台发起请求,获取符合条件的数据。
- 数据清洗:对返回的数据进行清洗,例如去除无效记录、标准化字段值等。
- 数据转换:根据目标系统要求进行格式转换和字段映射。
- 写入目标系统:将处理后的数据写入旺店通调拨单中。
通过以上步骤,我们实现了从金蝶云星空到旺店通的数据集成,确保了不同系统间的数据无缝对接。
轻易云数据集成平台:ETL转换与写入旺店通·企业奇门API接口
在数据集成的生命周期中,ETL(Extract, Transform, Load)转换是至关重要的一步。本文将详细探讨如何将已经集成的源平台数据(如金蝶分布式调出单)通过ETL转换,转为目标平台旺店通·企业奇门API接口所能够接收的格式,并最终写入目标平台。
数据转换与写入配置
在进行数据转换与写入时,我们需要根据目标平台的API接口要求进行相应的元数据配置。以下是针对旺店通·企业奇门API接口wdt.stock.transfer.push
的数据请求和字段映射配置。
{
"api": "wdt.stock.transfer.push",
"method": "POST",
"idCheck": true,
"operation": {
"method": "merge",
"field": "FBillNo,FSrcStockID_FNumber,FDestStockID_FNumber",
"bodyName": "detail_list",
"header": ["FBillNo", "FSrcStockID_FNumber", "FDestStockID_FNumber", "FNOTE"],
"body": ["FMaterialID_FNumber", "F_UHZG_JJQty", "FEntryNote", "FLOT"]
},
"request": [
{
"field": "outer_no",
"label": "外部单号",
"type": "string",
"describe": "外部单据唯一标识,用于避免同一数据重复推送",
"value": "{FBillNo}"
},
{
"field": "from_warehouse_no",
"label": "源仓库调出仓库",
"type": "string",
"describe": "货品被调出的仓库",
"value": "{FSrcStockID_FNumber}"
},
{
"field": "to_warehouse_no",
"label": "目标仓库调入仓库",
"type": "string",
"describe": "货品被调入的仓库",
"value": "{FDestStockID_FNumber}"
},
{
...
请求字段解析
-
外部单号(outer_no):
- 字段描述:外部单据唯一标识,用于避免同一数据重复推送。
- 映射值:
{FBillNo}
-
源仓库调出仓库(from_warehouse_no):
- 字段描述:货品被调出的仓库。
- 映射值:
{FSrcStockID_FNumber}
-
目标仓库调入仓库(to_warehouse_no):
- 字段描述:货品被调入的仓库。
- 映射值:
{FDestStockID_FNumber}
-
备注(remark):
- 字段描述:备注信息。
- 映射值:
{FNOTE}
-
是否审核(autocheck):
- 字段描述:1:审核,0:不审核,默认为0。
- 映射值:固定为
1
-
货品列表节点(skus):
- 字段描述:调拨单货品列表节点。
- 子节点配置:
- 商家编码(spec_no):映射值为
{{detail_list.FMaterialID_FNumber}}
- 调拨数量(num):映射值为
{{detail_list.F_UHZG_JJQty}}
- 明细备注(remark):映射值为
{{detail_list.FEntryNote}}
- 批次号(batch_no):映射值为
{{detail_list.FLOT}}
- 商家编码(spec_no):映射值为
数据转换过程
在实际操作中,首先需要从源系统(金蝶分布式调出单)提取原始数据,然后按照上述元数据配置进行字段映射和转换。以下是一个简化的伪代码示例:
def transform_data(source_data):
transformed_data = {
'outer_no': source_data['FBillNo'],
'from_warehouse_no': source_data['FSrcStockID_FNumber'],
'to_warehouse_no': source_data['FDestStockID_FNumber'],
'remark': source_data.get('FNOTE', ''),
'autocheck': '1',
'skus': []
}
for detail in source_data['detail_list']:
sku = {
'spec_no': detail['FMaterialID_FNumber'],
'num': detail['F_UHZG_JJQty'],
'remark': detail.get('FEntryNote', ''),
'batch_no': detail.get('FLOT', '')
}
transformed_data['skus'].append(sku)
return transformed_data
数据写入目标平台
完成数据转换后,通过HTTP POST请求将数据写入旺店通·企业奇门API接口。以下是一个使用Python requests
库发送POST请求的示例:
import requests
def push_to_wdt(transformed_data):
url = 'https://api.wangdian.cn/openapi2/wdt.stock.transfer.push'
headers = {'Content-Type': 'application/json'}
response = requests.post(url, json=transformed_data, headers=headers)
if response.status_code == 200:
print('Data pushed successfully:', response.json())
else:
print('Failed to push data:', response.text)
# 示例调用
source_data = {...} # 从金蝶系统获取的数据
transformed_data = transform_data(source_data)
push_to_wdt(transformed_data)
通过上述步骤,可以实现从金蝶分布式调出单到旺店通·企业奇门API接口的数据ETL转换和写入。此过程不仅确保了数据的一致性和准确性,也提升了系统间的数据交互效率。