公开/公告号CN113282333A
专利类型发明专利
公开/公告日2021-08-20
原文格式PDF
申请/专利权人 北京一人一亩田网络科技有限公司;
申请/专利号CN202110609838.0
申请日2021-06-01
分类号G06F8/71(20180101);G06F8/72(20180101);
代理机构11464 北京奉思知识产权代理有限公司;
代理人邹轶鲛;石红艳
地址 100080 北京市海淀区西小口路66号中关村东升科技园B-6号楼A座六层A602A室
入库时间 2023-06-19 12:18:04
技术领域
本发明涉及计算机技术领域,具体涉及一种业务查询的结果列表的通用导出方法、系统、电子设备以及计算机可读介质。
背景技术
业务平台通常会提供数据查询和导出功能。在数据导出中,后台一般使用作为轻量级的数据交换格式的Json(JavaScript Object Notation)格式描述不同类型的导出模板,并且在收到导出请求后,将导出任务放入包括大量空闲线程的线程池,每个导出任务使用一个线程,从而无需新建线程,加快导出的处理速度,并且易于管理创建的线程。
发明内容
技术问题
虽然使用Json文件使得模板易于阅读和编写,也使得机器易于解析和生成,并且使用线程池加快处理速度,但在增加供导出的业务类型的情况下,依然需要编写相应的业务代码,从而增大了开发量。
有鉴于此,本发明提供一种列表的通用导出方法,使得即使增加业务类型,也可以仅通过配置模板而实现该新增业务的数据导出,无需增加业务代码,从而极大地减少开发量,降低了时间和经济成本。
问题解决方案
根据本发明的一个方面,提供一种列表的通用导出方法,用于根据输入的请求参数而获得要查询的业务的结果列表,所述请求参数包含要查询的所述业务的类型参数和查询项目的筛选参数,其特征在于,所述方法包括:
为供查询的多个业务中的每个业务分配唯一的所述类型参数;
为所述多个业务中的每个业务分别定义结果列表的模板文件,并且将所有的所述模板文件约定为相同的格式;
将各所述类型参数与相应的所述业务的所述模板文件一一对应,使得能够根据所述类型参数而加载相应的所述业务的所述模板文件;以及
根据所述筛选参数和所述模板文件导出所述结果列表。
可选地,根据本发明的一个方面的方法,其中,用各所述类型参数的值为相应的各所述模板文件命名,以使各所述类型参数与相应的所述业务的所述模板文件一一对应。
可选地,根据本发明的一个方面的方法,其中,在定义所述模板文件时,通过约定通用字段,将所有的所述模板文件约定为固定的Json格式。
可选地,根据本发明的一个方面的方法,其中,加载所述模板文件后,将所述模板文件转换为相应的Java Bean。
可选地,根据本发明的一个方面的方法,其中,
根据所述筛选参数和所述模板文件导出所述结果列表具体包括:
根据所述筛选参数和所述模板文件配置所述结果列表的表格;
根据所述筛选参数获取所述结果列表的返回数据;以及
结合所述表格和所述返回数据以生成所述结果列表,并将所述结果列表导出。
可选地,根据本发明的一个方面的方法,其中,从加载的所述模板文件中获取所述结果列表对应的请求链接,拼接所述请求链接与所述筛选参数以生成请求导出所述结果列表的导出请求,并且根据所述导出请求和所述模板文件配置所述结果列表。
可选地,根据本发明的一个方面的方法,其中
在生成所述导出请求之后并且在配置所述结果列表之前,根据所述导出请求判断请求导出的数据量是否超过所述模板文件中定义的最大数据量,并且
如果所述请求导出的数据量超过所述模板文件中定义的所述最大数据量,则以所述最大数据量配置所述结果列表,并且如果所述请求导出的数据量不超过所述模板文件中定义的所述最大数据量,则以所述请求导出的数据量配置所述结果列表。
可选地,根据本发明的一个方面的方法,其中
根据所述筛选参数和所述模板文件导出所述结果列表还包括:
将所述返回数据转换成字符串数组,并进行EXCEL文件写入,从而以Excel文件的格式导出所述结果列表。
可选地,根据本发明的一个方面的方法,其中,
将所述返回数据转换成字符串数组的转换方式为:
遍历所述模板文件中的导出字段定义,依次查看所述返回数据中是否有对应的列表后端请求结果字段,如果有,则以在所述返回数据中的位置为行号,以在所述模板文件中定义的位置为列号,确定相应的所述字符串数组的位置。
根据本发明的另一方面,提供一种列表的通用导出系统,用于根据输入的请求参数而获得要查询的业务的结果列表,所述系统包括:
客户端、服务器和数据库,
其中,所述客户端用于供用户进行查询输入操作,根据用户的输入内容生成请求参数,并且将所述请求参数传输给所述服务器,所述请求参数包含表示要查询的业务的类型参数和与查询项目相关的筛选参数,
其中,所述服务器根据所述类型参数而加载定义了相应的所述业务的结果列表的模板文件,根据所述模板文件和所述筛选参数配置所述结果列表的表格,根据所述筛选参数从所述数据库获取相应的返回数据,并且结合所述表格与所述返回数据以作为所述结果列表而导出。
根据本发明的再一方面,提供一种具有列表的通用导出功能的电子设备,包括:
一个或多个处理器;和
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述根据本发明的一个方面的任意一项所述的列表的通用导出方法。
根据本发明的又一方面,提供一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现上述根据本发明的一个方面的任意一项的列表的通用导出方法。
发明的有益效果
通过使用根据本发明的列表的通用导出方法,通过为每个业务的结果列表定义固定格式的模板文件,能够通过通用的导出代码实现不同业务的导出功能,从而即使存在大量业务类型或者当增加新业务类型时,也无需针对每个业务或针对新业务进行开发,而只需要添加相应的模板文件即可实现各个业务的导出功能。因此,根据本发明的优选实施例的列表的通用导出方法,能够极大地减少开发量、提高系统的开发效率,从而节省时间和经济成本。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明一优选实施例的列表通用导出方法的主要流程的示意图;
图2是根据本发明一优选实施例的列表通用导出系统的主要模块的示意图。
具体实施方式
以下将结合本发明的具体实施例及相应的附图对本发明技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明一部分优选实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是根据本发明一优选实施例的列表通用导出方法的主要流程的示意图。
本实施例的列表的通用导出方法用于根据从客户端传输到后台服务器的请求参数而获得要查询的业务的结果列表,其中服务器的入口为统一的RESTful接口,请求参数包含要查询的业务的类型参数classify和要查询的项目的筛选参数queryParam。供查询的业务有多个,包括例如供应促销管理业务和商家管理业务等,通过类型参数来区分不同的业务。具体地,预先为每个业务分配唯一的类型参数,例如供应促销管理业务的类型参数为sales_promotion,商家管理业务的类型参数为seller_vip。服务器根据收到的类型参数判定需要处理哪种业务,例如当classify=sales_promotion时,需要导出供应促销管理业务的数据结果列表,当classify=seller_vip时,需要导出商家管理业务的数据结果列表。
为实现结果列表的通用导出,本实施例采用的方式是以固定的格式为每个业务定义对应的模板文件,通过模板文件导出结果列表。具体方法如下文所述。
在固定路径下建立多个Json文件,每个Json文件分别以一个类型参数classify的值命名。当收到类型参数时,服务器从程序包的固定目录下加载与类型参数的值同名的Json文件,以实现类型参数与模板文件的一一对应,进而将模板文件与各类业务一一对应。
模板文件需要被约定成固定的Json格式。通过约定通用字段而约定固定格式,具体地,例如:resourceURL字段定义该请求进行底层访问时用于获取数据的接口地址;pageSize字段定义分页支持的单页数据量;maxCount字段定义可请求的最大数据量;config字段定义导出文件中的字段定义,例如包括Excel文件外显表头字段名,对应的列表后端请求结果字段。同时,支持请求结果字段为特殊类型,比如字典,时间格式等等。每个业务定义需参考系统预设的示例模板中的已有字段。
模板文件定义示例如下:
其中,定义了请求进行底层访问时用于获取数据的接口地址为“/sellerVip/”,列表支持的最大数据量为20000,每页支持的数据量为30,导出的文件的表头文字为“商家ID”。
服务器如下加载作为模板文件的Json文件,并将其转换成相应的Java Bean模式,以便程序进行下一步的数据读取:
加载模板文件后,服务器获取列表对应的请求链接,将请求链接拼接上列表的筛选参数,即可实现导出列表的请求动作,并且根据模板文件和筛选参数配置列表表格。其中,在配置表格之前,需要先发起请求结果数量的请求,以查看请求导出的数据量是否超过模板文件中定义的最大数据量的上限(即模板文件中字段maxCount定义的值),用于限制查询总量。如果超过,则判定以模板文件中定义的最大数据量上限为准,例如在上文的定义中,如果请求导出的数据量超过20000,则只导出20000个数据。如果请求的数据量没有超出模板定义的最大数据量,则正常导出请求的数据量。
接下来,就可以根据筛选参数和模板文件生成导出内容。
具体地,发起导出请求,服务器将任务提交给为业务定义的线程池,线程池在内部寻找空闲线程来处理导出请求。在处理中,使用之前加载过的配置信息Java Bean,然后用分页加载的方式,逐页请求配置信息中的获取数据接口,并传入筛选参数。将分页获取的返回结果转换成中间态数组。转换方式为:遍历模板文件中的导出字段定义,依次看返回结果中是否有对应的列表后端请求结果字段,如果有,则按位于返回结果的位置为行号,模板文件中定义的位置为列号,找到相应的字符串数组位置。同时,根据导出字段定义的类型,进行相应类型的外显转换。
例如,中间态数组内容如下:
[
{customerId:6674269,customerName:张三,createdTime:2020/10/118:55},
{customerId:179065004106117,customerName:李四,createdTime:2020/10/119:15}
]
此外,模板里Config字段数组定义了输出到表格显示的列名与数据列id的对应关系:
首先从上面配置的顺序写文件的第一行,即表头。然后逐行从中间态数组里读出数据,按配置里的insideFiled获取每列的值,放到当前行对应的列里,例如最终形成一个如下表1所示的两行三列的列表:
表1
获取到列表返回内容转换成的字符串数组后,进行例如Excel文件写入,使用公知的工具SXSSFWorkbook来实现。Excel文件写入成功后,即可给发起申请的操作人发邮件。读取系统中当前的用户信息,通过转换,可以获取到该用户的邮箱地址,通过发邮件的形式,将导出内容生成的Excel文件通过邮件的形式发送给系统的操作者。
如上所述的根据筛选参数和模板文件配置列表表格、加载列表内容以及写入Excel文件和发送邮件的示例如下:
以上,完成了结果列表的导出,并且将导出内容通过Excel文件的格式发送给查询的用户。
根据如上所述的根据本实施例的列表的通用导出方法,通过为每个业务的结果列表定义固定格式的模板文件,能够通过通用的导出代码实现不同业务的导出功能,从而即使存在大量业务类型或者当增加新业务类型时,也无需针对每个业务或针对新业务进行开发,而只需要添加相应的模板文件即可实现各个业务的导出功能。因此,根据本发明的优选实施例的列表的通用导出方法,能够极大地减少开发量、提高系统的开发效率,从而节省时间和经济成本。
本发明还提供一种列表的通用导出系统。如图2所示,所述系统主要包括客户端、服务器和数据库。其中,用户使用客户端进行查询的输入操作,根据用户的输入内容生成包含类型参数和筛选参数的请求参数并且传输给服务器。服务器从固定路径加载与类型参数的值同名的Json文件,从而获得用户要查询的业务的对应模板文件,然后,服务器使用线程池进行导出处理,具体地,根据模板文件和筛选参数配置结果列表的表格,并且根据筛选参数从数据库获取相应的返回数据,并且结合表格与返回数据以作为结果列表而导出,如上文所述。
作为另一方面,本发明还提供了一种具有列表的通用导出功能的电子设备,其包括:一个或多个处理器;以及存储装置,用于存储一个或多个程序。当一个或多个程序被一个或多个处理器执行时,所述电子设备使得一个或多个处理器实现如在本发明的优选实施例中所述的列表的通用导出方法。
作为又一方面,本发明还提供了一种计算机可读介质,该计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,所述程序被处理器执行以实现如在本发明的优选实施例中所述的列表的通用导出方法。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
机译: 使用机器学习模型方法计算机可读介质的复数帧系统提供信息导出,其可读介质和面试准备服务提供方法
机译: 电子设备,促销列表推荐方法和系统以及计算机可读存储介质
机译: 视差值导出装置,设备控制系统,可动设备,机器人,视差值导出方法和计算机可读存储介质