案例分享:金蝶云星空数据集成到金蝶云星空的方案「收款退款单-miniluo」
在实际业务场景中,多系统间的数据对接往往是实现企业信息流通的关键一步。本次技术案例将展示如何通过轻易云平台,将金蝶云星空中的数据无缝集成到同样为金蝶云星空的目标系统,具体案例为“收款退款单-miniluo”。
系统对接背景
我们面临一个主要挑战,即如何确保来自源端金蝶云星空的数据能够快速、高效且不丢失地写入目标端。为了处理这一问题,我们设计了如下几个核心步骤,其中包括高吞吐量的数据写入、实时监控和告警机制,以及定制化的数据转换逻辑等。
实现方案概述
-
获取与解析数据
- 利用executeBillQuery接口抓取源端金蝶云星空中的收款退款单数据。这一过程需要考虑分页和限流的问题,以避免API调用次数超出限制。
-
数据转换与映射
- 针对不同系统之间可能存在的数据格式差异,采用自定义的数据转换逻辑,使得抓取来的原始数据适配目标系统要求。
-
批量写入
- 使用batchSave接口实现大量数据的批量写入,提高了整体效率,并能有效支持高吞吐量需求。
-
实时监控与异常处理
- 建立集中式的监控和告警体系,对每一个任务进行全程跟踪。一旦出现错误,通过异常重试机制保证任务最终成功完成,从而提高系统可靠性。
-
日志记录及分析
- 在整个过程中,对各个环节进行详细的日志记录,便于后期分析与优化。同时,利用可视化工具直观展示每一步操作详情和执行状态。
这种方法不仅提升了所需业务流程自动化程度,还确保了从源头到目标端每个环节都得到严密控制,实现业务透明度最大化。对于大多数涉及复杂多变数据信息桥接的问题,此类解决方案提供了一种全面且灵活的方法来应对多样化挑战。
调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery
接口来获取收款退款单的数据,并进行初步加工。
接口配置与请求参数
首先,我们需要配置接口和请求参数。根据元数据配置,我们使用POST方法调用executeBillQuery
接口,主要参数如下:
- api:
executeBillQuery
- method:
POST
- number:
FBillNo
- id:
FREFUNDBILLENTRY_FEntryID
- pagination: 支持分页,每页500条记录
- idCheck: true,表示需要检查ID
请求字段包括但不限于以下内容:
[
{"field":"FREFUNDBILLENTRY_FEntryID","label":"FREFUNDBILLENTRY_FEntryID","type":"string"},
{"field":"FID","label":"实体主键","type":"string"},
{"field":"FBillNo","label":"单据编号","type":"string"},
{"field":"FDOCUMENTSTATUS","label":"单据状态","type":"string"},
{"field":"FCreaterId","label":"创建人","type":"string"},
{"field":"FCreateDate","label":"创建日期","type":"string"},
// 更多字段...
]
其他请求参数包括分页参数、过滤条件等:
[
{"field": "Limit", "label": "最大行数", "type": "string", "value": "{PAGINATION_PAGE_SIZE}"},
{"field": "StartRow", "label": "开始行索引", "type": "string", "value": "{PAGINATION_START_ROW}"},
{"field": "FilterString", "label": "过滤条件", "type": "string", "value": "FCONTACTUNIT.FNumber= 'PDD14' and FDate >='2024-08-01 00:00:00'"},
{"field": "FieldKeys", "label": "需查询的字段key集合", "type": "array", "parser":{"name":"ArrayToString","params": ","}},
{"field": "FormId", "label": "业务对象表单Id", "type": "string", "value": "AR_REFUNDBILL"}
]
调用接口获取数据
在轻易云平台上配置好上述参数后,我们可以发起API请求。示例代码如下:
import requests
url = 'https://api.kingdee.com/executeBillQuery'
headers = {'Content-Type': 'application/json'}
payload = {
'FormId': 'AR_REFUNDBILL',
'FieldKeys': 'FID,FBillNo,FDOCUMENTSTATUS,FCreateDate,FREFUNDBILLENTRY_FEntryID',
'FilterString': 'FCONTACTUNIT.FNumber= \'PDD14\' and FDate >=\'2024-08-01 00:00:00\'',
'Limit': 500,
'StartRow': 0
}
response = requests.post(url, headers=headers, json=payload)
data = response.json()
数据清洗与初步加工
获取到数据后,需要对其进行清洗和初步加工,以便后续处理。以下是一些常见的数据清洗步骤:
- 去除空值和重复值:确保数据完整性。
- 字段格式转换:例如,将日期字符串转换为日期对象。
- 数据筛选:根据业务需求筛选出需要的记录。
示例代码如下:
import pandas as pd
# 假设data是从API返回的数据列表
df = pd.DataFrame(data)
# 去除空值和重复值
df.dropna(inplace=True)
df.drop_duplicates(inplace=True)
# 字段格式转换
df['FCreateDate'] = pd.to_datetime(df['FCreateDate'])
# 数据筛选
filtered_df = df[df['FDOCUMENTSTATUS'] == 'A']
小结
通过轻易云数据集成平台调用金蝶云星空的executeBillQuery
接口,可以高效地获取收款退款单的数据。在此过程中,合理配置API请求参数、有效地清洗和加工数据,是确保数据集成成功的关键步骤。
使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口
在轻易云数据集成平台中,将已经集成的源平台数据进行ETL转换,并最终写入目标平台金蝶云星空API接口,是一个复杂但高效的过程。本文将深入探讨这一过程中的技术细节,特别是如何利用元数据配置来实现这一目标。
数据请求与清洗
在数据生命周期的第一步,我们已经完成了数据的请求与清洗。这一步确保了从源系统获取的数据是干净且结构化的,为后续的ETL转换打下了坚实的基础。
数据转换与写入
接下来,我们重点关注如何将清洗后的数据转换为金蝶云星空API接口所能接收的格式,并最终写入目标平台。以下是详细步骤和技术要点:
配置API接口元数据
根据提供的元数据配置,我们需要将各个字段映射到金蝶云星空所需的格式。以下是关键字段及其配置解析:
-
单据类型(FBillTypeID)
- 类型:字符串
- 解析器:
ConvertObjectParser
- 参数:
FNumber
- 默认值:
SKTKDLX01_SYS
-
日期(FDATE)
- 类型:字符串
- 值:
{FDATE}
-
往来类型(FCONTACTUNITTYPE)
- 类型:字符串
- 值:
{FCONTACTUNITTYPE}
-
往来单位(FCONTACTUNIT)
- 类型:字符串
- 解析器:
ConvertObjectParser
- 参数:
FNumber
- 映射目标ID:
63556c380bc98d4c8e11c30d
-
收款单位类型(FRECTUNITTYPE)
- 类型:字符串
- 值:
{FRECTUNITTYPE}
-
收款单位(FRECTUNIT)
- 类型:字符串
- 解析器:
ConvertObjectParser
- 参数:
FNumber
- 映射目标ID:
63556c380bc98d4c8e11c30d
-
币别(FCURRENCYID)
- 类型:字符串
- 解析器:
ConvertObjectParser
- 参数:
FNumber
- 默认值:
PRE001
-
结算组织(FSETTLEORGID)
- 类型:字符串
- 解析器:
ConvertObjectParser
- 参数:
FNumber
- 映射目标ID:
6355fe20c4a6d536d27cd8dc
-
销售组织(FSALEORGID) 同上,与结算组织类似。
-
业务类型(FBUSINESSTYPE) 同上,直接映射。
-
汇率(FEXCHANGERATE) 同上,直接映射。
-
支付组织(FPAYORGID) 同上,与结算组织类似。
-
结算本位币(FSETTLEMAINBOOKID) 同上,默认值为
PRE001
. -
明细部分 (数组) FREFUNDBILLENTRY
明细部分包含多个字段,每个字段都有其特定配置。例如:
{ "field": "FACCOUNTID", "label": "我方银行账号", "type": "string", "parser": { "name": "ConvertObjectParser", "params": "FNumber" }, "value": "_function case when '{FCONTACTUNIT}' ='PDD14' then '18011967948' else '{FACCOUNTID}' end", "parent": "FREFUNDBILLENTRY" }
上述配置表明,如果
FCONTACTUNIT
为PDD14
, 则银行账号为18011967948
, 否则使用{FACCOUNTID}
的值。
批量保存操作
最后一步是将处理后的数据通过批量保存操作 (batchSave
) 写入金蝶云星空。具体请求参数如下:
{
"FormId": "AR_REFUNDBILL",
"Operation": "BatchSave",
"IsAutoSubmitAndAudit": false,
"IsVerifyBaseDataField": false,
}
这些参数确保了我们可以批量保存并提交审核,同时验证基础资料有效性。
总结
通过上述详细步骤和技术要点,我们成功地将源平台的数据进行了ETL转换,并最终写入到金蝶云星空API接口中。这一过程充分利用了轻易云数据集成平台提供的强大功能,实现了不同系统间的数据无缝对接,大大提升了业务效率和透明度。