CN115329733B - 报表统计方法、装置、计算机设备和存储介质 - Google Patents
报表统计方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN115329733B CN115329733B CN202211232867.0A CN202211232867A CN115329733B CN 115329733 B CN115329733 B CN 115329733B CN 202211232867 A CN202211232867 A CN 202211232867A CN 115329733 B CN115329733 B CN 115329733B
- Authority
- CN
- China
- Prior art keywords
- target
- message
- initial
- queue
- dimension
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
- G06F40/177—Editing, e.g. inserting or deleting of tables; using ruled lines
- G06F40/18—Editing, e.g. inserting or deleting of tables; using ruled lines of spreadsheets
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/151—Transformation
- G06F40/157—Transformation using dictionaries or tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请涉及一种报表统计方法、装置、计算机设备和存储介质。包括:获取单据对应的多个初始消息;确定与报销系统相对应的目标负载值,并根据目标负载值,可从多个初始消息中筛选出目标消息;通过从多个维度队列中确定与目标消息相对应的目标维度队列,并根据目标维度队列,确定目标消息对应的目标报表;统计单据的单据信息并存储至目标报表中。采用本方法能够提高报表统计的效率。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种报表统计方法、装置、计算机设备和存储介质。
背景技术
随着计算机技术的发展,出现了一种报销SaaS系统(Software-as-a-Service,软件即服务), 报销SaaS系统可用于进行费用报表统计任务、预算报表统计任务、以及其它定时处理任务等。
目前,针对多种报表统计任务,通常需要在凌晨等业务空闲的时段才能进行处理。然而,在凌晨时段集中处理大量任务时,会导致系统的负载过高,降低了对报表统计任务的处理效率,也造成“闲时不闲”的现象。因此,如何降低报表统计过程中对系统负载的影响,进而提高报表生成的效率是本公开需要解决的问题。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高报表生成效率的报表统计方法、装置、计算机设备和计算机可读存储介质。
第一方面,本申请提供了一种报表统计方法。包括:
获取单据对应的多个初始消息;初始消息是在单据的单据状态发生变化时形成的;
确定与报销系统相对应的目标负载值,并根据目标负载值,从多个初始消息中筛选出目标消息;
从多个维度队列中确定与目标消息相对应的目标维度队列,并根据目标维度队列,确定目标消息对应的目标报表;
统计单据的单据信息,并存储至目标报表中。
在一个实施例中,目标维度队列为日维度队列;多个维度队列包括日维度队列、日维度队列下一级的月维度队列、月维度队列下一级的季维度队列和季维度队列下一级的年维度队列中的任意一种;在获取单据对应的多个初始消息之后,还包括:确定单据对应的目标数据字典;统计单据的单据信息,并存储至目标报表中之后,还包括:根据目标数据字典,将目标消息存储至日维度队列中;返回至确定与报销系统相对应的目标负载值的过程继续进行,并将日维度队列下一级的月维度队列,作为与目标消息相对应的新的目标维度队列,直至将目标消息存储在最后一级的年维度队列中。
在一个实施例中,确定单据对应的目标数据字典,包括:获取目标时间段,并确定目标时间段内的当前初始消息、以及当前初始消息对应的初始数据字典;确定当前初始消息的下一个第一初始消息,并通过第一初始消息对初始数据字典进行更新,得到候选数据字典;确定第一初始消息的下一个第二初始消息,并将第二初始消息作为新的第一初始消息、将候选数据字典作为新的初始数据字典;返回至通过第一初始消息对初始数据字典进行更新的步骤继续进行,直至得到目标时间段内的最后一个初始消息对应的候选数据字典,并将最后一个初始消息对应的候选数据字典,作为单据对应的目标数据字典。
在一个实施例中,确定目标时间段内的当前初始消息、以及当前初始消息对应的初始数据字典,包括:将单据状态在目标时间段内,首次发生变化时形成的初始消息作为当前初始消息;获取空置的数据字典;空置的数据字典包括待生成的初始版本号、以及初始消息在不同维度队列中的位置所对应的待生成的索引信息;维度队列包括状态维度队列;根据预设的生成算法,生成与当前初始消息相对应的初始版本号;将当前初始消息存储至状态维度队列中,并确定存储至状态维度队列中的位置所对应的初始索引信息;将初始版本号和初始索引信息填充至空置的数据字典中,得到当前初始消息对应的初始数据字典。
在一个实施例中,第一初始消息包括时间标识;通过第一初始消息对初始数据字典进行更新,得到候选数据字典,包括:根据生成算法和初始版本号,生成与第一初始消息相对应的候选版本号;通过初始数据字典中的初始索引信息,查找当前初始消息在状态维度队列中的位置,并将位置上的当前初始消息进行删除;将第一初始消息存储至状态维度队列中的队尾,并确定存储至状态维度队列中的队尾所对应的候选索引信息;综合候选版本号和候选索引信息,得到第一初始消息对应的候选数据字典。
在一个实施例中,目标数据字典包括目标版本号;根据目标数据字典,将目标消息存储至日维度队列中,包括:获取目标时间段和目标消息所对应的实际版本号;判断实际版本号是否与目标数据字典中的目标版本号相同,若相同,则将目标消息存储至日维度队列中的队尾;若不相同,则判断目标消息是否为属于目标时间段的历史消息;若目标消息为历史消息,则将目标消息继续存储至日维度队列中的队尾。
在一个实施例中,报销系统包括多个关联设备:确定与报销系统相对应的目标负载值,包括:获取多个设备标识列表,并针对多个设备标识列表中的每个设备标识列表,均确定与当前设备标识列表中的每个设备标识各自对应的关联设备;对每个关联设备进行监控,并确定每个关联设备在预设时间段内各自对应的初始负载值;将多个初始负载值中的最大值,作为当前设备标识列表所对应的候选负载值,并从多个候选负载值中筛选出目标负载值。
在一个实施例中,初始消息包括时间标识;根据目标负载值,从多个初始消息中筛选出目标消息,包括:根据目标负载值,确定当前时段内生成的令牌的实际数量;令牌表征能对初始消息进行处理的许可权限;根据令牌的实际数量和初始消息的时间标识,从多个初始消息中筛选出目标消息。
在一个实施例中,令牌存储至令牌桶中;令牌桶在对初始消息进行处理时提供令牌;根据目标负载值,确定当前时段内生成的令牌的实际数量,包括:确定上一时段内的令牌的生成时间和生成数量,并判断生成时间是否已经超过第一预设时间;若已超过,则根据预设的临界负载值和目标负载值,确定当前时段内生成的令牌的实际数量;若未超过,则将上一时段内的令牌桶中剩余的令牌,作为当前时段内生成的令牌。
在一个实施例中,临界负载值包括最低负载值和最高负载值;根据预设的临界负载值和目标负载值,确定当前时段内生成的令牌的实际数量,包括:判断目标负载值是否小于最低负载值;若是,则将上一时段内的令牌的生成数量和预设数量进行叠加,得到当前时段内生成的令牌的实际数量;若否,则判断目标负载值是否大于最高负载值;当目标负载值大于最高负载值时,确定生成数量和预设数量之间的差异,并将差异作为令牌的实际数量;上述方法还包括:清空上一时段内的令牌桶中的令牌,并将当前时段内生成的令牌存储至令牌桶中,得到新的令牌桶。
在一个实施例中,根据令牌的实际数量和初始消息的时间标识,从多个初始消息中筛选出目标消息,包括:确定每个初始消息在状态维度队列中的排列顺序和存储时间;当从新的令牌桶中获取实际数量中的任意一个令牌时,判断排列顺序中排在首位的初始消息的存储时间是否超过了第二预设时间;若是,则将排在首位的初始消息从状态维度队列中提取出,并将提取出的初始消息作为目标消息;将排列顺序中排在首位的下一位作为新的首位,并从新的令牌桶中获取实际数量中的新的令牌;返回至判断排列顺序中排在首位的初始消息的存储时间是否超过了第二预设时间的步骤继续进行,直至遍历完所有初始消息或获取完实际数量中的所有令牌。
第二方面,本申请还提供了一种报表统计装置。包括:
消息获取模块,用于获取单据对应的多个初始消息;初始消息是在单据的单据状态发生变化时形成的;
消息筛选模块,用于确定与报销系统相对应的目标负载值,并根据目标负载值,从多个初始消息中筛选出目标消息;
报表确定模块,用于从多个维度队列中确定与目标消息相对应的目标维度队列,并根据目标维度队列,确定目标消息对应的目标报表;统计单据的单据信息,并存储至目标报表中。
第三方面,本申请还提供了一种计算机设备。计算机设备包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现以下步骤:
获取单据对应的多个初始消息;初始消息是在单据的单据状态发生变化时形成的;
确定与报销系统相对应的目标负载值,并根据目标负载值,从多个初始消息中筛选出目标消息;
从多个维度队列中确定与目标消息相对应的目标维度队列,并根据目标维度队列,确定目标消息对应的目标报表;
统计单据的单据信息,并存储至目标报表中。
第四方面,本申请还提供了一种计算机可读存储介质。计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取单据对应的多个初始消息;初始消息是在单据的单据状态发生变化时形成的;
确定与报销系统相对应的目标负载值,并根据目标负载值,从多个初始消息中筛选出目标消息;
从多个维度队列中确定与目标消息相对应的目标维度队列,并根据目标维度队列,确定目标消息对应的目标报表;
统计单据的单据信息,并存储至目标报表中。
上述报表统计方法、装置、计算机设备和存储介质,通过获取单据对应的多个初始消息,并确定与报销系统相对应的目标负载值,使得根据目标负载值,可从多个初始消息中筛选出目标消息;通过从多个维度队列中确定与目标消息相对应的目标维度队列,并根据目标维度队列,确定目标消息对应的目标报表,进而对单据的单据信息进行统计后,存储至目标报表中。由于本申请是通过实时监测的目标负载值,来对目标消息进行筛选,相比于传统的在业务空闲的时段才能进行处理的方式,本申请可提升对报表进行统计的及时性,在保证报销系统在负载可控范围内对目标报表进行统计,且不会影响到报销系统的其它功能使用,提高了报表统计的效率;同时,由于针对报表统计的不同阶段所对应的目标维度队列并不相同,实现了目标消息在不同的维度队列之间的动态流转,也使得不同的目标报表存储了不同阶段的统计结果,因此,提高了对不同目标报表进行统计的灵活性,也提升了用户的使用体验。
附图说明
图1为一个实施例中报表统计方法的应用环境图;
图2为一个实施例中报表统计方法的流程示意图;
图3为一个实施例中报销系统的总体架构图;
图4为一个实施例中确定目标负载值的时序图;
图5为一个实施例中确定目标数据字典的流程示意图;
图6为一个实施例中从多个初始消息中筛选出目标消息的流程示意图;
图7为一个实施例中报表统计装置的结构框图;
图8为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的报表统计方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。数据存储系统可以存储服务器104需要处理的数据。数据存储系统可以集成在服务器104上,也可以放在云上或其他网络服务器上。终端102用于将单据对应的多个初始消息发送至服务器104。服务器104用于确定报销系统对应的目标负载值,并根据目标负载值,从多个初始消息中筛选出目标消息。服务器104还用于从多个维度队列中确定与目标消息相对应的目标维度队列,并根据目标维度队列,确定目标消息对应的目标报表;将单据的单据信息进行统计后存储至目标报表中。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种报表统计方法,以该方法应用于计算机设备为例进行说明,计算机设备可为图1中的终端或服务器,包括以下步骤:
步骤202,获取单据对应的多个初始消息。
其中,初始消息是在单据的单据状态发生变化时形成的;单据状态包括已提交、驳回、撤销、待支付、支付中、支付失败、已退票、审批通过等。容易理解的,单据每发生一次状态变化则形成一个初始消息。
具体地,计算机设备可为一种报销系统,如图3所示,图3为报销系统的总体架构图,也可称作报销SaaS系统。其中,报销SaaS系统是一种云计算形式,为在线提供托管的应用服务,可通过网络浏览器为租户提供云应用及其所有的底层 IT 基础架构和平台。报销系统中包括消息交换中心和审批中心。当单据状态发生变更时,审批中心可调用消息交换中心对应的接口,将多个初始消息发送至消息交换中心。
在一个实施例中,审批中心可处理不同租户提交的单据,进而执行相应的报表统计任务,当租户被赋予软件即服务的相关权限时,便会在消息交换中心开辟出信息空间,信息空间用于记录租户的相关信息。其中,信息空间中可为一种租户对应的数据字典。
在一个实施例中,消息交换中心包括多个维度队列,维度队列包括状态维度队列,当审批中心将初始消息推送给消息交换中心时,消息交换中心将初始消息写入状态维度队列中。
步骤204,确定与报销系统相对应的目标负载值,并根据目标负载值,从多个初始消息中筛选出目标消息。
其中,参考图3所示,报销系统还包括服务发现数据库和负载监控中心;服务发现表征使用一个注册中心来记录分布式系统中的全部服务的信息,以便其他服务能够快速的找到这些已注册的服务的过程。消息交换中心中包括关联负载计算模块,关联负载计算模块用于确定与报销系统相对应的目标负载值。
在一个实施例中,确定与报销系统相对应的目标负载值,包括:获取多个设备标识列表,并针对多个设备标识列表中的每个设备标识列表,均确定与当前设备标识列表中的每个设备标识各自对应的关联设备;对每个关联设备进行监控,并确定每个关联设备在预设时间段内各自对应的初始负载值;将多个初始负载值中的最大值,作为当前设备标识列表所对应的候选负载值,并从多个候选负载值中筛选出目标负载值。
其中,报销系统包括多个关联设备,例如,当服务发现数据库部署在设备A上时,可将设备A视作与服务发现数据库关联的关联设备;当审批中心部署在设备B和设备C上时,可将设备B和设备C视作与审批中心相关联的关联设备等。也可将报销系统包括的服务发现数据库、负载监控中心和审批中心等称作依赖模块,也即每个依赖模块对应一个设备标识列表,且多个设备标识列表均存储在服务发现数据库中。例如,审批中心对应的设备标识列表包括设备B的设备标识IPB、设备C的设备标识IPC。
具体地,如图4所示,图4为确定目标负载值的时序图,消息交换中心确定每个依赖模块各自对应的设备标识列表,并定时从服务发现数据库中拉取多个设备标识列表,使得从设备标识列表中确定出每个依赖模块各自对应的关联设备。负载监控中心通过对每个关联设备进行监控,使得消息交换中心获取到每个关联设备在预设时间段内各自对应的负载详情,其中,负载详情包括对CPU使用率和内存使用率;比如预设时间段内为1分钟。
消息交换中心根据负载详情,计算出每个关联设备各自对应的初始负载值。针对多个依赖模块中的每个依赖模块,消息交换中心均确定当前依赖模块对应的多个初始负载值中的最大值,并将其作为当前依赖模块所对应的候选负载值。消息交换中心确定多个候选负载值中的最大值,并将其作为报销系统所对应的目标负载值,并将目标负载值保存在本地缓存中。
本实施例中,通过定时从服务发现数据库中获取进行监控了的设备标识列表,以便在关联机器进行扩容、缩容后,均可实时监控到负载详情的变化,使得消息交换中心能自动处理,并准确得到相应的目标负载值,避免了因人工干预造成消息处理效率低的问题。同时,由于目标负载值计算后直接缓存到本地的,提高了后续筛选目标消息的计算效率。
在一个实施例中,服务发现数据库可以是一个用来实现分布式系统的服务发现与配置的开源工具,例如Consul;也可以是高度一致的分布式键值存储的存储系统,例如ETCD,可存储需要由分布式系统或机器集群访问的数据。
在一个实施例中,若存在运行过程中的某一关联设备需要依赖其他组织架构服务,且组织架构服务对该关联设备的负载值影响较大,计算机设备可将该组织架构服务也视作报销系统的关联设备。
在一个实施例中,根据目标负载值,对存储在状态维度队列中的多个初始消息进行筛选,得到目标消息,并将目标消息从状态维度队列中提取出。
步骤206,从多个维度队列中确定与目标消息相对应的目标维度队列,并根据目标维度队列,确定目标消息对应的目标报表。
其中,参考图3所示,维度队列还包括日维度队列、日维度队列下一级的月维度队列、月维度队列下一级的季维度队列和季维度队列下一级的年维度队列中的任意一种。报销系统还包括报表中心、预算中心和单据中心;报表中心包括不同维度的报表计算模块、中间表和结果表;目标报表则为一种中间表。
具体地,当计算机设备确定目标消息是从状态维度队列提取出时,确定目标维度队列为日维度队列,并确定目标消息对应的目标报表为日维度中间表,此时,消息交换中心将目标消息写入日维度队列。由于目标消息在不同的维度队列中为一种动态流转的过程,需要继续将目标消息从日维度队列中提取出,此时将日维度队列下一级的月维度队列作为目标维度队列,月维度中间表作为目标报表。
在一个实施例中,可将日维度拆分成小时维度,进而在消息交换中心创建新的小时维度队列,如此,可以更好地对依赖模块的资源消耗情况进行调控。容易理解的,维度队列还可包括小时维度队列或半年维度队列等,计算机设备可根据实际应用场景进行设置,本申请陈述的多个维度队列可为一种举例,包括但不限于上述举例。
在一个实施例中,维度队列可为一种先进先出的消息跳表,消息跳表用于缓存消息,可以快速对跳表里的消息进行删除操作,也可视作进行二分查找的有序链表,平均期望的查找、插入、删除时间复杂度都是O(logn)。
步骤208,统计单据的单据信息,并存储至目标报表中。
具体地,当确定目标维度队列为日维度队列时,计算机设备通过日维度队列对应的日维度报表计算模块,确定单据所属的租户报表,并将单据的单据信息统计到租户报表中,最后将租户报表的统计结果存储至日维度中间表中。容易理解的,当日维度中间表中存储的信息包括日维度所有的单据对应的单据信息,可将日维度中间表视为一种日维度的最终数据的状态。针对其他的维度队列,对各自对应的目标报表进行统计的过程与日维度队列相同,均将统计结果存储至各自对应的中间表中。
在一个实施例中,当年维度中间表中的单据信息统计完成之后,将每个维度队列各自对应的统计结果从中间表提取出来,并存储到每个维度队列各自对应的结果表中,此时,每个维度队列各自对应的结果表为一种最终数据的状态。
在一个实施例中,用户可对不同维度队列各自对应的中间表进行访问,由于不同维度队列的中间表对应于一种动态数据的状态,因此,通过访问中间表可以确定不同维度的实时数据。
在一个实施例中,用户可对不同维度队列各自对应的结果表进行访问,由于不同维度队列的结果表为一种最终数据的状态,因此,通过访问结果表可以确定不同维度对应的最新的统计结果。
上述报表统计方法中,通过获取单据对应的多个初始消息,并确定报销系统对应的目标负载值,使得根据目标负载值,可从多个初始消息中筛选出目标消息;通过从多个维度队列中确定目标消息对应的目标维度队列,并根据目标维度队列,确定目标消息对应的目标报表,进而对单据的单据信息进行统计后,存储至目标报表中。由于本申请是通过实时监测的目标负载值,来对目标消息进行筛选,相比于传统的在业务空闲的时段才能进行处理的方式,本申请可提升对报表进行统计的及时性,在保证报销系统在负载可控范围内对目标报表进行统计,且不会影响到报销系统的其它功能使用,提高了报表统计的效率。
在一个实施例中,在获取单据对应的多个初始消息之后还包括:确定单据对应的目标数据字典;统计单据的单据信息,并存储至目标报表中之后,还包括:根据目标数据字典,将目标消息存储至日维度队列中;返回至确定与报销系统相对应的目标负载值的过程继续进行,并将日维度队列下一级的月维度队列,作为与目标消息相对应的新的目标维度队列,直至将目标消息存储在最后一级的年维度队列中。
其中,目标数据字典包括租户所提交的单据唯一对应的目标版本号,目标版本号用于标记各个维度队列中的目标消息否是最新的消息,也用于标记报表中心正在处理的目标消息是否为最新的消息。
具体地,消息交换中心在将初始消息写入状态维度队列时,生成每个初始消息各自对应的版本号,通过每个初始消息各自对应的版本号,便可确定出单据对应的目标版本号。由于目标消息在不同的维度队列中为一种动态流转的过程,当通过日维度中间表存储统计结果后,需要根据目标数据字典,首先将目标消息存储至日维度队列中,直至根据目标数据字典,最后将目标消息存储至年维度队列。
其中,多个目标消息分别从不同维度队列中提取出来,直至存储在目标报表的过程,可视作一种消费目标消息的过程。在消费目标消息的过程中,需要实时监测报销系统对应的目标负载值,也即根据目标负载值来控制写入维度队列的消息数量和写入速度。由于通过目标负载值,控制消息的在不同维度队列的写入和提取过程相同,为简化表述,下面仅以日维度队列为例进行阐述。
在一个实施例中,如图5所示,初始消息包括当前初始消息、第一初始消息和第二初始消息,确定单据对应的目标数据字典,包括以下步骤:
步骤502,获取目标时间段,并确定目标时间段内的当前初始消息、以及当前初始消息对应的初始数据字典。
在一个实施例中,确定目标时间段内的当前初始消息、以及当前初始消息对应的初始数据字典,包括:将单据状态在目标时间段内,首次发生变化时形成的初始消息作为当前初始消息;获取空置的数据字典;根据预设的生成算法,生成与当前初始消息相对应的初始版本号;将当前初始消息存储至状态维度队列中,并确定存储至状态维度队列中的位置所对应的初始索引信息;将初始版本号和初始索引信息填充至空置的数据字典中,得到当前初始消息对应的初始数据字典。
其中,空置的数据字典包括待生成的初始版本号、以及初始消息在不同维度队列中的位置所对应的待生成的索引信息。目标时间段可为预设为某一天。
具体地,由于初始消息是依次写入状态维度队列的过程,消息交换中心需要先将目标时间段内,单据状态首次发生变化时形成的初始消息作为当前初始消息。消息交换中心可根据预设的生成算法,生成与当前初始消息相对应的初始版本号,同时,将当前初始消息存储至状态维度队列中,并确定存储位置所对应的初始索引信息。生成算法在此处不做限定,例如,生成的初始版本号可为001或00a等形式。因此,综合初始版本号和初始索引信息,便可对空置的数据字典进行填充,得到初始数据字典。
步骤504,确定当前初始消息的下一个第一初始消息,并通过第一初始消息对初始数据字典进行更新,得到候选数据字典。
其中,第一初始消息包括时间标识;例如时间标识为一种时间戳。第一初始消息可为在当前初始消息形成之后,单据状态再次发生变化时所生成的消息。
在一个实施例中,通过第一初始消息对初始数据字典进行更新,得到候选数据字典,包括:根据生成算法和初始版本号,生成与第一初始消息相对应的候选版本号;通过初始数据字典中的初始索引信息,查找当前初始消息在状态维度队列中的位置,并将位置上的当前初始消息进行删除;将第一初始消息存储至状态维度队列中的队尾,并确定存储至状态维度队列中的队尾所对应的候选索引信息;综合候选版本号和候选索引信息,得到第一初始消息对应的候选数据字典。
其中,当初始版本号为001时,根据生成算法可生成第一初始消息的候选版本号002。
具体地,消息交换中心根据初始数据字典中的初始索引信息,对初始索引信息对应的当前初始消息进行删除,并将第一初始消息存储至状态维度队列中的队尾。其中,存储至状态维度队列中的队尾,可确保单据的处理优先级降低,因为,第一初始消息是在单据的状态发生了变更后产生,通常短时间内单据状态再次变更的概率较大。例如,单据状态为已提交时,短时间内进行了审批,单据状态变成审批通过的速度较快,若根据已提交的单据已经进行了报表统计,通过降低处理的优先级,则短时间内不用对审批通过的单据再次进行报表统计。
同样,确定第一初始消息在状态维度队列中的候选索引信息,并综合候选版本号和候选索引信息,得到第一初始消息对应的候选数据字典。
在一个实施例中,状态维度队列中的初始消息还包括不属于目标时间段的历史消息,计算机设备通过跨天消息控制的方法,可确保历史消息在状态维度队列中不被删除。
步骤506,确定第一初始消息的下一个第二初始消息,并将第二初始消息作为新的第一初始消息、将候选数据字典作为新的初始数据字典。
步骤508,返回至通过第一初始消息对初始数据字典进行更新的步骤继续进行,直至得到目标时间段内的最后一个初始消息对应的候选数据字典,并将最后一个初始消息对应的候选数据字典,作为单据对应的目标数据字典。
其中,由于初始消息是一个动态产生的过程,在任意一个初始消息产生时,均有可能是单据的最新单据状态,因此对候选数据字典是个不断进行更新的过程,当存在多个初始信息时,则将最后一个初始消息作为最新的消息。
本实施例中,通过依次确定每个初始信息各自对应的数据字典,可确定提供了初始消息的租户在多个维度队列中的索引信息,确保了目标消息在流转过程中的可查询,因此,对于存在新的单据状态变更时,根据单据所对应的租户,可准确得到租户对应的目标数据字典,避免了后续对旧的消息所对应的单据信息进行不必要的计算。
在一个实施例中,根据目标数据字典,将目标消息存储至日维度队列中,包括:获取目标时间段和目标消息所对应的实际版本号;判断实际版本号是否与目标数据字典中的目标版本号相同,若相同,则将目标消息存储至日维度队列中的队尾;若不相同,则判断目标消息是否为属于目标时间段的历史消息;若目标消息为历史消息,则将目标消息继续存储至日维度队列中的队尾。
其中,参考图3所示,消息交换中心还包括入表控制模块,入表控制模块包括入表版本控制和跨天消息控制。
具体地,当在日维度中间表中完成单据信息的统计时,入表控制模块确定目标消息的实际版本号与目标数据字典中的目标版本号是否相同,若相同,则说明目标消息为目标时间段最新的消息,此时将目标消息存储至日维度队列中的队尾,此时对消息的控制为一种入表版本控制。若不相同,入表控制模块则确定目标消息是否为不属于目标时间段的历史消息,若为历史消息,继续将该目标消息存储至日维度队列中的队尾,若不为历史消息,则将该目标消息进行丢弃,此时对消息的控制为一种跨天消息控制。
本实施例中,通对查找与目标版本号相匹配的目标消息,可确保写入日维度队列的消息为最新的消息,对于前一天的历史消息,由于跨天消息控制不受目标版本号的限制,均可进行日维度队列的写入,也避免了对历史消息的遗漏。在一个实施例中,如图6所示,根据目标负载值,从多个初始消息中筛选出目标消息,包括以下步骤:
步骤602,根据目标负载值,确定当前时段内生成的令牌的实际数量。
在一个实施例中,根据目标负载值,确定当前时段内生成的令牌的实际数量,包括:确定上一时段内的令牌的生成时间和生成数量,并判断生成时间是否已经超过第一预设时间;若已超过,则根据预设的临界负载值和目标负载值,确定当前时段内生成的令牌的实际数量;若未超过,则将上一时段内的令牌桶中剩余的令牌,作为当前时段内生成的令牌。
其中,参考图3所示,消息交换中心还包括出表控制模块,出表控制模块包括出表缓存时间控制和出表令牌控制。出表令牌控制中包括令牌和令牌桶,令牌表征能对初始消息进行处理的许可权限;令牌存储至令牌桶中;令牌桶在对初始消息进行处理时提供令牌;也即每个令牌对应于一个初始消息,只有获取到令牌的初始消息,才可能筛选成目标消息。
具体地,当消息交换中心对多个初始消息进行筛选时,也即报表中心实时地、异步地从消息交换中心拉取状态维度队列中的初始消息,并在初始消息拉取的过程中,触发出表控制模块对初始消息进行控制。出表控制模块中的出表缓存时间控制,可确保每个初始消息在状态维度队列中等待预设时间,预设时间例如30秒。当报销系统在缓存过程中,存在租户因单据状态变更产生了新的初始消息时,可以减少重复计算的次数,由此避免了报表中心频繁调用消息交换中心的接口,进而降低资源的消耗。
其中,上一时段通过上次生成令牌的时间和第一预设时间计算得到,例如上次生成令牌的时间点为8点,第一预设时间为10分钟时,可确定上一时段为8点到8点10分。临界负载值包括最低负载值和最高负载值。
进一步地,根据预设的临界负载值和目标负载值,确定当前时段内生成的令牌的实际数量,包括:判断目标负载值是否小于最低负载值;若是,则将上一时段内的令牌的生成数量和预设数量进行叠加,得到当前时段内生成的令牌的实际数量;若否,则判断目标负载值是否大于最高负载值;当目标负载值大于最低负载值时,确定生成数量和预设数量之间的差异,并将差异作为令牌的实际数量。
具体地,出表控制模块在确定目标负载值小于最低负载值时,将上一时段内的令牌的生成数量和预设数量进行叠加,得到当前时段内生成的令牌的实际数量;反之,则判断目标负载值是否大于最低负载值。当目标负载值大于最高负载值时,出表控制模块将生成数量和预设数量之间的差异作为令牌的实际数量;当目标负载值小于等于最高负载值时,出表控制模块将上一时段令牌的生成数量,作为当前时段令牌的实际数量。
在一个实施例中,清空上一时段内的令牌桶中的令牌,并将当前时段内生成的令牌存储至令牌桶中,得到新的令牌桶。
在一个实施例中, 当报表中心可以部署在多个关联设备上时,则为多进程多线程的处理过程。
步骤604,根据令牌的实际数量和初始消息的时间标识,从多个初始消息中筛选出目标消息。
在一个实施例中,根据令牌的实际数量和初始消息的时间标识,从多个初始消息中筛选出目标消息,包括:确定每个初始消息在状态维度队列中的排列顺序和存储时间;当从新的令牌桶中获取实际数量中的任意一个令牌时,判断排列顺序中排在首位的初始消息的存储时间是否超过了第二预设时间;若是,则将排在首位的初始消息从状态维度队列中提取出,并将提取出的初始消息作为目标消息;将排列顺序中排在首位的下一位作为新的首位,并从新的令牌桶中获取实际数量中的新的令牌;返回至判断排列顺序中排在首位的初始消息的存储时间是否超过了第二预设时间的步骤继续进行,直至遍历完所有初始消息或获取了实际数量中的所有令牌。
其中,第二预设时间为初始消息在状态维度队列中的缓存时间,只有超过预设的缓存时间,才能将初始消息从状态维度队列中提取出。
具体地,由于状态维度队列为一种先进先出的队列,因此在获取一个令牌时,是按照初始消息在状态维度队列中的排列顺序,来对每个初始消息进行筛选,容易理解的,针对每个初始消息的筛选过程相同,当多个初始消息均筛选完或实际数量中的所有令牌全部获取完,则从多个初始消息中筛选出目标消息的过程完成。出表控制模块将筛选出的目标消息发送至报表中心,此时的目标消息中携带一种返回码,返回码表征报表中心可以接收目标消息。
在一个实施例中,令牌桶可以采用Redis的原子计数器来实现,其中, Redis(Remote Dictionary Server ,远程字典服务)为一个开源的、内存中的数据结构存储系统,可以用作数据库、缓存和消息中间件。
本实施例中,通过消息交换中心中的出表控制模块,并根据目标负载值来灵活确定当前时段的令牌数量,使得确保初始消息在拿到令牌时才能完成筛选,实现了对目标消息在多个维度队列之间的准确流转。由于是通过临界负载值来阶梯式地控制令牌的生成,避免相关联机器的负载大起大落,既提高了机器的资源利用率,又减少了机器负载过高造成的风险不可控。
在一个实施例中,负载监控中心在对当前依赖模块对应的多个关联设备进行监控时,可确定CPU使用率为rate1(k)和内存使用率rate2(k),其中k为任意一个关联设备,rate1(k)和rate2(k)的取值范围可从0到100。消息交换中心中的关联负载计算模块,可获取预先对CPU使用率和内存使用率设置的权重,例如,W1和W2均为1;同时,获取CPU占用率rate3(k)和内存占用率rate4(k),占用率表征可以忽略不计的使用率,例如,rate3(k)和rate4(k)均为30。通过采用以下公式,可确定出每个关联设备各自对应的初始负载值load(k):
load(k) = (Max(rate1(k), rate3(k))–rate3(k))^2+ (Max (rate2(k),rate4(k)) – rate4(k))^2
在一个实施例中,临界负载值中的最高负载值可为loadA = (Max(80, 30) - 30)^2+0 = 2500,最低负载值可为loadB = (Max(50, 30) - 30)^2+0 = 400。
在一个实施例中,关联设备在预设时间段内的负载详情还可包括磁盘、流量因子等。
在一个实施例中,统计单据的单据信息,并存储至目标报表中,包括:当单据对应于预算报表统计任务时,从预算中心中筛选出与租户标识相对应的目标预算信息;从单据中心查找出单据标识对应的单据信息;单据信息包括申请金额和申请部门中的至少一种;按照目标预算方案,将申请金额存储到目标预算科目下进行统计、将申请部门存储到目标预算组织下进行统计。
其中,参考图3所示,报销系统还包括预算中心和单据中心;目标消息包括租户标识和单据标识;目标报表可包括多个预算方案、多个预算科目和多个预算组织;目标预算信息包括目标预算方案、目标预算科目和目标预算组织。
具体地,预算方案表征算公司制定的某一段时间的财务支出计划,如2022年出差预算方案、2022年第一季度营销支出方案等;预算组织对应公司的财务组织架构或部门,如云产品部、人力资源部等;预算科目为费用分类,如装修费用、交通费用等。将申请金额归总到目标预算科目下统计的过程,需对目标预算科目进行金额占用等,此过程可视作现有技术手段,本申请在此不再赘述。
在一个实施例中,报表中心确定多个目标消息各自对应的租户标识,并将带有相同租户标识的目标消息进行分组,使得对同一租户标识所对应的多个单据进行统计。
在一个实施例中,当单据对应于费用报表统计任务时,目标报表则为一种费用报表。
在一个实施例中,月维度中间表的数据量等于3*预算方案数量*预算科目数量*预算组织数量,相比于直接统计预算费用,数据量大大降低,统计效率大大提高,其中3表示3个月。
本实施例中,针对不同的报表统计任务,均可采用目标报表实现对单据的存储,大大提升了用户对报表进行统计的体验。
应该理解的是,虽然如上的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的报表统计方法的报表统计装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个报表统计装置实施例中的具体限定可以参见上文中对于报表统计方法的限定,在此不再赘述。
在一个实施例中,如图7所示,提供了一种报表统计装置700,包括:消息获取模块702、消息筛选模块704和报表确定模块706,其中:
消息获取模块702,用于获取单据对应的多个初始消息;初始消息是在单据的单据状态发生变化时形成的;
消息筛选模块704,用于确定与报销系统相对应的目标负载值,并根据目标负载值,从多个初始消息中筛选出目标消息;
报表确定模块706,用于从多个维度队列中确定与目标消息相对应的目标维度队列,并根据目标维度队列,确定目标消息对应的目标报表;统计单据的单据信息,并存储至目标报表中。
在一个实施例中,报表统计装置700还包括循环处理模块708,用于确定单据对应的目标数据字典;将单据的单据信息存储至目标报表中进行统计之后,还包括:根据目标数据字典,将目标消息存储至日维度队列中;返回至确定与报销系统相对应的目标负载值的过程继续进行,并将日维度队列下一级的月维度队列,作为与目标消息相对应的新的目标维度队列,直至将目标消息存储在最后一级的年维度队列中。
在一个实施例中,循环处理模块708包括字典确定模块7081,用于获取目标时间段,并确定目标时间段内的当前初始消息、以及当前初始消息对应的初始数据字典;确定当前初始消息的下一个第一初始消息,并通过第一初始消息对初始数据字典进行更新,得到候选数据字典;确定第一初始消息的下一个第二初始消息,并将第二初始消息作为新的第一初始消息、将候选数据字典作为新的初始数据字典;返回至通过第一初始消息对初始数据字典进行更新的步骤继续进行,直至得到目标时间段内的最后一个初始消息对应的候选数据字典,并将最后一个初始消息对应的候选数据字典,作为单据对应的目标数据字典。
在一个实施例中,字典确定模块7081,还用于将单据状态在目标时间段内,首次发生变化时形成的初始消息作为当前初始消息;获取空置的数据字典;空置的数据字典包括待生成的初始版本号、以及初始消息在不同维度队列中的位置所对应的待生成的索引信息;维度队列包括状态维度队列;根据预设的生成算法,生成与当前初始消息相对应的初始版本号;将当前初始消息存储至状态维度队列中,并确定存储至状态维度队列中的位置所对应的初始索引信息;将初始版本号和初始索引信息填充至空置的数据字典中,得到当前初始消息对应的初始数据字典。
在一个实施例中,字典确定模块7081,还用于根据生成算法和初始版本号,生成与第一初始消息相对应的候选版本号;通过初始数据字典中的初始索引信息,查找当前初始消息在状态维度队列中的位置,并将位置上的当前初始消息进行删除;将第一初始消息存储至状态维度队列中的队尾,并确定存储至状态维度队列中的队尾所对应的候选索引信息;综合候选版本号和候选索引信息,得到第一初始消息对应的候选数据字典。
在一个实施例中,循环处理模块708还包括消息存储模块7082,用于获取目标时间段和目标消息所对应的实际版本号;判断实际版本号是否与目标数据字典中的目标版本号相同,若相同,则将目标消息存储至日维度队列中的队尾;若不相同,则判断目标消息是否为属于目标时间段的历史消息;若目标消息为历史消息,则将目标消息继续存储至日维度队列中的队尾。
在一个实施例中,消息筛选模块704包括负载确定模块7041,用于获取多个设备标识列表,并针对多个设备标识列表中的每个设备标识列表,均确定与当前设备标识列表中的每个设备标识各自对应的关联设备;对每个关联设备进行监控,并确定每个关联设备在预设时间段内各自对应的初始负载值;将多个初始负载值中的最大值,作为当前设备标识列表所对应的候选负载值,并从多个候选负载值中筛选出目标负载值。
在一个实施例中,消息筛选模块704,还用于根据目标负载值,确定当前时段内生成的令牌的实际数量;令牌表征能对初始消息进行处理的许可权限;根据令牌的实际数量和初始消息的时间标识,从多个初始消息中筛选出目标消息。
在一个实施例中,消息筛选模块704还包括令牌生成模块7042,用于确定上一时段内的令牌的生成时间和生成数量,并判断生成时间是否已经超过第一预设时间;若已超过,则根据预设的临界负载值和目标负载值,确定当前时段内生成的令牌的实际数量;若未超过,则将上一时段内的令牌桶中剩余的令牌,作为当前时段内生成的令牌。
在一个实施例中,令牌生成模块7042,还用于判断目标负载值是否小于最低负载值;若是,则将上一时段内的令牌的生成数量和预设数量进行叠加,得到当前时段内生成的令牌的实际数量;若否,则判断目标负载值是否大于最高负载值;当目标负载值大于最高负载值时,确定生成数量和预设数量之间的差异,并将差异作为令牌的实际数量;上述方法还包括:清空上一时段内的令牌桶中的令牌,并将当前时段内生成的令牌存储至令牌桶中,得到新的令牌桶。
在一个实施例中,消息筛选模块704,还用于确定每个初始消息在状态维度队列中的排列顺序和存储时间;当从新的令牌桶中获取实际数量中的任意一个令牌时,判断排列顺序中排在首位的初始消息的存储时间是否超过了第二预设时间;若是,则将排在首位的初始消息从状态维度队列中提取出,并将提取出的初始消息作为目标消息;将排列顺序中排在首位的下一位作为新的首位,并从新的令牌桶中获取实际数量中的新的令牌;返回至判断排列顺序中排在首位的初始消息的存储时间是否超过了第二预设时间的步骤继续进行,直至遍历完所有初始消息或获取完实际数量中的所有令牌。
上述报表统计装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图8所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)、通信接口、显示单元和输入装置。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口、显示单元和输入装置通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、移动蜂窝网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种报表统计方法。该计算机设备的显示单元用于形成视觉可见的画面,可以是显示屏、投影装置或虚拟现实成像装置,显示屏可以是液晶显示屏或电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(FerroelectricRandom Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(StaticRandom Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (14)
1.一种报表统计方法,其特征在于,应用于报销系统,所述方法包括:
获取单据对应的多个初始消息;所述初始消息是在所述单据的单据状态发生变化时形成的;
确定与所述报销系统相对应的目标负载值,并根据所述目标负载值,从多个所述初始消息中筛选出目标消息;
从多个维度队列中确定与所述目标消息相对应的目标维度队列,并根据所述目标维度队列,确定所述目标消息对应的目标报表;所述多个维度队列包括日维度队列、日维度队列下一级的月维度队列、月维度队列下一级的季维度队列和季维度队列下一级的年维度队列;
统计所述单据的单据信息,并存储至所述目标报表中;
确定所述单据对应的目标数据字典,并根据所述目标数据字典,将所述目标消息存储至所述目标维度队列中;所述目标维度队列为日维度队列;
返回至确定与所述报销系统相对应的目标负载值的过程继续进行,并将所述日维度队列下一级的月维度队列,作为与所述目标消息相对应的新的目标维度队列,直至将所述目标消息存储在最后一级的年维度队列中。
2.根据权利要求1所述的方法,其特征在于,所述单据状态包括已提交。
3.根据权利要求1所述的方法,其特征在于,所述初始消息包括当前初始消息、第一初始消息和第二初始消息;所述确定所述单据对应的目标数据字典,包括:
获取目标时间段,并确定所述目标时间段内的当前初始消息、以及所述当前初始消息对应的初始数据字典;
确定所述当前初始消息的下一个第一初始消息,并通过所述第一初始消息对所述初始数据字典进行更新,得到候选数据字典;
确定所述第一初始消息的下一个第二初始消息,并将所述第二初始消息作为新的第一初始消息、将所述候选数据字典作为新的初始数据字典;
返回至通过所述第一初始消息对所述初始数据字典进行更新的步骤继续进行,直至得到所述目标时间段内的最后一个初始消息对应的候选数据字典,并将最后一个初始消息对应的候选数据字典,作为所述单据对应的目标数据字典。
4.根据权利要求3所述的方法,其特征在于,所述确定所述目标时间段内的当前初始消息、以及所述当前初始消息对应的初始数据字典,包括:
将所述单据状态在所述目标时间段内,首次发生变化时形成的初始消息作为当前初始消息;
获取空置的数据字典;所述空置的数据字典包括待生成的初始版本号、以及所述初始消息在不同维度队列中的位置所对应的待生成的索引信息;所述维度队列包括状态维度队列;
根据预设的生成算法,生成与所述当前初始消息相对应的初始版本号;
将所述当前初始消息存储至所述状态维度队列中,并确定存储至所述状态维度队列中的位置所对应的初始索引信息;
将所述初始版本号和所述初始索引信息填充至所述空置的数据字典中,得到所述当前初始消息对应的初始数据字典。
5.根据权利要求4所述的方法,其特征在于,所述第一初始消息包括时间标识;所述通过所述第一初始消息对所述初始数据字典进行更新,得到候选数据字典,包括:
根据所述生成算法和所述初始版本号,生成与所述第一初始消息相对应的候选版本号;
通过所述初始数据字典中的初始索引信息,查找所述当前初始消息在所述状态维度队列中的位置,并将所述位置上的所述当前初始消息进行删除;
将所述第一初始消息存储至所述状态维度队列中的队尾,并确定存储至所述状态维度队列中的队尾所对应的候选索引信息;
综合所述候选版本号和所述候选索引信息,得到所述第一初始消息对应的候选数据字典。
6.根据权利要求1所述的方法,其特征在于,所述目标数据字典包括目标版本号;所述目标维度队列为日维度队列;所述根据所述目标数据字典,将所述目标消息存储至所述目标维度队列中,包括:
获取目标时间段和所述目标消息所对应的实际版本号;
判断所述实际版本号是否与所述目标数据字典中的目标版本号相同,若相同,则将所述目标消息存储至所述日维度队列中的队尾;
若不相同,则判断所述目标消息是否为属于所述目标时间段的历史消息;
若所述目标消息为历史消息,则将所述目标消息继续至所述日维度队列中的队尾。
7.根据权利要求1所述的方法,其特征在于,所述报销系统包括多个关联设备;所述确定与所述报销系统相对应的目标负载值,包括:
获取多个设备标识列表,并针对多个设备标识列表中的每个设备标识列表,均确定与当前设备标识列表中的每个设备标识各自对应的关联设备;
对每个所述关联设备进行监控,并确定每个所述关联设备在预设时间段内各自对应的初始负载值;
将多个所述初始负载值中的最大值,作为所述当前设备标识列表所对应的候选负载值,并从多个所述候选负载值中筛选出目标负载值。
8.根据权利要求1所述的方法,其特征在于,所述初始消息包括时间标识;所述根据所述目标负载值,从多个所述初始消息中筛选出目标消息,包括:
根据所述目标负载值,确定当前时段内生成的令牌的实际数量;所述令牌表征能对所述初始消息进行处理的许可权限;
根据所述令牌的实际数量和所述初始消息的时间标识,从多个所述初始消息中筛选出目标消息。
9.根据权利要求8所述的方法,其特征在于,所述令牌存储至令牌桶中;所述令牌桶在对所述初始消息进行处理时提供所述令牌;所述根据所述目标负载值,确定当前时段内生成的令牌的实际数量,包括:
确定上一时段内的令牌的生成时间和生成数量,并判断所述生成时间是否已经超过第一预设时间;
若已超过,则根据预设的临界负载值和所述目标负载值,确定所述当前时段内生成的令牌的实际数量;
若未超过,则将上一时段内的所述令牌桶中剩余的令牌,作为所述当前时段内生成的令牌。
10.根据权利要求9所述的方法,其特征在于,所述临界负载值包括最低负载值和最高负载值;所述根据预设的临界负载值和所述目标负载值,确定所述当前时段内生成的令牌的实际数量,包括:
判断所述目标负载值是否小于所述最低负载值;
若是,则将上一时段内的令牌的生成数量和预设数量进行叠加,得到所述当前时段内生成的令牌的实际数量;
若否,则判断所述目标负载值是否大于所述最高负载值;
当所述目标负载值大于所述最高负载值时,确定所述生成数量和所述预设数量之间的差异,并将所述差异作为所述令牌的实际数量;
所述方法还包括:清空上一时段内的所述令牌桶中的令牌,并将所述当前时段内生成的令牌存储至令牌桶中,得到新的令牌桶。
11.根据权利要求8所述的方法,其特征在于,所述根据所述令牌的实际数量和所述初始消息的时间标识,从多个所述初始消息中筛选出目标消息,包括:
确定每个所述初始消息在状态维度队列中的排列顺序和存储时间;
当从新的令牌桶中获取所述实际数量中的任意一个令牌时,判断所述排列顺序中排在首位的所述初始消息的存储时间是否超过了第二预设时间;
若是,则将排在首位的所述初始消息从所述状态维度队列中提取出,并将提取出的所述初始消息作为目标消息;
将所述排列顺序中排在所述首位的下一位作为新的首位,并从所述新的令牌桶中获取所述实际数量中的新的令牌;
返回至判断所述排列顺序中排在首位的所述初始消息的存储时间是否超过了第二预设时间的步骤继续进行,直至遍历完所有初始消息或获取完所述实际数量中的所有令牌。
12.一种报表统计装置,其特征在于,所述装置包括:
消息获取模块,用于获取单据对应的多个初始消息;所述初始消息是在所述单据的单据状态发生变化时形成的;
消息筛选模块,用于确定与报销系统相对应的目标负载值,并根据所述目标负载值,从多个所述初始消息中筛选出目标消息;
报表确定模块,用于从多个维度队列中确定与所述目标消息相对应的目标维度队列,并根据所述目标维度队列,确定所述目标消息对应的目标报表;所述多个维度队列包括日维度队列、日维度队列下一级的月维度队列、月维度队列下一级的季维度队列和季维度队列下一级的年维度队列;统计所述单据的单据信息,并存储至所述目标报表中;确定所述单据对应的目标数据字典,并根据所述目标数据字典,将所述目标消息存储至所述目标维度队列中;所述目标维度队列为日维度队列;返回至确定与所述报销系统相对应的目标负载值的过程继续进行,并将所述日维度队列下一级的月维度队列,作为与所述目标消息相对应的新的目标维度队列,直至将所述目标消息存储在最后一级的年维度队列中。
13.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至11中任一项所述方法的步骤。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至11中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211232867.0A CN115329733B (zh) | 2022-10-10 | 2022-10-10 | 报表统计方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211232867.0A CN115329733B (zh) | 2022-10-10 | 2022-10-10 | 报表统计方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115329733A CN115329733A (zh) | 2022-11-11 |
CN115329733B true CN115329733B (zh) | 2023-03-28 |
Family
ID=83915089
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211232867.0A Active CN115329733B (zh) | 2022-10-10 | 2022-10-10 | 报表统计方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115329733B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022095736A1 (zh) * | 2020-11-05 | 2022-05-12 | 深圳壹账通智能科技有限公司 | 报表测试方法、装置、计算机设备及计算机可读存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7849113B2 (en) * | 2007-10-30 | 2010-12-07 | Oracle International Corp. | Query statistics |
CN102081757A (zh) * | 2009-11-30 | 2011-06-01 | 中国移动通信集团天津有限公司 | 一种报表制作方法及其系统 |
CN104951517A (zh) * | 2015-05-29 | 2015-09-30 | 小米科技有限责任公司 | 行为日志统计方法及装置 |
CN114003603A (zh) * | 2021-10-29 | 2022-02-01 | 平安付科技服务有限公司 | 基于大数据平台的数据导出方法、系统及存储介质 |
CN115081413A (zh) * | 2022-06-20 | 2022-09-20 | 曙光信息产业(北京)有限公司 | 一种报表生成方法、装置、系统、设备及介质 |
-
2022
- 2022-10-10 CN CN202211232867.0A patent/CN115329733B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022095736A1 (zh) * | 2020-11-05 | 2022-05-12 | 深圳壹账通智能科技有限公司 | 报表测试方法、装置、计算机设备及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115329733A (zh) | 2022-11-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110546621B (zh) | 用于数据存储的垃圾收集 | |
CN103544153A (zh) | 一种基于数据库的数据更新方法和系统 | |
US11500941B2 (en) | Systems and methods of retrospectively determining how submitted data transaction requests operate against a dynamic data structure | |
CN109978392B (zh) | 敏捷软件开发管理方法、装置、电子设备、存储介质 | |
US20210374163A1 (en) | Scanning for information according to scan objectives | |
CN111178830B (zh) | 成本的核算方法、装置、计算机设备和存储介质 | |
CN114741402A (zh) | 业务特征池的处理方法、装置、计算机设备和存储介质 | |
CN111104401A (zh) | 在基于数组和链表的集成结构中存储数据的系统和方法 | |
CN115329733B (zh) | 报表统计方法、装置、计算机设备和存储介质 | |
CN114791915B (zh) | 数据归集方法、装置、计算机设备和存储介质 | |
CN115729687A (zh) | 任务调度方法、装置、计算机设备、存储介质 | |
CN117035980A (zh) | 资源借调评估方法、装置、计算机设备和存储介质 | |
CN115619261A (zh) | 一种作业标签画像数据处理方法、装置、计算机设备 | |
CN115914363A (zh) | 消息推送方法、装置、计算机设备和存储介质 | |
JP7264731B2 (ja) | Apiプラン予測システム、及びapiプラン予測方法 | |
US20120198018A1 (en) | Securely publishing data to network service | |
CN114841791B (zh) | 预算管控方法、系统、装置、计算机设备和存储介质 | |
CN113469825A (zh) | 数据处理方法、装置、电子设备和计算机可读介质 | |
US11393050B2 (en) | Resource accommodation device, schedule management device, and resource accommodation system | |
CN116385156B (zh) | 资源分配方法、装置、计算机设备和计算机可读存储介质 | |
US11604698B2 (en) | Method and process for automatic determination of file/object value using meta-information | |
CN118227286A (zh) | 基于多方安全计算的任务分批处理方法和装置 | |
CN115907337A (zh) | 物资储备方法、系统、设备、存储介质和程序产品 | |
CN116860541A (zh) | 业务数据采集方法、装置、计算机设备和存储介质 | |
CN117573387A (zh) | 消息推送方法、装置、计算机设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |