案例分享:金蝶云星空费用应付单数据集成方案
在企业财务管理中,费用应付单是一个常见且关键的业务流程,而将其高效集成到ERP系统如金蝶云星空,更能显著提升财务处理的准确性与时效性。本篇技术案例将详细探讨如何利用轻易云数据集成平台,将原始数据从金蝶云星空获取并通过batchSave API接口写入至另一实例,实现全程自动化和无缝对接。
此次实施的具体方案“费用应付单-费用应付单 OK”主要包括以下几个关键步骤:
-
调用executeBillQuery API获取源数据: 首先,通过定时任务可靠地抓取原始账户中的费用应付单数据。executeBillQuery API支持分页查询,可以有效解决大量数据流动过程中可能产生的性能瓶颈问题。为确保不漏单,每次查询后需要记录上一次请求的时间戳,以便下次能够递增拉取新增或更新的数据。
-
自定义转换逻辑适配目标系统: 由于两个实例间可能存在的数据格式差异,需要通过自定义转换逻辑,对获取到的数据进行清洗、标准化处理。这一步骤尤其重要,因为它确保了输入到目标系统的数据格式统一且符合预期。
-
高吞吐量批量写入: 在完成上述步骤后,使用batchSave API实现批量写入操作。为了提高效率,我们采用了分段提交策略,即将大体量的数据拆分为若干小块进行并行处理,从而实现高吞吐量的数据快速导入。此外,通过API实时监控和告警机制,我们可以及时捕捉并处理任何潜在的问题,如错误重试机制则进一步保证了任务执行过程中的稳健性。
-
实时监控和异常检测: 集成过程中不可避免会出现各种意外情况,因此我们配置了一套完善的集中式监控与日志记录系统,它不仅能跟踪每个API调用的状态,还具备强大的异常检测能力。例如,当某一条记录在多次尝试后仍然失败,系统会自动发出告警通知,并按预设规则进行人工审核或重新投放。
以上四步以尽可能少的人力干预,实现了费用应付单从一个金蝶云星空实例平滑迁移至另一个实例,不仅提升了工作效率,同时也 greatly reduced data discrepancies and manual errors.
关于此项目更详细的信息以及完整实施过程将在随后章节展开,包括所有涉及到的方法调用、参数设置及调优策略等内容。
调用源系统金蝶云星空接口executeBillQuery获取并加工数据
在轻易云数据集成平台的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过调用金蝶云星空的executeBillQuery
接口来获取费用应付单的数据,并进行必要的加工处理。
接口调用配置
首先,我们需要配置调用金蝶云星空接口的元数据。以下是一个典型的元数据配置示例:
{
"api": "executeBillQuery",
"method": "POST",
"number": "FBillNo",
"id": "FEntityDetail_FEntryID",
"pagination": {
"pageSize": 500
},
"idCheck": true,
"request": [
{"field":"FID","label":"实体主键","type":"String","describe":"实体主键","value":"FID"},
{"field":"FEntityDetail_FEntryID","label":"实体主键","type":"String","describe":"实体主键","value":"FEntityDetail_FEntryID"},
{"field":"FBillNo","label":"单据编号","type":"String","describe":"单据编号","value":"FBillNo"},
{"field":"FDOCUMENTSTATUS","label":"单据状态","type":"String","describe":"单据状态","value":"FDOCUMENTSTATUS"},
{"field":"FRelateHadPayAmount","label":"表头基本 - 付(退)款单的关联金额","type":"String","describe":"表头基本 - 付(退)款单的关联金额","value":"FRelateHadPayAmount"},
{"field":"FDATE","label":"业务日期","type":"String","describe":"业务日期","value":"FDATE"},
{"field":"FSETTLEORGID.fnumber","label":"结算组织编号","type":"String","describe":"结算组织编号","value":"FSETTLEORGID.fnumber"},
{"field":"FCURRENCYID.fnumber","label":"币别编号","type":"String","describe":"币别编号","value":"FCURRENCYID.fnumber"}
],
"otherRequest": [
{"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}"},
{"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}"},
{"field": "FilterString", "label": "过滤条件", "type": "string",
"describe":
"示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=",
"value":
"FApproveDate>='{{LAST_SYNC_TIME|date}}' and FBillTypeID.FNumber = 'YFD02_SYS'"
},
{"field":
"FieldKeys",
"label":
"需查询的字段key集合",
"type":
"array",
"describe":
"金蝶分录主键ID格式:FPOOrderEntry_FEntryId,其它格式 FPurchaseOrgId.FNumber",
"parser":
{"name":
"ArrayToString",
"params":
","
}
},
{"field":
"FormId",
"label":
"业务对象表单Id",
"type":
"string",
"describe":
"必须填写金蝶的表单ID如:PUR_PurchaseOrder",
"value":
"AP_Payable"
}
]
}
数据请求与清洗
在配置好元数据后,我们需要通过轻易云平台发送HTTP POST请求到金蝶云星空接口executeBillQuery
,以获取费用应付单的数据。请求体中包含了我们需要查询的字段和过滤条件。
例如,我们可以通过以下代码片段来发送请求:
import requests
url = 'https://api.kingdee.com/executeBillQuery'
headers = {'Content-Type': 'application/json'}
payload = {
'FormId': 'AP_Payable',
'FieldKeys': 'FID,FEntityDetail_FEntryID,FBillNo,FDOCUMENTSTATUS,FRelateHadPayAmount,FDATE,FSETTLEORGID.fnumber,FCURRENCYID.fnumber',
'FilterString': f'FApproveDate>="{last_sync_time}" and FBillTypeID.FNumber = \'YFD02_SYS\'',
'Limit': pagination_page_size,
'StartRow': pagination_start_row
}
response = requests.post(url, headers=headers, json=payload)
data = response.json()
在获取到数据后,需要对其进行清洗和转换,以便后续处理。例如,将日期字段转换为标准格式,或者将金额字段转换为浮点数。
数据转换与写入
清洗后的数据需要进行进一步转换,以符合目标系统的数据结构和要求。以下是一个简单的数据转换示例:
def transform_data(data):
transformed_data = []
for record in data:
transformed_record = {
'bill_no': record['FBillNo'],
'document_status': record['FDOCUMENTSTATUS'],
'relate_had_pay_amount': float(record['FRelateHadPayAmount']),
'date': record['FDATE'],
'settle_org_id': record['FSETTLEORGID.fnumber'],
'currency_id': record['FCURRENCYID.fnumber']
}
transformed_data.append(transformed_record)
return transformed_data
transformed_data = transform_data(data)
最后,将转换后的数据写入目标系统。这一步通常涉及到调用目标系统的API接口或数据库操作。
def write_to_target_system(transformed_data):
target_url = 'https://target-system-api.com/data'
for record in transformed_data:
response = requests.post(target_url, json=record)
if response.status_code != 200:
print(f'Failed to write record: {record["bill_no"]}')
write_to_target_system(transformed_data)
通过上述步骤,我们实现了从金蝶云星空获取费用应付单数据,并将其清洗、转换后写入目标系统。这一过程不仅提高了数据处理效率,还确保了数据的一致性和准确性。
使用轻易云数据集成平台将费用应付单数据转换并写入金蝶云星空API接口
在数据集成的生命周期中,将源平台的数据进行ETL转换,并最终写入目标平台是至关重要的一步。本文将详细探讨如何使用轻易云数据集成平台,将费用应付单数据转换为金蝶云星空API接口所能接收的格式,并成功写入目标平台。
配置元数据
首先,我们需要配置元数据,以确保能够正确地将源数据映射到目标系统的字段。以下是元数据配置示例:
{
"api": "batchSave",
"method": "POST",
"idCheck": true,
"operation": {
"method": "merge",
"field": "FBillTypeID,FBillNo,FDATE,FPAYORGID,FSETTLEORGID,FSUPPLIERID,FSetAccountType,FCURRENCYID",
"bodyName": "details",
"bodySum": [],
"header": ["FBillTypeID", "FBillNo", "FDATE", "FPAYORGID", "FSETTLEORGID", "FSUPPLIERID", "FSetAccountType", "FCURRENCYID"],
"body": ["FCOSTID", "FEntryTaxRate", "FNoTaxAmountFor_D", "FPriceBaseDen", "FStockBaseNum", "FEntryTaxRate"]
},
...
}
请求参数解析与映射
在请求参数部分,我们需要确保每个字段都能正确解析和映射到金蝶云星空的API接口字段。例如,FBillTypeID
、FSUPPLIERID
等字段需要通过特定的解析器(如ConvertObjectParser
)进行转换:
{
...
{
"label": "单据类型",
"field": "FBillTypeID",
"type": "string",
"value": "YFD02_SYS",
...
},
{
...
{
"label": "供应商",
...
{
...
{"name":"ConvertObjectParser","params":"FName"}
}
...
}
},
...
}
数据清洗与转换
在这个阶段,我们需要对源数据进行清洗和转换,以确保其符合目标系统的要求。具体来说,需要对每个字段进行必要的格式转换。例如,日期格式、货币单位等需要根据金蝶云星空的要求进行调整。
构建请求体
接下来,根据配置好的元数据,构建请求体。以下是一个示例请求体:
{
...
{
...
{
...
{"field":"FormId","value":"AP_Payable"},
{"field":"Operation","value":"BatchSave"},
{"field":"IsVerifyBaseDataField","value":"false"},
{"field":"IsAutoSubmitAndAudit","value":"true"}
...
}
}
}
调用API接口
最后,通过HTTP POST方法调用金蝶云星空的batchSave
API接口,将构建好的请求体发送至目标系统:
{
...
{
...
{"method":"POST"},
{"url":"https://api.kingdee.com/k3cloud/api/batchSave"},
{"headers":{"Content-Type":"application/json"}},
{"body":{"..."}}
}
}
实时监控与日志记录
在整个过程中,实时监控和日志记录是确保数据准确性和及时发现问题的重要手段。轻易云平台提供了全透明可视化的操作界面,可以实时监控数据流动和处理状态,极大提升业务透明度和效率。
通过上述步骤,我们成功地将费用应付单的数据从源平台转换并写入到金蝶云星空API接口,实现了不同系统间的数据无缝对接。这不仅提高了业务效率,还确保了数据的一致性和准确性。