金蝶云星空与金蝶云星空系统对接集成案例分析:付款退款单数据集成
在本篇技术分享中,我们将深入探讨如何通过轻易云数据集成平台,实现金蝶云星空和金蝶云星空之间的付款退款单数据高效、可靠地对接。此项目旨在确保大批量交易数据能够无缝转移,并保持数据一致性和完整性。
为了实现这一目标,我们使用了如下关键技术:
-
executeBillQuery API 调用: 该接口用于从源金蝶云星空系统定时抓取最新的付款退款单数据。通过设定合理的调用频率及分页处理逻辑,确保所有待同步的数据都能及时获取。
-
batchSave API 写入: 在获得有效的数据后,通过调用 batchSave 接口,将这些付款退款单快速写入目标金蝶云星空系统。这一过程充分利用了高吞吐量的数据写入能力,使得大量交易记录可以迅速完成同步。
-
自定义转换逻辑: 不同系统的表结构和字段定义可能存在差异,因此我们设计了一套自定义的数据转换规则来适应特定业务需求,保证每条记录都能准确映射到目标系统中的相应位置。
-
监控与告警体系: 集中的实时监控与自动告警机制贯穿整个任务执行过程中,一旦出现异常或错误,可以立即捕捉并进行重试,以最大限度减少人为干预,提高整体效率和可靠性。
-
日志记录与追踪: 每次 API 调用、成功传输以及失败重试等操作均被详细记录,这不仅提升了透明度,还为后续问题排查提供了宝贵的信息支持。
结合以上方法,我们能够有效地解决以下技术挑战:
- 确保充足的数据质量监控,在发生潜在错误时及时检测并处理。
- 精确处理分页及限流问题,防止因请求过多导致接口性能下降。
- 实现跨平台的一致性,包括格式差异处理以及复杂业务场景下的定制化映射需求。
这个方案展示出如何利用先进的平台功能、高效 API 管理及严密监控手段,为企业构建一个稳健而灵活的数据集成解决方案。
调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细介绍如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery
接口,获取付款退款单的数据,并进行必要的数据加工。
接口配置与请求参数
首先,我们需要配置调用金蝶云星空接口的元数据。以下是关键的元数据配置:
{
"api": "executeBillQuery",
"method": "POST",
"number": "FBillNo",
"id": "FREFUNDBILLENTRY_FEntryID",
"pagination": {
"pageSize": 500
},
"idCheck": true,
"request": [
{"field":"FAFTTAXTOTALAMOUNT","label":"应退金额","type":"string","describe":"应退金额","value":"FAFTTAXTOTALAMOUNT"},
{"field":"FID","label":"实体主键","type":"string","describe":"实体主键","value":"FID"},
{"field":"FSRCSETTLETYPEID","label":"结算方式","type":"string","describe":"结算方式","value":"FSRCSETTLETYPEID"},
{"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"FBillNo"},
{"field":"FDOCUMENTSTATUS","label":"单据状态","type":"string","describe":"单据状态","value":"FDOCUMENTSTATUS"},
{"field":"FREALREFUNDAMOUNT_S","label":"本次退款金额","type":"string","describe":"本次退款金额","value":"FREALREFUNDAMOUNT_S"},
{"field":"FCreaterId","label":"创建人","type":"string","describe":"创建人","value":"FCreaterId"},
{"field":"FSRCBILLID","label":"源单内码","type":"string","describe":"源单内码","value":"FSRCBILLID"},
{"field":...}
],
"otherRequest": [
{"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}"},
{"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}"},
{"field":...}
]
}
请求示例
根据上述元数据配置,我们可以构建一个请求示例:
{
"FormId": "AP_REFUNDBILL",
"FieldKeys": [
...
],
"FilterString": "{{LAST_SYNC_TIME|date}} and FACCOUNTID.FNumber <> '111111'",
...
}
其中,FormId
指定了业务对象表单ID,FieldKeys
定义了需要查询的字段集合,FilterString
用于过滤条件。
数据清洗与转换
在获取到原始数据后,需要对数据进行清洗和转换,以确保其符合目标系统的要求。以下是一些常见的数据清洗与转换操作:
- 字段映射:将源系统字段映射到目标系统字段。例如,将金蝶云星空中的
FBillNo
映射为目标系统中的InvoiceNumber
。 - 数据类型转换:确保所有字段的数据类型符合目标系统要求。例如,将字符串类型的日期转换为日期类型。
- 值替换:根据业务需求,对某些字段值进行替换或计算。例如,将货币单位从人民币转换为美元。
示例代码
以下是一个示例代码片段,用于调用接口并处理返回的数据:
import requests
import json
# 配置请求头和URL
url = 'https://api.kingdee.com/executeBillQuery'
headers = {'Content-Type': 'application/json'}
# 构建请求体
payload = {
'FormId': 'AP_REFUNDBILL',
'FieldKeys': ['FBillNo', 'FID', 'FAFTTAXTOTALAMOUNT', ...],
'FilterString': "{{LAST_SYNC_TIME|date}} and FACCOUNTID.FNumber <> '111111'",
...
}
# 发起POST请求
response = requests.post(url, headers=headers, data=json.dumps(payload))
# 检查响应状态码
if response.status_code == 200:
data = response.json()
# 数据清洗与转换
cleaned_data = []
for record in data:
cleaned_record = {
'InvoiceNumber': record['FBillNo'],
'EntityKey': record['FID'],
'RefundAmount': float(record['FAFTTAXTOTALAMOUNT']),
...
}
cleaned_data.append(cleaned_record)
# 将清洗后的数据写入目标系统或存储
else:
print(f"Error: {response.status_code}, {response.text}")
总结
通过轻易云数据集成平台调用金蝶云星空接口,可以高效地获取付款退款单的数据,并进行必要的数据清洗和转换。这一步骤不仅确保了数据的一致性和准确性,还为后续的数据处理和分析奠定了坚实基础。
使用轻易云数据集成平台实现付款退款单的ETL转换与写入金蝶云星空
在数据集成过程中,ETL(Extract, Transform, Load)转换是关键的一步。本文将重点探讨如何使用轻易云数据集成平台,将源平台的数据进行ETL转换,并最终通过金蝶云星空API接口将数据写入目标平台。
元数据配置解析
在本案例中,我们需要将付款退款单的数据写入金蝶云星空。以下是元数据配置的详细解析:
{
"api": "batchSave",
"method": "POST",
"idCheck": true,
"operation": {
"rowsKey": "array",
"rows": 1,
"method": "batchArraySave"
},
"request": [
{"field":"FBillNo","label":"单据编号","type":"string","value":"{FBillNo}"},
{"field":"FSETTLEORGID","label":"结算组织","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"104"},
{"field":"FEXCHANGETYPE","label":"汇率类型","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{FEXCHANGETYPE}"},
{"field":"FDATE","label":"业务日期","type":"string","value":"{FDATE}"},
{"field":"FCURRENCYID","label":"币别","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{FCURRENCYID}"},
{"field":"FBillTypeID","label":"单据类型","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"FKTKDLX02_SYS"},
{"field":"FCONTACTUNITTYPE","label":"往来单位类型","type":"string","value":"{FCONTACTUNITTYPE}"},
{"field":"FCONTACTUNIT","label":"往来单位","type":"string","parser":{"name":"ConvertObjectParser","params":"FName"},"value":"{FCONTACTUNIT}"},
{"field": "FBUSINESSTYPE", "label": "业务类型", "type": "string", "value": "{FBUSINESSTYPE}"},
{"field": "FDepartment", "label": "部门", "type": "string", "value": "{FDepartment}", "parser": {"name": "ConvertObjectParser", "params": "FNumber"}},
{"field": "FPAYORGID", "label": "付款组织", "type": "string", "parser":{"name": "ConvertObjectParser", "params": "FNumber"}, "value": "104"},
{"field": "FREMARK", "label": "备注", "type": "string", "value": "{FREMARK}"},
{
...
// 省略部分字段
...
}
],
...
}
数据字段解析与转换
-
单据编号(FBillNo):
- 类型:字符串
- 来源:源平台的
FBillNo
字段 - 无需转换,直接映射。
-
结算组织(FSETTLEORGID):
- 类型:字符串
- 固定值:104
- 使用
ConvertObjectParser
进行对象转换。
-
汇率类型(FEXCHANGETYPE):
- 类型:字符串
- 来源:源平台的
FEXCHANGETYPE
字段 - 使用
ConvertObjectParser
进行对象转换。
-
业务日期(FDATE):
- 类型:字符串
- 来源:源平台的
FDATE
字段 - 无需转换,直接映射。
-
币别(FCURRENCYID):
- 类型:字符串
- 来源:源平台的
FCURRENCYID
字段 - 使用
ConvertObjectParser
进行对象转换。
-
单据类型(FBillTypeID):
- 类型:字符串
- 固定值:FKTKDLX02_SYS
- 使用
ConvertObjectParser
进行对象转换。
-
往来单位类型(FCONTACTUNITTYPE):
- 类型:字符串
- 来源:源平台的
FCONTACTUNITTYPE
字段 - 无需转换,直接映射。
-
往来单位(FCONTACTUNIT):
- 类型:字符串
- 来源:源平台的
FCONTACTUNIT
字段 - 使用
ConvertObjectParser
进行名称转换。
-
业务类型(FBUSINESSTYPE):
- 类型:字符串
- 来源:源平台的
FBUSINESSTYPE
字段 - 无需转换,直接映射。
-
部门(FDepartment):
- 类型:字符串
- 来源:源平台的
FDepartment
字段 - 使用
ConvertObjectParser
进行对象转换。
-
付款组织(FPAYORGID):
- 类型:字符串
- 固定值:104
- 使用
ConvertObjectParser
进行对象转换。
-
备注( FREMAR K ): – 类 型 : 字 符 串 – 来 源 : 源 平 台 的
FREMAR K
字 段 – 无需 转 换 , 直 接 映 射 。
数组字段处理
对于数组字段如退款单明细( FREFUNDBILLENTRY),需要特别注意其子项的处理:
...
{
“ field ” : “ FREFUNDBILLENTRY ” , “ label ” : “ 退 款 单 明 细 ” , “ type ” : “ array ” , “ children ” : [
{“ field ” : “ FSETTLETYPEID ” , “ label ” : “ 结 算 方 式 ” , “ type ” : “ string ” , “ parser ” : {“ name ” : “ ConvertObjectParser” ,“ params”:“ FNumber”},“ value”:“ { FSETTLETYPEID }”,“ parent”:“ FREFUNDBILLENTRY”},
{“ field”:“ FREFUNDAMOUNTFOR” ,“ label”:“ 表体-应退金额”,“ type”:“ string”,“ value”:“ { FREFUNDAMOUNTFOR }”,“ parent”:“ FREFUNDBILLENTRY”},
{“ field”:“ FNOTE” ,“ label”:“备注”,“ type”:“ string”,“ value”:“ { FNOTE }”,`` parent``:`` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` ``
...
//省略部分子项配置...
...
]
}
}
每个子项都需要根据其父项进行正确的映射和解析,如结算方式、应退金额等。确保每个子项都能正确地被目标系统识别和处理。
API调用与数据写入
在完成所有字段解析与映射后,通过调用金蝶云星空的API接口,将处理后的数据批量保存至目标系统:
“ api”: batchSave,
method:POST,
idCheck:true,
operation:{
rowsKey:array,
rows:1,
method:batchArraySave}
}
确保请求方法为POST,并且正确配置了批量保存操作的方法和参数。在实际调用时,需要确保所有必填字段都已正确填充,并且基础资料验证通过,以保证数据能够顺利写入目标系统。
通过以上步骤,我们可以高效地完成从源平台到金蝶云星空的数据ETL转换与写入过程,实现不同系统间的数据无缝对接。