道一云数据集成到畅捷通T+的技术案例分享:报销线下-线下广告费(甘肃)
在企业信息化管理中,数据的高效集成和处理是提升业务效率的重要环节。本文将分享一个具体的系统对接集成案例,即如何将道一云的数据集成到畅捷通T+,以实现“报销线下-线下广告费(甘肃)”的业务需求。
为了确保数据能够准确无误地从道一云传输到畅捷通T+,我们采用了轻易云数据集成平台。该平台不仅支持高吞吐量的数据写入能力,使得大量数据能够快速被集成到目标系统中,还提供了集中监控和告警系统,可以实时跟踪数据集成任务的状态和性能。
在这个案例中,我们通过调用道一云的API接口qwcgi/api/reimApiCtl/getReimList.do
来获取报销相关的数据,并利用畅捷通T+的API接口/tplus/api/v2/doc/Create
进行数据写入。在此过程中,我们特别关注以下几个技术要点:
- 高效的数据写入:为了应对大量数据的快速写入需求,我们优化了数据处理流程,确保每条记录都能及时、准确地传输到畅捷通T+。
- 实时监控与异常处理:通过轻易云平台提供的集中监控和告警系统,我们可以实时跟踪每个数据集成任务的状态。一旦出现异常情况,系统会立即发出告警,并启动错误重试机制,以保证数据传输过程中的可靠性。
- 自定义数据转换逻辑:由于道一云与畅捷通T+之间存在一定的数据格式差异,我们设计了自定义的数据转换逻辑,以适应特定业务需求。这不仅提高了数据处理的一致性,也确保了最终写入的数据符合目标系统的要求。
- 分页与限流处理:在调用道一云接口时,为避免因大批量请求导致接口超时或限流问题,我们采用分页抓取策略,并设置合理的限流参数,以平衡请求频率和响应速度。
通过上述技术手段,我们成功实现了道一云与畅捷通T+之间的数据无缝对接,为企业提供了一套高效、可靠的数据集成解决方案。接下来,将详细介绍具体实施步骤及关键技术细节。
调用道一云接口qwcgi/api/reimApiCtl/getReimList.do获取并加工数据
在轻易云数据集成平台的生命周期中,第一步是调用源系统道一云接口qwcgi/api/reimApiCtl/getReimList.do
来获取原始数据,并对其进行初步加工处理。本文将详细探讨这一过程中的技术细节和注意事项。
接口调用配置
首先,我们需要配置API接口的元数据,以确保能够正确地从道一云系统中获取所需的数据。以下是关键的元数据配置项:
- API路径:
qwcgi/api/reimApiCtl/getReimList.do
- 请求方法:
POST
- 分页参数: 当前页码(
currentPage
)和分页大小(pageSize
) - 时间参数: 开始时间(
startTime
)和结束时间(endTime
) - 过滤条件: 例如,报销单状态大于等于4,报销明细中包含“线下广告”等。
这些配置项确保了我们能够准确地请求到符合业务需求的数据。
数据请求与清洗
在实际操作中,我们通过发送HTTP POST请求来调用上述API接口。请求体包含了必要的参数,如开始时间、结束时间、当前页码和分页大小等。这些参数可以动态生成,例如使用上次同步时间作为开始时间,当前时间作为结束时间:
{
"startTime": "{{LAST_SYNC_TIME|datetime}}",
"endTime": "{{CURRENT_TIME|datetime}}",
"currentPage": "1",
"pageSize": "100"
}
为了保证数据完整性,我们还需要处理分页问题。如果返回的数据量较大,需要通过循环递增currentPage
值来逐页获取所有数据。同时,为了避免漏单,可以设置定时任务(如每天凌晨1点)重新抓取前一天的数据进行补漏。
数据过滤与转换
在获取到原始数据后,需要根据预设的条件进行过滤。例如,只保留报销明细中包含“线下广告”的记录,并且公司名称为“甘肃格瑞丽家母婴用品有限公司”。这一步骤可以通过编写自定义逻辑实现:
[
{
"field": "detailList.subjName",
"logic": "like",
"value": "线下广告",
"strictMode": true
},
{
"field": "detailList.reimCustomFieldDataList_0_value",
"logic": "like",
"value": "甘肃格瑞丽家母婴用品有限公司",
"strictMode": true
},
{
"field": "state",
"logic": "egt",
"value": 4,
"strictMode": true
}
]
这些过滤条件确保了我们只处理符合特定业务需求的数据,提高了后续处理的效率和准确性。
异常处理与重试机制
在调用外部API时,不可避免地会遇到网络波动或服务端异常等问题。因此,需要设计健壮的异常处理机制。例如,当请求失败时,可以记录错误日志并触发重试机制,以保证数据抓取过程的可靠性。此外,还可以设置告警系统,在发生异常时及时通知相关人员进行人工干预。
实时监控与日志记录
为了更好地掌握数据集成过程中的各个环节状态,可以利用轻易云平台提供的实时监控功能,对每一次API调用、每一批次的数据处理都进行详细记录。这不仅有助于快速定位问题,还能为后续优化提供依据。
综上所述,通过合理配置API接口元数据、精确控制请求参数、严格执行过滤条件以及完善异常处理机制,我们能够高效稳定地完成从道一云系统获取并加工原始数据这一关键步骤,为后续的数据转换与写入奠定坚实基础。
实现数据集成的ETL转换与写入
在数据集成的生命周期中,第二步是将已经集成的源平台数据进行ETL转换,并转为目标平台畅捷通T+API接口所能够接收的格式,最终写入目标平台。下面将详细介绍这一过程中的技术细节和实现方法。
数据转换逻辑配置
在将数据写入畅捷通T+之前,必须确保数据格式符合其API接口要求。这里,我们通过元数据配置来定义数据的转换逻辑。
-
外部编码(ExternalCode):这是一个字符串字段,用于标识外部系统中的唯一编码。我们可以通过模板变量
{reimNo}
来动态填充该字段。{"field":"ExternalCode","label":"外部编码","type":"string","describe":"字符串长度<50","value":"{reimNo}"}
-
凭证字(DocType):固定值为“记”,表示记账凭证类型。
{"field":"DocType","label":"凭证字","type":"string","parser":{"name":"ConvertObjectParser","params":"Code"},"value":"记"}
-
制单日期(VoucherDate):使用模板变量
{closeTime}
填充制单日期。{"field":"VoucherDate","label":"制单日期","type":"string","value":"{closeTime}"}
借方和贷方明细
借方和贷方明细是凭证的重要组成部分,在配置中,我们需要处理多个字段,包括摘要、科目档案、汇率、货币、本币金额及辅助核算项等。
-
借方摘要(Summary-1):
{"field":"Summary-1","label":"借方摘要","type":"string","describe":"字符串长度<200","value":"{projName}{personName}报{endTimes}{subjFullName}","parent":"borrow-1"}
-
借方科目档案(Account-1):
{"field":"Account-1","label":"借方科目档案","type":"string","describe":"必须是末级科目","parser":{"name":"ConvertObjectParser","params":"Code"},"value":"6601040203","parent":"borrow-1"}
-
借方本币金额(AmountDr-1):
{"field":"AmountDr-1","label":"借方本币","type":"string","value":"_function sum({{detailList.invoices.0.amount}} - {{detailList.invoices.0.taxAmount}})","parent":"borrow-1"}
辅助核算项
辅助核算项包括部门、个人(员工)、客户、项目和存货等,这些项需要通过特定的解析器进行转换,以确保符合畅捷通T+的要求。
例如,部门字段:
{"field":"AuxAccDepartment-1", "label": "部门", "type": "string", "value": "{{detailList.projName}}", "parent": "AuxInfos-1", "parser": {"name": "ConvertObjectParser", "params": "Code"}, "mapping": "6296db63d96ce154e16af8ce", "mappingDirection": "positive"}
多种票据类型处理
对于不同类型的发票,需要根据其名称动态选择对应的科目档案。例如:
{"field": "Account-3", "label": "借方科目档案", "type": "string", "describe": "必须是末级科目",
"parser": {"name": "ConvertObjectParser", "params": "Code"},
"value": "_function case when '{{detailList.invoices.0.invoiceName}}'='增值税专用发票百分之6' then '2221010104' else '22210101' end",
"parent": "borrow-3"}
数据写入流程
在完成上述转换后,即可调用畅捷通T+API接口,将处理后的数据写入目标平台。具体步骤如下:
- 构建请求体:根据元数据配置构建请求体。
- 发送HTTP POST请求:调用
/tplus/api/v2/doc/Create
接口,将构建好的请求体发送到畅捷通T+。 - 处理响应:根据响应结果判断操作是否成功,并进行相应的错误处理或重试机制。
以上就是使用轻易云数据集成平台实现ETL转换,并将源平台的数据转为畅捷通T+API接口所能接收格式并写入目标平台的详细过程。在实际操作中,需要根据具体业务需求进行相应调整,以确保数据准确性和完整性。