掌桥专利:专业的专利平台
掌桥专利
首页

一种对账方法、系统及计算机可读存储介质

文献发布时间:2023-06-19 12:13:22


一种对账方法、系统及计算机可读存储介质

技术领域

本发明涉及软件开发技术领域,特别涉及一种对账方法、系统及计算机可读存储介质。

背景技术

传统的对账方法是使用Excel表格分析比较或利用数据库(DB)使用SQL或存储过程进行对账,最终得到对账差异结果。

传统的基于Excel表格的对账方案,需要先将对账数据导入到Excel表格,按照对账元素进行分析比较。在该方案中,每次对账都需要人工操作,耗时较长容易出错,并且对账结果展示不直观。

基于数据库使用SQL或存储过程的对账方案,如果数据量过大时效率比较低,对IO要求比较高,并且对账时会影响整个数据库的性能。如果修改参与对账的元素内容,需要修改数据库脚本,缺乏灵活性并且对账规则不容易维护。

发明内容

基于此,有必要提供一种能够进行快速对账的对账方法、系统及计算机可读存储介质。

本发明实施例一方面提供一种对账方法,包括如下步骤:

S1:配置对账规则:根据对账业务需求,预先配置相应的对账规则;

S2:获取对账双方的原始数据并处理:按照配置的对账规则的文件路径,获取原始的对账数据,若原始的对账数据不符合对账文件标准,则将获取的对账数据进行预处理,得到对账双方的标准对账文件;

S3:解析文件:按照配置的对账规则,分别将对账双方的标准对账文件进行解析,依次获取标准对账文件中的行数据的对账主键和对账元素,由行数据的对账主键计算出hash;

S4:写入数据和对账:将标准对账文件中的数据按照对账元素内容进行拼接,将拼接后的数据分片写入Redis集群的set集合中,将对账主键计算出hash用于分片标记,将Redis集群中具有相同的分片标记的set集合进行比较对账,得到各分片对账的结果;

S5:处理并保存对账的结果:汇总处理各个分片对账的结果,并分批保存对账的结果至数据库,同时,根据对账结果生成差异报表。

优选地,所述对账规则的配置包括:

新增对账规则配置:用来新增相应的对账业务需求;

修改对账规则配置:用来修改相应的对账业务需求;

删除对账规则配置:用来删除相应的对账业务需求。

优选地,所述对账规则包括:

文件路径:可配置对账文件解析时保存到应用服务器下的路径;

对账编码:业务对账需求的唯一标识,不同的对账业务对账编码不能重复,对账名称用来配置业务需求的简单描述;

文件名称:用来解析对账文件时的通用文件名模板;

起始行:用来指明从对账文件的第几行开始解析;

结束行:用来决定对账文件解析到第几行结束;

内容列:文件内容列用来配置对账数据行的所有列的对应关系;

文件内容列分隔符;用来配置对账文件数据行每列数据的内容分割符。

优选地,所述分片标记为set集合的分片下标。

优选地,所述对账的结果包括相同下标的两个分片对比得到的对账元素数量的差集和对账主键数量的差集。

本发明还提供一种对账系统,所述系统包括:

管理模块,用于统一维护配置对账规则,其中,不同对账业务维护分别对应不同的对账规则;

数据源,用于提供对账双方的原始数据和保存对账结果数据,包括数据库和大数据平台;

解析模块,用于分别将对账双方的标准对账文件进行解析,调用管理模块上预先配置的对账规则,依次获取标准对账文件中的行数据的对账主键和对账元素,由行数据的对账主键计算出hash;

对账模块,用于将标准对账文件中的数据按照对账元素内容进行拼接,将拼接后的数据分片写入Redis集群的set集合中,将对账主键计算出hash用于分片标记,根据分片标记对比进行对账;

存储模块,用于汇总处理各个分片对账的结果,生成差异报表,并分批保存对账的结果至数据库。

优选地,所述管理模块还包括:界面编辑模块,用于管理文件通知、对账规则和对账结构。

优选地,所述解析模块还包括;

导入模块,用于从数据源获取对账双方的原始数据;

判断模块,用于判断对账双方的原始数据是否符合对账文件标准;

数据处理模块,用于对账双方的原始数据处理成标准对账文件。

优选地,所述存储模块还包括:

保存模块,用于将对账的结果进行汇总保存;

报表生成模块,用于将对账的结果生成差异报表。

一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述的对账方法的步骤。

本发明提供的对账方法是基于Redis中间件实现,依赖Redis的Set集合,利用Redis Sdiffstore命令将给定集合之间的差集存储在指定的集合中的原理实现高效对账,利用哈希分片策略根据对账数据量大小灵活调整分片大小,可根据实际对账数据量情况实现水平扩展,参与对账的元素按照顺序统一拼接成字符串,不再一一比较各个对账元素是否异同,只需比较拼接的字符串是否异同即可。本发明运用MapReduce思想采用分而治之的方式,最后汇总处理分批保存对账结果并生成差异报表。对账时根据对账双方对账元素主键计算哈希做分片处理,保证每个分片的数据量尽可能均匀;

