供应商货款付款申请单下推操作【服务费】①——每刻数据集成到金蝶云星空的技术实现
在本案例中,我们探讨了如何通过轻易云数据集成平台,将每刻系统中的供应商货款付款申请单高效地集成到金蝶云星空中。本项目涉及复杂的数据对接和转换逻辑,重点操作是将每刻系统接口/api/openapi/paymenttransaction/paid/list
获取的数据,通过解析与处理后,成功写入到金蝶云星空的API Push
。
数据抓取与初始化配置
首先,为确保能够定时、可靠地从每刻系统接口抓取所需数据,我们利用了轻易云提供的批量数据捕获能力。轻易云强大的定时调度功能使得我们的任务可以在预设时间间隔内自动运行,保证不会遗漏任何需要处理的数据。具体步骤包括:
- 定义数据源:配置请求参数并注册获取每刻付款申请单列表的API
/api/openapi/paymenttransaction/paid/list
。 - 分页与限流管理:面对大量返回记录,我们采用分页策略,并结合限流控制措施,以避免因瞬时高负载带来的请求失败。
数据转换与映射
为了适应目标系统金蝶云星空的数据格式要求,需要进行精准而灵活的数据转换。我们借助了自定义转化规则来处理不同字段之间的映射关系,包括但不限于:
- 字段重命名:把来源字段名调整为目标字段名以匹配金蝶云星空API规范。
- 数据类型转换:例如,将日期字符串转换为标准时间戳格式。
- 计算属性值:某些业务属性可能需要基于已有信息动态生成或计算,对此进行了相应脚本编写以实现自动化。
实时监控及异常处理机制
对于整个流程中的各个环节,从初始拉取数据,到最终推送至金蝶云星空,每一步都部署了全面的监控及告警机制。一旦出现网络故障、响应超时或者其他异常情况,系统会立即报警,并执行相应错误重试策略。这不仅保障了任务按计划顺利进行,同时提高容灾能力,使得整体解决方案更加健壮。
通过这些切实可行的方法和先进技术手段,我们成功搭建了一套自动化、高效能且稳定性极佳的数据对接方案,实现了各类付款申请单及时准确地下推操作,大大推动企业财务管理的信息化进程。在后续章节中,将详细阐述该解决方案具体实施细节以及相关代码示例。
调用每刻接口获取并加工数据的技术案例
在轻易云数据集成平台中,调用源系统接口是数据处理生命周期的第一步。本文将详细探讨如何通过调用每刻接口/api/openapi/paymenttransaction/paid/list
来获取并加工数据。
接口配置与调用
首先,我们需要配置接口的元数据。以下是该接口的元数据配置:
{
"api": "/api/openapi/paymenttransaction/paid/list",
"method": "POST",
"number": "payeeTargetBusinessCode",
"id": "paymentBizCode",
"idCheck": true,
"omissionRemedy": {
"crontab": "11 1 * * *",
"takeOverRequest": [
{
"field": "startPaidTime",
"label": "修改时间开始段",
"type": "string",
"is_required": true,
"describe": null,
"value": "_function ({LAST_SYNC_TIME}-3600*336) * 1000"
}
]
},
"condition": [
[
{"field":"formSubTypeName","logic":"eq","value":"供应商货款付款申请单"},
{"field":"sourceno","logic":"notlike","value":"FKSQ"},
{"field":"payerAccountType","logic":"neq","value":"通过其他方式付款"},
{"field":"payerAccountType","logic":"neq","value":"从公司现金付款"},
{"field":"payerAccountNumber","logic":"neq","value":"3602005009200684740"},
{"field":"payerAccountNumber","logic":"neq","value":"111"}
]
],
"request": [
{"label":"支付完成时间-开始范围,毫秒的时间戳,非必填","field":"startPaidTime","type":"string","value":"_function ({LAST_SYNC_TIME}-600) * 1000"},
{"label":"支付完成时间-结束范围,毫秒的时间戳,非必填","field":"endPaidTime","type":"string","value":"{CURRENT_TIME}000"},
{"label":"分页条数","field":"pageSize","type":"string","value":"50"},
{"label":"当前页首条数据在所有数据中的偏移量","field":"pageNum","type":"string","value":"1"},
{"label":"付款单ID,非必填,对应form_pay_order中的payment_order_id","field":"paymentNo","type":"string"}
]
}
数据请求与清洗
在调用该接口时,我们需要注意以下几个关键点:
- 请求方法:该接口使用
POST
方法进行请求。 - 分页机制:通过
pageSize
和pageNum
字段控制分页,每次请求50条数据。 - 时间范围:使用
startPaidTime
和endPaidTime
字段指定支付完成时间的范围。这里采用了动态计算的方式,其中startPaidTime
为上次同步时间减去600秒,而endPaidTime
为当前时间。 - 条件过滤:通过多个条件字段对返回的数据进行过滤,如表单类型、付款账号类型等。
例如,我们可以构建如下请求体:
{
"startPaidTime": (LAST_SYNC_TIME - 600) * 1000,
"endPaidTime": CURRENT_TIME * 1000,
"pageSize": 50,
"pageNum": 1
}
数据转换与写入
在获取到原始数据后,需要对其进行清洗和转换,以满足目标系统的数据格式要求。以下是一个简单的数据转换示例:
假设我们从每刻接口获取到如下数据:
[
{
"paymentBizCode": "PB123456",
"payeeTargetBusinessCode": "PT789012",
...
},
...
]
我们需要将这些数据转换为目标系统所需的格式,例如:
[
{
"业务编码": "PB123456",
"目标业务编码": "PT789012",
...
},
...
]
在轻易云平台中,可以通过自定义脚本或内置函数实现这一转换过程。
异常处理与补偿机制
为了确保数据同步的完整性和一致性,轻易云平台提供了异常处理和补偿机制。在本案例中,通过配置omissionRemedy
字段实现补偿机制:
{
"crontab": "11 1 * * *",
...
}
该配置表示每天凌晨1:11执行一次补偿任务,确保遗漏的数据能够被及时补充。
综上所述,通过合理配置和调用每刻接口,并结合轻易云平台提供的数据清洗、转换及异常处理机制,可以高效地实现不同系统间的数据集成。
轻易云数据集成平台:ETL转换与金蝶云星空API接口集成技术案例
在轻易云数据集成平台的生命周期中,第二步是将已经集成的源平台数据进行ETL转换,转为目标平台金蝶云星空API接口所能够接收的格式,并最终写入目标平台。本文将详细探讨如何利用元数据配置来实现这一过程。
API接口与元数据配置解析
在此次案例中,我们需要将供应商货款付款申请单下推操作的数据写入金蝶云星空。以下是我们使用的元数据配置:
{
"api": "Push",
"method": "POST",
"idCheck": true,
"request": [
{"field": "Ids", "label": "id集合", "type": "string"},
{"field": "FormId", "label": "业务对象表单Id", "type": "string", "describe": "必须填写金蝶的表单ID如:PUR_PurchaseOrder", "value":"CN_PAYAPPLY"},
{"field": "Numbers", "label": "编码集合", "type": "string", "value":"{payeeTargetBusinessCode}"},
{"field": "RuleId", "label": "单据转换规则内码", "type": "string", "describe":"字符串类型,分号分隔,格式:\"flag1;flag2;...\"(非必录) 例如(允许负库存标识:STK_InvCheckResult)","value":"994f9913-a23f-46fb-b5d9-f1f271b4ef6c"},
{"label":"目标组织内码","field":"TargetOrgId","type":"string","value":"_findCollection find FUseOrgId from c2b5e68c-1b80-398b-bec8-59612f54e804 where FNumber={payerAccountNumber}"},
{"label":"TargetFormId","field":"TargetFormId","type":"string","value":"AP_PAYBILL"},
{"field":"IsEnableDefaultRule","label":"是否启用默认单据转换","type":"string","describe":"布尔类型,默认true(非必录)","value":"true"},
{"label":"IsDraftWhenSaveFail","field":"IsDraftWhenSaveFail","type":"string","value":"false"}
]
}
数据请求与清洗
首先,我们需要从源系统中获取相关的数据,这些数据可能包括付款申请单的ID、编码集合等信息。通过轻易云的数据请求模块,我们可以从多个异构系统中提取这些必要的数据。
数据转换与写入
在获取到原始数据后,我们需要对其进行ETL(Extract, Transform, Load)处理,以确保其符合金蝶云星空API接口的要求。
-
提取(Extract):
- 从源系统中提取付款申请单的相关信息,如ID集合、编码集合等。
-
转换(Transform):
- 根据元数据配置中的字段,将提取到的数据进行相应的转换。例如,将付款申请单ID映射到
Ids
字段,将编码集合映射到Numbers
字段。 - 利用元数据配置中的固定值,例如
FormId
设为CN_PAYAPPLY
,确保每个字段都符合金蝶云星空API接口的要求。
- 根据元数据配置中的字段,将提取到的数据进行相应的转换。例如,将付款申请单ID映射到
-
加载(Load):
- 将转换后的数据通过HTTP POST方法推送到金蝶云星空API接口。具体请求体如下:
{
"Ids": "<extracted_ids>",
"FormId": "CN_PAYAPPLY",
"Numbers": "<extracted_numbers>",
"RuleId": "994f9913-a23f-46fb-b5d9-f1f271b4ef6c",
...
}
实际操作步骤
-
配置API请求:
- 设置API请求的方法为POST。
- 配置请求头和认证信息,以确保能够成功调用金蝶云星空的API接口。
-
填充请求体:
- 根据元数据配置和提取到的数据,填充请求体中的各个字段。
- 确保所有必填字段都有值,并且格式正确。
-
发送请求并处理响应:
- 使用HTTP客户端库发送POST请求,并处理响应结果。
- 如果响应成功,则表示数据已成功写入目标平台。
- 如果失败,根据错误信息进行调试和修正。
注意事项
- 字段匹配与验证: 确保每个字段都严格按照元数据配置进行匹配和验证,以避免因格式或内容不符而导致的数据写入失败。
- 错误处理机制: 在发送请求时,需要设置适当的错误处理机制,如重试策略、日志记录等,以便在出现问题时能够快速定位和解决。
通过上述步骤,我们可以高效地将供应商货款付款申请单下推操作的数据从源系统转换并写入到金蝶云星空,实现不同系统间的数据无缝对接。这不仅提升了业务流程的自动化程度,也确保了数据的一致性和准确性。