基于池设计的自动核销系统及方法与流程
未命名
08-14
阅读:209
评论:0
1.本发明涉及数据处理领域,具体是一种基于池设计的自动核销系统及方法。
背景技术:
2.在企业的财务及营运业务相关的信息化系统中,通常都有需要将客户主体的业务结算信息和收付款信息进行关联,以便营运业务系统和财务系统都能跟踪结算状态。在公司初始的阶段,客户和业务量不大的情况下可以依靠人工完成这种信息关联核销操作。随着客户和业务量的增加,依靠人工会出现明显的缺点,容易出错,多人同时操作一个客户主体的信息,来一笔业务单或者收付款信息就去关联,操作频率太高,增加了工作量和人工成本且效率不高,客户多账号的情况下操作复杂等。
技术实现要素:
3.为了提高金额核销效率,本技术提供了一种基于池设计的自动核销系统及方法。
4.本发明解决上述问题所采用的技术方案是:
5.基于池设计的自动核销系统,包括:
6.应收单生成模块:用于根据业务单信息生成应收单;
7.收款单生成模块:用于根据收款信息生成收款单;
8.核销池:用于存储应收单和收款单的核销记录;
9.第一存储单元:用于获取客户主体未全部核销的应收单并存储;
10.第二存储单元:用于获取客户主体未全部核销的收款单并存储;
11.核销单元:用于根据第一存储单元及第二存储单元存储的信息进行金额核销。
12.进一步地,所述应收单及收款单在进行存储时按时间先后顺序进行存储。
13.进一步地,所述第一存储单元及第二存储单元采用双向队列。
14.进一步地,还包括通知模块,所述通知模块用于告知外部系统金额核销情况。
15.基于池设计的自动核销方法,应用于基于池设计的自动核销系统,包括:
16.步骤1、基于核销池获取未全部核销的应收单及未全部核销的收款单;
17.步骤2、金额核销:当第一存储单元与第二存储单元均不为空时,在第一存储单元中获取一个应收单并计算第一未核销金额,在第二存储单元中获取一个收款单并计算出第二未核销金额;
18.若第一未核销金额小于等于第二未核销金额,则核销金额为第一未核销金额,将核销记录写入核销池,更新当前应收单的核销状态为全部核销;若第一未核销金额等于第二未核销金额,则更新当前收款单的核销状态为全部核销;若第一未核销金额小于第二未核销金额,则更新当前收款单的核销状态为部分核销,并在下一次金额核销时首先获取该收款单;
19.若第一未核销金额大于第二未核销金额,则核销金额为第二未核销金额,将核销记录写入核销池,更新当前应收单的核销状态为部分核销并在下一次金额核销时首先获取
该应收单,更新当前收款单的核销状态为全部核销;
20.步骤3、重复步骤2直至第一存储单元为空或第二存储单元为空。
21.进一步地,当第一存储单元为双向队列qr,第二存储单元为双向队列qs时,
22.所述步骤2具体为:当qr和qs均不为空时,从队列qr和qs里面分别取出在队列头部的应收单ri和收款单si;基于核销池获取应收单ri的未核销金额hrileft及收款单si的未核销金额hsileft;
23.如果hrileft小于等于hsileft,则ri的核销金额为hrileft,si的核销金额为hrileft,将核销记录写入核销池,更新ri的核销状态为全部核销;当hrileft等于hsileft时,更新si的核销状态为全部核销;当hrileft小于hsileft时,则将si再次插入到qs的头部,并更新si的核销状态为部分核销;
24.如果hrileft大于hsileft,则ri的核销金额为hsileft,si的核销金额为hsileft,将核销记录写入核销池,更新si的核销状态为全部核销,ri的核销状态为部分核销,并将ri再次插入到qr的头部。
25.进一步地,所述步骤2还包括:将金额核销情况告知外部系统。
26.进一步地,定时进行金额核销。
27.本发明相比于现有技术具有的有益效果是:基于两个存储单元及核销池进行核销,减少了人工操作,从而提高了核销效率;存储单元采用消息对列,提高了系统的健壮稳定性,保证消息有消费者服务来消费处理,降低了消息的阻塞概率,降低了信息处理的延迟性。定时核销从而避免影响在线业务。
附图说明
28.图1为基于池设计的自动核销方法框图;
29.图2为基于池设计的自动核销方法流程图;
30.图3为定时自动核销系统架构图。
具体实施方式
31.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步的详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
32.基于池设计的自动核销系统,包括:
33.应收单生成模块:用于根据业务单信息生成应收单;业务单是由营运业务系统传递过来的信息,包含营运业务系统信息,业务编号,业务金额,客户主体id等;应收单是根据业务单生成的信息,用来隔离业务,包括业务编号,业务金额,核销状态(未核销,部分核销,全部核销),客户主体id等;
34.收款单生成模块:用于根据收款信息生成收款单;收款信息包括各种渠道下的收款信息,包括收款金额,收款账号,收款渠道(银行,微信,支付宝等)等;收款单是根据收款信息生成的信息,用来隔离财务,包括收款金额,收款账号,核销状态(未核销,部分核销,全部核销),客户主体id等;
35.核销池:用于存储应收单和收款单核销记录。池指的是能够查询和写回的储存介
质,可以是关系数据库,redis,内存map等;
36.第一存储单元:用于获取客户主体未全部核销的应收单并存储;
37.第二存储单元:用于获取客户主体未全部核销的收款单并存储;
38.核销单元:用于根据第一存储单元及第二存储单元存储的信息进行金额核销。
39.为了便于金额核销,应收单及收款单在进行存储时按时间先后顺序进行存储。
40.为了提高核销效率,所述第一存储单元及第二存储单元采用双向队列。
41.进一步地,还包括通知模块,所述通知模块用于告知外部系统金额核销情况。
42.如图1所示,基于池设计的自动核销方法,应用于基于池设计的自动核销系统,包括:
43.步骤1、基于核销池获取未全部核销的应收单及未全部核销的收款单;
44.步骤2、金额核销:当第一存储单元与第二存储单元均不为空时,在第一存储单元中获取一个应收单并计算第一未核销金额,在第二存储单元中获取一个收款单并计算出第二未核销金额;
45.若第一未核销金额小于等于第二未核销金额,则核销金额为第一未核销金额,将核销记录写入核销池,更新当前应收单的核销状态为全部核销;若第一未核销金额等于第二未核销金额,则更新当前收款单的核销状态为全部核销;若第一未核销金额小于第二未核销金额,则更新当前收款单的核销状态为部分核销,并在下一次金额核销时首先获取该收款单;
46.若第一未核销金额大于第二未核销金额,则核销金额为第二未核销金额,将核销记录写入核销池,更新当前应收单的核销状态为部分核销并在下一次金额核销时首先获取该应收单,更新当前收款单的核销状态为全部核销;
47.步骤3、重复步骤2直至第一存储单元为空或第二存储单元为空。
48.为了便于数据有序存取,提高核销效率,第一存储单元采用双向队列qr,第二存储单元采用双向队列qs,如图2所示,所述步骤2具体为:当qr和qs均不为空时,从队列qr和qs里面分别取出在队列头部的应收单ri和收款单si;基于核销池获取应收单ri的未核销金额hrileft及收款单si的未核销金额hsileft;
49.所述步骤3具体为:如果hrileft小于等于hsileft,则ri的核销金额为hrileft,si的核销金额为hrileft,将核销记录写入核销池,更新ri的核销状态为全部核销;当hrileft等于hsileft时,更新si的核销状态为全部核销;当hrileft小于hsileft时,则将si再次插入到qs的头部,并更新si的核销状态为部分核销;
50.如果hrileft大于hsileft,则ri的核销金额为hsileft,si的核销金额为hsileft,将核销记录写入核销池,更新si的核销状态为全部核销,ri的核销状态为部分核销,并将ri再次插入到qr的头部。
51.进一步地,所述步骤2还包括:将金额核销情况告知外部系统。
52.为了避免与其它事务的冲突,还可以设定核销时间,定时进行金额核销。
53.实施例
54.以应收和收款为例,在本实施例中,基于池设计的自动核销系统中设置有多个客户主体,定时任务在每天的凌晨2点启动,根据应用服务组的数量来平均分配客户主体到不同的应用服务组,如图3所示,定时任务st用于分配客户主体id到不同的核销服务组;
55.消息队列mq1和mq2主要是解耦定时任务服务和核销服务,在客户主体数量大和处理耗时长的情况下可以减轻核销服务压力,又能保证服务的稳定性和可靠性;
56.mqe也是消息队列,主要用于通知其他系统,其作用也是为了解耦。
57.每个应用服务每次消费一个客户主体执行核销:
58.从应收单池查询出该客户主体的应收单按时间先后排序并放入双向队列qr;
59.从收款单池查询出该客户主体的收款单按时间先后排序并放入双向队列qs;
60.当qr或qs为空时,客户主体的本次核销终止;
61.当qr及qs均不为空时:
62.从qr队列头部取出第一个应收单ri,从核销池中查询出ri已核销的金额hri,计算出未核销金额hrileft;
63.从qs队列头部取出第一个收款单si,从核销池中查询出si已核销的金额hsi,计算出未核销金额hsileft;
64.比较当前ri的核销金额hrileft和si的核销金额hsileft:
65.①
如果hrileft小于等于hsileft,则ri的核销金额为hrileft,si的核销金额为hrileft,将核销记录写入核销池,更新ri的核销状态为全部核销。当hrileft等于hsileft时,更新si的核销状态为全部核销;当hrileft小于hsileft时,则需要将si再次插入到qs的头部,并更新si的核销状态为部分核销。
66.②
如果hrileft大于hsileft,则ri的核销金额为hsileft,si的核销金额为hsileft,将核销记录写入核销池,更新si的核销状态为全部核销,ri的核销状态为部分核销,并将ri再次插入到qr的头部。
67.客户主体本次核销终止后,应用服务器需要推送金额核销情况信息到mq服务mqe,通过mqe将金额核销情况告知外部系统,如财务系统及营运业务系统等。
68.核销处理也可以用于应付和付款,请假和销假,预支和报销等业务核销的处理,具体处理过程与应收和收款类似,在此不再赘述。
69.核销系统是技术上采用基于微服务的架构设计的,业务处理是采用一次服务一个客户主体,这样做的优点如下:
70.1、定时服务的路由根据服务组数量平均路由,在业务量增加的时候这样可以横向拓展处理能力;
71.2、应用服务组即消息队列消费者的微服务组,能提高系统的健壮稳定性,保证消息有消费者服务来消费处理,降低消息的阻塞概率,降低信息处理的延迟性;
72.3、一个核销服务一次服务一个客户主体,这样的设计可以让核销逻辑专注于一个主体,事务处理的范围也会更小,时间更短,即使事务出现回滚也只影响该客户主体的处理,其他客户主体的核销处理不受影响;
73.4、分离的对外推送通知设计,向营运业务系统和财务系统推送信息使用mqe,脱离核销逻辑处理以保障核销处理单一、完整、高效;
74.5、定时核销而非实时的核销设计,实时核销当业务量大时核销频率很高将影响在线业务;如果是单向核销,在核销失败时就再也不能发起核销。定时核销选择在在线业务少的凌晨处理,核销处理的是客户主体的当前全量核销,即使本次核销处理失败,更正之后也可以在下次定时启动后处理。
技术特征:
1.基于池设计的自动核销系统,其特征在于,包括:应收单生成模块:用于根据业务单信息生成应收单;收款单生成模块:用于根据收款信息生成收款单;核销池:用于存储应收单和收款单的核销记录;第一存储单元:用于获取客户主体未全部核销的应收单并存储;第二存储单元:用于获取客户主体未全部核销的收款单并存储;核销单元:用于根据第一存储单元及第二存储单元存储的信息进行金额核销。2.根据权利要求1所述的基于池设计的自动核销系统,其特征在于,所述应收单及收款单在进行存储时按时间先后顺序进行存储。3.根据权利要求2所述的基于池设计的自动核销系统,其特征在于,所述第一存储单元及第二存储单元采用双向队列。4.根据权利要求1-3任意一项所述的基于池设计的自动核销系统,其特征在于,还包括通知模块,所述通知模块用于告知外部系统金额核销情况。5.基于池设计的自动核销方法,应用于权利要求1-4任意一项所述的基于池设计的自动核销系统,其特征在于,包括:步骤1、基于核销池获取未全部核销的应收单及未全部核销的收款单;步骤2、金额核销:当第一存储单元与第二存储单元均不为空时,在第一存储单元中获取一个应收单并计算第一未核销金额,在第二存储单元中获取一个收款单并计算出第二未核销金额;若第一未核销金额小于等于第二未核销金额,则核销金额为第一未核销金额,将核销记录写入核销池,更新当前应收单的核销状态为全部核销;若第一未核销金额等于第二未核销金额,则更新当前收款单的核销状态为全部核销;若第一未核销金额小于第二未核销金额,则更新当前收款单的核销状态为部分核销,并在下一次金额核销时首先获取该收款单;若第一未核销金额大于第二未核销金额,则核销金额为第二未核销金额,将核销记录写入核销池,更新当前应收单的核销状态为部分核销并在下一次金额核销时首先获取该应收单,更新当前收款单的核销状态为全部核销;步骤3、重复步骤2直至第一存储单元为空或第二存储单元为空。6.根据权利要求5所述的基于池设计的自动核销方法,其特征在于,当第一存储单元为双向队列qr,第二存储单元为双向队列qs时,所述步骤2具体为:当qr和qs均不为空时,从队列qr和qs里面分别取出在队列头部的应收单ri和收款单si;基于核销池获取应收单ri的未核销金额hrileft及收款单si的未核销金额hsileft;如果hrileft小于等于hsileft,则ri的核销金额为hrileft,si的核销金额为hrileft,将核销记录写入核销池,更新ri的核销状态为全部核销;当hrileft等于hsileft时,更新si的核销状态为全部核销;当hrileft小于hsileft时,则将si再次插入到qs的头部,并更新si的核销状态为部分核销;如果hrileft大于hsileft,则ri的核销金额为hsileft,si的核销金额为hsileft,将核销记录写入核销池,更新si的核销状态为全部核销,ri的核销状态为部分核销,并将ri再次
插入到qr的头部。7.根据权利要求5所述的基于池设计的自动核销方法,其特征在于,所述步骤2还包括:将金额核销情况告知外部系统。8.根据权利要求5-7任意一项所述的基于池设计的自动核销方法,其特征在于,定时进行金额核销。
技术总结
本发明涉及数据处理领域,为了提高金额核销效率,提供了基于池设计的自动核销系统,包括:应收单生成模块;收款单生成模块;核销池;第一存储单元;第二存储单元;核销单元。基于池设计的自动核销方法,包括:1、获取未全部核销的应收单及未全部核销的收款单;2、计算第一未核销金额及第二未核销金额,并进行金额核销;步骤3、重复步骤2直至第一存储单元为空或第二存储单元为空。采用上述方式提高了金额核销效率。率。率。
技术研发人员:黄阳 潘党威 王昆
受保护的技术使用者:成都长虹网络科技有限责任公司
技术研发日:2023.06.06
技术公布日:2023/8/13
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
