基于制造技术

技术编号:39756092 阅读:7 留言:0更新日期:2023-12-17 23:55
本申请涉及数据处理技术领域,解决了现有技术不足中采购发票与进项发票是数据库中

【技术实现步骤摘要】
基于RocketMQ实现采购发票与进项发票的拆表和同步方法及装置


[0001]本申请涉及数据处理
,尤其是一种基于
RocketMQ
实现采购发票与进项发票的拆表和同步方法及装置


技术介绍

[0002]采购发票与进项发票是数据库中
invoice(
发票
)
表的同一条数据,只是在
DAO
层通过
invoice
表的
state
属性作为区分查询条件

在采购系统早期,进项发票与采购发票业务多数重合且冲突较少,同时数据量和相关业务的

[0003]但是随着采购发票业务与进项发票业务的不断深入细化,两个业务之前的冲突不断加剧,比如新增的部分类型进项发票
(
如,费用类发票
)
不需要参与采购业务数据匹配,所以该类型不属于采购发票

若沿用原有方案需查询采购发票,则需要在
DAO
层添加
invoice_type(
发票类型
)
属性

类似的情况如果继续发生,同时实现方案不做改变,那么后续在
DAO
层的代码会混乱到无法管理的程度,而依赖
DAO
层的
Service
层以及之上的其它实现代码的混乱程度可想而知


技术实现思路

[0004]本申请的目的在于克服现有技术不足中采购发票与进项发票是数据库中
invoice(
发票
)
表的同一条数据,导致随着业务的不断深入细化在
DAO
层的代码会混乱到无法管理的程度的问题,提供一种基于
RocketMQ
实现采购发票与进项发票的拆表和同步方法及装置

[0005]第一方面,提供了一种基于
RocketMQ
实现采购发票与进项发票的拆表和同步方法,包括:
[0006]在采购发票审批通过后调用
afterComplete()
方法,其中,所述
afterComplete()
方法用于集中调用在发票审批通过后执行的任务;
[0007]在所述
afterComplete()
方法中,根据采购发票创建出进项发票对象;
[0008]在所述
afterComplete()
方法中,将所述进项发票对象转换为
JSON
文本,将所述
JSON
文本插入到
MQ
消息中,并将所述消息发送出去;
[0009]接收所述消息并对进项发票进行异步同步

[0010]进一步的,在所述
afterComplete(...)
方法中,通过调用
accountPayableInvoiceService.createApInvoice DtoByInvoice(...)
方法来根据采购发票创建出进项发票对象

[0011]进一步的,在所述
afterComplete()
方法中,调用
apInvoiceEventNotifier.notify()
方法将进项发票对象通过
FastJSON
转换为
JSON
文本,将所述
JSON
文本插入到
MQ
消息中并发送

[0012]进一步的,所述接收所述消息,包括:
[0013]通过
messageConsumer.subscribe()
方法监听消息;
[0014]响应于监听到新的
MQ
消息可以消费,则调用
distribute()
方法通过消息
Message

tag
属性分别将不同
tag
的消息分配给对应的处理方法,其中,所述处理方法为
handleEvent()
方法

[0015]进一步的,所述
handleEvent()
方法用于判断进项发票是否已存在于数据库中;
[0016]响应于判断结果为是,则对已存在的进项发票进行更新;
[0017]响应于判断结果为否,则将进项发票保存至数据库

[0018]第二方面,提供了一种基于
RocketMQ
实现采购发票与进项发票的拆表和同步装置,包括:
[0019]调用模块,用于在采购发票审批通过后调用
afterComplete()
方法,其中,所述
afterComplete()
方法用于集中调用在发票审批通过后执行的任务;
[0020]创建模块,用于在所述
afterComplete()
方法中,根据采购发票创建出进项发票对象;
[0021]包装与发送模块,用于在所述
afterComplete()
方法中,将所述进项发票对象转换为
JSON
文本,将所述
JSON
文本插入到
MQ
消息中,并将所述消息发送出去;
[0022]接收与处理模块,用于接收所述消息并对进项发票进行异步同步

[0023]进一步的,所述包装与发送模块包括:
[0024]监听子模块,用于通过
messageConsumer.subscribe()
方法监听消息;
[0025]处理子模块,用于响应于监听到新的
MQ
消息可以消费,则调用
distribute()
方法通过消息
Message

tag
属性分别将不同
tag
的消息分配给对应的处理方法,其中,所述处理方法为
handleEvent()
方法

[0026]进一步的,所述
handleEvent()
方法用于判断进项发票是否已存在于数据库中;
[0027]响应于判断结果为是,则对已存在的进项发票进行更新;
[0028]响应于判断结果为否,则将进项发票保存至数据库

[0029]第三方面,提供了一种计算机可读存储介质,所述计算机可读介质存储用于设备执行的程序代码,该程序代码包括用于执行如第一方面中的任意一种实现方式中方法的步骤

[0030]第四方面,提供了一种电子设备,所述电子设备包括处理器

存储器及存储在所述存储器上并可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如第一方面中的任意一种实现方式中的方法

[本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种基于
RocketMQ
实现采购发票与进项发票的拆表和同步方法,其特征在于,包括:在采购发票审批通过后调用
afterComplete()
方法,其中,所述
afterComplete()
方法用于集中调用在发票审批通过后执行的任务;在所述
afterComplete()
方法中,根据采购发票创建出进项发票对象;在所述
afterComplete()
方法中,将所述进项发票对象转换为
JSON
文本,将所述
JSON
文本插入到
MQ
消息中,并将所述消息发送出去;接收所述消息并对进项发票进行异步同步
。2.
根据权利要求1所述的基于
RocketMQ
实现采购发票与进项发票的拆表和同步方法,其特征在于,在所述
afterComplete(...)
方法中,通过调用
accountPayableInvoiceService.createApInvoice DtoByInvoice(...)
方法来根据采购发票创建出进项发票对象
。3.
根据权利要求1所述的基于
RocketMQ
实现采购发票与进项发票的拆表和同步方法,其特征在于,在所述
afterComplete()
方法中,调用
apInvoiceEventNotifier.notify()
方法将进项发票对象通过
FastJSON
转换为
JSON
文本,将所述
JSON
文本插入到
MQ
消息中并发送
。4.
根据权利要求1所述的基于
RocketMQ
实现采购发票与进项发票的拆表和同步方法,其特征在于,所述接收所述消息,包括:通过
messageConsumer.subscribe()
方法监听消息;响应于监听到新的
MQ
消息可以消费,则调用
distribute()
方法通过消息
Message

tag
属性分别将不同
tag
的消息分配给对应的处理方法,其中,所述处理方法为
handleEvent()
方法
。5.
根据权利要求4所述的基于
RocketMQ
实现采购发票与进项发票的拆表和同步方法,其特征在于,所述

【专利技术属性】
技术研发人员:何建东叶少宁李翔魏美钟
申请(专利权)人:杭州每刻科技有限公司
类型:发明
国别省市:

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

1