一种报表导出方法和装置与流程

文档序号:32802879发布日期:2023-01-04 00:08阅读:20来源:国知局
一种报表导出方法和装置与流程

1.本技术涉及报表导出技术领域,特别是涉及一种报表导出方法和装置。


背景技术:

2.随着互联网的快速发展,业务系统的访问量和数据量随着时间的推移越来越大,而报表数据导出是一个很常见的业务需求。
3.目前,通过同步导出方式进行报表导出,同步导出是指在接收到来自外部业务系统的报表导出请求后,对报表导出请求所请求的报表数据进行导出,导出完毕后返回响应数据,以通知外部业务系统获取导出的报表数据。
4.正常情况下,同步导出可以满足我们大部分的报表导出需求,但是对于数据量大、业务拼接复杂的系统来说,大数量的报表导出需要耗费大量的时间,仍采用同步导出方式将导致导出超时。


技术实现要素:

5.有鉴于此,本技术提供了一种报表导出方法和装置,用于解决现有技术存在的导出超时的问题,其技术方案如下:
6.一种报表导出方法,包括:
7.获取来自外部业务系统的报表导出请求,其中,报表导出请求用于请求导出目标报表数据;
8.响应报表导出请求,生成异步任务和表征异步任务未开始的第一导出结果,并将第一导出结果发送至外部业务系统;
9.将异步任务推送至消息队列,基于消息队列中的异步任务将目标报表数据导出;
10.在目标报表数据导出完成后,生成表征异步任务导出完成的第二导出结果,并将第二导出结果发送至外部业务系统,以通知外部业务系统获取导出的目标报表数据。
11.可选的,响应报表导出请求,生成异步任务和表征异步任务未开始的第一导出结果,包括:
12.对报表导出请求包含的请求参数字符串进行正确性校验,其中,请求参数字符串是指用于筛选目标报表数据的字段组成的字符串,正确性校验用于校验目标报表数据是否为发起报表导出请求的租户的报表数据;
13.在校验通过后,生成异步任务和表征异步任务未开始的第一导出结果。
14.可选的,生成异步任务和表征异步任务未开始的第一导出结果,包括:
15.生成异步任务;
16.从报表导出请求包含的请求参数字符串中解析出请求时间、业务场景编码和租户数据,并根据解析出的请求时间、业务场景编码和租户数据,生成唯一标识异步任务的主键信息,其中,请求时间是指报表导出请求的发送时间,业务场景编码是指目标报表数据所在的业务场景的编码,租户数据是指外部业务系统的使用用户的数据;
17.将异步任务对应的异步状态确定为未开始,根据主键信息和表征异步任务未开始的异步状态,生成第一导出结果。
18.可选的,将异步任务推送至消息队列,基于消息队列中的异步任务将目标报表数据导出,包括:
19.将异步任务推送至第一消息队列,并通过第二消息队列监听第一消息队列中是否存在异步任务;
20.在第二消息队列监听到第一消息队列中存在异步任务时,将目标报表数据导出至预设的文件系统。
21.可选的,将目标报表数据导出至预设的文件系统,包括:
22.将目标报表数据组装为预设格式的报表文件;
23.将报表文件导出至文件系统。
24.可选的,在目标报表数据导出完成后,生成表征异步任务导出完成的第二导出结果,包括:
25.确定报表文件在文件系统中的地址,将确定的地址作为文件下载地址;
26.将异步任务对应的异步状态确定为导出完成,并根据文件下载地址和表征异步任务导出完成的异步状态,生成第二导出结果。
27.可选的,还包括:
28.在第二消息队列监听到第一消息队列中存在异步任务时,将异步任务对应的异步状态确定为执行中。
29.可选的,还包括:
30.将异步任务相关的信息保存至预设的异步任务表,其中,异步任务相关的信息中包括请求时间、业务场景编码、租户数据和异步状态;
31.在向外部业务系统发送第一导出结果后,接收外部业务系统发送的导出查询请求,从导出查询请求中解析出主键信息;
32.基于解析出的主键信息,从异步任务表中查询异步状态,并将查询到的异步状态反馈给外部业务系统。
33.可选的,异步任务相关的信息中还包括以下信息中的一种或多种:文件下载地址、目标报表数据的导出完成时间、请求参数字符串、主键信息和备注信息,其中,备注信息用于描述报表数据的导出失败原因。
34.一种报表导出装置,包括:
35.报表导出请求获取模块,用于获取来自外部业务系统的报表导出请求,其中,报表导出请求用于请求导出目标报表数据;
36.异步任务生成模块,用于响应报表导出请求,生成异步任务和表征异步任务未开始的第一导出结果,并将第一导出结果发送至外部业务系统;
37.目标报表数据导出模块,用于将异步任务推送至消息队列,基于消息队列中的异步任务将目标报表数据导出;
38.第二导出结果推送模块,用于在目标报表数据导出完成后,生成表征异步任务导出完成的第二导出结果,并将第二导出结果发送至外部业务系统,以通知外部业务系统获取导出的目标报表数据。
39.经由上述的技术方案可知,本技术提供的报表导出方法,首先获取来自外部业务系统的报表导出请求,响应报表导出请求,生成异步任务和表征异步任务未开始的第一导出结果,并将第一导出结果发送至外部业务系统,然后将异步任务推送至消息队列,基于消息队列中的异步任务将目标报表数据导出,最后在目标报表数据导出完成后,生成表征异步任务导出完成的第二导出结果,并将第二导出结果发送至外部业务系统,以通知外部业务系统获取导出的目标报表数据。本技术在接收到报表导出请求时能够及时响应并反馈第一导出结果,同时会生成异步任务并推送至消息队列,以基于消息队列中的异步任务进行报表导出,在导出完成后再通知外部业务系统及时获取导出完成的目标报表数据,避免了出现导出超时的情况。
附图说明
40.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
41.图1为本技术实施例提供的报表导出方法的流程示意图;
42.图2为本技术实施例提供的报表导出装置的结构示意图;
43.图3为本技术实施例提供的报表导出设备的硬件结构框图。
具体实施方式
44.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
45.为了便于对本技术提供的报表导出方法进行说明,现将本技术应用的相关数据进行解释。
46.微服务:微服务是指开发一个单个小型的但有业务功能的服务,每个服务都有自己的处理和轻量通讯机制,可以部署在单个或多个服务器上。微服务也指一种种松耦合的、有一定的有界上下文的面向服务架构。也就是说,如果每个服务都要同时修改,那么它们就不是微服务,因为它们紧耦合在一起;如果你需要掌握一个服务太多的上下文场景使用条件,那么它就是一个有上下文边界的服务,这个定义来自ddd领域驱动设计。
47.异步:异步是一种通讯方式,对设备需求简单。我们的pc机提供的标准通信接口都是异步的。异步双方不需要共同的时钟,也就是接收方不知道发送方什么时候发送,所以在发送的信息中就要有提示接收方开始接收的信息,如开始位,同时在结束时有停止位。异步的另外一种含义是计算机多线程的异步处理。与同步处理相对,异步处理不用阻塞当前线程来等待处理完成,而是允许后续操作,直至其它线程将处理完成,并回调通知此线程。
48.spring boot:spring boot是由pivotal团队提供的全新框架,其设计目的是用来简化新spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。
49.消息队列:消息队列(message queue,mq)是一种应用间的通信方式,消息发送后可以立即返回,由消息系统来确保消息的可靠传递。消息发布者只管把消息发布到mq中而不用管谁来取,消息使用者只管从mq中取消息而不管是谁发布的,这样发布者和使用者都不用知道对方的存在。
50.mysql:mysql是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
51.现有技术中,由于大数量报表数据导出需要耗费大量的时间,使得同步导出方式不能在报表导出请求的响应时间内接收到响应数据,导致导出超时,外部业务系统无法获取到所请求的报表数据。
52.鉴于同步导出方式存在的问题,本案发明人进行了深入研究,最终提出了一种报表导出方法,该报表导出方法为一种异步导出方式,其使得报表导出线程在后台执行,没有过长的等待时间,外部业务系统便可在报表导出请求的响应时间内获取到表征异步任务未开始的第一导出结果,在导出完成后还会获取到表征异步任务导出完成的第二导出结果,基于第一导出结果和第二导出结果可以获取到所请求的报表数据。
53.本技术提供的报表导出方法可应用于能够存储和处理报表数据的报表系统,可选的,该报表系统可以为spring boot微服务系统,可选的,该spring boot微服务系统可以是在支持异步导出数据的系统添加微服务得到,或者是在支持微服务的系统添加异步导出数据功能得到。接下来通过下述实施例对本技术提供的报表导出方法进行详细介绍。
54.请参阅图1,示出了本技术实施例提供的报表导出方法的流程示意图,该报表导出方法可以包括:
55.步骤s101、获取来自外部业务系统的报表导出请求。
56.具体的,外部业务系统是指租户使用的业务系统。以spring boot微服务系统为例,当租户需要导出自己的目标报表数据时,可以通过外部业务系统基于能够筛选出目标报表数据的字段组装报表导出请求,并通过外部业务系统将报表导出请求发送至spring boot微服务系统的api对外接口。
57.那么,spring boot微服务系统的api对外接口可以获取报表导出请求,在本步骤中,报表导出请求用于请求导出目标报表数据。
58.可选的,目标报表数据可以为大数量报表数据,也可以为小数量报表数据,也就是说,本技术提供的异步导出方案可以适用于大数量报表数据的导出场景,也可以适用于小数量报表数据的导出场景。这里,“大数据量”和“小数据量”是相对于报表数据的处理时间与请求响应时间的比较大小而言的,若一报表数据的处理时间大于请求响应时间,则本技术将该报表数据定义为大数据量报表数据,反之,若一报表数据的处理时间小于或等于请求响应时间,则本技术将该报表数据定义为小数据量报表数据。
59.可选的,报表导出请求为httpclient请求。
60.步骤s102、响应报表导出请求,生成异步任务和表征异步任务未开始的第一导出结果,并将第一导出结果发送至外部业务系统。
61.具体的,在接收到报表导出请求时,本步骤会针对报表导出请求做出响应,具体的,所做出的响应包括:生成报表导出请求对应的异步任务和生成表征异步任务未开始的第一导出结果,并将第一导出结果发送至外部业务系统。
62.由于本技术能够对报表导出请求做出响应,并将响应数据即第一导出结果发送至外部业务系统,使得外部业务系统能够基于接收到的第一导出结果,及时确定出报表系统已经接收到报表导出请求并开始导出所需要的目标报表数据,外部业务系统不需要等待很长的时间就可以接收到第一导出结果,对于外部业务系统而言更友好。
63.步骤s103、将异步任务推送至消息队列,基于消息队列中的异步任务将目标报表数据导出。
64.本步骤通过将异步任务推送至消息队列,使得目标报表数据可以实现异步导出。可选的,消息队列为rabbitmq消息队列,rabbitmq是实现amqp(高级消息队列协议)的开源消息中间件,可以用于大型软件系统各个模块之间的高效通信。
65.步骤s104、在目标报表数据导出完成后,生成表征异步任务导出完成的第二导出结果,并将第二导出结果发送至外部业务系统,以通知外部业务系统获取导出的目标报表数据。
66.在本步骤中,目标报表数据导出完成后,可以将表征异步任务导出完成的第二导出结果反馈至外部业务系统,从而外部业务系统可以基于第一导出结果和第二导出结果获取到所请求导出的目标报表数据。
67.需要说明的是,本技术不对上述步骤s101~步骤s104的先后顺序进行限制,只要能够实现正常的异步导出即可,例如,步骤s102生成第一导出结果的过程也可以在步骤s103将异步任务推送至消息队列之后进行,还可以两个过程同步进行。
68.本技术提供的报表导出方法,首先获取来自外部业务系统的报表导出请求,响应报表导出请求,生成异步任务和表征异步任务未开始的第一导出结果,并将第一导出结果发送至外部业务系统,然后将异步任务推送至消息队列,基于消息队列中的异步任务将目标报表数据导出,最后在目标报表数据导出完成后,生成表征异步任务导出完成的第二导出结果,并将第二导出结果发送至外部业务系统,以通知外部业务系统获取导出的目标报表数据。本技术在接收到报表导出请求时能够及时响应并反馈第一导出结果,同时会生成异步任务并推送至消息队列,以基于消息队列中的异步任务进行报表导出,在导出完成后再通知外部业务系统及时获取导出完成的目标报表数据,避免了出现导出超时的情况。
69.由此,本技术能够解决导出数据的超时问题,并且在大数量的情况下能够保证导出操作的正常执行,不会影响其他业务和操作。
70.本技术的一个实施例,对“步骤s102、响应报表导出请求,生成异步任务和表征异步任务未开始的第一导出结果”的过程进行介绍。
71.可选的,“步骤s102、响应报表导出请求,生成异步任务和表征异步任务未开始的第一导出结果”的过程可以包括:
72.a1、对报表导出请求包含的请求参数字符串进行正确性校验。
73.具体的,报表导出请求中包含请求参数字符串,该请求参数字符串是指用于筛选目标报表数据的字段组成的字符串,例如请求参数字符串可以为“导出a租户(可选的,这里的租户可以为供应商)的状态为有效的品牌报表数据”。
74.应当理解,租户只能导出自己的报表数据,而不能导出其他租户的报表数据。为了避免一租户导出其他租户的报表数据,可以在对报表导出请求包含的请求参数字符串进行正确性校验,以校验所请求的目标报表数据是否为发起报表导出请求的租户的报表数据。
75.可选的,本步骤的正确性校验包括必填项校验和枚举项校验,这里,必填项是指导出报表数据必不可少的字段,枚举项是指用于对必填项下筛选出的报表数据进一步筛选的字段。
76.例如,必填项可以为租户数据和业务场景编码,租户数据是指外部业务系统的使用用户的数据,例如a供应商、b供应商等,业务场景编码是指目标报表数据所在的业务场景的编码,例如品牌导出编码、品类导出编码等,枚举项是筛选条件中可能有状态限制,例如,品牌状态为有效,商品状态为已发布等。
77.a2、在校验通过后,生成异步任务和表征异步任务未开始的第一导出结果。
78.可选的,本步骤的过程可以包括:
79.a21、生成异步任务。
80.a22、从报表导出请求包含的请求参数字符串中解析出请求时间、业务场景编码和租户数据,并根据解析出的请求时间、业务场景编码和租户数据,生成唯一标识异步任务的主键信息。
81.其中,请求时间是指报表导出请求的发送时间,业务场景编码是指目标报表数据所在的业务场景的编码,租户数据是指外部业务系统的使用用户的数据。
82.具体的,本步骤首先从报表导出请求中解析出请求参数字符串,然后再对请求参数字符串进一步解析,得到请求时间、业务场景编码和租户数据,然后再根据请求时间、业务场景编码和租户数据,生成能够唯一标识异步任务的主键信息,该主键信息可以作为数据库、消息队列、报表系统与外部业务系统来回交互的凭证。
83.a23、将异步任务对应的异步状态确定为未开始,根据主键信息和表征异步任务未开始的异步状态,生成第一导出结果。
84.为了使外部业务系统可以及时获知导出情况,可以设置异步任务对应的异步状态。在本步骤中,还未开始导出操作,因此可以将异步任务对应的异步状态初始化为未开始,并根据主键信息和表征异步任务未开始的异步状态,生成第一导出结果。
85.本实施例能够生成包含主键信息和异步状态(未开始)的第一导出结果,并在请求响应时间内将第一导出结果反馈至外部业务系统,使得外部业务系统可以及时获知导出情况,并能够得到所请求的异步任务的主键信息,从而后续基于主键信息和第二导出结果,可以在导出完成后及时获取到导出的目标报表数据。
86.以下的一个实施例,对前述“步骤s103、将异步任务推送至消息队列,基于消息队列中的异步任务将目标报表数据导出”的过程进行说明。
87.可选的,本技术提供的报表导出方法执行异步导出的过程可以基于两类消息队列实现,第一类消息队列用于传输异步任务(外部业务系统可能会发送多个报表导出请求,由此会生成多个异步任务,该多个异步任务在第一类消息队列中排队传输),第二类消息队列用于监听第一类消息队列中的异步任务。为便于本实施例介绍步骤s103,将第一类消息队列定义为第一消息队列,将第二类消息队列定义为第二消息队列。
88.可选的,第二消息队列包括多个消息队列,该多个消息队列中的不同消息队列用于监听不同的导出业务场景。
89.在此基础上,“步骤s103、将异步任务推送至消息队列,基于消息队列中的异步任务将目标报表数据导出”的过程可以包括:
90.b1、将异步任务推送至第一消息队列,并通过第二消息队列监听第一消息队列中是否存在异步任务。
91.本步骤中的第二消息队列具体是指a22解析出的业务场景编码对应的消息队列,该第二消息队列可以监听第一消息队列中是否存在匹配的异步任务。
92.b2、在第二消息队列监听到第一消息队列中存在异步任务时,将目标报表数据导出至预设的文件系统。
93.具体的,在a22解析出的业务场景编码对应的消息队列监听到第一消息队列中存在匹配的异步任务时,可以执行导出任务,将目标报表数据导出至预设的文件系统。
94.可选的,“将目标报表数据导出至预设的文件系统”的过程可以包括:将目标报表数据组装为预设格式的报表文件,并将报表文件导出至文件系统。
95.可选的,预设格式为excel、json、csv等格式。由于excel格式便于用户查看和分析,优选的,本步骤将目标报表数据使用excel进行组装。
96.可选的,预设的文件系统可以为分布式文件系统,例如fastdfs、hdfs等。
97.在一可选实施例中,本步骤在第二消息队列监听到第一消息队列中存在异步任务时,可以将异步任务对应的异步状态更新为执行中。
98.继上文描述,本技术的另一个实施例,对前述“步骤s104、在目标报表数据导出完成后,生成表征异步任务导出完成的第二导出结果”的过程进行介绍。
99.可选的,“步骤s104、在目标报表数据导出完成后,生成表征异步任务导出完成的第二导出结果”的过程可以包括:
100.c1、确定报表文件在文件系统中的地址,将确定的地址作为文件下载地址。
101.c2、将异步任务对应的异步状态确定为导出完成,并根据文件下载地址和表征异步任务导出完成的异步状态,生成第二导出结果。
102.具体的,本步骤可以将异步任务对应的异步状态更新为导出完成,并生成包含文件下载地址和异步状态(导出完成)的第二导出结果。
103.本实施例可以将第二导出结果反馈至外部业务系统,从而外部业务系统可以基于第一导出结果中包含的主键信息,以及第二导出结果中包含的文件下载地址,从文件下载地址指示的位置处获取主键信息对应的目标报表数据。
104.综上,考虑到大数据量的报表数据导出不能把文件流给外部业务系统,请求是有长度限制的,数据量太大会有数据丢失,本技术将目标报表数据导出到文件系统中,并向外部业务系统反馈文件下载地址,使外部业务系统通过文件下载地址获取目标报表数据。这种异步导出方式既能够在请求响应时间内反馈第一导出结果,又能在导出完成后反馈第二导出结果,使得外部业务系统能够在导出完成后及时获取导出的目标报表数据,解决了导出超时的问题,且能大大地提高接口请求处理速度,提高吞吐量,提升系统性能。
105.在一种可能的实现方式中,考虑到在目标报表数据的数据量大时,导出数据需要耗费大量的时间,那么外部业务系统可能有查询导出情况的需求。
106.为了使得外部业务系统能够查询到导出情况,可以在数据库mysql中生成异步任务表,并将异步任务相关的信息保存至预设的异步任务表,以便外部业务系统查看。
107.可选的,异步任务相关的信息至少包括请求时间、业务场景编码、租户数据和异步状态。可选的,异步任务相关的信息还包括以下信息中的一种或多种:文件下载地址、目标
报表数据的导出完成时间、请求参数字符串、主键信息和备注信息,其中,备注信息至少用于描述报表数据的导出失败原因。
108.例如,可选的,在接收到外部业务系统发送的报表导出请求时,将请求时间、解析出的请求参数字符串、生成的主键信息、业务场景编码、租户数据以及表征异步任务未开始的异步状态对应存储至异步任务表;在第二消息队列监听到第一消息队列中存在异步任务时,将异步任务表中的异步状态更新为执行中;在报表导出完成后,将异步任务表中的异步状态更新为导出完成,并将导出完成时间对应存储至异步任务表;在目标报表数据导出的过程中,若导出失败,则将描述报表数据的导出失败原因的备注信息对应存储至异步任务表。
109.当然,异步任务表中还可以包含其他信息,备注信息还可以为其他信息,本技术对此不进行限定。
110.在数据库mysql中包含异步任务表的基础上,本技术实施例提供的报表导出方法还可以包括以下步骤:
111.步骤s105、在向外部业务系统发送第一导出结果后,接收外部业务系统发送的导出查询请求,从导出查询请求中解析出主键信息。
112.具体的,外部业务系统在接收到第一导出结果后,可以基于第一导出结果中的主键信息生成导出查询请求,以请求查询当前导出进度。
113.那么,本步骤可以接收外部业务系统发送的导出查询请求,并从导出查询请求中解析出所要查询数据的主键信息。
114.可选的,外部业务系统可以将导出查询请求发送至任务状态接口,那么本步骤可以从任务状态接口处获取外部业务系统发送的导出查询请求。
115.步骤s106、基于解析出的主键信息,从异步任务表中查询异步状态,并将查询到的异步状态反馈给外部业务系统。
116.当然,本步骤也可以基于解析出的主键信息,从异步任务表中查询除异步状态外的其他信息,并将查询到的信息反馈给外部业务系统。
117.综上,本实施例将包含主键信息的第一导出结果发送至外部业务系统,使得外部业务系统可以基于主键信息查询导出进度,对外部业务系统更友好。
118.为了使本领域技术人员更加理解本技术,以下给出一可选的实施例,对异步导出目标报表数据的过程进行解释说明。
119.步骤1:获取来自外部业务系统的报表导出请求。
120.步骤2:对报表导出请求包含的请求参数字符串进行正确性校验,其中,正确性校验包括必填项校验和枚举值校验。
121.步骤3:在校验通过后,生成异步任务,将异步任务对应的异步状态确定为未开始。
122.步骤4:从报表导出请求包含的请求参数字符串中解析出请求时间、业务场景编码和租户数据,并根据解析出的请求时间、业务场景编码和租户数据,生成唯一标识异步任务的主键信息。
123.步骤5:将异步任务推送至第一消息队列,并将请求时间、业务场景编码、租户数据、请求时间、主键和表征异步任务未开始的异步状态保存至异步任务表。
124.步骤6:生成第一导出结果,其中,第一导出结果中包括主键信息和异步状态,异步
状态为未开始。
125.步骤7:将第一导出结果发送至外部业务系统。
126.步骤8:通过第二消息队列监听第一消息队列中是否存在异步任务。
127.步骤9:若第二消息队列监听到第一消息队列中存在异步任务,则将异步状态更新为执行中,并将表征异步任务执行中的异步状态保存至异步任务表。
128.步骤10:执行导出任务,将目标报表数据导出至预设的文件系统。
129.步骤11:在目标报表数据导出完成后,将异步状态更新为已完成,并将文件下载地址、导出完成时间和表征异步任务导出完成的异步状态保存至异步任务表。
130.步骤12:生成第二导出结果,并将第二导出结果推送至外部业务系统的第二消息队列,以便外部业务系统通过第二消息队列监听获取最新结果,其中,第二导出结果包括文件下载地址和异步状态,异步状态为已完成。
131.步骤13:在向外部业务系统发送第一导出结果后,接收外部业务系统发送的导出查询请求,从导出查询请求中解析出主键信息,基于解析出的主键信息,从异步任务表中查询异步状态,并将查询到的异步状态反馈给外部业务系统。
132.需要说明的是,上述13个步骤示出的异步导出过程仅为一种可选的实时过程,不作为对本技术具体实施过程的限定。
133.本技术实施例还提供了一种报表导出装置,下面对本技术实施例提供的报表导出装置进行描述,下文描述的报表导出装置与上文描述的报表导出方法可相互对应参照。
134.请参阅图2,示出了本技术实施例提供的报表导出装置的结构示意图,如图2所示,该报表导出装置可以包括:报表导出请求获取模块201、异步任务生成模块202、目标报表数据导出模块203和第二导出结果推送模块204。
135.报表导出请求获取模块201,用于获取来自外部业务系统的报表导出请求,其中,报表导出请求用于请求导出目标报表数据。
136.异步任务生成模块202,用于响应报表导出请求,生成异步任务和表征异步任务未开始的第一导出结果,并将第一导出结果发送至外部业务系统。
137.目标报表数据导出模块203,用于将异步任务推送至消息队列,基于消息队列中的异步任务将目标报表数据导出。
138.第二导出结果推送模块204,用于在目标报表数据导出完成后,生成表征异步任务导出完成的第二导出结果,并将第二导出结果发送至外部业务系统,以通知外部业务系统获取导出的目标报表数据。
139.本技术提供的报表导出装置,首先获取来自外部业务系统的报表导出请求,响应报表导出请求,生成异步任务和表征异步任务未开始的第一导出结果,并将第一导出结果发送至外部业务系统,然后将异步任务推送至消息队列,基于消息队列中的异步任务将目标报表数据导出,最后在目标报表数据导出完成后,生成表征异步任务导出完成的第二导出结果,并将第二导出结果发送至外部业务系统,以通知外部业务系统获取导出的目标报表数据。本技术在接收到报表导出请求时能够及时响应并反馈第一导出结果,同时会生成异步任务并推送至消息队列,以基于消息队列中的异步任务进行报表导出,在导出完成后再通知外部业务系统及时获取导出完成的目标报表数据,避免了出现导出超时的情况。
140.在一种可能的实现方式中,上述异步任务生成模块202可以包括:参数校验子模块
和异步任务生成子模块。
141.参数校验子模块,用于对报表导出请求包含的请求参数字符串进行正确性校验,其中,请求参数字符串是指用于筛选目标报表数据的字段组成的字符串,正确性校验用于校验目标报表数据是否为发起报表导出请求的租户的报表数据。
142.异步任务生成子模块,用于在校验通过后,生成异步任务和表征异步任务未开始的第一导出结果。
143.在一种可能的实现方式中,上述异步任务生成子模块可以包括:异步任务生成子单元、主键信息生成子单元和第一导出结果生成子单元。
144.异步任务生成子单元,用于生成异步任务。
145.主键信息生成子单元,用于从报表导出请求包含的请求参数字符串中解析出请求时间、业务场景编码和租户数据,并根据解析出的请求时间、业务场景编码和租户数据,生成唯一标识异步任务的主键信息,其中,请求时间是指报表导出请求的发送时间,业务场景编码是指目标报表数据所在的业务场景的编码,租户数据是指外部业务系统的使用用户的数据。
146.第一导出结果生成子单元,用于将异步任务对应的异步状态确定为未开始,根据主键信息和表征异步任务未开始的异步状态,生成第一导出结果。
147.在一种可能的实现方式中,上述目标报表数据导出模块203可以包括:异步任务监听子模块和目标报表数据导出子模块。
148.异步任务监听子模块,用于将异步任务推送至第一消息队列,并通过第二消息队列监听第一消息队列中是否存在异步任务。
149.目标报表数据导出子模块,用于在第二消息队列监听到第一消息队列中存在异步任务时,将目标报表数据导出至预设的文件系统。
150.在一种可能的实现方式中,上述目标报表数据导出子模块可以包括:目标报表数据组装子单元和报表文件导出子单元。
151.目标报表数据组装子单元,用于将目标报表数据组装为预设格式的报表文件。
152.报表文件导出子单元,用于将报表文件导出至文件系统。
153.在一种可能的实现方式中,上述第二导出结果推送模块204可以包括:文件下载地址确定子模块和第二导出结果生成子模块。
154.文件下载地址确定子模块,用于确定报表文件在文件系统中的地址,将确定的地址作为文件下载地址。
155.第二导出结果生成子模块,用于将异步任务对应的异步状态确定为导出完成,并根据文件下载地址和表征异步任务导出完成的异步状态,生成第二导出结果。
156.在一种可能的实现方式中,本技术实施例提供的报表导出装置还可以包括:异步状态更新模块。
157.异步状态更新模块,用于在第二消息队列监听到第一消息队列中存在异步任务时,将异步任务对应的异步状态确定为执行中。
158.在一种可能的实现方式中,本技术实施例提供的报表导出装置还可以包括:异步任务表生成模块、查询请求获取模块和异步状态查询模块。
159.异步任务表生成模块,用于将异步任务相关的信息保存至预设的异步任务表,其
中,异步任务相关的信息中包括请求时间、业务场景编码、租户数据和异步状态。
160.查询请求获取模块,用于在向外部业务系统发送第一导出结果后,接收外部业务系统发送的导出查询请求,从导出查询请求中解析出主键信息。
161.异步状态查询模块,用于基于解析出的主键信息,从异步任务表中查询异步状态,并将查询到的异步状态反馈给外部业务系统。
162.在一种可能的实现方式中,上述异步任务相关的信息中还包括以下信息中的一种或多种:文件下载地址、目标报表数据的导出完成时间、请求参数字符串、主键信息和备注信息,其中,备注信息用于描述报表数据的导出失败原因。
163.本技术实施例还提供了一种报表导出设备。可选的,图3示出了报表导出设备的硬件结构框图,参照图3,该报表导出设备的硬件结构可以包括:至少一个处理器301,至少一个通信接口302,至少一个存储器303和至少一个通信总线304;
164.在本技术实施例中,处理器301、通信接口302、存储器303、通信总线304的数量为至少一个,且处理器301、通信接口302、存储器303通过通信总线304完成相互间的通信;
165.处理器301可能是一个中央处理器cpu,或者是特定集成电路asic(application specific integrated circuit),或者是被配置成实施本发明实施例的一个或多个集成电路等;
166.存储器303可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatile memory)等,例如至少一个磁盘存储器;
167.其中,存储器303存储有程序,处理器301可调用存储器303存储的程序,所述程序用于:
168.获取来自外部业务系统的报表导出请求,其中,报表导出请求用于请求导出目标报表数据;
169.响应报表导出请求,生成异步任务和表征异步任务未开始的第一导出结果,并将第一导出结果发送至外部业务系统;
170.将异步任务推送至消息队列,基于消息队列中的异步任务将目标报表数据导出;
171.在目标报表数据导出完成后,生成表征异步任务导出完成的第二导出结果,并将第二导出结果发送至外部业务系统,以通知外部业务系统获取导出的目标报表数据。
172.可选的,所述程序的细化功能和扩展功能可参照上文描述。
173.本技术实施例还提供一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现如上述报表导出方法。
174.可选的,所述程序的细化功能和扩展功能可参照上文描述。
175.最后,还需要说明的是,在本文中,诸如和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
176.本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他
实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
177.对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本技术。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本技术的精神或范围的情况下,在其它实施例中实现。因此,本技术将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1