标准应付单-采购入库单(虚拟组织)OK:金蝶云星空间的数据集成技术案例
在本文中,我们将直接探讨如何利用轻易云数据集成平台,将金蝶云星空中的标准应付单与采购入库单(虚拟组织)的数据进行高效对接。本次案例重点关注的是,如何通过API接口—executeBillQuery
和batchSave
实现这一过程,同时解决批量集成、分页限制以及异常处理等问题。
该方案的核心是使用轻易云的集中监控和告警系统,实时跟踪每一个数据集成任务的状态和性能,以确保整个流程稳定可靠。具体步骤包括:
-
执行查询与抓取:首先,通过调用金蝶云星空提供的API接口
executeBillQuery
定时且可靠地获取标准应付单的数据。这一步骤必须考虑到分页和限流策略,以防止由于大量请求导致服务器负载过高或响应超时等问题。 -
自定义转换与映射:为了适应特定业务需求,我们需要针对不同的数据结构进行自定义转换。在这个过程中,使用可视化的数据流设计工具可以极大简化配置工作,使得复杂的逻辑变得直观明了。
-
快速写入目标系统:经过转换后的数据将被批量写入到目标系统,即另一端的金蝶云星空。这里我们主要依赖于
batchSave
接口,该接口支持高吞吐量的数据写入能力,从而保证了整个过程的数据处理时效性。 -
质量监控与错误重试:在实际操作中,不可避免会遇到各种异常情况。因此,在每个关键节点上均设置了严格的数据质量监控机制。一旦检测到任何异常情况,如网络延迟或格式错误,将立即启动错误重试机制来补救可能出现的问题,确保数据不遗漏、不重复。
-
优化资源管理:通过统一视图和控制台全面掌握API资产利用情况,可以实现资源优化配置。从而进一步提升整体效率,并降低运营成本。
通过上述步骤,我们不仅成功实现了两个金蝶云星空系统之间的大规模、高效、安全的数据交换,还显著提升了企业内部各项业务流程的信息透明度及自动化水平。在后续部分内容里,我们将细致分享每一个技术环节中的详细配置及注意事项。
调用金蝶云星空接口executeBillQuery获取并加工数据
在轻易云数据集成平台的生命周期中,调用源系统接口是关键的第一步。本文将详细探讨如何通过金蝶云星空接口executeBillQuery
获取并加工数据。
接口配置与调用
首先,我们需要配置元数据以便正确调用金蝶云星空的API。以下是元数据配置的关键部分:
{
"api": "executeBillQuery",
"method": "POST",
"number": "FBillNo",
"id": "FEntityDetail_FEntryID",
"pagination": {"pageSize": 500},
"idCheck": true,
...
}
这些配置项定义了API的基本信息,包括请求方法、分页设置和主键字段等。
请求参数构建
为了成功调用executeBillQuery
接口,我们需要构建请求参数。以下是一个示例请求参数:
{
"FormId": "AP_Payable",
"FieldKeys": [
"FID",
"FBillNo",
...
],
"FilterString": "FApproveDate>='{{LAST_SYNC_TIME|date}}' and FBillTypeID.FNumber = 'YFD01_SYS' and FSUPPLIERID.FName like '%虚拟%' and FSetAccountType='2' and FBillNo not like '%-%' and FPriceQty >'0' and FDATE >='2024-07-01 00:00:00'",
"Limit": "{PAGINATION_PAGE_SIZE}",
"StartRow": "{PAGINATION_START_ROW}"
}
FormId
: 表单ID,必须填写金蝶的表单ID,如AP_Payable
。FieldKeys
: 查询字段集合,包含所有需要获取的数据字段。FilterString
: 数据过滤条件,用于筛选符合条件的数据。Limit
和StartRow
: 分页参数,控制每次查询的数据量和起始行。
数据处理与清洗
获取到原始数据后,需要对其进行清洗和转换,以便后续处理。以下是一些常见的数据清洗步骤:
- 字段映射:将原始字段映射到目标系统所需的字段。例如,将
FBillNo
映射为目标系统中的单据编号。 - 数据格式转换:将日期、金额等字段转换为目标系统所需的格式。例如,将日期格式从
YYYY-MM-DD HH:mm:ss
转换为YYYYMMDD
。 - 数据过滤:进一步过滤不符合业务规则的数据。例如,剔除已作废或状态不正确的单据。
示例代码
以下是一个Python示例代码,用于调用接口并处理返回的数据:
import requests
import json
# 配置请求参数
url = 'https://api.kingdee.com/executeBillQuery'
headers = {'Content-Type': 'application/json'}
payload = {
'FormId': 'AP_Payable',
'FieldKeys': 'FID,FBillNo,...',
'FilterString': ("FApproveDate>='2023-01-01' and FBillTypeID.FNumber = 'YFD01_SYS' "
"and FSUPPLIERID.FName like '%虚拟%' and FSetAccountType='2' "
"and FBillNo not like '%-%' and FPriceQty >'0' and FDATE >='2024-07-01 00:00:00'"),
'Limit': 500,
'StartRow': 0
}
# 调用API
response = requests.post(url, headers=headers, data=json.dumps(payload))
data = response.json()
# 数据处理与清洗
processed_data = []
for record in data:
processed_record = {
'单据编号': record['FBillNo'],
'业务日期': record['FDATE'],
# 更多字段映射...
}
processed_data.append(processed_record)
# 输出处理后的数据
print(json.dumps(processed_data, indent=2, ensure_ascii=False))
总结
通过以上步骤,我们可以成功调用金蝶云星空接口executeBillQuery
获取并加工数据。这一过程包括元数据配置、请求参数构建、数据处理与清洗等关键环节。通过合理使用这些技术手段,可以确保数据集成过程高效、准确地完成。
使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口
在数据集成的生命周期中,第二步是将已经集成的源平台数据进行ETL(提取、转换、加载)转换,并最终写入目标平台。在本文中,我们将深入探讨如何通过轻易云数据集成平台,将标准应付单-采购入库单(虚拟组织)的数据转换为金蝶云星空API接口所能接收的格式,并成功写入目标平台。
1. 配置元数据
首先,我们需要配置元数据以适应金蝶云星空API接口的要求。以下是我们使用的元数据配置:
{
"api": "batchSave",
"method": "POST",
"idCheck": true,
"operation": {
"method": "merge",
"field": "FBillNo,FDate,FSupplierId_FName,FSettleCurrId_FNumber,FPurchaseOrgId_FNumber",
"bodyName": "details",
"header": ["FBillNo", "FDATE", "FSupplierId_FName", "FSettleCurrId_FNumber", "FPurchaseOrgId_FNumber", "FExchangeRate"],
"body": ["FMATERIALID_FNumber", "FPriceQty", "FTaxPrice", "FALLAMOUNTFOR_D", "FDISCOUNTAMOUNTFOR", "FPurchaseOrgId_FNumber"]
},
...
}
2. 数据请求与清洗
在ETL过程中,首先需要从源系统请求数据并进行清洗。这一步通常包括过滤无效数据、处理缺失值以及标准化字段名称等操作。由于本文重点在于转换和写入阶段,这里不做详细展开。
3. 数据转换
接下来是数据转换阶段,根据金蝶云星空API接口的要求,我们需要将源系统的数据字段映射到目标系统的字段。以下是一些关键字段的映射和转换规则:
- 单据类型 (
FBillTypeID
): 固定值"RKD01_SYS"
- 业务类型 (
FBusinessType
): 固定值"CG"
- 单据编号 (
FBillNo
): 映射自源系统的FBillNo
- 入库日期 (
FDate
): 映射自源系统的FDATE
- 收料组织 (
FStockOrgId
): 固定值"125"
- 采购组织 (
FPurchaseOrgId
): 固定值"125"
- 供应商 (
FSupplierId
): 固定值"虚拟组织"
- 币别 (
FSettleCurrId
): 映射自源系统的FSettleCurrId_FNumber
- 汇率 (
FExchangeRate
): 固定值"1"
对于明细信息(details
),我们需要进一步细化每个字段:
{
...
{
"field": "FInStockEntry",
...
"children": [
{"field": "FMaterialId", ... , "value":"{{details.FMATERIALID_FNumber}}"},
{"field": "FRealQty", ... , "value":"{FPriceQty}"},
{"field": "FTaxPrice", ... , "value":"{{details.FTaxPrice}}"},
{"field": "FGiveAway", ... , "value":"{FIsFree}"},
{"field": "FTaxPrice", ... , "value":"{{details.FTaxPrice}}"},
{"field": "FAllAmount", ... , "value":"{{details.FALLAMOUNTFOR_D}}"},
{"field": "FDiscount", ... , "value":"{{details.FDISCOUNTAMOUNTFOR}}"}
]
}
}
4. 数据写入
完成数据转换后,我们使用配置好的元数据,通过轻易云的数据集成平台,将处理后的数据发送到金蝶云星空API接口。这里使用的是 batchSave
接口,方法为 POST
。
{
...
{
field: 'FormId',
value: 'STK_InStock'
},
{
field: 'IsAutoSubmitAndAudit',
value: false
},
{
field: 'Operation',
value: 'Save'
},
{
field: 'IsVerifyBaseDataField',
value: true
},
{
field: 'SubSystemId',
value: '21'
}
}
通过上述配置和步骤,我们可以确保源系统的数据经过ETL处理后,能够准确无误地写入到金蝶云星空中,实现不同系统间的数据无缝对接。
在实际操作中,实时监控和日志记录也是非常重要的一环,可以帮助我们及时发现和解决问题,确保整个流程顺利进行。