CN117112551A - 报表生成方法、装置、电子设备和存储介质 - Google Patents

报表生成方法、装置、电子设备和存储介质 Download PDF

Info

Publication number
CN117112551A
CN117112551A CN202310859521.1A CN202310859521A CN117112551A CN 117112551 A CN117112551 A CN 117112551A CN 202310859521 A CN202310859521 A CN 202310859521A CN 117112551 A CN117112551 A CN 117112551A
Authority
CN
China
Prior art keywords
list
data
report
target field
query request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202310859521.1A
Other languages
English (en)
Inventor
黎楷文
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Bank of China Financial Technology Co Ltd
Original Assignee
Bank of China Financial Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Bank of China Financial Technology Co Ltd filed Critical Bank of China Financial Technology Co Ltd
Priority to CN202310859521.1A priority Critical patent/CN117112551A/zh
Publication of CN117112551A publication Critical patent/CN117112551A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种报表生成方法、装置、电子设备和存储介质,其中方法包括:接收数据查询请求,并确定所述数据查询请求对应的目标字段,以及所述目标字段的显示顺序;基于所述目标字段的显示顺序获取第一列表;所述第一列表是基于所述目标字段对应的多组数据对象生成的;每组数据对象在所述第一列表的各个列表元素中按照所述显示顺序排列;遍历所述第一列表,提取所述目标字段对应的数据对象的属性,生成第二列表;基于所述第二列表生成所述数据查询请求对应的报表。本申请提供的方法和装置,提高了报表的生成效率,不需要在报表生成后编写对应的代码进行数据映射,减少了业务处理系统的代码量和开发工作量,降低了业务处理系统的维护成本。

Description

