汇总结算明细的回写方法和系统
文献发布时间:2023-06-19 19:27:02
技术领域
本申请属于汇总结算技术领域,具体涉及汇总结算明细的回写方法和系统。
背景技术
目前一些互联网公司和快递公司对于结算都有自己的一套体系,大多选择对账单明细进行结算或者将结算对象根据某个维度进行聚合汇总,在聚合汇总的数据基础上进行结算。
这两种结算方案都有优缺点:对于账单明细进行结算的数据准确,可以确认账单明细的结算状态,但是工作量比较大,结算效率比较低;对于基于聚合汇总的数据进行结算,效率比较高,但是实时性差,结算金额与应收金额不一致,虽然通过补差额结算可以很好补偿这一缺点,但是基于聚合汇总进行结算以后无法确认账单明细的结算状态。
发明内容
为此,本申请提供汇总结算明细回写的方法和系统,有助于帮助解决目前结算方案中不能同时兼顾汇总结算效率和实时确认账单明细结算状态的问题。
为实现以上目的,本申请采用如下技术方案:
第一方面,本申请提供一种汇总结算明细的回写方法,所述方法包括:
当账单的明细发生变化时,生成账单明细临时表,其中,所述账单明细临时表中存储有汇总键和版本号;
将所述账单明细临时表中的汇总键和版本号通过消息队列发送到账单汇总主题,以使所述账单的明细进行聚合汇总获得的汇总信息生成账单汇总表,并在所述账单汇总表的基础上进行结算;
在所述结算完成的情况下,将当前所述汇总键和版本号通过消息队列发送到账单回写主题,以使所述汇总信息写入对应的所述账单的明细中。
进一步地,所述当账单的明细发生变化时,生成账单明细临时表,包括:
在启动定时任务之后,当所述账单的明细发生变化时,将所述账单的明细插入所述汇总键和版本号生成所述账单明细临时表。
进一步地,所述将所述账单明细临时表的汇总键和版本号通过消息队列发送到账单汇总主题,以使所述账单的明细进行聚合汇总获得的汇总信息生成账单汇总表,包括:
通过所述账单汇总主题的消费服务利用所述汇总键判断所述账单是否处于结算中,若所述账单结算完成,将所述账单的明细和所述账单明细临时表的版本号插入到所述账单明细临时表,在所述账单的明细和所述账单明细临时表的版本号插入完成之后,将所述账单明细临时表利用汇总键进行聚合汇总获得汇总信息生成所述账单汇总表。
进一步地,所述以使所述账单的明细进行聚合汇总获得的汇总信息生成账单汇总表之后,还包括:
在所述定时任务触发时,扫描当前所述账单明细临时表的版本号,若所述聚合汇总完成,则删除小于所述版本号的所述账单明细临时表。
进一步地,所述在所述结算完成的情况下,将当前所述汇总键和版本号通过消息队列发送到账单回写主题,包括:
在结算任务触发之后,将当前所述账单明细临时表的汇总键和版本号通过消息队列发送到账单结算主题,利用所述汇总键判断所述账单明细临时表是否处于结算中;若结算完成,则将所述汇总键和版本号通过消息队列发送到账单回写主题。
进一步地,所述通过所述账单汇总主题的消费服务利用所述汇总键判断所述账单是否处于结算中之后,还包括:
若所述账单处于结算中,则将所述账单明细临时表的汇总键和版本号通过消息队列发送到所述账单汇总主题。
第二方面,提供一种汇总结算明细的回写系统,所述系统包括:
账单明细模块,用于当所述账单的明细发生变化时,生成所述账单明细临时表,其中,所述账单明细临时表中存储有汇总键和版本号;
账单汇总模块,用于将所述账单明细临时表中的汇总键和版本号通过消息队列发送到所述账单汇总主题,以使所述账单的明细进行聚合汇总获得的汇总信息生成账单汇总表,并在所述账单汇总表的基础上进行结算;
账单回写模块,在所述结算完成的情况下,将当前所述汇总键和版本号通过消息队列发送到所述账单回写主题,以使所述汇总信息写入对应的所述账单的明细中。
本申请采用以上技术方案,至少具备以下有益效果:
本申请通过账单的明细发生变化后生成账单明细临时表,再将账单明细临时表的汇总键和版本号通过消息队列发送的账单汇总主题,以使聚合汇总获得的汇总信息生成账单汇总表,从而快速得到账单汇总表,在账单汇总表的基础上进行结算,结算完成后,将当前账单明细临时表的汇总键和版本号通过消息队列发送到账单回写主题,以使汇总信息写入对应的账单的明细中,进而得到账单明细结算状态,从而实现可以实时确认账单明细的结算状态,解决不能同时兼顾汇总结算效率和实时确认账单明细结算状态的问题。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据一示例性实施例示出的一种汇总结算明细的回写方法的流程图;
图2是根据一示例性实施例示出的一种生成账单汇总表的流程图;
图3是根据一示例性实施例示出的一种账单明细回写的流程图;
图4是根据一示例性实施例示出的一种汇总结算明细的回写系统的框图示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将对本申请的技术方案进行详细的描述。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施方式,都属于本申请所保护的范围。
请参阅图1,图1是根据一示例性实施例示出的一种汇总结算明细的回写方法的流程图,该方法包括如下步骤:
S101、当账单的明细发生变化时,生成账单明细临时表,其中,账单明细临时表中存储有汇总键和版本号;
S102、将账单明细临时表中的汇总键和版本号通过消息队列发送到账单汇总主题,以使账单的明细进行聚合汇总获得的汇总信息生成账单汇总表,并在账单汇总表的基础上进行结算;
S103、在结算完成的情况下,将当前汇总键和版本号通过消息队列发送到账单回写主题,以使汇总信息写入对应的账单的明细中。
通过账单的明细发生变化后生成账单明细临时表,再将账单明细临时表的汇总键和版本号通过消息队列发送的账单汇总主题,以使聚合汇总获得的汇总信息生成账单汇总表,从而快速得到账单汇总表,在账单汇总表的基础上进行结算,结算完成后,将当前账单明细临时表的汇总键和版本号通过消息队列发送到账单回写主题,以使汇总信息写入对应的账单的明细中,进而得到账单明细结算状态,从而实现可以实时确认账单明细的结算状态。
请参见图2,图2是根据一示例性实施例示出的一种生成账单汇总表的流程图。
通过监听账单的明细变化,生成账单明细临时表,账单明细临时表附带汇总键和版本号,其中时间戳作为版本号,每当账单的明细发生一次变化,则生成一个新的账单明细临时表,同时账单明细临时表的时间戳也会相应的变化一次,这样可以使汇总需要的时间更短。
将账单明细临时表中的汇总键和版本号通过消息队列发送到账单汇总主题,账单汇总主题的消费服务获取消息队列的汇总键,之后利用汇总键作为分布式锁的钥匙判断账单是否处于结算中,如果账单结算完成,则多线程批量插入账单的明细和账单明细表的时间戳,在账单的明细和账单明细表的时间戳插入完成之后,将账单的明细进行聚合汇总之后的汇总信息生成账单汇总表;如果账单处于结算中,将消息队列中的汇总键和时间戳不断重复的发送到账单汇总主题,一直到账单结算完成,这个过程保证在账单进行结算的过程中,账单汇总主题会时刻接收到汇总键和时间戳,保证数据不丢失。
定时任务触发之后,扫描当前的账单明细临时表,并判断账单明细临时表是否处于聚合汇总过程中,如果账单明细临时表聚合汇总完成,则删除小于当前版本号的全部的账单明细临时表,这样可以保障存储空间充足;如果处于聚合汇总过程中,则不做处理。
具体的定时任务设定时间可以是24小时,也可以根据具体需要来设定定时任务的时长。
请参见图3,图3是根据一示例性实施例示出的一种账单明细回写的流程图。
在账单汇总表的基础上进行结算,在结算完成的情况下,将账单汇总信息回写入对应的账单明细中。
具体的,在结算任务触发之后,将账单明细临时表中的汇总键和版本号通过消息队列发送到账单结算主题,账单结算主题的消费服务获取消息队列的汇总键,之后利用汇总键作为分布式锁的钥匙判断账单汇总表是否处于结算中,如果正在结算则不做处理;如果结算完成,将账单明细临时表中的汇总键和版本号通过消息队列发送到账单回写主题。
具体的,结算任务触发可以是每隔固定时间触发一次,也可以实时触发启动结算,在控制面板上设置实时触发按键。
账单回写主题的消费服务获取消息队列的汇总键,之后根据汇总键和版本号查询账单的明细,并将对应的账单明细临时表作为参照,将账单汇总表的汇总信息写入对应的账单明细中,从而获得账单明细的结算状态。
对账单明细的回写状态进行入库,通过对账单明细的汇总筛查及时预警回写异常,进行补偿及预警。
请参阅图4,图4是根据一示例性实施例示出的一种汇总结算明细的回写系统的框图示意图,该系统4包括:
账单明细模块41,用于当账单的明细发生变化时,生成账单明细临时表,其中,账单明细临时表中存储有汇总键和版本号;
账单汇总模块42,用于将账单明细临时表中的汇总键和版本号通过消息队列发送到账单汇总主题,以使账单的明细进行聚合汇总获得的汇总信息生成账单汇总表,并在账单汇总表的基础上进行结算;
账单回写模块43,在结算完成的情况下,将当前汇总键和版本号通过消息队列发送到账单回写主题,以使汇总信息写入对应的账单的明细中。
可以理解的是,上述各实施例中相同或相似部分可以相互参考,在一些实施例中未详细说明的内容可以参见其他实施例中相同或相似的内容。
需要说明的是,在本申请的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本申请的描述中,除非另有说明,“多个”、“多”的含义是指至少两个。
应该理解,当元件被称为“固定于”或“设置于”另一个元件,它可以直接在另一个元件上或者可能同时存在居中元件;当一个元件被称为“连接”另一个元件,它可以是直接连接到另一个元件或者可能同时存在居中元件,此外,这里使用的“连接”可以包括无线连接;使用的措辞“和/或”包括一个或更多个相关联的列出项的任一单元和全部组合。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为:表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。
- 基于XBRL实现财务报告明细数据汇总和下钻的系统及方法
- 基于XBRL实现财务报告明细数据汇总和下钻的系统及方法