具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,对本发明一个或多个实施例涉及的名词术语进行解释。
核算:在本文中指会计核算,是以货币为计量尺度,按照特定的规则对经济活动进行的反映和表达,就是以会计的语言和方法,对产品业务的结果进行登记和反映,其目的是为利益相关者提供有价值的信息;
账务:是指会计处理进行原始单据的收集、记载、计算等会计处理的具体事务,要求规范、准确,保证会计核算有效实施;
核算记账:按照一定的核算规则,对相应的账户进行记账处理。
首先,对本说明书一个或多个实施例的记账方法涉及的核算组件的框架进行示意性的说明。参见图1,为了支持多个核算主体的多个核算产品多个记账周期的记账,本说明书一个或多个实施例公开了一种核算组件,包括记账周期配置组件101、核算消息落地组件102、核算汇总组件103以及核算记账组件104。
其中,记账周期配置组件101用于配置核算主体对应的核算产品的记账周期;
核算消息落地组件102用于获取业务生成的核算消息,并生成核算消息表;
核算汇总组件103用于根据核算消息表生成核算主体对应的未记账的核算任务;
核算记账组件104用于对未记账的核算任务进行记账,并将记账后的核算任务的状态标记为已记账。
在本申请中,提供了一种记账方法及装置、计算设备和计算机存储介质,在下面的实施例中逐一进行详细说明。
图2是示出了根据本说明书一实施例的计算设备200的结构框图。该计算设备200的部件包括但不限于存储器210和处理器220。处理器220与存储器210通过总线230相连接,数据库250用于保存数据。
计算设备200还包括接入设备240,接入设备240使得计算设备200能够经由一个或多个网络260通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备240可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本说明书的一个实施例中,计算设备200的上述以及图2中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图2所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备200可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备200还可以是移动式或静止式的服务器。
其中,处理器220可以执行图3所示方法中的步骤。图3是示出了根据本说明书一个或多个实施例的记账方法的示意性流程图,包括步骤302至步骤306:
302、获取业务生成的核算消息,根据所述核算消息得到对应的核算参数,并根据所述核算参数生成核算消息表,其中,所述核算参数包括所述核算消息对应的核算主体。
具体地,本步骤可以由核算组件中的核算消息落地组件来执行。
更为详细地,参见图4,根据所述核算消息得到对应的核算参数,包括:
402、获取所述核算消息中携带的核算主体、核算产品、核算记账周期、记账金额、记账时间和核算消息落地时间。
404、查找所述核算消息对应的账号。
406、根据核算消息中携带的记账时间和核算消息落地时间计算所述核算消息的批次号。
需要说明的是,图3中所示的执行流程为本说明书一个或多个实施例的示意性说明。对于步骤404和406的执行顺序,也可以为并行执行步骤404和406,也可以为先执行步骤406再执行步骤404。
对于步骤406中的批次号的计算方法,包括:
1)、判断所述核算消息落地时间是否大于记账时间,若是,执行步骤2),若否,执行步骤3)。
2)、所述核算消息的批次号通过记账时间添加时间差值而获取;其中,所述时间差值通过将一天的分钟数与该核算消息对应的核算记账周期的比值进行取整,然后再加1而获得。
具体地,核算消息的批次号=记账时间+[(24*60/该主体改产品对应的记账周期)向上取整+1]。
例如:记账时间为20181001,记账周期为30,将计算得到的批次号前缀补零到四位,则最后生成的核算消息的批次号为201810010049。
需要说明的是,由于核算消息有可能会存在积压投递的情况,所以有了核算消息兜底批次的概念,所有的延迟积压的核算消息都会被归入核算消息兜底批次中,上述计算得到的核算消息的批次号实际为核算消息兜底批次号。
3)、所述核算消息的批次号通过将从当天零点到记账时间的分钟数以及从当天零点到核算消息落地时间的分钟数进行比较得到较大值,然后将所述较大值与核算消息的记账周期的比值取整而得。
具体地,核算消息的批次号=[max(从当天零点到记账时间的分钟数,从当天零点到核算消息落地时间的分钟数)/核算消息的记账周期]向上取整,前缀补零到4位。
具体地,在一个示例中,核算消息表的格式如表1所示。
表1
304、获取预存的记账周期配置表中的核算主体,获取核算消息表中与获取到的所述核算主体对应的核算消息的核算参数,并根据所述核算消息的核算参数生成对应的核算任务;其中,生成的所述核算任务的状态标记为未记账。
记账周期配置表可以由记账周期配置组件预先生成。核算周期配置组件主要是针对不同核算主体、不同产品根据不同的核算诉求配置不同的核算记账周期。对于不同的核算主体可以配置不同的记账周期,这样在核算记账阶段,就可以以不同的记账频率进行账务的处理。
记账周期配置表如表2所示。
表2
核算主体 |
核算产品 |
记账周期 |
3008 |
P1 |
5分钟 |
3009 |
P2 |
30分钟 |
SPV |
P3 |
60分钟 |
其中,步骤304由核算汇总组件以三层调度多线程并发的方式完成。核算汇总组件的三层调度架构图如图5所示。由图5可见,在生成汇总任务后,第一层对汇总任务进行分拆得到第一子汇总任务分别发送至第二层,再由第二层将第一子汇总任务进行分拆得到第二子汇总任务后分发至第三层进行执行。每一层的动作执行可以通过分发至集群机器而实现。
参见图6,步骤304包括:
602、生成汇总任务。
可选地,汇总任务可以为EC-accenter-sliceSummaryTask任务。汇总任务由第一定时任务定时触发生成。
604、获取记账周期配置表中的核算主体,基于所述核算主体对所述汇总任务进行分拆得到第一子汇总任务。
其中,本步骤可以由第一线程来执行。例如,记账周期配置表中的核算主体为3个,第一线程将汇总任务分拆得到3个第一子汇总任务,每个第一子汇总任务对应一个核算主体。
606、基于所述核算记账周期对所述第一子汇总任务进行分拆得到第二子汇总任务。
本步骤可以由第二线程来执行。例如,对应于3个第一子汇总任务,第二线程为3个,每个第二线程基于核算记账周期对所述第一子汇总任务进行分拆得到第二子汇总任务。
例如,每个核算主体分别对应有5个核算记账周期,基于核算记账周期对第一子汇总任务进行分拆,最终得到5个第二子汇总任务,如图5所示。每个第二子汇总任务对应的核算主体和核算记账周期如表3所示。
表3
608、执行所述第二子汇总任务,获取所述核算消息表中的与所述第二子汇总任务的核算主体以及核算记账周期对应的核算消息的核算参数,并根据所述核算消息的核算参数生成对应的核算任务保存于核算任务表中。
本步骤可以由第三线程来执行。根据表3,五个第二子汇总任务可以生成15个核算任务。参见表4,表4为生成的核算任务表。本说明书一个或多个实施例中的核算任务表可以为ac_tally_task_detail表。为了对核算任务的结构进行示意性的说明,表4中未全部列出15个核算任务,而是示例性地列出了3个核算任务,每个核算任务对应于一个核算主体以及一个记账周期。
表4
表4中,状态S表示该核算任务的状态为未记账。
306、获取至少一个未记账的核算任务,执行记账处理,并将记账处理后的核算任务的状态标记为已记账。
其中,步骤306由核算记账组件以三层调度多线程并发的方式完成。核算记账组件的三层调度架构图如图7所示。由图7可见,在生成记账任务后,第一层对记账任务进行分拆得到第一子记账任务分别发送至第二层,再由第二层将第一子记账任务进行分拆得到第二子记账任务后分发至第三层进行执行。每一层的动作执行可以通过分发至集群机器而实现。
参见图8,步骤306包括:
802、生成记账任务。
具体地,记账任务可以为EC-accenter-sliceTallyTask任务。记账任务由第二定时任务定时触发生成。
804、获取记账周期配置表中的核算主体,基于所述核算主体对所述记账任务进行分拆得到第一子记账任务。
其中,本步骤可以由第四线程来执行。例如,记账周期配置表中的核算主体为3个,第一线程将记账任务分拆得到3个第一子记账任务,每个第一子记账任务对应一个核算主体。
806、基于账号对所述第一子记账任务进行分拆得到第二子记账任务。
本步骤可以由第五线程来执行。例如,对应于3个第一子记账任务,第二线程为3个,每个第五线程基于账号对所述第一子记账任务进行分拆得到第二子记账任务。
例如,每个核算主体分别对应有5个账号,基于账号对第一子记账任务进行分拆,最终得到5个第二子记账任务,如图7所示。每个第二子记账任务对应的核算主体和核算记账周期如表5所示。
表5
808、执行所述第二子记账任务,获取预存的核算任务表中的与所述第二子记账任务的核算主体以及账号对应的状态为未记账的核算任务,然后对所述未记账的核算任务执行记账处理,并将所述核算任务表中的记账处理后的核算任务的状态标记为已记账。
本步骤可以由第六线程来执行。根据表5,五个第二子记账任务可以获取15个未记账的核算任务,然后执行记账处理核算任务表中的记账处理后的核算任务的状态标记为已记账。
表6所示为将核算任务标记为已记账的核算任务表。需要说明的是,表6中未全部列出15个标记为已记账的核算任务,而是示例性地列出了3个标记为已记账的核算任务,每个核算任务对应于一个核算主体以及一个账号。
表6
表6中,状态F表示该核算任务的状态为已记账。
本说明书一个或多个实施例公开的记账方法,能够获取业务生成的核算消息,根据核算消息的核算参数生成核算消息表,然后获取预存的记账周期配置表中的核算主体,获取核算消息表中与获取到的核算主体对应的核算消息的核算参数,并根据所述核算消息的核算参数生成未记账的核算任务;然后对至少一个未记账的核算任务执行记账处理,并将记账处理后的核算任务的状态标记为已记账,从而可以实现多个核算主体的记账独立完成互不影响,从而高效完成多个核算主体的核算诉求。
另外,通过本申请的记账方法无需像传统金融机构那样隔日进行记账,从而提高记账频率。
并且,对于同一个核算主体的不同产品生成的核算消息,可以配置不同的核算记账周期,从而实现差异性的记账处理。
本说明书一个或多个实施例还公开了一种记账装置,参见图9,包括:
核算消息获取模块902,被配置为获取业务生成的核算消息,根据所述核算消息得到对应的核算参数,并根据所述核算参数生成核算消息表,其中,所述核算参数包括所述核算消息对应的核算主体;
核算任务汇总模块904,被配置为获取预存的记账周期配置表中的核算主体,获取核算消息表中与获取到的所述核算主体对应的核算消息的核算参数,并根据所述核算消息的核算参数生成对应的核算任务;其中,生成的所述核算任务的状态标记为未记账;
核算任务处理模块906,被配置为获取至少一个未记账的核算任务,执行记账处理,并将记账处理后的核算任务的状态标记为已记账。
在本说明书一个或多个实施例中,参见图9,核算消息获取模块902还包括:
携带参数获取模块9022,被配置为获取所述核算消息中携带的核算主体、核算产品、核算记账周期、记账金额、记账时间和核算消息落地时间;
账号确定模块9024,被配置为查找所述核算消息对应的账号;
批次号确定模块9026,被配置为根据核算消息中携带的记账时间和核算消息落地时间计算所述核算消息的批次号。
在本说明书一个或多个实施例中,所述批次号确定模块9026包括:
判断模块,被配置为判断所述核算消息落地时间是否大于记账时间,若是,执行第一计算模块,若否,执行第二计算模块;
第一计算模块,被配置为通过记账时间添加时间差值而获取所述核算消息的批次号;所述时间差值通过将一天的分钟数与该核算消息对应的核算记账周期的比值进行取整,然后再加1而获得;
第二计算模块,被配置为通过将从当天零点到记账时间的分钟数以及从当天零点到核算消息落地时间的分钟数进行比较得到较大值,然后将所述较大值与核算消息的记账周期的比值取整而得所述核算消息的批次号。
在本说明书一个或多个实施例中,记账周期配置表包括:核算主体以及对应的核算记账周期;
参见图9,核算任务汇总模块904包括:
汇总任务生成模块9042,被配置为生成汇总任务;
第一调度模块9044,被配置为获取记账周期配置表中的核算主体,基于所述核算主体对所述汇总任务进行分拆得到第一子汇总任务;
第二调度模块9046,被配置为基于所述核算记账周期对所述第一子汇总任务进行分拆得到第二子汇总任务;
第三调度模块9048,被配置为执行所述第二子汇总任务,获取所述核算消息表中的与所述第二子汇总任务的核算主体以及核算记账周期对应的核算消息的核算参数,并根据所述核算消息的核算参数生成对应的核算任务保存于核算任务表中。
其中,汇总任务由第一定时任务定时触发生成。
在本说明书一个或多个实施例中,核算任务包括:核算主体、核算产品、记账周期、账号、批次号、记账金额和状态;
参见图9,所述核算任务处理模块906包括:
记账任务生成模块9062,被配置为生成记账任务;
第四调度模块9064,被配置为获取记账周期配置表中的核算主体,基于所述核算主体对所述记账任务进行分拆得到第一子记账任务;
第五调度模块9066,被配置为基于账号对所述第一子记账任务进行分拆得到第二子记账任务;
第六调度模块9068,被配置为执行所述第二子记账任务,获取预存的核算任务表中的与所述第二子记账任务的核算主体以及账号对应的状态为未记账的核算任务,然后对所述未记账的核算任务执行记账处理,将所述核算任务表中的记账处理后的核算任务的状态标记为已记账。
可选地,记账任务由第二定时任务定时触发生成。
本申请提供的记账装置,能够获取业务生成的核算消息,根据核算消息的核算参数生成核算消息表,然后获取预存的记账周期配置表中的核算主体,获取核算消息表中与获取到的核算主体对应的核算消息的核算参数,并根据所述核算消息的核算参数生成未记账的核算任务;然后对至少一个未记账的核算任务执行记账处理,并将记账处理后的核算任务的状态标记为已记账,从而可以实现多个核算主体的记账独立完成互不影响,从而高效完成多个核算主体的核算诉求。
上述为本说明书一个或多个实施例的一种记账装置的示意性方案。需要说明的是,该记账装置的技术方案与上述的记账方法的技术方案属于同一构思,记账装置的技术方案未详细描述的细节内容,均可以参见上述记账方法的技术方案的描述。
本说明书一个或多个实施例还提供一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述指令时实现上述记账方法的步骤。
本说明书一个或多个实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现如前所述记账方法的步骤。
上述为本说明书一个或多个实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的记账方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述记账方法的技术方案的描述。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本申请优选实施例只是用于帮助阐述本申请。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本申请的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本申请。本申请仅受权利要求书及其全部范围和等效物的限制。