报表生成方法、装置、电子设备和存储介质
技术领域
本申请涉及计算机技术领域,具体而言,涉及一种报表生成方法、装置、电子设备和存储介质。
背景技术
在业务系统中进行数据查询时,数据查询的结果通常会以报表的方式体现。在报表的生成过程中,通常会涉及到不同的业务处理模块,各个业务处理模块的字段、数据类型和报表生成逻辑等均不相同,需要开发人员将报表中的字段与需要查询的数据进行映射,业务系统中报表的生成效率低。此外,业务系统后端需要编写大量的代码进行数据映射,开发工作量较大,经常出现代码冗余,不利于后期维护。
因此,如何优化数据映射处理,提高报表的生成效率成为业界亟待解决的技术问题。
发明内容
本申请提供一种报表生成方法、装置、电子设备和存储介质,用于解决如何优化数据映射处理,提高报表的生成效率的技术问题。
本申请提供一种报表生成方法,包括:
接收数据查询请求,并确定所述数据查询请求对应的目标字段,以及所述目标字段的显示顺序;
基于所述目标字段的显示顺序获取第一列表;所述第一列表是基于所述目标字段对应的多组数据对象生成的;每组数据对象在所述第一列表的各个列表元素中按照所述显示顺序排列;
遍历所述第一列表,提取所述目标字段对应的数据对象的属性,生成第二列表;
基于所述第二列表生成所述数据查询请求对应的报表。
在一些实施例中,所述基于所述目标字段的显示顺序获取第一列表,包括:
基于所述目标字段的显示顺序,构建所述数据查询请求对应的数据传输对象;
基于所述数据查询请求对应的数据传输对象,获取所述目标字段对应的数据对象,并基于所述目标字段对应的数据对象,生成第一列表。
在一些实施例中,所述基于所述数据查询请求对应的数据传输对象,获取所述目标字段对应的数据对象,并基于所述目标字段对应的数据对象,生成第一列表,包括:
基于所述数据查询请求对应的数据传输对象,获取多组所述目标字段对应的数据对象;每组所述目标字段对应的数据对象按照所述目标字段的显示顺序排列;
以每组所述目标字段对应的数据对象为列表元素,以每组的获取顺序为列表顺序,生成所述第一列表。
在一些实施例中,所述遍历所述第一列表,提取所述目标字段对应的数据对象的属性,生成第二列表,包括:
基于所述第一列表的列表长度,确定所述第一列表的总遍历次数;
在当前次遍历对应的遍历次数小于等于所述总遍历次数的情况下,基于编程语言的反射机制,从当前次遍历对应的列表元素中提取所述目标字段对应的数据对象的属性;
以所述目标字段为键,以所述属性为值,确定所述当前次遍历对应的遍历结果;
基于每次遍历对应的遍历结果,生成所述第二列表。
在一些实施例中,所述基于所述第二列表生成所述数据查询请求对应的报表,包括:
创建工作簿对象,以及所述工作簿对象所属的工作表对象;
基于所述目标字段以及所述目标字段的显示顺序,确定所述工作表对象中的多个列和各个列的名称;
基于所述第二列表对所述工作表对象中各个列进行写入,生成数据写入后的工作表对象;
对所述数据写入后的工作表对象和所述工作簿对象进行封装后,得到所述数据查询请求对应的报表。
在一些实施例中,所述基于所述第二列表对所述工作表对象中各个列进行写入,生成数据写入后的工作表对象,包括:
将所述工作表对象中的列的名称与所述第二列表中的列表元素的键进行匹配;
在所述工作表对象中的列的名称与所述第二列表中的列表元素的键匹配的情况下,将所述第二列表中的列表元素的值写入所述工作表对象中的对应的列,生成所述数据写入后的工作表对象。
在一些实施例中,所述基于所述第二列表生成所述数据查询请求对应的报表,包括:
在所述第二列表为不为空的情况下,基于所述数据查询请求对应的报表设置信息,确定所述报表的输出格式和输出样式。
本申请提供一种报表生成装置,包括:
接收模块,用于接收数据查询请求,并确定所述数据查询请求对应的目标字段,以及所述目标字段的显示顺序;
获取模块,用于基于所述目标字段的显示顺序获取第一列表;所述第一列表是基于所述目标字段对应的多组数据对象生成的;每组数据对象在所述第一列表的各个列表元素中按照所述显示顺序排列;
提取模块,用于遍历所述第一列表,提取所述目标字段对应的数据对象的属性,生成第二列表;
生成模块,用于基于所述第二列表生成所述数据查询请求对应的报表。
本申请提供一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述报表生成方法。
本申请提供一种非暂态计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述报表生成方法。
本申请提供的报表生成方法、装置、电子设备和存储介质,接收数据查询请求,并确定数据查询请求对应的目标字段,以及目标字段的显示顺序;基于目标字段的显示顺序获取第一列表;遍历第一列表,提取目标字段对应的数据对象的属性,生成第二列表;基于第二列表生成数据查询请求对应的报表;由于第一列表是基于目标字段对应的多组数据对象生成的,每组数据对象在第一列表的各个列表元素中按照显示顺序排列,遍历第一列表后提取得到的第二列表中各个列表元素中的目标字段对应的属性也是按照显示顺序进行排列的,最终生成的报表中的数据与目标字段具有映射关系,且按照显示顺序排列,提高了报表的生成效率,不需要在报表生成后编写对应的代码进行数据映射,减少了业务处理系统的代码量和开发工作量,降低了业务处理系统的维护成本。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
为了更清楚地说明本申请或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请提供的报表生成方法的流程示意图之一;
图2为本申请提供的报表处理流程简化装置的结构示意图;
图3为本申请提供的报表生成方法的流程示意图之二;
图4为本申请提供的报表生成装置的结构示意图;
图5是本申请提供的电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元或模块。
在本申请的技术方案中,所涉及的客户个人信息的收集、存储、使用、加工、传输、提供和公开等处理,均符合相关法律法规的规定,采取了必要保密措施,且不违背公序良俗。
用户在业务系统中查询相关数据时,查询结果通常是以报表的形式体现出来。在业务系统中,通常设置有报表管理模块。该模块主要管理其他很多业务处理模块的相关报表的下载。
在有些场景下,报表下载被频繁使用。报表通常以excel(电子表格)体现。即使采用了SXSSFWorkbook等技术提升了效果,但是对于开发人员来说,还是需要做报表列名与字段值的对应,构建成新的数据使用,报表的生成效率较低。
SXSSFWorkbook是Apache POI中的Excel处理库,可以用于创建、读取、修改Excel文件。Apache POI是用Java语言编写的免费开源的跨平台的Java API(ApplicationProgramming Interface,应用程序编程接口),Apache POI提供接口给Java程序,实现对Office格式档案读和写的功能。
此外,由于模块和字段比较多,再加上还划分了报表类型与下载方式,因此业务系统的后端的开发工作量变得过于庞大且机械,代码又显得过于冗余,也对后续的系统维护造成了一定的影响。
图1是本申请提供的报表生成方法的流程示意图之一,如图1所示,该方法包括步骤110、步骤120、步骤130和步骤140。该方法流程步骤仅仅作为本申请一个可能的实现方式。
步骤110、接收数据查询请求,并确定数据查询请求对应的目标字段,以及目标字段的显示顺序。
具体地,本申请实施例提供的报表生成方法的执行主体为业务处理系统,或者业务处理系统中的报表生成装置。业务处理系统可以为银行业务系统等,例如智能投顾平台。业务处理系统的架构可以包括前端和后端。前端为网络页面,用于与用户进行信息交互。后端进行业务处理,包括控制器层(controller)、服务层(service)、数据持久层(mapper)和数据库实体层(entity)。控制器层用来接收前端页面的请求和返回页面的请求信息。服务层用来进行业务处理和逻辑判断。数据持久层用来和数据库进行交互。数据库实体层用来存放各类实体对象,实现数据存储。
数据查询请求为用于对数据进行查询的请求。用户可以在业务处理系统的前端页面输入相关信息,生成数据查询请求。前端页面将该请求发送至后端进行处理。
在接收到数据查询请求后,可以对该数据查询请求进行解析,确定数据查询请求对应的目标字段。目标字段是指数据库表中的一列或多列,用于存储特定类型的数据。
例如,数据查询请求为对用户当前月的交易记录进行查询。则对该请求进行解析后,可以得到多个目标字段,包括交易类型、交易金额、交易时间和交易对象等。
可以预先针对不同类型的数据查询请求,设置不同的目标字段,以及目标字段的显示顺序。显示顺序是指在获取目标字段对应的数据后,对用户进行显示的顺序。
在业务处理系统接收到数据查询请求后,可以对数据查询请求的类型进行判断,然后获取该类型的目标字段,提高数据查询的效率。
步骤120、基于目标字段的显示顺序获取第一列表;第一列表是基于目标字段对应的多组数据对象生成的;每组数据对象在第一列表的各个列表元素中按照显示顺序排列。
具体地,业务处理系统的控制器层可以将数据查询请求发送至服务层,由服务层根据相应的业务处理逻辑,与数据持久层进行交互,来获取各个目标字段对应的数据对象。
数据对象是对具体的业务进行描述的一个实体。类是具有相同属性和方法的一组对象的集合。数据对象拥有类的属性和方法,是类的一个实例。
数据查询请求所需要获取的数据是通过数据对象进行存储的。服务层在进行数据查询时,所获得的是目标字段对应的数据对象。
可以根据目标字段的显示顺序,获取目标字段对应的数据对象。由于通过数据查询,可能获取多组数据对象,因此,可以构建第一列表对查询得到的目标字段对应的数据对象进行存储。第一列表的实现形式可以为链表或者数组等。
将每组目标字段对应的数据对象作为一个列表元素,按照每组数据对象获取的先后顺序确定各个列表元素在列表中的位置。
第一列表的列表长度根据查询得到的目标字段的数据对象的组数进行确定,第一列表中的各列表元素中数据对象按照对应的目标字段的显示顺序进行排列。
例如数据查询请求对应的目标字段分别为字段A、字段B、字段C和字段D,显示顺序为{A,B,C,D}。服务层在查询时,可以以LinkedList(链表)的方式接收目标字段对应的数据对象。在该链表中,第一项可以字段A、字段B、字段C和字段D分别对应的第一组数据对象,第二项可以存储字段A、字段B、字段C和字段D分别对应的第二组数据对象等,以此类推,直至将得到的所有目标字段对应的数据对象都存储至第一列表。
步骤130、遍历第一列表,提取目标字段对应的数据对象的属性,生成第二列表。
具体地,反射机制是指编程语言可以在运行时检查其数据结构的能力。
例如业务处理系统的编程语言采用Java语言。在业务处理系统对应的程序运行时,可以利用Java语言的反射机制,在程序运行时通过名称来访问和操作类、方法和属性。Java反射机制允许程序在运行时:获取一个类的信息,包括类的名称、修饰符、父类、接口、属性和方法等;创建一个类的实例对象,而不需要在编译时知道这个类的类型;访问一个对象的属性,包括获取属性、设置属性、获取属性的类型和修饰符等;调用一个对象的方法,包括获取方法的参数、调用方法、获取方法的返回值等;修改对象的访问权限。
对于第一列表中的数据对象,不能直接提供所需要的数据。可以采用编程语言的反射机制,在遍历第一列表中的各个列表元素时,提取目标字段对应的数据对象的属性,生成第二列表。
字段就是类内部用来存储数据,属性是类提供给外部调用,用于设置或读取。属性是对字段的封装。
第二列表的列表长度根据第一列表进行确定,第二列表中的各列表元素的顺序可以按照第一列表的遍历顺序进行确定。遍历第一列表后提取得到的第二列表中各个列表元素中的目标字段对应的属性也是按照显示顺序进行排列的。
步骤140、基于第二列表生成数据查询请求对应的报表。
具体地,可以将第二列表中的各个列表元素,写入创建的工作表,得到数据查询请求对应的报表。将该报表通过控制层发送至业务处理系统的前端,完成数据查询。
本申请实施例提供的报表生成方法,接收数据查询请求,并确定数据查询请求对应的目标字段,以及目标字段的显示顺序;基于目标字段的显示顺序获取第一列表;遍历第一列表,提取目标字段对应的数据对象的属性,生成第二列表;基于第二列表生成数据查询请求对应的报表;由于第一列表是基于目标字段对应的多组数据对象生成的,每组数据对象在第一列表的各个列表元素中按照显示顺序排列,遍历第一列表后提取得到的第二列表中各个列表元素中的目标字段对应的属性也是按照显示顺序进行排列的,最终生成的报表中的数据与目标字段具有映射关系,且按照显示顺序排列,提高了报表的生成效率,不需要在报表生成后编写对应的代码进行数据映射,减少了业务处理系统的代码量和开发工作量,降低了业务处理系统的维护成本。
需要说明的是,本申请每一个实施方式可以自由组合、调换顺序或者单独执行,并不需要依靠或依赖固定的执行顺序。
在一些实施例中,步骤120包括:
基于目标字段的显示顺序,构建数据查询请求对应的数据传输对象;
基于数据查询请求对应的数据传输对象,获取目标字段对应的数据对象,并基于目标字段对应的数据对象,生成第一列表。
具体地,可以根据目标字段的显示顺序,构建数据查询请求对应的数据传输对象(Data Transfer Object,DTO)。该数据传输对象可以在控制层与服务层之间进行传输。
服务层在接收到数据查询请求对应的数据传输对象,与数据持久层进行交互,通过数据持久层从数据库中获取目标字段对应的数据对象。服务层对于接收到的目标字段对应的数据对象,采用第一列表进行存储。
本申请实施例提供的报表生成方法,根据目标字段的显示顺序获取对应的数据对象并生成第一列表,提高了报表的生成效率。
在一些实施例中,基于数据查询请求对应的数据传输对象,获取目标字段对应的数据对象,并基于目标字段对应的数据对象,生成第一列表,包括:
基于数据查询请求对应的数据传输对象,获取多组目标字段对应的数据对象;每组目标字段对应的数据对象按照目标字段的显示顺序排列;
以每组目标字段对应的数据对象为列表元素,以每组的获取顺序为列表顺序,生成第一列表。
具体地,业务处理系统的服务层根据接收到的数据传输对象,得到多组目标字段对应的数据对象。对于每组目标字段对应的数据对象,各个数据对象按照目标字段的显示顺序排列。
以每组目标字段对应的数据对象为列表元素,以每组目标字段对应的数据对象的获取顺序为列表顺序,生成第一列表。例如,在接收到字段A、字段B、字段C和字段D分别对应的第一组数据对象后,可以将其作为第一列表中的第一列表元素进行存储,在第一列表元素中,各个字段对应的数据对象按照各个字段的显示顺序进行排列;在接收到字段A、字段B、字段C和字段D分别对应的第二组数据对象后,可以将其作为第一列表中的第二列表元素进行存储,在第二列表元素中,各个字段对应的数据对象按照各个字段的显示顺序进行排列;同理,直至存储所有目标字段对应的数据对象,并获取第一列表的列表长度。
本申请实施例提供的报表生成方法,以每组目标字段对应的数据对象为列表元素,以每组目标字段对应的数据对象的获取顺序为列表顺序,生成第一列表,提高了报表的生成效率。
在一些实施例中,步骤130包括:
基于第一列表的列表长度,确定第一列表的总遍历次数;
在当前次遍历对应的遍历次数小于等于总遍历次数的情况下,基于编程语言的反射机制,从当前次遍历对应的列表元素中提取目标字段对应的数据对象的属性;
以目标字段为键,以属性为值,确定当前次遍历对应的遍历结果;
基于每次遍历对应的遍历结果,生成第二列表。
具体地,可以根据第一列表的列表长度确定第一列表的总遍历次数。
按照列表元素的顺序,对第一列表中的各个列表元素进行遍历。利用业务处理系统运行时采用的编程语言的反射机制,从当前次遍历对应的列表元素中提取目标字段对应的数据对象的属性。可以以目标字段为键(key),以提取的属性为值(value),构建键值对,并将该键值对作为当前次遍历对应的遍历结果。由于目标字段可以有多个,在当前次遍历,可以得到多个键值对,可以采用map数据类型,对这些键值对进行存储。
在遍历结束后,按照遍历顺序,将每次得到的键值对或者map数据类型以列表形式进行存储,得到第二列表。
本申请实施例提供的报表生成方法,对第一列表进行遍历,根据编程语言的反射机制,从第一列表的列表元素中提取目标字段对应的数据对象的属性,生成第二列表,第二列表中各个列表元素中的目标字段对应的属性也是按照显示顺序进行排列的,提高了报表的生成效率。
在一些实施例中,步骤140包括:
创建工作簿对象,以及工作簿对象所属的工作表对象;
基于目标字段以及目标字段的显示顺序,确定工作表对象中的多个列和各个列的名称;
基于第二列表对工作表对象中各个列进行写入,生成数据写入后的工作表对象;
对数据写入后的工作表对象和工作簿对象进行封装后,得到数据查询请求对应的报表。
具体地,SXSSFWorkbook是Apache POI中的Excel处理库,它可以处理大量的数据而不会导致内存溢出,通过减少内存的使用,提高业务处理系统的性能。
可以采用SXSSFWorkbook,创建工作簿(Workbook)对象,以及工作簿对象所属的工作表(Sheet)对象。
可以根据目标字段以及目标字段的显示顺序,确定工作表对象中的多个列和各个列的名称,使得列的数量与目标字段的数量保持一致,列的名称与目标字段的名称保持一致,列的顺序与目标字段的显示顺序一致。
可以从第二列表中获取列表元素中目标字段对应的属性,写入工作表对象中各个列对应的表格位置,得到数据写入后的工作表对象。对数据写入后的工作表对象和工作簿对象进行封装后,可以得到数据查询请求对应的报表。
本申请实施例提供的报表生成方法,工作表对象中的多个列和各个列的名称是根据目标字段以及目标字段的显示顺序创建的,将第二列表中各个列表元素中的目标字段对应的属性写入创建的工作表对象,可以实现报表中的列的内容与需要查询的数据相互对应,无需进行数据映射,提高了报表的生成效率。
在一些实施例中,基于第二列表对工作表对象中各个列进行写入,生成数据写入后的工作表对象,包括:
将工作表对象中的列的名称与第二列表中的列表元素的键进行匹配;
在工作表对象中的列的名称与第二列表中的列表元素的键匹配的情况下,将第二列表中的列表元素的值写入工作表对象中的对应的列,生成数据写入后的工作表对象。
具体地,在根据第二列表中各个列表元素对工作表对象中各个列进行写入时,可以将工作表对象中的列的名称与第二列表中的列表元素的键进行匹配,在匹配的情况下,将第二列表中的列表元素的值写入工作表对象中的对应的列,实现对工作表对象的数据写入。
本申请实施例提供的报表生成方法,将工作表对象中的列的名称与第二列表中的列表元素的键进行匹配,实现数据的自动写入,无需进行数据映射,提高了报表的生成效率。
在一些实施例中,步骤140包括:
在第二列表为不为空的情况下,基于数据查询请求对应的报表设置信息,确定报表的输出格式和输出样式。
具体地,如果第二列表为空,则表明不存在数据查询请求对应的数据。如果第二列表不为空,则可以获取数据查询请求对应的报表设置信息,对根据第二列表生成的报表的输出格式和输出样式进行调整。
报表设置信息可以包括对报表的输出格式和输出样式等进行设置的信息。输出格式可以包括文本输出格式和图片输出格式等。输出样式可以包括报表中表格的显示颜色和显示大小等。
可以预先确定报表设置信息,实现报表的自动化输出。
本申请实施例提供的报表生成方法,根据数据查询请求对应的报表设置信息,确定报表的输出格式和输出样式,可以满足用户的个性化需求,提高了报表的生成效率。
图2为本申请提供的报表处理流程简化装置的结构示意图,如图2所示,该装置为业务处理系统中的组成部分,主要用于在业务处理系统中对各类报表的生成进行管理,包括:
报表创建模块210,用于负责创建工作表(sheet),工作表的表名,并根据数据查询请求对应的多个字段创建表头(工作表中的第一行,包括各个列的列名)。
数据获取模块220,用于根据表头中的列名确定要获取的数据,并以列表形式存储查询得到的数据。
数据写入模块230,用于利用表头中的各个列名,获取对应的写入数据。
类型转换模块240,用于对写入数据的类型进行判断,并根据数据对象得到所需要的数据类型,并写入工作表中实际的单元格。
基于上述实施例提供的报表处理流程简化装置,图3为本申请提供的报表生成方法的流程示意图之二,如图3所示,包括:
步骤310、定义一个的数组,数据类型为字符串(string),按照内容字段的显示顺序,在该数组写入报表内容的列名,将其命名为headers,并构建出相应的数据传输对象(DTO)。
步骤320、在服务层将直接查询或已经处理后的数据以链表(linkedlist)方式接收,生成第一列表,并确定列表长度。
步骤330、如果第一列表的列表长度不为0,则执行如下步骤:
步骤331、创建SXSSFWorkbook中的工作簿对象;
步骤332、利用报表创建模块,创建工作表对象(sheet),设置工作表对象的表名,并根据headers文件创建表头列。
步骤333、利用数据获取模块,遍历查询或处理后的第一列表,通过Java语言的反射机制获取第一列表中对象类中的私有变量,再将headers作为键(key),变量作为值(value)以map数据类型进行保存,最后在把每次遍历出来的结果存入第二列表中,得到映射好的数据。
步骤334、利用数据写入模块,获取第二列表,利用映射好的表名获取具体写入的数据值,然后利用类型转换模块对传入的数据类型进行判断,并将第二列表中的数据的类型转为所需要显示的数据类型,并执行实际的单元格写入。
如果需要对每个表格定制化的操作,可以利用工作表对象(sheet)和工作表中的光标位置(count)进行。
最后以map数据类型封装表名和SXSSWorkbook对象。
如果第一列表的列表长度为0,将直接返回一个空的map数据类型。
步骤340、在控制层,先判断map数据类型的长度,如果不为0,设置响应报文的信息,在采用输出流的方法写入数据。如果为0,将在响应报文中写入空字符串,用于给前端进行做处理。
图4为本申请提供的报表生成装置的结构示意图,如图4所示,该装置包括:
接收模块410,用于接收数据查询请求,并确定数据查询请求对应的目标字段,以及目标字段的显示顺序;
获取模块420,用于基于目标字段的显示顺序获取第一列表;第一列表是基于目标字段对应的多组数据对象生成的;每组数据对象在第一列表的各个列表元素中按照显示顺序排列;
提取模块430,用于遍历第一列表,提取目标字段对应的数据对象的属性,生成第二列表;
生成模块440,用于基于第二列表生成数据查询请求对应的报表。
本申请提供的报表生成装置,接收数据查询请求,并确定数据查询请求对应的目标字段,以及目标字段的显示顺序;基于目标字段的显示顺序获取第一列表;遍历第一列表,提取目标字段对应的数据对象的属性,生成第二列表;基于第二列表生成数据查询请求对应的报表;由于第一列表是基于目标字段对应的多组数据对象生成的,每组数据对象在第一列表的各个列表元素中按照显示顺序排列,遍历第一列表后提取得到的第二列表中各个列表元素中的目标字段对应的属性也是按照显示顺序进行排列的,最终生成的报表中的数据与目标字段具有映射关系,且按照显示顺序排列,提高了报表的生成效率,不需要在报表生成后编写对应的代码进行数据映射,减少了业务处理系统的代码量和开发工作量,降低了业务处理系统的维护成本。
在一些实施例中,获取模块具体用于:
基于目标字段的显示顺序,构建数据查询请求对应的数据传输对象;
基于数据查询请求对应的数据传输对象,获取目标字段对应的数据对象,并基于目标字段对应的数据对象,生成第一列表。
在一些实施例中,获取模块具体用于:
基于数据查询请求对应的数据传输对象,获取多组目标字段对应的数据对象;每组目标字段对应的数据对象按照目标字段的显示顺序排列;
以每组目标字段对应的数据对象为列表元素,以每组的获取顺序为列表顺序,生成第一列表。
在一些实施例中,提取模块具体用于:
基于第一列表的列表长度,确定第一列表的总遍历次数;
在当前次遍历对应的遍历次数小于等于总遍历次数的情况下,基于编程语言的反射机制,从当前次遍历对应的列表元素中提取目标字段对应的数据对象的属性;
以目标字段为键,以属性为值,确定当前次遍历对应的遍历结果;
基于每次遍历对应的遍历结果,生成第二列表。
在一些实施例中,生成模块具体用于:
创建工作簿对象,以及工作簿对象所属的工作表对象;
基于目标字段以及目标字段的显示顺序,确定工作表对象中的多个列和各个列的名称;
基于第二列表对工作表对象中各个列进行写入,生成数据写入后的工作表对象;
对数据写入后的工作表对象和工作簿对象进行封装后,得到数据查询请求对应的报表。
在一些实施例中,生成模块具体用于:
将工作表对象中的列的名称与第二列表中的列表元素的键进行匹配;
在工作表对象中的列的名称与第二列表中的列表元素的键匹配的情况下,将第二列表中的列表元素的值写入工作表对象中的对应的列,生成数据写入后的工作表对象。
在一些实施例中,生成模块具体用于:
在第二列表为不为空的情况下,基于数据查询请求对应的报表设置信息,确定报表的输出格式和输出样式。
图5是本申请提供的电子设备的结构示意图,如图5所示,该电子设备可以包括:处理器(Processor)510、通信接口(Communications Interface)520、存储器(Memory)530和通信总线(Communicdtions Bus)540,其中,处理器510,通信接口520和存储器530通过通信总线540完成相互间的通信。处理器510可以调用存储器530中的逻辑命令,以执行如下方法:
接收数据查询请求,并确定数据查询请求对应的目标字段,以及目标字段的显示顺序;基于目标字段的显示顺序获取第一列表;第一列表是基于目标字段对应的多组数据对象生成的;每组数据对象在第一列表的各个列表元素中按照显示顺序排列;遍历第一列表,提取目标字段对应的数据对象的属性,生成第二列表;基于第二列表生成数据查询请求对应的报表。
此外,上述的存储器中的逻辑命令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干命令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请实施例提供的电子设备中的处理器可以调用存储器中的逻辑指令,实现上述方法,其具体的实施方式与前述方法实施方式一致,且可以达到相同的有益效果,此处不再赘述。
本申请实施例还提供一种计算机可读的存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的方法。
其具体的实施方式与前述方法实施方式一致,且可以达到相同的有益效果,此处不再赘述。
本申请实施例提供一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时实现如上述方法。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (10)