新增对账业务需求不需要额外代码的开发,只通过配置对账规则即可实现,所有对账业务配置统一管理,对账逻辑统一实现;

本发明中后台对账结果显示页面可通过配置定制化显示,并且立即生效;如对账结果显示列和对账结果查询条件等内容都可通过配置动态实现,模块化后可快速响应业务需求变化,适应对账规则的任意组合条件列变化。

附图说明

通过附图中所示的本发明优选实施例更具体说明,本发明上述及其它目的、特征和优势将变得更加清晰。在全部附图中相同的附图标记指示相同的部分,且并未刻意按实际尺寸等比例缩放绘制附图,重点在于示出本的主旨。

图1为本发明实施例的对账方法的流程图;

图2为本发明实施例的对账系统结构框架图;

图3为本发明实施例的对账规则配置示意图;

图4为本发明实施例的本方对账数据的内容行数据、对账主键和对账元素的示意图;

图5为本发明实施例的对账过程处理的示意图。

具体实施方式

下面结合附图和具体实施例对本发明技术方案作进一步的详细描述,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定。

如图1-5所示,本发明提供一种对账方法,包括如下步骤:

S1:配置对账规则:根据对账业务需求,预先配置相应的对账规则;

S2:获取对账双方的原始数据并处理:按照配置的对账规则的文件路径,获取原始的对账数据,若原始的对账数据不符合对账文件标准,则将获取的对账数据进行预处理,得到对账双方的标准对账文件;

S3:解析文件:按照配置的对账规则,分别将对账双方的标准对账文件进行解析,依次获取标准对账文件中的行数据的对账主键和对账元素,由行数据的对账主键计算出hash;

S4:写入数据和对账:将标准对账文件中的数据按照对账元素内容进行拼接,将拼接后的数据分片写入Redis集群的set集合中,将对账主键计算出hash用于分片标记,将Redis集群中具有相同的分片标记的set集合进行比较对账,得到各分片对账的结果;

S5:处理并保存对账的结果:汇总处理各个分片对账的结果,并分批保存对账的结果至数据库,同时,根据对账结果生成差异报表。

其中哈希分片规则算法的代码示例如下:

在优选实施例中,所述对账规则的配置包括:

新增对账规则配置:用来新增相应的对账业务需求;

修改对账规则配置:用来修改相应的对账业务需求;

删除对账规则配置:用来删除相应的对账业务需求。

本发明中如果新增对账业务需求不需要额外代码的开发,只通过配置即可实现,所有对账业务配置统一管理,对账逻辑统一实现。

在优选实施例中,所述对账规则包括:

文件路径:可配置对账文件解析时保存到应用服务器下的路径;

对账编码:业务对账需求的唯一标识,不同的对账业务对账编码不能重复,对账名称用来配置业务需求的简单描述;

文件名称:用来解析对账文件时的通用文件名模板;

起始行:用来指明从对账文件的第几行开始解析;

结束行:用来决定对账文件解析到第几行结束;

内容列:文件内容列用来配置对账数据行的所有列的对应关系;

文件内容列分隔符;用来配置对账文件数据行每列数据的内容分割符。

对账编码是业务对账需求的唯一标识,不同的对账业务对账编码不能重复,对账名称用来配置业务需求的简单描述。

文件路径可配置对账文件解析时保存到应用服务器下的路径,文件名称用来解析对账文件时的通用文件名模板。

文件起始行配置从对账文件的第几行开始解析,文件结束行可配置对账文件解析到第几行结束。

文件内容分割符用来配置对账文件数据行每列数据的内容分割符,文件内容列用来配置对账数据行的所有列的对应关系。对账主键列用来配置参与对账的对账主键,如本地文件主键列可配置“0=支付流水号”,本地文件对账元素列可配置“0=支付流水号,4=交易金额:amount_yuan”,主键列必须从对账元素列中选择。

对账结果显示列可用来配置对账结果页面展示时显示哪些对账内容列,比如可配置“0=支付流水号,1=交易类型,2=贷款账号,3=交易日期,4=交易金额:amount_yuan,5=交易名称”;对账结果查询列可配置对账结果页面展示时用哪些对账内容查询,比如可配置“0=支付流水号,2=贷款账号,5=交易名称”。其中amount_yuan的配置可自动把金额都转换成元,并且统一保留两位小数。

挂账天数可配置一方数据存在对方数据不存在时需要继续参与对账的天数。

