金蝶云星空数据集成到旺店通·企业奇门:高效实现采购入库
在许多企业中,将ERP系统与电商平台紧密集成已成为提升运营效率的关键。本文将深入探讨一种实际运行方案——“金蝶分布式调入单=>旺店通采购入库(ok)”,详细介绍如何通过API接口高效对接并实现数据流转。
为了确保从 金蝶云星空 到 旺店通·企业奇门 的数据集成过程不中断且准确无误,我们使用了轻易云数据集成平台进行配置。这一流程主要涉及以下核心部分:
-
如何确保集成金蝶云星空的数据不漏单
- 利用
executeBillQuery
API接口,从金蝶云星空获取调入单,预防任何数据遗漏。
- 利用
-
大量数据快速写入到旺店通·企业奇门
- 通过调用
wdt.stockin.purchase.push
接口,实现批量、快速地将采购订单写入到旺店通系统内。
- 通过调用
-
处理金蝶云星空接口的分页和限流问题
- 在抓取大量历史交易记录时,为防止API请求超出限制,我们设计了一套可靠的分页及限流策略,保障系统稳定性。
-
定时可靠的抓取金蝶云星空接口数据
- 使用定时任务模块设定周期性的数据提取,以确保业务连续性和实时更新,同时监控日志记录以追踪每次操作情况。
-
如何处理两端之间的数据格式差异
- 针对不同系统间的数据格式问题,我们进行了字段映射和转换,使得双方能顺利交换信息而不产生兼容性问题。
上述步骤不仅简化了复杂业务逻辑,更确保在真实业务场景下能够大规模、高效率地完成多个跨系统的数据同步与处理。接下来,将一步步详解各子环节具体实施方案,并进一步探讨异常处理机制及性能优化策略。
调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery
接口,以获取并加工数据。
接口配置与请求参数
首先,我们需要配置调用金蝶云星空接口的元数据。以下是一个典型的元数据配置示例:
{
"api": "executeBillQuery",
"method": "POST",
"number": "FBillNo",
"id": "FSTKTRSINENTRY_FEntryID",
"pagination": {
"pageSize": 500
},
"idCheck": true,
"request": [
{"field":"FSTKTRSINENTRY_FEntryID","label":"FEntryID","type":"string","value":"FSTKTRSINENTRY_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与方法:
api
: 指定要调用的接口名称,这里为executeBillQuery
。method
: HTTP请求方法,通常为POST
。
-
分页配置:
pagination.pageSize
: 每次请求返回的数据条数,设置为500。
-
字段映射:
number
: 主键字段,用于标识每条记录的唯一性。id
: 分录主键字段,用于标识每条分录记录。
-
请求字段:
- 配置了多个字段,如
FBillNo
(单据编号)、FID
(实体主键)、FDocumentStatus
(单据状态)等。这些字段将用于构建查询条件和获取所需的数据。
- 配置了多个字段,如
-
其他请求参数:
Limit
: 最大行数,用于控制每次查询返回的数据量。StartRow
: 开始行索引,用于分页查询。FilterString
: 过滤条件,例如:"FSupplierId.FNumber = 'VEN00010' and FApproveDate>='{{LAST_SYNC_TIME|dateTime}}'"
。
数据请求与清洗
在完成元数据配置后,我们可以通过轻易云平台发起HTTP POST请求,调用金蝶云星空的接口。以下是一个示例请求体:
{
"FormId": "STK_TRANSFERIN",
"FieldKeys": ["FBillNo", ...],
"FilterString": "...",
...
}
- FormId:指定业务对象表单Id,例如调入单对应的是
STK_TRANSFERIN
。 - FieldKeys:需要查询的字段集合,通过元数据中的配置自动生成。
- FilterString:根据业务需求构建的过滤条件。
数据转换与写入
获取到原始数据后,需要进行清洗和转换,以便写入目标系统。以下是一些常见的数据处理步骤:
- 数据格式转换:将日期、金额等字段转换为目标系统所需的格式。
- 字段映射:根据目标系统的数据结构,将源系统的数据字段映射到目标系统对应的字段。
- 数据校验:检查数据完整性和一致性,确保没有缺失或错误的数据。
例如,将调入数量从字符串转换为数字,并计算总成本:
for record in data:
record['FQty'] = float(record['FQty'])
record['FAmount'] = record['FQty'] * float(record['FPrice'])
通过以上步骤,我们可以高效地从金蝶云星空获取并加工所需的数据,为后续的数据集成奠定基础。
使用轻易云数据集成平台将金蝶分布式调入单数据转换并写入旺店通·企业奇门API接口
在数据集成的生命周期中,ETL(提取、转换、加载)是关键的一步。在本文中,我们将深入探讨如何利用轻易云数据集成平台,将已经集成的源平台数据(金蝶分布式调入单)进行ETL转换,转为目标平台(旺店通·企业奇门API接口)所能够接收的格式,并最终写入目标平台。
元数据配置解析
首先,我们需要理解元数据配置。以下是我们使用的元数据配置:
{
"api": "wdt.stockin.purchase.push",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"operation": {
"method": "merge",
"field": "FBillNo,FSrcStockID_FNumber,FDestStockID_FNumber",
"bodyName": "details_list",
"bodySum": ["F_UHZG_JJQty"],
"header": ["FBillNo", "FDestStockID_FNumber", "FStockID", "FSupplierId", "FNOTE", "FSUPPLIERID_FNumber"],
"body": ["FLOT", "FMaterialId", "FQty", "FPrice", "FMaterialID_FNumber", "FEntryNote", "F_UHZG_JJQty"]
},
...
}
该配置文件定义了如何将金蝶分布式调入单的数据映射到旺店通·企业奇门API接口所需的格式。我们将逐步解析并实现这一过程。
数据请求与清洗
在ETL过程的第一步,我们已经完成了从金蝶系统提取原始数据并进行初步清洗。这些数据包括采购单号、仓库编号、供应商信息等。
数据转换与写入
接下来,我们进入ETL过程的第二步:数据转换与写入。我们需要将清洗后的数据按照旺店通·企业奇门API接口要求的格式进行转换,并通过API接口推送到目标平台。
请求参数映射
根据元数据配置,我们需要将金蝶系统中的字段映射到旺店通API所需的字段。例如:
FBillNo
映射到purchase_no
FDestStockID_FNumber
映射到warehouse_no
FNOTE
映射到remark
以下是部分请求参数映射示例:
{
"purchase_no": "{FBillNo}",
...
"warehouse_no": "{FDestStockID_FNumber}",
...
"remark": "{FNOTE}",
...
}
入库货品列表节点映射
对于货品列表节点,我们需要特别注意字段的嵌套结构。例如,details_list
节点下包含多个字段,这些字段需要一一对应地进行映射:
{
...
"details_list": [
{
...
"spec_no": "{{details_list.FMaterialID_FNumber}}",
...
"stockin_num": "{{details_list.F_UHZG_JJQty}}",
...
// 更多字段映射
}
]
}
API请求示例
结合以上映射关系,最终生成的API请求示例如下:
{
"purchase_no": "<具体采购单号>",
...
"warehouse_no": "<具体仓库编号>",
...
"remark": "<具体备注>",
...
"details_list": [
{
...
"spec_no": "<具体商家编码>",
...
"stockin_num": "<具体入库数量>",
...
// 更多字段值
}
]
}
执行API请求
通过轻易云平台提供的全异步操作和多种异构系统支持,我们可以高效地执行上述API请求,将转换后的数据推送至旺店通·企业奇门接口。
以下是执行POST请求代码示例:
import requests
url = 'https://api.wangdian.cn/openapi2/wdt.stockin.purchase.push'
headers = {'Content-Type': 'application/json'}
data = {
'purchase_no': '<具体采购单号>',
'warehouse_no': '<具体仓库编号>',
'remark': '<具体备注>',
'details_list': [
{
'spec_no': '<具体商家编码>',
'stockin_num': '<具体入库数量>',
# 更多字段值
}
]
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
通过上述步骤,我们成功地将金蝶分布式调入单的数据转换为旺店通·企业奇门API接口所需的格式,并推送至目标平台。这样不仅实现了不同系统间的数据无缝对接,也提升了业务流程的自动化和效率。