一种报表展现方法和装置与流程

文档序号:18940342发布日期:2019-10-23 01:06阅读:103来源:国知局
本发明涉及数据处理
技术领域
:,特别涉及一种报表展现方法和装置。
背景技术
::报表就是用表格、图表等格式来显示数据。随着计算机的出现,通过计算机处理数据和界面设计的功能来生成、展示报表成为可能,大量的数据处理需求,催生了许多报表软件,报表软件的主要特点是数据动态化,格式多样化,并且实现报表数据和报表格式的完全分离,表头样式和数据都是事先固定好的,只有报表的内容是动态数据,用户可以只修改数据或者只修改格式。目前,查询树状列表展式报表数据,在搜索的时候经常是固定的条件,若用户只掌握关键字而不了解此关键字处于哪一个树状列表的字段上,则无法进行快速查询。技术实现要素:本发明提供了一种报表展现方法和装置,以解决查询树状列表展示报表数据时,用户不了解查询关键字处于哪一个树状列表的字段上导致搜索速度过慢的问题。为达到上述目的,本发明的技术方案是这样实现的:一方面,本发明提供一种报表展现方法,包括:接收查询请求,查询请求携带报表单据号;根据报表单据号初始化查询字段集;根据用户在查询字段集中选择的查询条件信息和报表单据号在报表数据库中动态拼写结构化查询语言sql语句,得到sql查询语句,报表数据库中注册有sql语句,每条sql语句对应一报表单据号;根据sql查询语句在所述报表数据库中查询相应的结果集,并对结果集中的数据进行处理,得到存在上下级关系的树状结构数据;对结果集中的树状结构数据在所述报表中进行树形展现。另一方面,本发明提供一种报表展现装置,包括:接收单元,用于接收查询请求,查询请求携带报表单据号;初始化单元,用于根据报表单据号初始化查询字段集;拼写单元,用于根据用户在查询字段集中选择的查询条件信息和报表单据号在报表数据库中动态拼写结构化查询语言sql语句,得到sql查询语句,报表数据库中注册有sql语句,每条sql语句对应一报表单据号;查询处理单元,用于根据sql查询语句在所述报表数据库中查询相应的结果集,并对所述结果集中的数据进行处理,得到存在上下级关系的树状结构数据;展示单元,用于将结果集中的树状结构数据在所述报表中进行树形展现。本发明的有益效果是:本发明在报表数据库中注册sql语句,根据查询请求携带的报表单据号动态初始化查询字段集,使得用户可以根据需求选择查询关键字,根据查询关键字动态拼写sql查询语句进行结果集查询,并根据查询关键字对结果集的数据进行处理,得到存在上下级关系的树状结构数据,将树状结构数据在报表中进行树形展示,使得用户只掌握关键字而不用了解此关键字处于哪一个树状列表的字段上,从而达到快速搜索的目的。附图说明图1为本发明实施例提供的报表展现方法流程图;图2为本发明实施例提供的在报表中展示树形结构的数据示意图;图3为本发明实施例提供的报表展现装置结构框图。具体实施方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。图1为本发明实施例提供的报表展现方法流程图,如图1所示,本实施例的方法包括:s110,接收查询请求,所述查询请求携带报表单据号。s120,根据报表单据号初始化查询字段集。本实施例中的报表单据号关联查询字段集,所述查询字段集包括所述报表单据号关联的全部查询字段信息。示例性地,如果报表为采购报表,若采购报表单据号对应的查询字段信息包括物品名称、物品型号、物品用途、物品价格,则根据该采购报表单据号初始化的查询字段集中包括上述物品名称、物品型号、物品用途、物品价格;如果报表为人员统计报表,若人员统计报表单据号对应的查询字段信息包括:员工姓名、员工性别、员工岗位、员工请假日期,则根据人员统计报表单据号初始化的查询字段集中包括上述员工姓名、员工性别、员工岗位、员工请假日期。s130,根据用户在查询字段集中选择的查询条件信息和报表单据号在报表数据库中动态拼写结构化查询语言(structuredquerylanguage,sql)语句,得到sql查询语句;报表数据库中注册有sql语句,每条sql语句对应一报表单据号。其中,本实施例的报表数据库为支持sql查询的数据库。s140,根据sql查询语句在报表数据库中查询相应的结果集,并对结果集中的数据进行处理,得到存在上下级关系的树状结构数据。s150,将结果集中的树状结构数据在报表中进行树形展现。本实施例以查询条件信息中的查询关键字为根节点对结果集数据进行树形展示,若结果集中的数据包括以a为根节点的树状结构数据、以b为根节点的树状结构数据和以c为根节点的树状结构数据,则在报表中同时展示以a、b、c为根节点的树状结构数据。本实施例在报表数据库中注册sql语句,根据查询请求携带的报表单据号动态初始化查询字段集,以使得用户可以根据需求选择查询关键字,根据查询关键字动态拼写sql查询语句进行结果集查询,并根据查询关键字对结果集的数据进行处理,得到存在上下级关系的树状结构数据,将树状结构数据在报表中进行树形展示,使得用户只掌握关键字而不用了解此关键字处于哪一个树状列表的字段上,从而达到快速搜索的目的。本实施例的报表查询方法操作简单便捷,符合用户习惯,适用面广。在本发明的一个实施例中,通过下述方法在报表数据库中注册sql语句:将预先写好的sql语句按照选择查询select字段、表查询from字段、查询条件where字段和查询分组groupby字段进行拆分,并将拆分得到的分词保存到对应的四张excel表中,该四张excel表通过报表单据号关联,并分别对应于报表数据库中的主表、子表、关系表和查询条件表;将每张excel表对应的分词导入到报表数据库对应的表中。示例性的,以拆分sql语句selectcolumnamefromtablenamewhereconditionname='值'groupbygroupname为例,按照select字段、from字段、where字段和groupby字段拆分该sql语句依次分词1-columname,分词2-tablename,分词3-conditionname='值'和分词4-groupname,将分词1-columname导入到主表中,将分词2-tablename导入到子表中,将分词3-conditionname='值'导入到关系表中,将分词4-groupname导入到查询条件表中。实际应用中,二次开发人员预先写一个大而全的统计报表的sql语句,将所写的sql语句拆分到相应的excel表中,该四张excel表通过报表单据号关联,并且分别是报表数据库中的主表(fx_reportconfiggroupmain)、子表(fx_reportconfigcolsub)、关系表(fx_fxconrelationship)和查询条件表(fx_confrepgroupwhere),可以使用jstl工具将每张excel表对应的数据导入到报表数据库相应的表中,完成sql语句的注册,后续根据生成的查询字段和分组字段,将相应的字段封装成sql查询语句进行数据查询。在本发明的一个实施例中,本实施例通过下述方法初始化查询字段集:根据初始化查询方法getsearchconditionbymenucode()获取报表单据号对应的查询字段集;根据查询字段集初始化预显示表格的列表头信息,所述预显示表格中设置关键字查询框和条件查询框。示例性的,可以预先初始化一个表名称为jtable的预显示表格供用户显示,在jtable表的查询区域显示关键字查询框和条件查询框。如图2所示,在图2所示的表格的查询区域,设置有关键字查询框,图2所示的查询区域未显示条件查询框,此时可以默认条件字段为全字段。相应的,在报表数据库中动态拼写sql语句包括:根据用户在关键字查询框中输入的查询关键字和在条件查询框中输入的查询条件生成分组信息和条件信息,根据报表单据号信息抽取用于拼写sql查询语句的四个对象值,根据分组信息和条件信息调用语句查询方法getsql,基于所述四个对象值拼写该查询请求对应的sql查询语句。本实施例可以调用数据查询方法queryfilterdata响应用户的选择操作,利用分组映射表属性groupmap生成上述查询关键字和查询条件对应的分组信息和条件信息。在实际应用中,可以使用corejavaswing来实现上述报表展现方法,利用统一的父类来处理报表的各种查询及展现。本实施例结合用户对前台报表的选择操作所生成的信息和后台注册的sql语句进行数据库查询,将查询到的结果集处理为树状结构数据以在报表中进行数据展示。示例性的,可以使用报表子类,如报表子类bookfilecountui(该报表子类为报表嵌套类reportnestedui等抽象类的报表父类),根据报表单据号来抽取用于准备拼写sql语句的四个对象值vo,即主表对象值reportconfiggroupmainvo、子表对象值reportconfigcolsubvo、关系表对象值fxconrelationshipvo和查询条件对象值confrepgroupwherevo,此时会利用报表工具jtable初始化一个预显示表格供用户显示,初始化的该预显示表格此时显示的列为查询字段集中所有字段的大全集。当用户打开报表生成查询请求时,本实施例根据查询请求携带报表单据号获取查询所有可查询的查询条件信息,在列表展示前完成初始化工作。用户可以根据需求在图2所示的关键字查询框中输入关键字或选择关键字,当用户点击查询按钮时,reportnestedui父类调用数据查询方法queryfilterdata响应用户的查询请求,利用分组表groupmap属性生成查询关键字和查询条件对应的分组信息和条件信息。reportnestedui父类再根据生成的分组信息及条件信息,调用自身的获取方法getsql,经过报表类reportutilimpl中的询问嵌套方法querynesteddata()及嵌套类nestedsql的concatsql方法获取相应的sql查询语句,然后查询相应的结果集返回到reportnestedui的方法中,接着对结果集中的数据进行处理,得到以查询关键字为根节点的树状结构数据。在对结果集中的数据处理中,可以使用java工具包bean封装结果集中的数据并返回到上述预显示表格中,完成多条件查询。本实施例在在对数据进行封装前会对结果集中的数据进行业务汇总,而且是根据不同的字段采用不同的处理方式。本实施例的业务汇总功能需要根据需求而定,如图2所示,字段“%completed”表示对数据进行求取平均值处理,字段“work”表示对数据进行求取和的处理,字段“start”表示求取数据中的最小值,字段“finish”表示求取数据中的最大值。与上述方法实施例相对应的,本发明还提供了一种报表展现装置实施例。图3为本发明实施例提供的报表展现装置结构框图,如图3所示,该装置包括:接收单元31,用于接收查询请求,查询请求携带报表单据号;初始化单元32,用于根据报表单据号初始化查询字段集;拼写单元33,用于根据用户在查询字段集中选择的查询条件信息和报表单据号在报表数据库中动态拼写sql语句,得到sql查询语句,报表数据库中注册有sql语句,每条sql语句对应一报表单据号;查询处理单元34,用于根据sql查询语句在所述报表数据库中查询相应的结果集,并对所述结果集中的数据进行处理,得到存在上下级关系的树状结构数据;展示单元35,用于将结果集中的树状结构数据在所述报表中进行树形展现。本实施例优选地,图3中的装置还包括注册导入单元;该注册导入单元,用于将预先写好的sql语句按照select字段、from字段、where字段和groupby字段进行拆分,并将拆分得到的分词保存到对应的四张excel表中,该四张excel表通过报表单据号关联,并分别对应于报表数据库中的主表、子表、关系表和查询条件表;将每张excel表对应的分词导入到所述报表数据库对应的表中。在本发明的一个实施例中,初始化单元32还用于根据初始化查询方法getsearchconditionbymenucode()获取报表单据号对应的查询字段集;根据所述查询字段集初始化预显示表格的列表头信息,预显示表格中设置关键字查询框和条件查询框。在本发明的另一个实施例中,拼写单元33还用于根据关键字查询框中的查询关键字和条件查询框中的查询条件生成分组信息和条件信息;根据报表单据号信息抽取用于拼写sql查询语句的四个对象值;根据分组信息和条件信息调用语句查询方法getsql,基于所述四个对象值拼写该查询请求对应的sql查询语句。其中,拼写单元33具体是调用数据查询方法queryfilterdata响应用户的选择操作,利用分组表groupmap属性生成所述查询条件、查询关键字和查询值对应的分组信息和条件信息。综上,本发明实施例提供了一种报表展现方法和装置,本发明实施例在报表数据库中注册sql语句,根据查询请求携带的报表单据号动态初始化查询字段集,使得用户可以根据需求选择查询关键字,根据查询关键字动态拼写sql查询语句进行结果集查询,并根据查询关键字对结果集的数据进行处理,得到存在上下级关系的树状结构数据,将树状结构数据在报表中进行树形展示,使得用户只掌握关键字而不用了解此关键字处于哪一个树状列表的字段上,从而达到快速搜索的目的。为了便于清楚描述本发明实施例的技术方案,在发明的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分,本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定。以上所述,仅为本发明的具体实施方式,在本发明的上述教导下,本领域技术人员可以在上述实施例的基础上进行其他的改进或变形。本领域技术人员应该明白,上述的具体描述只是更好的解释本发明的目的,本发明的保护范围应以权利要求的保护范围为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1