1.一种报表生成方法,其特征在于,包括:
接收数据查询请求,并确定所述数据查询请求对应的目标字段,以及所述目标字段的显示顺序;
基于所述目标字段的显示顺序获取第一列表;所述第一列表是基于所述目标字段对应的多组数据对象生成的;每组数据对象在所述第一列表的各个列表元素中按照所述显示顺序排列;
遍历所述第一列表,提取所述目标字段对应的数据对象的属性,生成第二列表;
基于所述第二列表生成所述数据查询请求对应的报表。
2.根据权利要求1所述的报表生成方法,其特征在于,所述基于所述目标字段的显示顺序获取第一列表,包括:
基于所述目标字段的显示顺序,构建所述数据查询请求对应的数据传输对象;
基于所述数据查询请求对应的数据传输对象,获取所述目标字段对应的数据对象,并基于所述目标字段对应的数据对象,生成第一列表。
3.根据权利要求2所述的报表生成方法,其特征在于,所述基于所述数据查询请求对应的数据传输对象,获取所述目标字段对应的数据对象,并基于所述目标字段对应的数据对象,生成第一列表,包括:
基于所述数据查询请求对应的数据传输对象,获取多组所述目标字段对应的数据对象;每组所述目标字段对应的数据对象按照所述目标字段的显示顺序排列;
以每组所述目标字段对应的数据对象为列表元素,以每组的获取顺序为列表顺序,生成所述第一列表。
4.根据权利要求1所述的报表生成方法,其特征在于,所述遍历所述第一列表,提取所述目标字段对应的数据对象的属性,生成第二列表,包括:
基于所述第一列表的列表长度,确定所述第一列表的总遍历次数;
在当前次遍历对应的遍历次数小于等于所述总遍历次数的情况下,基于编程语言的反射机制,从当前次遍历对应的列表元素中提取所述目标字段对应的数据对象的属性;
以所述目标字段为键,以所述属性为值,确定所述当前次遍历对应的遍历结果;
基于每次遍历对应的遍历结果,生成所述第二列表。
5.根据权利要求1所述的报表生成方法,其特征在于,所述基于所述第二列表生成所述数据查询请求对应的报表,包括:
创建工作簿对象,以及所述工作簿对象所属的工作表对象;
基于所述目标字段以及所述目标字段的显示顺序,确定所述工作表对象中的多个列和各个列的名称;
基于所述第二列表对所述工作表对象中各个列进行写入,生成数据写入后的工作表对象;
对所述数据写入后的工作表对象和所述工作簿对象进行封装后,得到所述数据查询请求对应的报表。
6.根据权利要求5所述的报表生成方法,其特征在于,所述基于所述第二列表对所述工作表对象中各个列进行写入,生成数据写入后的工作表对象,包括:
将所述工作表对象中的列的名称与所述第二列表中的列表元素的键进行匹配;
在所述工作表对象中的列的名称与所述第二列表中的列表元素的键匹配的情况下,将所述第二列表中的列表元素的值写入所述工作表对象中的对应的列,生成所述数据写入后的工作表对象。
7.根据权利要求1至6任一项所述的报表生成方法,其特征在于,所述基于所述第二列表生成所述数据查询请求对应的报表,包括:
在所述第二列表为不为空的情况下,基于所述数据查询请求对应的报表设置信息,确定所述报表的输出格式和输出样式。
8.一种报表生成装置,其特征在于,包括:
接收模块,用于接收数据查询请求,并确定所述数据查询请求对应的目标字段,以及所述目标字段的显示顺序;
获取模块,用于基于所述目标字段的显示顺序获取第一列表;所述第一列表是基于所述目标字段对应的多组数据对象生成的;每组数据对象在所述第一列表的各个列表元素中按照所述显示顺序排列;
提取模块,用于遍历所述第一列表,提取所述目标字段对应的数据对象的属性,生成第二列表;
生成模块,用于基于所述第二列表生成所述数据查询请求对应的报表。
9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述报表生成方法。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述报表生成方法。
CN202310859521.1A 2023-07-12 2023-07-12 报表生成方法、装置、电子设备和存储介质 Pending CN117112551A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310859521.1A CN117112551A (zh) 2023-07-12 2023-07-12 报表生成方法、装置、电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310859521.1A CN117112551A (zh) 2023-07-12 2023-07-12 报表生成方法、装置、电子设备和存储介质

