案例分享:金蝶云星空数据集成到金蝶云星空的资金调拨提交-审核方案
在企业的日常运营中,资金调拨作为一项关键业务活动,其数据处理和审核需求极为严格。本文将详细探讨如何通过API集成实现金蝶云星空系统内的数据对接,以完成资金调拨提交与审核流程。
技术背景及挑战
为了确保资金调拨的数据不漏单且快速高效地写入到目标系统,我们需要解决以下技术难题:
- 处理大量数据的批量写入。
- 实现定时可靠地抓取金蝶云星空接口数据。
- 处理分页和限流问题以提升API调用效率。
- 自定义数据转换逻辑以适应不同的数据结构。
数据获取与写入 API 使用概述
我们通过调用 executeBillQuery
接口从源金蝶云星空系统获取待处理的数据,并使用 Audit
接口将已审批的资金记录同步至目标系统,在此过程中确保所有步骤均有日志记录并可实时监控:
-
高吞吐量数据写入: 支持大规模、高频率的数据操作,使得大量财务数据能够快速、无缝地传输到新的财务管理平台。
-
集中监控和告警体系: 实时跟踪整个集成过程中的任务状态,并提供异常情况告警,有助于及时发现并纠正潜在问题。
-
自定义转换逻辑: 针对不同业务需求,我们可以灵活编排个性化转化规则,从而确保源端与目标端之间无缝衔接,避免格式差异导致的数据错误。
架构设计原则
为保障整个项目实施顺利进行,我们遵循了以下几个架构设计原则:
-
可靠性: 启用完整的错误检测与重试机制,当某一步操作失败时,自动触发补救措施,从而保证整体业务流程不中断。
-
扩展性: 利用轻易云平台强大的配置能力,为未来可能新增的模块或功能留下足够空间,无需大幅变更当前架构即可实现平滑升级。
-
可视化管理工具: 提供直观易懂的数据流设计界面,使开发人员能够全方位掌控每一个环节,大幅减少沟通成本,提高协作效率。
以上是该案例实施过程中面对的一些核心挑战及其对应策略。在接下来的部分中,将进一步深入探讨具体技术细节、实现方式以及可能遇见的问题和解决方案。
调用金蝶云星空接口executeBillQuery获取并加工数据
在轻易云数据集成平台中,调用源系统的API接口是数据集成生命周期的第一步。本文将深入探讨如何通过调用金蝶云星空的executeBillQuery
接口来获取并加工数据。
接口配置与调用
首先,我们需要了解如何配置和调用金蝶云星空的executeBillQuery
接口。以下是元数据配置的详细信息:
{
"api": "executeBillQuery",
"method": "POST",
"number": "FBillNo",
"id": "FBillNo",
"pagination": {
"pageSize": 100
},
"idCheck": true,
"request": [
{
"field": "FBillTypeID_FNumber",
"label": "单据类型",
"type": "string",
"describe": "单据类型",
"value": "FBillTypeID.FNumber"
},
{
"field": "FID",
"label": "FID",
"type": "string",
"describe": "单据类型",
"value": "FID"
},
{
"field": "FBillNo",
"label": "单据编号",
"type": "string",
"describe": "单据编号",
"value": "FBillNo"
},
{
"field": "FDate",
"label": "日期",
"type": "string",
"describe": "日期",
"value": "FDate"
}
],
...
}
请求参数解析
在请求参数部分,我们定义了几个关键字段:
FBillTypeID_FNumber
: 单据类型编号。FID
: 单据ID。FBillNo
: 单据编号。FDate
: 日期。
这些字段将用于构建查询条件,以便从金蝶云星空中获取所需的数据。
分页参数设置
为了处理大量数据,分页参数是必不可少的。我们使用以下配置来控制分页:
{
...
{"field":"Limit","label":"最大行数","type":"string","describe":"金蝶的查询分页参数","value":"{PAGINATION_PAGE_SIZE}"},
{"field":"StartRow","label":"开始行索引","type":"string","describe":"金蝶的查询分页参数","value":"{PAGINATION_START_ROW}"},
...
}
其中,Limit
和StartRow
分别表示每页的数据量和起始行索引。这些参数确保我们能够高效地处理大规模数据集。
数据过滤与字段选择
为了提高查询效率,我们可以使用过滤条件和字段选择:
{
...
{"field":"FilterString","label":"过滤条件","type":"string","describe":"示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=","value":"FDOCUMENTSTATUS<>'C'"},
{"field":"FieldKeys","label":"需查询的字段key集合","type":"array","describe":"金蝶分录主键ID格式:FPOOrderEntry_FEntryId,其它格式 FPurchaseOrgId.FNumber","parser":{"name":"ArrayToString","params":","}},
...
}
FilterString
: 用于指定复杂的过滤条件,例如状态不等于'C'。FieldKeys
: 指定需要返回的字段集合,通过逗号分隔多个字段。
实际调用示例
以下是一个实际调用该接口的示例代码片段:
import requests
url = 'https://api.kingdee.com/executeBillQuery'
headers = {'Content-Type': 'application/json'}
payload = {
'FormId': 'SC_FundsTransf',
'FieldKeys': 'FBillNo,FDate,FBillTypeID.FNumber,FID',
'FilterString': 'FDOCUMENTSTATUS<>\'C\'',
'Limit': 100,
'StartRow': 0
}
response = requests.post(url, headers=headers, json=payload)
data = response.json()
# 数据处理逻辑
for record in data['Result']:
process_record(record)
在这个示例中,我们构建了一个POST请求,包含表单ID、字段集合、过滤条件以及分页参数。然后,我们解析响应数据并进行进一步处理。
数据清洗与转换
获取到原始数据后,下一步是进行数据清洗与转换。这一步骤包括:
- 去除无效记录: 根据业务需求过滤掉不符合条件的数据。
- 字段映射: 将源系统中的字段映射到目标系统中的相应字段。
- 格式转换: 将日期、金额等字段转换为目标系统所需的格式。
例如,对于日期字段,可以使用Python的datetime
模块进行格式转换:
from datetime import datetime
def convert_date(date_str):
return datetime.strptime(date_str, '%Y-%m-%d').strftime('%d/%m/%Y')
for record in data['Result']:
record['FDate'] = convert_date(record['FDate'])
通过上述步骤,我们可以确保从金蝶云星空获取的数据符合目标系统的要求,并为后续的数据写入做好准备。
总结以上内容,通过轻易云数据集成平台调用金蝶云星空接口并进行数据清洗与转换,是实现不同系统间无缝对接的重要环节。本文详细介绍了如何配置和调用API接口,以及如何处理获取到的数据,为实际项目提供了有价值的参考。
资金调拨提交-审核:ETL转换与写入金蝶云星空API接口
在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,并最终写入目标平台——金蝶云星空。本文将详细探讨如何通过轻易云数据集成平台,将数据转换为金蝶云星空API接口所能接收的格式,并成功提交和审核资金调拨。
API接口配置
在本案例中,我们使用的是金蝶云星空的Audit
API接口。该接口采用POST方法,主要用于审核业务对象表单。以下是具体的元数据配置:
{
"api": "Audit",
"method": "POST",
"idCheck": true,
"request": [
{"field": "FormId", "label": "业务对象表单Id", "type": "string", "describe": "必须填写金蝶的表单ID如:PUR_PurchaseOrder", "value": "SC_FundsTransf"},
{"field": "Numbers", "label": "编码集合", "type": "string", "value": "{FBillNo}"},
{"field": "Ids", "label": "id集合", "type": "string"},
{"field": "InterationFlags", "label": "交互标志集合", "type": "string", "describe":"字符串类型,分号分隔,格式:\"flag1;flag2;...\"(非必录) 例如(允许负库存标识:STK_InvCheckResult)","value":"STK_InvCheckResult"},
{"field": "IgnoreInterationFlag", "label":"是否允许忽略交互","type":"string","describe":"布尔类型,默认true(非必录)","value":"true"},
{"field":"NetworkCtrl","label":"是否启用网控","type":"string","describe":"布尔类型,默认false(非必录)","value":"false"},
{"field":"IsVerifyProcInst","label":"检验单据关联运行","type":"string","describe":"是否检验单据关联运行中的工作流实例,布尔类型,默认false(非必录)","value":"false"}
]
}
数据转换过程
-
提取数据: 从源平台提取资金调拨相关的数据,这些数据通常包括资金调拨单号、金额、日期等信息。在轻易云平台上,这一步骤已经通过前期的数据请求与清洗完成。
-
转换数据: 将提取的数据转换为金蝶云星空API所需的格式。根据元数据配置,我们需要确保以下字段正确映射:
FormId
: 固定值为SC_FundsTransf
,表示资金调拨表单。Numbers
: 映射到源数据中的资金调拨单号字段,例如FBillNo
。Ids
: 可选字段,如果有ID集合,可以填充。InterationFlags
: 固定值为STK_InvCheckResult
,表示允许负库存标识。IgnoreInterationFlag
: 固定值为true
,表示允许忽略交互。NetworkCtrl
: 固定值为false
,表示不启用网控。IsVerifyProcInst
: 固定值为false
,表示不检验单据关联运行中的工作流实例。
-
加载数据: 将转换后的数据通过POST方法发送到金蝶云星空的API接口。以下是一个示例请求体:
{
"FormId": "SC_FundsTransf",
"Numbers": ["FT20230901"],
// 如果有ID集合,可以填充
// 如果没有,则可以省略
// 如:
// Ids: ["12345"],
// InterationFlags: ["STK_InvCheckResult"],
// IgnoreInterationFlag: true,
// NetworkCtrl: false,
// IsVerifyProcInst: false
}
实施细节
-
验证与测试: 在实际实施过程中,需要对每个字段进行严格验证,以确保所有必要的数据都已正确映射和填充。同时,通过轻易云平台的实时监控功能,可以随时查看数据流动和处理状态,以便及时发现和解决问题。
-
错误处理: 在发送请求时,如果遇到错误响应,需要根据返回的错误信息进行排查。例如,如果返回的是字段缺失或格式错误的信息,需要检查对应的字段是否正确映射和填充。
-
优化与调整: 根据实际需求,可以对元数据配置进行优化和调整。例如,如果某些字段在特定场景下是可选的,可以动态调整这些字段的值或省略它们。
通过上述步骤,我们可以高效地将资金调拨相关的数据从源平台转换并写入到金蝶云星空,实现无缝的数据集成。这不仅提高了业务流程的自动化程度,也增强了系统间的数据一致性和准确性。