金蝶云星空与旺店通·旗舰奇门系统对接技术案例
在企业的采购和仓储管理中,数据的实时同步和透明化处理显得尤为重要。本案例分享重点介绍了如何有效实现金蝶云星空中的收料通知单数据,与旺店通·旗舰奇门系统中的采购订单进行高效对接。特别是在应对大规模数据吞吐、API接口调用及异常处理方面,我们将探讨具体的方法和技术要点。
首先,需要通过金蝶云星空的executeBillQuery
接口来获取收料通知单的数据。为了确保不会遗漏任何记录,我们设计了一套定时可靠的数据抓取机制,并结合分页功能,解决API调用过程中的限流问题。例如,在分页过程中,可以采用断点续传策略防止由于网络或其他原因导致的数据丢失。这不仅提高了任务执行的稳定性,也保证所有业务数据都能被准确捕获。
在获得原始数据后,还需处理两套系统之间可能存在的数据格式差异。通过自定义转换逻辑,将金蝶云星空返回的数据结构调整为符合旺店通·旗舰奇门要求的格式,以满足其wdt.purchase.purchaseorder.createorder
API写入规范。在这一过程中,利用平台提供的可视化数据流设计工具,使操作更加直观易懂,同时也方便错误定位与调试。
此外,为保证集成效果,本方案引入集中监控和告警系统,通过持续监控每个任务状态和性能指标,及时发现并处理各种异常情况。例如,当出现网络波动或接口响应超时时,可以自动触发重试机制。这一功能极大提升了整体流程的鲁棒性(robustness),确保商业链条畅通无阻。
综上所述,该集成方案针对高吞吐量需求,用到了从源头抓取到目的地写入的一系列优化措施,不仅提高了效率,还增强了整个集成过程中的安全性与可靠性。后续部分将详细解读具体实施步骤及关键代码示例。
调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成过程中,调用源系统的API接口是至关重要的一步。本文将深入探讨如何使用轻易云数据集成平台,通过调用金蝶云星空的executeBillQuery
接口来获取并加工收料通知单的数据。
接口配置与请求参数
首先,我们需要配置接口的元数据。以下是针对金蝶云星空executeBillQuery
接口的详细配置:
{
"api": "executeBillQuery",
"effect": "QUERY",
"method": "POST",
"number": "FBillNo",
"id": "FDetailEntity_FEntryID",
"name": "FBillNo",
"idCheck": true,
"request": [
{"field":"FID","label":"FID","type":"string","describe":"FID","value":"FID"},
{"field":"FDetailEntity_FEntryID","label":"FDetailEntity_FEntryID","type":"string","describe":"FDetailEntity_FEntryID","value":"FDetailEntity_FEntryID"},
{"field":"FBillNo","label":"单据编号","type":"String","describe":"单据编号","value":"FBillNo"},
{"field":"FDocumentStatus","label":"单据状态","type":"String","describe":"单据状态 \n暂存:Z \n创建:A \n审核中:B \n已审核:C","value":"FDocumentStatus"},
{"field":"FMaterialId","label":"物料编码","type":"String","describe":"物料编码","value":"FMaterialId.fnumber"},
{"field":"FStockOrgId_FNumber","label":"收料组织","type":"String","describe":"收料组织","value":"FStockOrgId.FNumber"},
{"field":"FMaterialName","label":"物料名称","type":"String","describe":"物料名称","value":"FMaterialName"},
{"field":"FDate","label":"收料日期","type":"String","describe":"收料日期","value":"FDate"},
{"field":...}
],
"otherRequest": [
{"field":...},
...
],
"autoFillResponse": true
}
请求参数详解
-
基本字段:
FID
: 唯一标识符,用于区分不同的记录。FBillNo
: 单据编号,是每个收料通知单的唯一标识。FDocumentStatus
: 单据状态,用于过滤不同状态的单据(如暂存、创建、审核中、已审核)。FMaterialId
: 物料编码,标识具体的物料。FStockOrgId_FNumber
: 收料组织,表示物资接收方。
-
扩展字段:
FilterString
: 用于设置查询条件,例如根据审核时间、仓库编码等进行过滤。FieldKeys
: 指定需要查询的字段集合,以提高查询效率。FormId
: 必须填写金蝶的表单ID,如PUR_ReceiveBill
。
调用接口
通过轻易云数据集成平台,我们可以方便地调用上述配置好的接口。以下是一个示例请求:
{
"FormId": "PUR_ReceiveBill",
"FieldKeys": ["FID", "FBillNo", "FDocumentStatus", ...],
"FilterString": "FApproveDate>='2023-01-01' and ( FStockID.fnumber='W034' or FStockID.fnumber='W032' or FStockID.fnumber='W036') and FPurOrgId.FNumber = '100.01'",
...
}
该请求将返回符合条件的收料通知单数据,包括指定字段的信息。
数据处理与清洗
获取到原始数据后,需要对其进行处理和清洗,以确保数据质量和一致性。例如:
- 字段映射:将金蝶返回的数据字段映射到目标系统所需的字段格式。
- 数据转换:对日期格式、数值单位等进行转换,以符合目标系统要求。
- 异常处理:过滤掉无效或异常的数据记录,确保数据准确性。
示例代码
以下是一个简单的数据处理示例:
import requests
import json
# 配置请求参数
payload = {
...
}
# 调用API
response = requests.post("https://api.kingdee.com/executeBillQuery", data=json.dumps(payload))
# 检查响应状态
if response.status_code == 200:
data = response.json()
# 数据清洗与转换
cleaned_data = []
for record in data:
cleaned_record = {
'bill_no': record['FBillNo'],
'status': record['FDocumentStatus'],
'material_id': record['FMaterialId'],
...
}
cleaned_data.append(cleaned_record)
# 输出清洗后的数据
print(cleaned_data)
else:
print("API调用失败,状态码:", response.status_code)
通过上述步骤,我们可以高效地从金蝶云星空获取并处理收料通知单的数据,为后续的数据集成奠定基础。
使用轻易云数据集成平台实现金蝶收料通知单到旺店通采购订单的ETL转换
在数据集成过程中,ETL(Extract, Transform, Load)是关键步骤之一。本文将重点探讨如何利用轻易云数据集成平台,将金蝶系统中的收料通知单数据,转换为旺店通·旗舰奇门API接口所能接收的采购订单格式,并最终写入目标平台。
数据转换与写入过程
-
配置元数据 我们首先需要根据提供的元数据配置,定义好数据转换和写入的规则。以下是元数据配置的主要内容:
{ "api": "wdt.purchase.purchaseorder.createorder", "method": "POST", "idCheck": true, "operation": { "method": "merge", "field": "FBillNo", "bodyName": "details", "bodySum": ["FActReceiveQty"], "header": ["FID", "FBillNo", "FSupplierId", "FStockID"], "body": ["FDetailEntity_FEntryID", "FMaterialId", "FActReceiveQty", "FPrice", "FTaxPrice", "FMaterialId_FBARCODE", "FBillTypeID"] }, ... }
-
请求参数映射 接下来,我们需要将金蝶系统中的字段映射到旺店通API所需的字段。以下是部分关键字段的映射关系:
FBillNo
映射到purchase_no
FSupplierId
映射到provider_no
FStockID
映射到receive_warehouse_nos
和expect_warehouse_no
- 采购单详情中的
FMaterialId_FBARCODE
映射到spec_no
- 采购数量
FActReceiveQty
映射到num
- 税前单价
FPrice
映射到price
- 税后单价
FTaxPrice
映射到tax_price
-
构建请求体 根据上述映射关系,我们构建出完整的请求体:
{ "purchase_no": "{FBillNo}", ... "purchase_details": [ { "spec_no": "{{details.FMaterialId_FBARCODE}}", ... "num": "{{details.FActReceiveQty}}", ... "price": "{{details.FPrice}}", ... "tax_price": "{{details.FTaxPrice}}" } ], ... }
-
执行数据转换 在轻易云平台上,通过可视化界面,将上述配置应用于具体的数据集成任务中。具体步骤如下:
-
选择源数据:从金蝶系统中提取收料通知单的数据。
-
应用转换规则:根据配置好的元数据,将源数据进行字段映射和格式转换。
-
生成目标数据:按照旺店通API要求的格式,生成符合规范的采购订单数据。
-
-
调用API接口 最后一步,通过HTTP POST请求,将转换后的数据发送至旺店通·旗舰奇门API接口:
POST /wdt.purchase.purchaseorder.createorder HTTP/1.1 Host: api.wangdian.cn Content-Type: application/json Authorization: Bearer <token> { ... // 请求体内容 ... }
注意事项
- 字段校验:确保所有必填字段均已正确映射并赋值,避免因缺少必要信息而导致API调用失败。
- 错误处理:在实际操作中,需要对API返回结果进行处理,捕获并记录可能出现的错误,以便及时调整和优化集成流程。
- 实时监控:利用轻易云平台提供的实时监控功能,跟踪每个环节的数据流动和处理状态,确保整个ETL过程顺利进行。
通过以上步骤,我们成功地将金蝶系统中的收料通知单数据,经过ETL转换后写入旺店通·旗舰奇门平台,实现了不同系统间的数据无缝对接。