一种生成凭证号的方法及系统技术方案

技术编号:32971352 阅读:26 留言:0更新日期:2022-04-09 11:38
本申请实施例提供了一种生成凭证号的方法及系统,用于在高并发场景下,保证每个凭证所获取的凭证号的唯一性。本申请实施例方法包括:获取多个并行来源的并行凭证,其中,每个凭证携带各自的凭证号;将所述并行凭证发送至伺服传送带,以使得所述伺服传送带将所述并行凭证串行化,生成串行凭证;从所述串行凭证中取出预设数量的多个凭证,利用整合器将所述多个凭证整合为一个处理集合;判断所述处理集合中每个凭证的凭证号与数据库中已有的凭证号是否重复;若是,则获取与已有凭证号重复的第一凭证;调用可用凭证号生成算法,为所述第一凭证生成与已有凭证号非重复的第一凭证号。证生成与已有凭证号非重复的第一凭证号。证生成与已有凭证号非重复的第一凭证号。

【技术实现步骤摘要】
一种生成凭证号的方法及系统


[0001]本申请涉及数据数量
,尤其涉及一种生成凭证号的方法及系统。

技术介绍

[0002]现有的ERP系统在为已有的凭证生成凭证号时,一般采用如下的方法进行:
[0003]事先建立一个可用凭证号表,称为号码池,凭证保存时,直接从号码池中取第一个号码作为凭证号使用。号码池中的号码由后台程序维护,因此,凭证号的唯一性和连续性完全由该维护程序来决定。维护程序需要预备一定量的凭证号在号码池中,并在号码被使用后及时从池中删除,当有凭证被删除或凭证号被修改时要及时回收凭证号到号码池。
[0004]但上述方法对维护程序提出了很高的要求,它必须确保号码池中号码能够实时且准确的反映当前凭证号的实际使用情况,且上述方法在高并发场景下,号码池容易更新不及时,从而导致取到重复号码。

技术实现思路