Publications (1)

Publication Number Publication Date
CN117112551A true CN117112551A (zh) 2023-11-24

Family

ID=88809962

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310859521.1A Pending CN117112551A (zh) 2023-07-12 2023-07-12 报表生成方法、装置、电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN117112551A (zh)

Similar Documents

Publication Publication Date Title
US8346747B2 (en) Extending database tables in a multi-tenant environment
KR101365832B1 (ko) 데이터 액세스 계층 클래스 생성기
CN108228166B (zh) 一种基于模板的后端代码生成方法及系统
US7779386B2 (en) Method and system to automatically regenerate software code
CN110032599B (zh) 数据结构的读取及更新方法、装置、电子设备
EP3584704B1 (en) Shared cache used to provide zero copy memory mapped database
CN111901294A (zh) 一种构建在线机器学习项目的方法及机器学习系统
CN110032598B (zh) 字段更新方法及装置、电子设备
CN110673839B (zh) 分布式工具配置化构建生成方法及系统
CN112650533B (zh) 接口文档的生成方法、装置和终端设备
EP2380089B1 (en) Extensibility for web based diagram visualization
US20140019889A1 (en) Regenerating a user interface area
CN109086433A (zh) 一种基于大数据分析的文件管理方法及服务器
CN113505580A (zh) 表格文件的解析方法和装置
US20240143576A1 (en) Registering additional type systems using a hub data model for data processing
CN111240772A (zh) 一种基于区块链的数据处理方法、装置及存储介质
CN113918149A (zh) 接口开发方法、装置、计算机设备和存储介质
EP3293645B1 (en) Iterative evaluation of data through simd processor registers
CN113360210A (zh) 数据对账方法、装置、计算机设备和存储介质
CN105302556A (zh) 实现计算的方法和系统以及服务器装置
CN117112551A (zh) 报表生成方法、装置、电子设备和存储介质
CN111680069B (zh) 数据库访问方法及装置
US8713015B2 (en) Expressive grouping for language integrated queries
CN114186958A (zh) 将列表数据导出为电子表格的方法、计算设备及存储介质
CN112925523A (zh) 对象比较方法、装置、设备及计算机可读介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination