FD003-非生产性付款申请 泛微=>金蝶付款单-422
在业务系统的数据集成项目中,泛微OA与金蝶云星空两个平台的对接无疑是一个关键步骤。本案例将聚焦于FD003方案,即通过轻易云数据集成平台,将泛微OA-Http数据高效可靠地同步到金蝶云星空,实现非生产性付款申请的自动化处理。
为了确保这一过程顺利进行,首先需要解决如何从泛微OA获取准确的付款申请数据。我们使用了接口/api/workflow/paService/getWorkflowRequest
,通过定时任务抓取所需信息,并利用批量请求机制应对大量数据。此外,为了避免漏单和分页限流问题,我们实现了一套精准的数据过滤和分段抽取策略,并设置告警机制,一旦出现异常即可快速响应和处理。
其次,在将这些请求成功写入金蝶云星空时,我们依据其提供的API接口batchSave
操作。在此过程中,自定义的数据转换逻辑尤为重要,以适应不同平台间的数据结构差异。例如,对账目代码、金额格式及时间戳等字段的转换工作都必须保证完全契合目标系统需求,从而确保每一笔记录在财务上能够被精确识别和记账。此外,为提升效率,通过自定义批量写入策略,使得大量数据能够迅速且安全地传输至目标数据库。
同时,整个流程还配置了完善的监控以及错误重试机制,对接过程中任何环节出现问题,将及时捕捉并触发对应恢复操作,有效保障了系统集成任务持续稳定运行。总结上述技术要点,可以看出,本案例不仅展现出了复杂业务场景下高效精细化的数据管理能力,更为企业后续类似需求提供了一条清晰可行之路。
以上是本次FD003方案实施中的主要技术细节概述。下一步,我们将深入探讨具体的实施步骤与各节点配置方法,以及详细分析可能遇到的问题及其解决方案。
调用泛微OA-Http接口/api/workflow/paService/getWorkflowRequest获取并加工数据
在数据集成生命周期的第一步,我们需要从源系统泛微OA调用Http接口/api/workflow/paService/getWorkflowRequest
来获取数据,并进行初步的加工处理。以下将详细探讨这一过程中的技术细节和实现方法。
接口配置与调用
首先,配置API接口的元数据。根据提供的metadata,我们需要设置以下参数:
- API路径:
/api/workflow/paService/getWorkflowRequest
- 请求方式: GET
- 请求参数:
workflowId
: 固定值为422
workflowIdList
: 固定值为2356388e-8c49-35b3-bb7e-1eca1a8617d5
这些参数将用于构建HTTP请求,确保我们能够正确地从泛微OA系统中获取所需的数据。
{
"api": "/api/workflow/paService/getWorkflowRequest",
"effect": "QUERY",
"method": "GET",
"number": "requestId",
"id": "requestId",
"name": "id",
"idCheck": true,
"request": [
{
"field": "workflowId",
"label": "e9流程id",
"type": "string",
"value": "422"
},
{
"field": "workflowIdList",
"label": "workflowIdList中间方案ID",
"type": "string",
"value": "2356388e-8c49-35b3-bb7e-1eca1a8617d5"
}
],
"autoFillResponse": true,
"condition_bk": [
[
{
"field": "workflowMainTableInfo.fklx",
"logic": "eqv2",
"value": "预付款"
}
]
],
"condition": [
[
{
"field": "workflowMainTableInfo.fklx",
"logic": "eqv2",
"value": "预付款"
},
{
{
field: 'workflowMainTableInfo.fklx',
logic: 'eqv2',
value: 'Prepayment'
}
}
]
]
}
数据请求与清洗
在成功调用API并获取数据后,下一步是对数据进行清洗和初步处理。根据metadata中的条件配置,我们需要对返回的数据进行筛选,确保只保留符合特定条件的数据。
例如,我们可以使用以下条件来过滤数据:
workflowMainTableInfo.fklx
等于预付款
- 或者
workflowMainTableInfo.fklx
等于Prepayment
这一步骤可以通过编写相应的过滤逻辑来实现:
def filter_data(data):
filtered_data = []
for item in data:
if item['workflowMainTableInfo']['fklx'] in ['预付款', 'Prepayment']:
filtered_data.append(item)
return filtered_data
数据转换与写入
在完成数据清洗后,接下来是将数据转换为目标系统所需的格式,并写入到目标系统中。在这个案例中,我们假设目标系统是金蝶付款单。
首先,需要定义目标系统的数据格式,然后编写相应的转换逻辑。例如:
def transform_data(data):
transformed_data = []
for item in data:
transformed_item = {
'payment_id': item['requestId'],
'amount': item['workflowMainTableInfo']['amount'],
'currency': item['workflowMainTableInfo']['currency'],
# 添加其他必要字段的转换
}
transformed_data.append(transformed_item)
return transformed_data
最后,将转换后的数据通过API或其他方式写入到金蝶付款单系统中。这一步骤可能涉及到调用金蝶系统的API,并处理响应结果以确保数据成功写入。
def write_to_kingdee(data):
for item in data:
response = requests.post('https://kingdee.example.com/api/payment', json=item)
if response.status_code != 200:
print(f"Failed to write data for payment_id {item['payment_id']}")
通过以上步骤,我们完成了从泛微OA系统获取数据、进行清洗和转换,并最终写入到金蝶付款单系统的全过程。这一过程充分利用了轻易云数据集成平台提供的全生命周期管理功能,实现了不同系统间的数据无缝对接。
使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口
在数据集成的生命周期中,将源平台的数据转换为目标平台所需的格式是关键步骤之一。本文将重点探讨如何使用轻易云数据集成平台将泛微系统中的非生产性付款申请数据转换为金蝶云星空API接口所能接收的格式,并最终写入金蝶云星空。
元数据配置解析
在进行ETL转换之前,我们需要详细理解元数据配置。以下是关键字段的解析:
- FBillNo(单据编号):这是一个字符串类型字段,用于标识付款单的唯一编号。
- FBillTypeID(单据类型):字符串类型,表示付款单的类型,例如采购业务付款单、工资发放付款单等。这里默认值为
FKDLX02_SYS
,即其他业务付款单。 - FCURRENCYID(币别):通过
workflowMainTableInfo.bberp
获取币别编码,并进行转换。 - FDATE(业务日期):直接从
workflowMainTableInfo.sqrq
获取业务日期。 - FSETTLEORGID(结算组织)和FPAYORGID(付款组织):均通过
workflowMainTableInfo.sqgs
获取,并进行组织编码转换。 - FCONTACTUNITTYPE(往来单位类型)和FCONTACTUNIT(往来单位):根据不同的单位类型如供应商、客户等,通过相应字段获取并进行编码转换。
- FRECTUNITTYPE(收款单位类型)和FRECTUNIT(收款单位):同样根据单位类型进行相应处理。
- FBUSINESSTYPE(业务类型):默认值为其他业务,即
3
。 - FREMARK(备注):从
workflowMainTableInfo.nrsm
获取备注信息。
数据转换与写入
为了实现数据从泛微系统到金蝶云星空的无缝对接,需要进行以下步骤:
-
数据请求与清洗
- 从泛微系统中提取非生产性付款申请的数据,确保数据完整且符合要求。
-
数据转换
- 使用元数据配置中的解析器和函数对提取的数据进行处理。例如,使用
ConvertObjectParser
将组织名称转换为对应的编码。 - 处理复杂字段,如通过条件判断设置不同值。例如,往来单位类型根据不同条件设置为供应商、客户等。
- 使用元数据配置中的解析器和函数对提取的数据进行处理。例如,使用
-
构建请求体
- 根据元数据配置构建符合金蝶云星空API接口要求的JSON请求体。以下是一个示例:
{ "FormId": "AP_PAYBILL", "Operation": "BatchSave", "IsAutoSubmitAndAudit": false, "IsVerifyBaseDataField": true, "Model": { "FBillNo": "20231001", "FBillTypeID": {"FNumber": "FKDLX02_SYS"}, "FCURRENCYID": {"FNumber": "USD"}, "FDATE": "2023-10-01", "FSETTLEORGID": {"FNumber": "ORG001"}, ... "FPAYBILLENTRY": [ { "FSETTLETYPEID": {"FNumber": "JSFS04_SYS"}, ... } ] } }
- 根据元数据配置构建符合金蝶云星空API接口要求的JSON请求体。以下是一个示例:
-
调用API接口
-
使用POST方法调用金蝶云星空的批量保存接口,将构建好的JSON请求体发送至目标平台:
POST /k3cloud/api/batchSave HTTP/1.1 Host: api.kingdee.com Content-Type: application/json Authorization: Bearer <token> { // JSON请求体 }
-
实际案例分析
假设我们有一条来自泛微系统的数据,包含以下字段:
- 单据编号:20231001
- 单据类型:其他业务付款单
- 币别:USD
- 业务日期:2023-10-01
- 结算组织和付款组织:ORG001
- 往来单位类型和往来单位:供应商 SUP001
根据上述元数据配置,我们可以将这些字段逐一映射并构建最终的JSON请求体。通过调用金蝶云星空API接口,实现数据的无缝对接与写入。
结论
通过轻易云数据集成平台,我们能够高效地完成从泛微系统到金蝶云星空的数据ETL转换和写入。这不仅提升了系统间的数据一致性,还极大地简化了跨平台的数据处理流程。