[0005]本申请实施例提供了一种生成凭证号的方法及系统,用于在高并发场景下,保证每个凭证所获取的凭证号的唯一性。
[0006]本申请实施例第一方面提供了一种生成凭证号的方法,包括:
[0007]获取多个并行来源的并行凭证,其中,每个凭证携带各自的凭证号;
[0008]将所述并行凭证发送至伺服传送带,以使得所述伺服传送带将所述并行凭证串行化,生成串行凭证;
[0009]从所述串行凭证中取出预设数量的多个凭证,利用整合器将所述多个凭证整合为一个处理集合;
[0010]判断所述处理集合中每个凭证的凭证号与数据库中已有的凭证号是否重复;
[0011]若是,则获取与已有凭证号重复的第一凭证;
[0012]调用可用凭证号生成算法,为所述第一凭证生成与已有凭证号非重复的第一凭证号。
[0013]优选的,在所述获取与已有凭证号重复的第一凭证之后,在所述调用可用凭证号生成算法,为所述第一凭证生成与已有凭证号非重复的第一凭证号之前,所述方法还包括:
[0014]判断所述处理集合中的凭证号是否同时被多个服务器处理,其中每个服务器只存在一个凭证号处理器实例;
[0015]若是,则启动数据库锁,以对所述串行凭证所在的数据文件执行锁定操作,以使得所述串行凭证的凭证号同一时间只被一个服务器处理。
[0016]优选的,在所述启动数据库锁之后,在所述调用可用凭证号生成算法,为所述第一凭证生成与已有凭证号非重复的第一凭证号之前,所述方法还包括:
[0017]判断所述第一凭证的凭证号所在的区分名目是否相同,其中,所述区分名目包括所述第一凭证所在的数据文件、所述第一凭证隶属时间区间和所述第一凭证的类别;
[0018]若否,则将所述第一凭证按照区分名目执行分组,以将所述第一凭证划分为至少两个独立小组,其中,所述至少两个独立小组中的凭证号可以重复。
[0019]优选的,所述调用可用凭证号生成算法,为所述第一凭证生成与已有凭证号非重复的第一凭证号,包括:
[0020]调用所述可用凭证号生成算法和断号生成算法,为每个独立小组中的第一凭证生成与已有凭证号连续且非重复的第一凭证号。
[0021]优选的,所述方法还包括:
[0022]将所述串行凭证中与数据库中已有凭证号非重复的凭证号和所述第一凭证号更新至所述数据库中。
[0023]优选的,所述方法还包括:
[0024]判断所述串行凭证所在的子线程是否需要通知父线程;
[0025]若是,则将所述串行凭证中与数据库中已有凭证号非重复的凭证号和所述第一凭证号通知所述父线程。
[0026]优选的,所述伺服传送带包括:循环语句和队列,或循环语句和列表,或循环语句和数组集合。
[0027]本申请实施例第二方面提供了一种生成凭证号的系统,包括:
[0028]获取单元,用于获取多个并行外部来源的并行凭证,其中,每个凭证携带各自的凭证号;
[0029]串行单元,用于将所述并行凭证发送至伺服传送带,以使得所述伺服传送带将所述并行凭证串行化,生成串行凭证;
[0030]整合单元,用于从所述串行凭证中取出预设数量的多个凭证,利用整合器将所述多个凭证整合为一个处理集合;
[0031]判重单元,用于判断所述处理集合中每个凭证的凭证号与数据库中已有的凭证号是否重复;
[0032]所述获取单元,还用于在所述处理集合中每个凭证的凭证号与数据库中已有的凭证号重复时,则获取与已有凭证号重复的第一凭证;
[0033]生成单元,用于调用可用凭证号生成算法,为所述第一凭证生成与已有凭证号非重复的第一凭证号。
[0034]优选的,所述系统还包括:
[0035]判断单元,用于在所述获取与已有凭证号重复的第一凭证之后,在所述调用可用凭证号生成算法,为所述第一凭证生成与已有凭证号非重复的第一凭证号之前,判断处理集合的凭证号是否同时被多个服务器处理,其中每个服务器只存在一个凭证号处理器实例;
[0036]启动单元,用于在所述串行凭证的凭证号同时被多个服务器处理时,启动数据库锁,以对所述串行凭证所在的数据文件数据文件执行锁定操作,以使得所述串行凭证的凭证号同一时间只被一个服务器处理。
[0037]优选的,所述判断单元还用于:
[0038]在启动数据库锁之后,在调用可用凭证号生成算法,为所述第一凭证生成与已有凭证号非重复的第一凭证号之前,判断所述第一凭证的凭证号所在的区分名目是否相同,
其中,所述区分名目包括所述第一凭证所在的数据文件、所述第一凭证隶属的时间区间和所述第一凭证的类别;
[0039]所述系统还包括:
[0040]分组单元,用于在第一凭证的凭证号所在的区分名目不同时,将所述第一凭证按照区别名目执行分组,以将所述第一凭证划分为至少两个独立小组,其中,所述至少两个独立小组中的凭证号可以重复。
[0041]优选的,所述生成单元具体用于:
[0042]调用所述可用凭证号生成算法和断号生成算法,为每个独立小组中的第一凭证生成与已有凭证号连续且非重复的第一凭证号。
[0043]优选的,所述系统还包括:
[0044]存储单元,用于将所述串行凭证中与数据库中已有凭证号非重复的凭证号和所述第一凭证号更新至所述数据库中。
[0045]优选的,所述判断单元还用于:
[0046]判断所述串行凭证所在的子线程是否需要通知父线程;
[0047]所述系统还包括:
[0048]通知单元,用于在所述串行凭证所在的子线程需要通知父线程时,将所述串行凭证中与数据库中已有凭证号非重复的凭证号和所述第一凭证号通知所述父线程。
[0049]优选的,所述伺服传送带包括:循环语句和队列,或循环语句和列表,或循环语句和数组集合。
[0050]本申请实施例第三方面提供了一种计算机装置,包括处理器,所述处理器在执行存储于存储器上的计算机程序时,用于实现本申请实施例第一方面所述的生成凭证号的方法。
[0051]本申请实施例第四方面提供了一种计本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种生成凭证号的方法,其特征在于,包括:获取多个并行来源的并行凭证,其中,每个凭证携带各自的凭证号;将所述并行凭证发送至伺服传送带,以使得所述伺服传送带将所述并行凭证串行化,生成串行凭证;从所述串行凭证中取出预设数量的多个凭证,利用整合器将所述多个凭证整合为一个处理集合;判断所述处理集合中每个凭证的凭证号与数据库中已有的凭证号是否重复;若是,则获取与已有凭证号重复的第一凭证;调用可用凭证号生成算法,为所述第一凭证生成与已有凭证号非重复的第一凭证号。2.根据权利要求1所述的方法,其特征在于,在所述获取与已有凭证号重复的第一凭证之后,在所述调用可用凭证号生成算法,为所述第一凭证生成与已有凭证号非重复的第一凭证号之前,所述方法还包括:判断所述处理集合中的凭证号是否同时被多个服务器处理,其中每个服务器只存在一个凭证号处理器实例;若是,则启动数据库锁,以对所述串行凭证所在的数据文件执行锁定操作,以使得所述串行凭证的凭证号同一时间只被一个服务器处理。3.根据权利要求2所述的方法,其特征在于,在所述启动数据库锁之后,在所述调用可用凭证号生成算法,为所述第一凭证生成与已有凭证号非重复的第一凭证号之前,所述方法还包括:判断所述第一凭证所在的区分名目是否相同,其中,所述区分名目包括所述第一凭证所在的数据文件、所述第一凭证隶属的时间区间和所述第一凭证的类别;若否,则将所述第一凭证按照所述区分名目执行分组,以将所述第一凭证划分为至少两个独立小组,其中,所述至少两个独立小组中的凭证号可以重复。4.根据权利要求3所述的方法,其特征在于,所述调用可用凭证号生成算法,为所述第一凭证生成与已有凭证号非重复的第一凭证号,包括:调用所述可用凭证号生成算法和断号生成算法,为每...

【专利技术属性】
技术研发人员:尹科峰刘晓辉王志远
申请(专利权)人:金蝶云科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1