金蝶-采购订单-->聚水潭-采购订单集成案例分享
在实现企业系统的高效对接过程中,金蝶云星空与聚水潭的数据集成是一个关键环节。本次技术文章将重点探讨如何通过轻易云数据集成平台,实现金蝶云星空的采购订单数据无缝衔接至聚水潭,并分享具体API接口调用及相关技术细节。
首先,我们需要确保从金蝶云星空获取到所有必要的采购订单数据。通过调用其提供的executeBillQuery
API接口,可以定时可靠地抓取最新的订单信息。这一过程需特别注意处理分页和限流问题,以保证全部数据都被正确获取且不会出现遗漏。此外,通过实时监控与日志记录,增强整个数据处理过程的可追溯性。
对于大规模数据写入到聚水潭,则使用其开放API /open/jushuitan/purchase/upload
来完成。这一步骤中,批量集成数据显得尤为重要,它不仅提高了效率,还减少了对于接口频繁调用所带来的负载压力。在此过程中,需要进行自定义的数据映射,对比并调整两个系统间不同的数据格式,以确保无误导入。
此外,为应对可能发生的数据对接异常,必须实现完善的错误重试机制,以避免因网络不稳定或服务器问题导致的数据丢失。一旦检测到异常情况,能够自动触发对应策略重新尝试提交,从而提升整体系统运行的可靠性和稳健性。
整体方案强调以精确、高效、安全为核心,在最大程度上利用轻易云平台提供的一系列特性功能,如全透明可视化操作界面、实时监控等,实现两大业务系统间平滑顺畅的信息交互。
调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成过程中,调用源系统接口是第一步。本文将深入探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery
接口来获取采购订单数据,并进行初步加工。
接口配置与调用
首先,我们需要配置并调用金蝶云星空的executeBillQuery
接口。该接口用于查询采购订单数据,支持POST请求。以下是元数据配置的关键部分:
{
"api": "executeBillQuery",
"effect": "QUERY",
"method": "POST",
"number": "{FBillNo}-{FPOOrderEntry_FEntryId}",
"id": "{FBillNo}-{FPOOrderEntry_FEntryId}",
"name": "FBillNo",
"request": [
{"field": "FPOOrderEntry_FEntryId", "label": "FPOOrderEntry_FEntryId", "type": "string", "describe": "FPOOrderEntry_FEntryId", "value": "FPOOrderEntry_FEntryId"},
{"field": "FID", "label": "FID", "type": "string", "describe": "FID", "value": "FID"},
{"field": "FBillNo", "label": "单据编号", "type": "string", "describe": "单据编号", "value": "FBillNo"},
// ...其他字段省略
],
// ...其他配置省略
}
在这个配置中,api
字段指定了要调用的接口名称,method
字段指定了请求方法为POST。请求参数中包含了采购订单的各个字段,如单据编号(FBillNo
)、供应商(FSupplierId.FNumber
)等。
请求参数解析
为了确保请求参数正确传递,我们需要对请求参数进行解析和填充。例如,过滤条件(FilterString
)可以用来筛选特定状态和时间范围内的订单:
{
...
{
"field":"FilterString",
"label":"过滤条件",
"type":"string",
...
// 筛选已审核且在上次同步时间之后的订单
,"value":"FApproveDate>='{{LAST_SYNC_TIME|datetime}}' and FDocumentStatus='C'"
},
...
}
这里使用了模板语法,将上次同步时间和单据状态作为过滤条件。
数据获取与初步加工
在成功调用接口并获取到采购订单数据后,我们需要对数据进行初步加工。这包括字段映射、格式转换等操作。例如,将金蝶云星空返回的数据字段映射到目标系统所需的字段:
{
...
{
// 映射供应商编码
{"field":"FSupplierId_FNumber","label":"供应商","type":"string","describe":"供应商","value":"FSupplierId.FNumber"},
// 映射采购日期
{"field":"FDate","label":"采购日期","type":"string","describe":"采购日期","value":"FDate"},
// 映射单据状态
{"field":"FDocumentStatus","label":"单据状态","type":"string","describe":"单据状态 \n暂存:Z \n创建:A \n审核中:B \n已审核:C","value":"FDocumentStatus"}
},
...
}
通过这种方式,可以确保源系统的数据能够无缝对接到目标系统。
实际案例分析
假设我们需要获取所有已审核且在上次同步时间之后创建的采购订单,并将其导入到聚水潭系统中。我们可以按照以下步骤进行:
- 配置请求参数:设置过滤条件为已审核且在上次同步时间之后。
- 调用接口:使用轻易云平台发送POST请求到金蝶云星空的
executeBillQuery
接口。 - 处理响应数据:对返回的数据进行字段映射和格式转换。
- 写入目标系统:将处理后的数据导入聚水潭系统。
通过上述步骤,可以实现从金蝶云星空到聚水潭系统的采购订单数据集成。
以上内容详细介绍了如何通过轻易云数据集成平台调用金蝶云星空接口获取并加工数据,为后续的数据转换与写入奠定基础。
使用轻易云数据集成平台进行金蝶采购订单到聚水潭采购订单的ETL转换
在数据集成生命周期的第二步,我们需要将已经从源平台(金蝶)提取的数据进行ETL转换,最终写入目标平台(聚水潭)。本文将详细探讨如何通过轻易云数据集成平台,将金蝶的采购订单数据转换为聚水潭API接口能够接收的格式,并成功上传至聚水潭。
聚水潭API接口元数据配置解析
根据提供的元数据配置,我们可以看到,目标API接口为/open/jushuitan/purchase/upload
,采用POST方法进行数据提交。以下是主要字段及其配置说明:
- is_confirm: 是否确认,固定值为"1"。
- supplier_id: 供应商编号,通过查询
28c9f45b-ce65-37f2-b5af-ee9ff8760e99
表中的supplier_id
字段获取。 - external_id: 外部单号,对应金蝶系统中的
FBillNo
。 - po_date: 采购日期,对应金蝶系统中的
FDate
。 - wms_co_id: 分仓编号,通过查询
a4574865-558b-3258-8fe8-ae7e5bfeb538
表中的FJSTID
字段获取。 - term: 合同条款,对应金蝶系统中的
FPayConditionId_FDescription
。 - items: 商品列表,包括商品编码、数量和协议到货时间。
数据转换与写入过程
-
数据请求与清洗
- 从金蝶系统中提取采购订单数据,包括订单头信息和商品明细信息。
- 对提取的数据进行初步清洗和验证,确保所有必要字段均已获取且格式正确。
-
数据转换
- 将金蝶系统中的字段映射到聚水潭API接口所需的字段。例如,将金蝶的
FBillNo
映射到聚水潭的external_id
。 - 对于需要通过查询获取的字段(如
supplier_id
,wms_co_id
),执行相应的查找操作。例如,通过供应商编码查询供应商编号:SELECT supplier_id FROM supplier_table WHERE supplier_code = '{FSupplierId_FNumber}'
- 将商品列表(items)按照要求进行嵌套处理,每个商品包含商品编码、数量和协议到货时间等信息。
- 将金蝶系统中的字段映射到聚水潭API接口所需的字段。例如,将金蝶的
-
构建请求体
- 根据元数据配置,构建符合聚水潭API接口要求的JSON请求体。例如:
{ "is_confirm": "1", "supplier_id": "12345", "external_id": "PO20231001", "po_date": "2023-10-01T00:00:00", "wms_co_id": "WH001", "term": "30天付款", "items": [ { "sku_id": "SKU001", "qty": 100, "plan_arrive_date": "2023-10-10T00:00:00" }, { "sku_id": "SKU002", "qty": 200, "plan_arrive_date": "2023-10-15T00:00:00" } ] }
- 根据元数据配置,构建符合聚水潭API接口要求的JSON请求体。例如:
-
数据写入
-
使用HTTP POST方法,将构建好的JSON请求体发送至聚水潭API接口:
import requests url = 'https://api.jushuitan.com/open/jushuitan/purchase/upload' headers = {'Content-Type': 'application/json'} data = { # 构建好的JSON请求体 } response = requests.post(url, json=data, headers=headers) if response.status_code == 200: print("Data uploaded successfully") else: print(f"Failed to upload data: {response.text}")
-
技术要点总结
在整个ETL转换过程中,需要特别注意以下技术要点:
- 字段映射准确性:确保每个字段都能正确映射到目标平台所需格式,尤其是涉及查找操作的字段,如
supplier_id
,wms_co_id
等。 - JSON结构正确性:构建的JSON请求体必须严格符合目标API接口要求,否则会导致上传失败。
- 错误处理机制:在实际操作中,应对可能出现的错误情况(如网络问题、API响应异常等)设置相应的处理机制,以提高系统稳定性。
通过以上步骤,我们可以高效地将金蝶采购订单数据转换并上传至聚水潭,实现不同系统间的数据无缝对接。