文件过滤关键字可通过配置只选择符合条件的文件数据行参与对账,如图1本地文件过滤关键字配置了“0:A||B”,解析对账数据行时如果数据的第一列元素值包含了A或者B则本行数据参与对账。如远程文件过滤关键字配置了“2:E&&F”,解析对账数据行时如果第三列元素值包含E和F则本行数据参与对账。文件排除关键字可通过配置排除符合条件的文件数据行不参与对账,如图1本地文件排除关键字配置了“2:G||H”,解析对账数据行时如果第三列元素包含了G或者H则本行数据不参与对账。

对账结果表保存表下标可用来配置对账结果保存在哪个结果表中,如图1中配置为0则对账结果保存在第一个结果表中,对账双方名称用来配置对账结果页面展示对账双方的名称。

本发明实施例中本方对账文件数据列用“|$”分割,本地对账内容列配置为“0=支付流水号,1=交易类型,2=贷款账号,3=交易日期,4=交易金额:amount_yuan,5=交易名称”,本地对账元素配置为“0=支付流水号,4=交易金额:amount_yuan”,本地对账主键配置为“0=支付流水号”。

本发明中后台对账结果显示页面可通过配置定制化显示,并且立即生效;如对账结果显示列和对账结果查询条件等内容都可通过配置动态实现,模块化后可快速响应业务需求变化,适应对账规则的任意组合条件列变化。

在优选实施例中,所述分片标记为set集合的分片下标。

在优选实施例中,所述对账的结果包括相同下标的两个分片对比得到的对账元素数量的差集和对账主键数量的差集。

本发明还提供一种对账系统,所述系统包括:

管理模块,用于统一维护配置对账规则,其中,不同对账业务维护分别对应不同的对账规则;

数据源,用于提供对账双方的原始数据和保存对账结果数据,包括数据库和大数据平台;

解析模块,用于分别将对账双方的标准对账文件进行解析,调用管理模块上预先配置的对账规则,依次获取标准对账文件中的行数据的对账主键和对账元素,由行数据的对账主键计算出hash;

对账模块,用于将标准对账文件中的数据按照对账元素内容进行拼接,将拼接后的数据分片写入Redis集群的set集合中,将对账主键计算出hash用于分片标记,根据分片标记对比进行对账;

存储模块,用于汇总处理各个分片对账的结果,生成差异报表,并分批保存对账的结果至数据库。

在优选实施例中,所述管理模块还包括:界面编辑模块,用于管理文件通知、对账规则和对账结构。

在优选实施例中,所述解析模块还包括;

导入模块,用于从数据源获取对账双方的原始数据;

判断模块,用于判断对账双方的原始数据是否符合对账文件标准;

数据处理模块,用于对账双方的原始数据处理成标准对账文件。

在优选实施例中,所述存储模块还包括:

保存模块,用于将对账的结果进行汇总保存;

报表生成模块,用于将对账的结果生成差异报表。

一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述的对账方法的步骤。

对账过程处理流程:分别解析对账双方标准对账文件,根据对账双方对账元素主键取哈希得到分片下标分批分片写入Redis集群的Set集合中,分片大小可根据数据量情况动态调整大小,分片大小必须为8的整数倍。写入数据完成后分别比对分片下标相同的分片集合,汇总各分片对账结果,保存对账结果至数据库,生成对账结果报表。

按照第一个分片A0、B0举例说明,首先比对出A0对账元素比B0对账元素多的数据保存至Set集合C0,B0对账元素比A0对账元素多的数据保存至Set集合D0,C0集合元素对账主键比D0集合元素对账主键多的主键数据保存至集合E0,D0集合元素对账主键比C0集合元素对账主键多的主键数据保存至集合F0。C0集合和D0集合对账主键相同的对账元素即为双方明细不一致数据,主键数据集合E0对应的对账元素即为A0存在B0不存在的数据,主键数据集合F0对应的对账元素即为B0存在A0不存在的数据。

图5中对账数据处理部分,将对来自各个业务系统的业务数据进行预处理,最终输出符合对账标准的

文件,如果业务数据已经是标准对账文件则不需要预处理。对账是基于文件为源数据,对账文件可以从ODS数据源或者大数据平台统一推送,也可以通过其他业务系统推送,对账源数据不保存至数据库,对账完成后对账结果保存至数据库并生成对账差异报表。

图5中管理平台统一维护对账规则配置,不同业务对账维护不同的对账规则并保存至数据库,如果对账元素变更、挂账天数变更、对账结果显示列和对账结果查询列等配置变更可通过管理平台修改,修改对账规则配置完成后下次对账按照最新的对账规则执行。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

相关技术
  • 线上对账方法、系统、计算机设备和计算机可读存储介质
  • 一种对账方法、系统及计算机可读存储介质
技术分类

06120113212672