案例分享:金蝶-收料通知单-->旺店通-采购订单【中转仓】数据集成
在本案例中,我们将深入探讨如何实现金蝶云星空系统的收料通知单数据无缝集成到旺店通·旗舰奇门中的采购订单模块。通过一系列API接口调用与数据处理技术,保证大批量的数据能够高效且准确地完成从一个系统向另一个系统的流转。
接口调用与设计思路
首先,在金蝶云星空方面使用的是executeBillQuery
API接口,用于抓取需要处理的收料通知单数据。为了确保这些数据在传输过程中不遗漏,我们使用了定时调度机制可靠地获取最新的数据,同时解决分页和限流问题,以适应大量并发请求环境下的稳定运行需求。
{
"formid": "PUR_RECEIVE",
"fieldKeys": ["FMaterialId", "FQty", ...],
...
}
以上是executeBillQuery
调用示例的一部分,它返回所需的物料ID、数量等关键字段信息,为后续处理奠定基础。
接着,针对旺店通·旗舰奇门,需要确保快速且安全地将这些收到的数据写入其采购订单体系。在这一环节,采用了wdt.purchase.purchaseorder.createorder
API进行接入,通过自定义转换逻辑,将金蝶云星空格式化后的JSON数据精准映射到旺店通相应表结构。
{
"purchase_order_code": "...",
...
}
构建类似上述JSON对象,并利用分步操作策略,将每条记录逐一写入目标系统,从而优化整体性能和成功率。
数据质量监控与异常处理
整合两个不同平台的数据,是个极具挑战性的过程,对此设置了一系列监控和告警规则。例如,当捕捉到任何未按照预期执行或发生错误时,会立即触发报警机制。同时利用日志记录功能做细粒度分析,帮助进行后续问题排查。对常见问题如网络抖动、临时性失败等,也增加了自动重试机制以提高任务可靠性。
总结起来,通过集中式监控管理、灵活可配置的数据转换工具以及强大可靠的API支持,本方案不仅有效缩短了开发周期,而且保障了整体流程透明和可追溯性。
调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成过程中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery
接口,获取并加工收料通知单的数据。
接口配置与调用
首先,我们需要配置接口的元数据,以便正确地请求和处理数据。以下是元数据配置的关键字段:
- api:
executeBillQuery
- method:
POST
- number:
FBillNo
- id:
FDetailEntity_FEntryID
- idCheck:
true
这些字段定义了我们将要调用的API及其基本属性。接下来,我们需要详细配置请求参数。
请求参数配置
请求参数包括必需字段和可选字段。以下是一些关键的请求字段及其描述:
[
{"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": "FilterString", "label": "过滤条件", "type": "string", "describe": "审核时间,仓库编码,采购组织101.01,物料销售地区=中国", "value": "FApproveDate>='{{LAST_SYNC_TIME|dateTime}}' and ( FStockID.fnumber='W005' or FStockID.fnumber='W009' or FStockID.fnumber='W019' ) and FPurOrgId.FNumber = '100.01'"},
{"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}"},
{"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}"}
]
这些参数帮助我们控制查询结果的范围和数量,从而提高数据处理效率。
数据清洗与转换
在获取到原始数据后,我们需要对其进行清洗和转换,以便适应目标系统的数据格式。例如,将日期格式从YYYY-MM-DD
转换为目标系统所需的格式,或者将某些字段值进行映射。
def clean_and_transform(data):
for record in data:
# 日期格式转换
record['FDate'] = transform_date_format(record['FDate'])
# 字段值映射
record['FDocumentStatus'] = map_status(record['FDocumentStatus'])
return data
通过上述函数,我们可以确保数据在写入目标系统之前已经过必要的处理。
数据写入
最后一步是将清洗和转换后的数据写入目标系统。在此过程中,我们需要确保数据格式与目标系统要求一致,并且所有必需字段都已填充完整。
def write_to_target_system(data):
for record in data:
response = target_system_api.write(record)
if response.status_code != 200:
log_error(response)
通过以上步骤,我们实现了从金蝶云星空获取、清洗、转换并写入目标系统的数据集成过程。这一过程不仅提高了数据处理效率,还确保了数据的一致性和准确性。
使用轻易云数据集成平台进行ETL转换并写入旺店通·旗舰奇门API接口
在数据集成生命周期的第二步中,我们需要将已经集成的源平台数据进行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所需的采购订单格式。
数据请求与清洗
在ETL过程的第一步,我们需要从源系统(金蝶)中提取收料通知单的数据,并对其进行清洗和预处理。假设我们已经完成了这一步,接下来我们重点关注数据转换与写入。
数据转换
根据元数据配置,我们需要将金蝶系统中的字段映射到旺店通·旗舰奇门API所需的字段。以下是关键字段的映射关系:
FBillNo
->purchase_no
FSupplierId
->provider_no
FStockID
->receive_warehouse_nos
和expect_warehouse_no
details.FMaterialId_FBARCODE
->spec_no
details.FActReceiveQty
->num
details.FPrice
->price
details.FTaxPrice
->tax_price
此外,还需要设置一些固定值,例如:
purchaser_name
固定为“旺店通”is_check
固定为“true”- 等等。
构建请求体
根据上述映射关系,我们可以构建一个完整的请求体:
{
"purchase_no": "{FBillNo}",
"provider_no": "{FSupplierId}",
"receive_warehouse_nos": "{FStockID}",
...
"purchase_details": [
{
"spec_no": "{{details.FMaterialId_FBARCODE}}",
"num": "{{details.FActReceiveQty}}",
...
"price": "{{details.FPrice}}",
...
"tax_price": "{{details.FTaxPrice}}"
}
],
...
}
在实际操作中,我们会使用轻易云的数据处理功能,将上述模板中的占位符替换为实际值。
写入目标平台
最后一步是通过HTTP POST请求将构建好的请求体发送到旺店通·旗舰奇门API接口。以下是一个示例代码片段,展示如何使用Python发送该请求:
import requests
import json
url = 'https://api.wangdian.cn/openapi2/purchase_order_create.php'
headers = {'Content-Type': 'application/json'}
data = {
# 填充上文构建好的请求体
}
response = requests.post(url, headers=headers, data=json.dumps(data))
if response.status_code == 200:
print("Data successfully written to WDT API")
else:
print(f"Failed to write data: {response.text}")
通过这种方式,我们可以实现从金蝶系统到旺店通·旗舰奇门API接口的数据无缝对接。
总结
本文详细介绍了如何使用轻易云数据集成平台,将金蝶系统中的收料通知单数据进行ETL转换,并最终写入旺店通·旗舰奇门API接口。在这一过程中,理解和正确应用元数据配置是关键,通过合理的字段映射和请求体构建,可以确保数据顺利传输并被目标平台接受。