每刻报销单【供应商货款付款申请单】集成金蝶云星空【付款申请单】服务费案例分享
在企业财务管理系统中,实现不同平台的数据无缝对接是提升工作效率和数据准确性的关键步骤。本文将详细介绍如何通过轻易云数据集成平台,将每刻的报销单【供应商货款付款申请单】高效、可靠地集成到金蝶云星空中的【付款申请单】服务费模块。
为了确保整个数据转换和传递过程不出现任何差错,我们采用了多种技术手段。在这一过程中,首先需要解决的是如何从每刻接口实时抓取数据。我们利用了定时任务机制来可靠地调用每刻API(/api/openapi/form/reimburse),以获取最新的表单数据,并确保不会漏掉任何一条记录。同时,为防止接口限流问题导致的数据获取失败情况,我们设置了智能重试机制,保障了高可用性。
处理完毕后,批量写入大量数据到金蝶云星空则是下一个挑战。通过调用金蝶提供的batchSave API,我们能快速且高效地将大批量的报销信息同步至目标系统。这不仅减少了中间等待时间,还避免了因频繁请求网络而带来的性能瓶颈。
这其中还涉及到了两套系统间的数据格式差异问题。例如,每刻与金蝶在字段命名、数值类型等方面存在细微但重要的不一致。对此,通过定制化的数据映射策略,将源系统与目标系统进行对应调整,使得最终写入的数据完全符合预期。此外,为确保所有操作透明化和可追溯性,我们引入了实时监控与日志记录功能,对每次的数据处理动作均有详尽记录,一旦发生异常,可以迅速定位并进行精准修正。
综上所述,这样一种基于轻易云平台搭建起的一站式自动化对接方案,不仅提高了日常财务工作的效率,也极大减少人工干预可能带来的错误风险。而具体实施细节将在以下部分作出详细阐述……
调用每刻接口/api/openapi/form/reimburse获取并加工数据
在轻易云数据集成平台的生命周期中,调用源系统接口是数据处理的第一步。本文将详细探讨如何通过每刻接口/api/openapi/form/reimburse
获取并加工数据,以实现供应商货款付款申请单到金蝶付款申请单的集成。
接口配置与请求参数
根据提供的元数据配置,我们需要构建一个POST请求来调用每刻的API接口。以下是请求参数的详细配置:
- API路径:
/api/openapi/form/reimburse
- 请求方法:
POST
- 主要字段:
createdAtStart
: 根据单据的创建时间(起始)createdAtEnd
: 根据单据的创建时间(结束)formCodes
: 单据号(支持多个,用逗号分隔)pageSize
: 分页条数,默认值为100offset
: 当前页首条数据在所有数据中的偏移量formStatus
: 单据状态,默认值为SIGNING,SETTLEMENT,COMPLETED
formSubTypeBizCode
: 单据小类业务编码,固定值为FT22041119MIDZPC
approvedAtStart
: 根据单据的审批通过时间(起始),使用函数计算approvedAtEnd
: 根据单据的审批通过时间(结束),使用当前时间auditedAtStart
: 最后审核节点的通过时间(起始)auditedAtEnd
: 最后审核节点的通过时间(结束)
请求参数示例
以下是一个完整的请求参数示例:
{
"createdAtStart": "2023-01-01T00:00:00Z",
"createdAtEnd": "2023-12-31T23:59:59Z",
"formCodes": ["FORM001", "FORM002"],
"pageSize": "100",
"offset": "0",
"formStatus": "SIGNING,SETTLEMENT,COMPLETED",
"formSubTypeBizCode": "FT22041119MIDZPC",
"approvedAtStart": "_function ({LAST_SYNC_TIME}-600) * 1000",
"approvedAtEnd": "{CURRENT_TIME}000",
"auditedAtStart": "",
"auditedAtEnd": ""
}
数据清洗与转换
在获取到原始数据后,需要进行清洗和转换,以便后续写入目标系统。在这个过程中,我们需要特别注意以下几点:
-
字段映射与转换:
- 将每刻的数据字段映射到金蝶系统对应的字段。
- 对于数组类型字段如
expenseList
和allocationList
,需要进行平铺处理。
-
条件过滤:
- 根据元数据配置中的条件过滤规则,只保留符合条件的数据。例如,只有当
expenseList.0.viceExpenseTypeBizCode
等于CI020
时,才会被保留。
- 根据元数据配置中的条件过滤规则,只保留符合条件的数据。例如,只有当
-
数据格式调整:
- 确保日期、金额等字段符合目标系统要求的格式。
- 对于多选项字段,如
formCodes
,需要将字符串解析为数组。
数据清洗示例
假设我们从每刻获取到如下原始数据:
{
"data": [
{
"formCode": "FORM001",
"createdAt": "2023-01-15T08:00:00Z",
"expenseList": [
{
"viceExpenseTypeBizCode": "CI020",
...
}
],
...
},
...
]
}
经过清洗和转换后的数据应类似如下:
{
"data": [
{
"formCode": "FORM001",
...
}
]
}
实现步骤
- 构建请求:根据元数据配置构建POST请求,并设置相应的请求头和参数。
- 发送请求:调用每刻API接口获取原始数据。
- 解析响应:对响应结果进行解析,并提取有效数据。
- 清洗与转换:根据业务需求和目标系统要求,对数据进行清洗和转换。
- 写入目标系统:将处理后的数据写入金蝶系统。
通过以上步骤,我们可以高效地完成从每刻报销单到金蝶付款申请单的数据集成,实现不同系统间的数据无缝对接。
使用轻易云数据集成平台将源平台数据转换并写入金蝶云星空API接口
在数据集成的生命周期中,第二步是将已经集成的源平台数据进行ETL(提取、转换、加载)处理,并将其转为目标平台——金蝶云星空API接口所能够接收的格式,最终写入目标平台。本文将详细探讨这一过程中的技术细节和实现方法。
元数据配置解析
在本文中,我们使用以下元数据配置来实现从每刻报销单【供应商货款付款申请单】到金蝶【付款申请单】服务费的数据转换和写入:
{
"api": "batchSave",
"method": "POST",
"idCheck": true,
"operation": {
"method": "merge",
"field": "formCode,paymentBaseAmount-amountStr,baseAmount-amountStr,tradingPartnerBizCode,customObject-CF405-startTime,legalEntityName",
"bodyName": "items",
"header": ["formCode", "customObject-CF547-detailBusinessCode", "paymentBaseAmount-amountStr", "baseAmount-amountStr", "tradingPartnerBizCode", "customObject-CF405-startTime", "legalEntityName"],
"body": ["expenseList_viceExpenseTypeBizCode", "expenseList_approvedBaseAmount-amountStr", "approvedAt", "tradingPartnerBizCode", "expenseList_expenseTypeBizCode", "expenseList_comments",
"expenseList_allocationList_customObject_detailBusinessCode",
"expenseList_allocationList_CF367",
"expenseList_allocationList_CF327",
"expenseList_customObject_CF462_CF466_detailBusinessCode",
"expenseList_customObject_CF557_CF559_detailBusinessCode",
"expenseList_customObject_CF369_text"]
},
...
}
数据请求与清洗
在此阶段,我们需要从源系统获取原始数据,并对其进行初步清洗和标准化处理,以便后续的ETL操作。具体操作包括字段映射、数据类型转换等。
例如,源系统中的“单据编号”字段需要映射到目标系统中的FBillNo
字段:
{
"field": "FBillNo",
"label": "单据编号",
"type": "string",
"describe": "单据编号",
"value": "{formCode}"
}
数据转换与写入
-
字段映射与转换:
- 将源系统的字段映射到目标系统对应的字段,并进行必要的数据转换。例如,将
paymentBaseAmount-amountStr
映射到FPAYAMOUNTFOR_H
,并确保其格式符合目标系统要求。
{ "field": "FPAYAMOUNTFOR_H", "label": "应付金额", "type": "string", "value": "{{paymentBaseAmount-amountStr}}" }
- 将源系统的字段映射到目标系统对应的字段,并进行必要的数据转换。例如,将
-
复杂对象处理:
- 对于复杂对象,如数组或嵌套对象,需要进行更为复杂的映射和转换。例如,付款申请单明细中的费用项目需要逐一映射并处理。
{ ... { “label”: “付款申请单明细”, “field”: “FPAYAPPLYENTRY”, “type”: “array”, “value”: “items”, “children”: [ { “parent”: “FPAYBILLSRCENTRY”, “label”: “费用项目”, “field”: “FCOSTID”, “type”: “string”, “value”: “{{expenseList_viceExpenseTypeBizCode}}”, ... }, ... ] } ... }
-
日期格式转换:
- 日期格式通常需要从源系统格式转换为目标系统接受的格式。例如,将
customObject-CF405-startTime
字段值转换为日期时间格式:
{ ... { “field”: “FDATE”, “label”: “申请日期”, “type”: “string”, “value”: “{{customObject-CF405-startTime|datetime}}” } ... }
- 日期格式通常需要从源系统格式转换为目标系统接受的格式。例如,将
-
提交与审核:
- 配置自动提交和审核选项,以确保数据在写入后立即生效:
{ ... { ”field“: ”IsAutoSubmitAndAudit“, ”label“: ”提交并审核“, ”type“: ”bool“, ”value“: ”true“ } ... }
API调用
配置完成后,通过调用金蝶云星空的API接口,将处理后的数据批量保存至目标平台。以下是API调用的示例代码:
import requests
url = 'https://api.kingdee.com/batchSave'
headers = {'Content-Type': 'application/json'}
data = { ... } # 根据元数据配置生成的数据
response = requests.post(url, headers=headers, json=data)
if response.status_code == 200:
print("Data successfully written to Kingdee Cloud.")
else:
print(f"Failed to write data: {response.text}")
通过上述步骤,我们可以实现从每刻报销单【供应商货款付款申请单】到金蝶【付款申请单】服务费的数据无缝集成。轻易云数据集成平台提供了强大的元数据配置能力,使得整个ETL过程高效且透明。