一种非标准数据文件导出方法
文献发布时间:2024-01-17 01:14:25
技术领域
本发明涉及非标准数据导出处理领域,具体为一种非标准数据文件导出方法。
背景技术
由于互联网的迅速发展衍生的互联网行业的相关业务越来越复杂,业务数据量也越来越大,并且随之而产生的业务数据展示、统计等的需求也越来越普遍。在保险业务数据获取的时候总会碰到很多非标准格式的文档,比如为了web显示良好,很多网站将excel文件转换成了pdf格式,还可能直接使用图片格式,而这类文档中的数据是无法直接用来作数据分析的。
Excel作为现在用户最喜欢使用的文件形式之一,用户不由得对所使用的业务系统导出的以excel文件格式承载的业务数据的性能、用户体验以及展示多样性方面提出了更高的要求。以导出Excel文件为例,一般业务系统实现数据导出Excel文件涉及使用以下方案:
方案1:一种是使用apache的poi生成office文件,Apache的Poi,代码API比较底层,可以逐个设置每个行,每个单元格的细节内容。每个单元格的数据样式,数据类型,都可以是不同的。
方案2:一种是根据导出表格,进行全面编码结合PIO去实现;
方案3:而另一种则是基于世面工具(如easyExcel等)实现;
针对方案1,在开发时逐个设置每个行,每个单元格的细节内容,导致开发工程浩大,导出的文件的格式也比较难统一;
针对方案2,此方案针对性强,但是编码工作众多,耗费人力;
针对方案3,此方案虽然一定程度节省了人力编码工作,但是也无法彻底消除人力编码工作,而且对于多格式(csv、xls、xlsx等)的适应上,仍然无法在不改代码的情况下随时调整。
无论以上哪种方案,都无法根据实际数据,实时切换直接导出还是以邮件形式进行发送,因此需要一种来避免各个服务每个导出都要重复编码并适用于任何java项目的非标准数据文件导出方法。
发明内容
本发明的目的在于提供一种非标准数据文件导出方法,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:一种非标准数据文件导出方法,包括步骤:
S1:系统接收并获取数据导出请求;
S2:系统对导出请求进行解析,获取导出配置编号和作业信息;
S3:开发人员在系统查询返回对象过程中,对需要导出的字段增加注解,并根据需要进行响应配置,默认可不进行任何配置;
S4:在原有数据库增加一条导出配置;
S5:在S3、S4的配置完成后,前端携带配置编码和数据查询条件,调用通用导出方法进行文件导出。
优选的,S2中对导出请求进行解析的具体过程包括:
S201:获取请求,并分析请求中的字符集信息;
S202:使用字符集的信息构建请求解析器,以便请求解析器使用字符集将请求携带的字节解析成可识别的字符;
S203:配置请求解析模块,请求解析模块配置为从数据请求中解析得到目标数据操作功能;其中目标数据操作功能包括数据解析、数据操作以及数据查询中的至少两种;
S204:请求解析模块获取字符并对其进行解析,获得配置编号和作业信息。
优选的,S3中通过对导出的字段增加@Cloumn注解,具体源码如下:
@CoLumn(alias="产品名称",index=4)
privateStringproductName;
@CoLumn(alias="支付平台"dictCode="DICT_TYPE_PAY_CHANNAL",defaultDictName="个账支付",index=5)privateStringmethod;
其中上述导出的字段包括产品名称、支付平台、个账支付等与特药支付系统相关的字段。
优选的,S5中具体过程包括:
S501:系统前端调用通用导出方法,携带数据获取的条件参数和配置编码;
S502:根据编码获取调用信息,并调用数据查询方法;
S503:判断其是否查询到配置数据,若否则返回并提示信息,若是,即查到配置数据,则根据数据库配置的文件类型,生成对应格式的文件;
S504:记录数据是否需要邮件导出,若否则生成文件,上传alioss,url返回前端,并结束;若是则进行下一步,即S305-S306;
S505:开启异步进行文件生成;
S506:根据数量进行文件切割,并将生成的文件链接,以邮件形式进行发送,并结束。
与现有技术相比,本发明的有益效果是:
1、本发明将反射与注解结合,可以实现任意数据的获取,而且这两项都是jdk(JavaDevelopmentKit)自带的,可以适用于任何java项目,所以除poi以外,无需任何其他第三方组件。
2、本发明所有的导出工作,只需一个注解+一条数据库配置即可实现,具体实现的功能如下:
(1)、查询结果即可作为导出依据,无需额外编码,节约一半资源;
(2)、满足各种格式的需求,可以根据用户的设置,无需更改代码,实施切换导出各种格式;
(3)、可以根据实际数据情况,对比配置,自动识别实时导出还是以邮件形式进行文件的发送;
(4)、根据注解,进行单元格合并、字段合计、字典翻译、差额对比操作,无需额外编码;
(5)、根据设置进行文件切割,避免但文件过大的情况。
附图说明
图1为本发明实施例的方法流程示意图;
图2为本发明实施例中导出请求进行解析的具体流程图;
图3为本发明实施例中调用通用导出方法进行文件导出的具体流程图;
图4为本发明实施例中数据库增加一条导出配置的示例图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1:请参阅图1-3,本发明提供一种技术方案:一种非标准数据文件导出方法,包括步骤:
S1:系统接收并获取数据导出请求;
S2:系统对导出请求进行解析,获取导出配置编号和作业信息;
S3:开发人员在系统查询返回对象过程中,对需要导出的字段增加注解,并根据需要进行响应配置,默认可不进行任何配置;
S4:在原有数据库增加一条导出配置;
S5:在S3、S4的配置完成后,前端携带配置编码和数据查询条件,调用通用导出方法进行文件导出。
在本实施例中,S2中对导出请求进行解析的具体过程包括:
S201:获取请求,并分析请求中的字符集信息;
S202:使用字符集的信息构建请求解析器,以便请求解析器使用字符集将请求携带的字节解析成可识别的字符;
S203:配置请求解析模块,请求解析模块配置为从数据请求中解析得到目标数据操作功能;其中目标数据操作功能包括数据解析、数据操作以及数据查询中的至少两种;
S204:请求解析模块获取字符并对其进行解析,获得配置编号和作业信息。
在本实施例中,S3中通过对导出的字段增加@Cloumn注解,具体源码如下:
@CoLumn(alias="产品名称",index=4)
privateStringproductName;
@CoLumn(alias="支付平台"dictCode="DICT_TYPE_PAY_CHANNAL",defaultDictName="个账支付",index=5)privateStringmethod;
其中上述导出的字段包括产品名称、支付平台、个账支付等与特药支付系统相关的字段。
在本实施例中,S5中具体过程包括:
S501:系统前端调用通用导出方法,携带数据获取的条件参数和配置编码;
S502:根据编码获取调用信息,并调用数据查询方法;
S503:判断其是否查询到配置数据,若否则返回并提示信息,若是,即查到配置数据,则根据数据库配置的文件类型,生成对应格式的文件;
S504:记录数据是否需要邮件导出,若否则生成文件,上传alioss,url返回前端,并结束;若是则进行下一步,即S305-S306;
S505:开启异步进行文件生成;
S506:根据数量进行文件切割,并将生成的文件链接,以邮件形式进行发送,并结束。
实施例2:一种导出工具,基于上述实施例1中的导出方法,该工具可以实现所有的导出工作,只需一个注解+一条数据库配置即可实现,具体实现的功能如下:
(1)、查询结果即可作为导出依据,无需额外编码,节约一半资源;
(2)、满足各种格式的需求,可以根据用户的设置,无需更改代码,实施切换导出各种格式;
(3)、可以根据实际数据情况,对比配置,自动识别实时导出还是以邮件形式进行文件的发送;
(4)、根据注解,进行单元格合并、字段合计、字典翻译、差额对比操作,无需额外编码;
(5)、根据设置进行文件切割,避免但文件过大的情况。
值得注意的是:上述导出工具壳根据用户需要的格式生成csv、xls、xlsx等不同格式的文档,文档具体格式基于导出请求或命令调控。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。