交叉表导出数据的处理方法及系统、计算机可读存储介质与流程

文档序号:17548514发布日期:2019-04-30 18:02阅读:147来源:国知局
本发明涉及计算机
技术领域
:,具体而言,涉及一种交叉表导出数据的处理方法,一种交叉表导出数据的处理系统,及一种计算机可读存储介质。
背景技术
::报表数据的输出是用户在使用包含报表的软件产品的常见操作。通常情况下,开发人员都会在产品上提供导出的选项,然而实际中使用的交叉表虽然在展现上体现的行数不多,但是实际sql查询出的数据量是非常大的,并且在导出的过程中还要填充表格模型等,这就给服务器及客户端造成不小的压力,导出的时间也很长。图1示出了现有技术中的交叉表导出数据的原理,例如:select部门,姓名,年份,薪资项目,sum(money)fromtablegroupby部门,姓名,年份,薪资项目orderby部门,姓名,年份,薪资项目。导出结果如表1所示:表1续表现有技术中的交叉表的导出方式存在以下的几点问题:1、一次性查询展现并按照显示输出的问题。查询行数放大后,会导致客户端内存占用较大,如果同时打开多张报表或多个查询节点,可能会导致内存溢出,系统无法响应,必须要重新进入系统才可以,造成非常差的用户体验。并且查询行数过多时,用户在前端查看也并不方便,如果多个用户同时在前端反复去查询展现这么大的数据量,那么对服务器来说也是一个不小的压力,因此大多数软件产品会对此有一定的行数限制。2、交叉表全部数据导出遇到数据量大的问题。使用交叉表时用户虽然在表中看上去展现的行数不多,但是实际上sql搜索出的数据量还是非常大的,如果在行维度或是列维度设置较多时,数据集呈现上百万的量是很常见的。这样会给中间件造成不小的压力。例如一个900行,dl(自定义)列的交叉表,实际在sql执行后搜索出的行数就有10万多行,在实际应用中几千行的交叉表还是很常见的,那么这样就会达到上百万行的数据量。3、现有的导出方式无法实现分批导出,需要在后台代码中转换成交叉表模型,可能会造成分批行的行数据不全。技术实现要素:本发明旨在至少解决现有技术或相关技术中存在的技术问题之一。为此,本发明的一方面在于提出了一种交叉表导出数据的处理方法。本发明的另一方面在于提出了一种交叉表导出数据的处理系统。本发明的再一方面在于提出了计算机可读存储介质。有鉴于此,本发明提出了一种交叉表导出数据的处理方法,包括:获取原始交叉表模型的执行sql;从原始交叉表模型的交叉区域中获取列维度字段集,根据列维度字段集构建计算字段,向执行sql增加计算字段,得到第一执行sql;获取一个交叉指标,根据交叉指标对第一执行sql进行转换,以获得交叉指标对应的sql语句,sql语句用于对交叉指标的交叉数据进行行对列的转换;获得所有交叉指标对应的sql语句,并进行合并,得到目标执行sql;根据目标执行sql进行查询,得到结果集,将结果集展现在目标交叉表模型中。根据本发明的交叉表导出数据的处理方法,在获得原始交叉表模型的执行sql后,从原始交叉表模型的交叉区域中获得列维度字段集,如部门、年份、薪资项目等,根据列维度字段集构建计算字段,将计算字段添加至执行sql中,形成第一执行sql;在获取到一个交叉指标后,对第一执行sql进行转化,获得一个交叉指标的sql语句,通过执行sql语句,可对交叉指标所对应的交叉数据实现行对列的转换;当存在多个交叉指标时,则需要根据每个交叉指标对第一执行sql进行转化,从而获得每个交叉指标的sql语句,最后将多个sql语句合并起来,形成最终的执行sql,即目标执行sql,根据最终的执行sql进行查询,得到最终的结果集,并将其填充在目标交叉表模型中。通过本发明的交叉表导出数据的处理方法,在数据库层面实现行对列的转换,既满足交叉表的全部导出,又避免了交叉表一次性执行sql数据行数过大,从而减轻服务器及客户端的压力,并且有效的提高交叉表的导出速度,有良好的用户体验。在上述技术方案中,优选地,所述获取一个交叉指标的步骤,具体包括:根据查询参数获得交叉指标信息;根据交叉指标信息获取列维度的值;根据列维度的值,确定一个交叉指标。在该技术方案中,对获得一个交叉指标进行了限定,具体而言,根据查询参数获得交叉指标信息,如年份_薪资项目等,根据交叉指标信息获得列维度的值,如年份_薪资项目对应的2017_底薪、2017_奖金、2018_底薪、2018_期权等,其中列维度的值用于构建行转列之后的交叉表的表头,基于这些列维度的值,如2017_底薪、2017_奖金、2018_底薪、2018_期权等,可以确定一个交叉指标,如2017_底薪,通过数据库中行转列的转换方式对第一执行sql进行一次改变,得到该交叉指标的sql语句,通过这个sql语句,可以对该交叉指标所对应的交叉数据进行行到列的转换,从而有效解决了交叉表执行sql数据行数过大的问题,减轻服务器及客户端的压力,并且有效的提高交叉表的导出速度。在上述任一技术方案中,优选地,交叉表导出数据的处理方法,还包括:在获得目标执行sql的步骤之后,根据交叉指标的数量,向目标执行sql增加排序与分组sql语句。在该技术方案中,在获得目标执行sql后,根据交叉指标的数量向目标执行sql中增加排序与分组sql语句,这样可以自定义交叉表的显示顺序和分组情况,方便用户在前端进行查看,有良好的用户体验。在上述任一技术方案中,优选地,交叉表导出数据的处理方法,还包括:获取导出路径信息,并按照预设行数分批导出目标交叉表模型中的数据。在该技术方案中,获取用户的导出路径信息等,按照固定行数或用户自定义设置的行数(例如每批5000行),进行分批导出,分批导出结束后,获得最终的导出文件,将数据进行分批导出,进一步减轻了服务器及客户端的压力。在上述任一技术方案中,优选地,获取原始交叉表模型的执行sql的步骤,具体包括:获取执行sql的参数,根据执行sql的参数确定原始交叉表模型的执行sql。在该技术方案中,根据用户输入的执行sql的参数,可以获得原始交叉表模型的执行sql,基于原始交叉表模型及其执行sql进行转化,在数据库层面实现行对列的转换,减少一次性执行sql查询出的数据集的行数,并将数据进行分批导出,减轻服务器及客户端的压力。本发明还提出了一种交叉表导出数据的处理系统,包括:存储器,用于存储计算机程序;处理器,用于执行计算机程序以:获取原始交叉表模型的执行sql;从原始交叉表模型的交叉区域中获取列维度字段集,根据列维度字段集构建计算字段,向执行sql增加计算字段,得到第一执行sql;获取一个交叉指标,根据交叉指标对第一执行sql进行转换,以获得交叉指标对应的sql语句,sql语句用于对交叉指标的交叉数据进行行对列的转换;获得所有交叉指标对应的sql语句,并进行合并,得到目标执行sql;根据目标执行sql进行查询,得到结果集,将结果集展现在目标交叉表模型中。根据本发明的交叉表导出数据的处理系统,在获得原始交叉表模型的执行sql后,从原始交叉表模型的交叉区域中获得列维度字段集,如部门、年份、薪资项目等,根据列维度字段集构建计算字段,将计算字段添加至执行sql中,形成第一执行sql;在获取到一个交叉指标后,对第一执行sql进行转化,获得一个交叉指标的sql语句,通过执行sql语句,可对交叉指标所对应的交叉数据实现行对列的转换;当存在多个交叉指标时,则需要根据每个交叉指标对第一执行sql进行转化,从而获得每个交叉指标的sql语句,最后将多个sql语句合并起来,形成最终的执行sql,即目标执行sql,根据最终的执行sql进行查询,得到最终的结果集,并将其填充在目标交叉表模型中。通过本发明的交叉表导出数据的处理系统,在数据库层面实现行对列的转换,既满足交叉表的全部导出,又避免了交叉表一次性执行sql数据行数过大,从而减轻服务器及客户端的压力,并且有效的提高交叉表的导出速度,有良好的用户体验。在上述技术方案中,优选地,处理器,具体用于执行计算机程序以:根据查询参数获得交叉指标信息;根据交叉指标信息获取列维度的值;根据列维度的值,确定一个交叉指标。在该技术方案中,对获得一个交叉指标进行了限定,具体而言,根据查询参数获得交叉指标信息,如年份_薪资项目等,根据交叉指标信息获得列维度的值,如年份_薪资项目对应的2017_底薪、2017_奖金、2018_底薪、2018_期权等,其中列维度的值用于构建行转列之后的交叉表的表头,基于这些列维度的值,如2017_底薪、2017_奖金、2018_底薪、2018_期权等,可以确定一个交叉指标,如2017_底薪,通过数据库中行转列的转换方式对第一执行sql进行一次改变,得到该交叉指标的sql语句,通过这个sql语句,可以对该交叉指标所对应的交叉数据进行行到列的转换,从而有效解决了交叉表执行sql数据行数过大的问题,减轻服务器及客户端的压力,并且有效的提高交叉表的导出速度。在上述任一技术方案中,优选地,处理器,还用于执行计算机程序以:在获得目标执行sql的步骤之后,根据交叉指标的数量,向目标执行sql增加排序与分组sql语句。在该技术方案中,在获得目标执行sql后,根据交叉指标的数量向目标执行sql中增加排序与分组sql语句,这样可以自定义交叉表的显示顺序和分组情况,方便用户在前端进行查看,有良好的用户体验。在上述任一技术方案中,优选地,处理器,还用于执行计算机程序以:获取导出路径信息,并按照预设行数分批导出目标交叉表模型中的数据。在该技术方案中,获取用户的导出路径信息等,按照固定行数或用户自定义设置的行数(例如每批5000行),进行分批导出,分批导出结束后,获得最终的导出文件,将数据进行分批导出,进一步减轻了服务器及客户端的压力。在上述任一技术方案中,优选地,处理器,具体用于执行计算机程序以:获取执行sql的参数,根据执行sql的参数确定原始交叉表模型的执行sql。在该技术方案中,根据用户输入的执行sql的参数,可以获得原始交叉表模型的执行sql,基于原始交叉表模型及其执行sql进行转化,在数据库层面实现行对列的转换,减少一次性执行sql查询出的数据集的行数,并将数据进行分批导出,减轻服务器及客户端的压力。本发明还提出了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现了如上述技术方案中任一项的交叉表导出数据的处理方法的步骤。根据本发明的计算机可读存储介质,其上存储的计算机程序被处理器执行时实现了如上述技术方案中任一项的交叉表导出数据的处理方法的步骤,因而该计算机可读存储介质能够实现该交叉表导出数据的处理方法的全部有益效果,不再赘述。本发明的附加方面和优点将在下面的描述部分中变得明显,或通过本发明的实践了解到。附图说明本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:图1示出了相关技术中的交叉表导出数据的原理示意图;图2示出了根据本发明的一个实施例的交叉表导出数据的处理方法的流程示意图;图3示出了根据本发明的另一个实施例的交叉表导出数据的处理方法的流程示意图;图4示出了根据本发明的再一个实施例的交叉表导出数据的处理方法的流程示意图;图5示出了根据本发明的一个具体实施例的交叉表导出数据的处理方法的流程示意图;图6示出了根据本发明的一个实施例的交叉表导出数据的处理系统的示意图。具体实施方式为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。如图2所示,根据本发明的一个实施例的交叉表导出数据的处理方法的流程示意图。其中,该交叉表导出数据的处理方法,包括:步骤102,获取原始交叉表模型的执行sql;从原始交叉表模型的交叉区域中获取列维度字段集,根据列维度字段集构建计算字段,向执行sql增加计算字段,得到第一执行sql;步骤104,获取一个交叉指标,根据交叉指标对第一执行sql进行转换,以获得交叉指标对应的sql语句,sql语句用于对交叉指标的交叉数据进行行对列的转换;步骤106,获得所有交叉指标对应的sql语句,并进行合并,得到目标执行sql;步骤108,根据目标执行sql进行查询,得到结果集,将结果集展现在目标交叉表模型中。本发明实施例提供的交叉表导出数据的处理方法,在获得原始交叉表模型的执行sql后,从原始交叉表模型的交叉区域中获得列维度字段集,如部门、年份、薪资项目等,根据列维度字段集构建计算字段,将计算字段添加至执行sql中,形成第一执行sql;在获取到一个交叉指标后,对第一执行sql进行转化,获得一个交叉指标的sql语句,通过执行sql语句,可对交叉指标所对应的交叉数据实现行对列的转换;当存在多个交叉指标时,则需要根据每个交叉指标对第一执行sql进行转化,从而获得每个交叉指标的sql语句,最后将多个sql语句合并起来,形成最终的执行sql,即目标执行sql,根据最终的执行sql进行查询,得到最终的结果集,并将其填充在目标交叉表模型中。通过本发明的交叉表导出数据的处理方法,在数据库层面实现行对列的转换,既满足交叉表的全部导出,又避免了交叉表一次性执行sql数据行数过大,从而减轻服务器及客户端的压力,并且有效的提高交叉表的导出速度,有良好的用户体验。如图3所示,根据本发明的另一个实施例的交叉表导出数据的处理方法的流程示意图。其中,该交叉表导出数据的处理方法,包括:步骤202,获取原始交叉表模型的执行sql;从原始交叉表模型的交叉区域中获取列维度字段集,根据列维度字段集构建计算字段,向执行sql增加计算字段,得到第一执行sql;步骤204,根据查询参数获得交叉指标信息;根据交叉指标信息获取列维度的值;根据列维度的值,确定一个交叉指标;步骤206,根据交叉指标对第一执行sql进行转换,以获得交叉指标对应的sql语句,sql语句用于对交叉指标的交叉数据进行行对列的转换;步骤208,获得所有交叉指标对应的sql语句,并进行合并,得到目标执行sql;步骤210,根据目标执行sql进行查询,得到结果集,将结果集展现在目标交叉表模型中。在该实施例中,对获得一个交叉指标进行了限定,具体而言,根据查询参数获得交叉指标信息,如年份_薪资项目等,根据交叉指标信息获得列维度的值,如年份_薪资项目对应的2017_底薪、2017_奖金、2018_底薪、2018_期权等,其中列维度的值用于构建行转列之后的交叉表的表头,基于这些列维度的值,如2017_底薪、2017_奖金、2018_底薪、2018_期权等,可以确定一个交叉指标,如2017_底薪,通过数据库中行转列的转换方式对第一执行sql进行一次改变,得到该交叉指标的sql语句,通过这个sql语句,可以对该交叉指标所对应的交叉数据进行行到列的转换,从而有效解决了交叉表执行sql数据行数过大的问题,减轻服务器及客户端的压力,并且有效的提高交叉表的导出速度。在上述任一实施例中,优选地,交叉表导出数据的处理方法,还包括:在获得目标执行sql的步骤之后,根据交叉指标的数量,向目标执行sql增加排序与分组sql语句。在该实施例中,在获得目标执行sql后,根据交叉指标的数量向目标执行sql中增加排序与分组sql语句,这样可以自定义交叉表的显示顺序和分组情况,方便用户在前端进行查看,有良好的用户体验。如图4所示,根据本发明的再一个实施例的交叉表导出数据的处理方法的流程示意图。其中,该交叉表导出数据的处理方法,包括:步骤302,获取原始交叉表模型的执行sql;从原始交叉表模型的交叉区域中获取列维度字段集,根据列维度字段集构建计算字段,向执行sql增加计算字段,得到第一执行sql;步骤304,根据查询参数获得交叉指标信息;根据交叉指标信息获取列维度的值;根据列维度的值,确定一个交叉指标;步骤306,根据交叉指标对第一执行sql进行转换,以获得交叉指标对应的sql语句,sql语句用于对交叉指标的交叉数据进行行对列的转换;步骤308,获得所有交叉指标对应的sql语句,并进行合并,得到目标执行sql,并根据交叉指标的数量,向目标执行sql增加排序与分组sql语句;步骤310,根据目标执行sql进行查询,得到结果集,将结果集展现在目标交叉表模型中;步骤312,获取导出路径信息,并按照预设行数分批导出目标交叉表模型中的数据。在该实施例中,获取用户的导出路径信息等,按照固定行数或用户自定义设置的行数(例如每批5000行),进行分批导出,分批导出结束后,获得最终的导出文件,将数据进行分批导出,进一步减轻了服务器及客户端的压力。在上述任一实施例中,优选地,获取原始交叉表模型的执行sql的步骤,具体包括:获取执行sql的参数,根据执行sql的参数确定原始交叉表模型的执行sql。在该实施例中,根据用户输入的执行sql的参数,可以获得原始交叉表模型的执行sql,基于原始交叉表模型及其执行sql进行转化,在数据库层面实现行对列的转换,减少一次性执行sql查询出的数据集的行数,并将数据进行分批导出,减轻服务器及客户端的压力。如图5所示,根据本发明的一个具体实施例的交叉表导出数据的处理方法的流程示意图。其中,该交叉表导出数据的处理方法,包括:步骤402,转换原始sql,在数据库层面实现行对列的转换等;步骤404,填充交叉表,分批导出。本发明实施例提供的交叉表导出数据的处理方法,通过这种sql的转换方式既满足交叉表的全部导出又减轻了给服务器带来的一次性sql数据行数过多的压力,并且导出全部数据时效率明显增快很多,有良好的用户体验。如图6所示,根据本发明的一个实施例的交叉表导出数据的处理系统的示意图。其中,该交叉表导出数据的处理系统500,包括:存储器502,用于存储计算机程序;处理器504,用于执行计算机程序以:获取原始交叉表模型的执行sql;从原始交叉表模型的交叉区域中获取列维度字段集,根据列维度字段集构建计算字段,向执行sql增加计算字段,得到第一执行sql;获取一个交叉指标,根据交叉指标对第一执行sql进行转换,以获得交叉指标对应的sql语句,sql语句用于对交叉指标的交叉数据进行行对列的转换;获得所有交叉指标对应的sql语句,并进行合并,得到目标执行sql;根据目标执行sql进行查询,得到结果集,将结果集展现在目标交叉表模型中。本发明实施例的交叉表导出数据的处理系统500,在获得原始交叉表模型的执行sql后,从原始交叉表模型的交叉区域中获得列维度字段集,如部门、年份、薪资项目等,根据列维度字段集构建计算字段,将计算字段添加至执行sql中,形成第一执行sql;在获取到一个交叉指标后,对第一执行sql进行转化,获得一个交叉指标的sql语句,通过执行sql语句,可对交叉指标所对应的交叉数据实现行对列的转换;当存在多个交叉指标时,则需要根据每个交叉指标对第一执行sql进行转化,从而获得每个交叉指标的sql语句,最后将多个sql语句合并起来,形成最终的执行sql,即目标执行sql,根据最终的执行sql进行查询,得到最终的结果集,并将其填充在目标交叉表模型中。通过本发明的交叉表导出数据的处理系统500,在数据库层面实现行对列的转换,既满足交叉表的全部导出,又避免了交叉表一次性执行sql数据行数过大,从而减轻服务器及客户端的压力,并且有效的提高交叉表的导出速度,有良好的用户体验。在本发明的一个实施例中,优选地,处理器504,具体用于执行计算机程序以:根据查询参数获得交叉指标信息;根据交叉指标信息获取列维度的值;根据列维度的值,确定一个交叉指标。在该实施例中,对获得一个交叉指标进行了限定,具体而言,根据查询参数获得交叉指标信息,如年份_薪资项目等,根据交叉指标信息获得列维度的值,如年份_薪资项目对应的2017_底薪、2017_奖金、2018_底薪、2018_期权等,其中列维度的值用于构建行转列之后的交叉表的表头,基于这些列维度的值,如2017_底薪、2017_奖金、2018_底薪、2018_期权等,可以确定一个交叉指标,如2017_底薪,通过数据库中行转列的转换方式对第一执行sql进行一次改变,得到该交叉指标的sql语句,通过这个sql语句,可以对该交叉指标所对应的交叉数据进行行到列的转换,从而有效解决了交叉表执行sql数据行数过大的问题,减轻服务器及客户端的压力,并且有效的提高交叉表的导出速度。在本发明的一个实施例中,优选地,处理器504,还用于执行计算机程序以:在获得目标执行sql的步骤之后,根据交叉指标的数量,向目标执行sql增加排序与分组sql语句。在该实施例中,在获得目标执行sql后,根据交叉指标的数量向目标执行sql中增加排序与分组sql语句,这样可以自定义交叉表的显示顺序和分组情况,方便用户在前端进行查看,有良好的用户体验。在本发明的一个实施例中,优选地,处理器504,还用于执行计算机程序以:获取导出路径信息,并按照预设行数分批导出目标交叉表模型中的数据。在该实施例中,获取用户的导出路径信息等,按照固定行数或用户自定义设置的行数(例如每批5000行),进行分批导出,分批导出结束后,获得最终的导出文件,将数据进行分批导出,进一步减轻了服务器及客户端的压力。在本发明的一个实施例中,优选地,处理器504,具体用于执行计算机程序以:获取执行sql的参数,根据执行sql的参数确定原始交叉表模型的执行sql。在该实施例中,根据用户输入的执行sql的参数,可以获得原始交叉表模型的执行sql,基于原始交叉表模型及其执行sql进行转化,在数据库层面实现行对列的转换,减少一次性执行sql查询出的数据集的行数,并将数据进行分批导出,减轻服务器及客户端的压力。具体实施例,提供了一种交叉表导出数据的处理系统。该交叉表导出数据的处理系统,包括:原始交叉表模型执行sql的构建装置,转化前的字段构建装置,sql转化装置,填充模型装置,分批导出装置。其中,原始交叉表模型执行sql的构建装置,用于获取执行sql的参数,根据执行sql的参数获得原始交叉表模型的执行sql。转化前的字段构建装置,用于从交叉区域中获得列维度字段集;根据列维度字段集构建计算字段;以及往执行sql中增加计算字段,例如:select*fromtablepivotsum(money)for年份_薪资项目in(2017_底薪,2017_奖金,2017_期权,2018_底薪,2018_奖金,2018_期权)。sql转化装置,具体用于:(1)获得一个指标的交叉sql,具体为:根据查询参数获得交叉指标信息;获得列维度的值,用于构建行转列之后的表头,如selectdistinct(#colfieldname#)fromtableorderby(#colfieldname#);通过在数据库中行转列的转换方式,获得一个指标的交叉sql,select*fromtablepivot(sum(#mesasefldname#)for(#colfieldname#)in(#values#));(2)获得所有指标的交叉sql;(3)获得最终的执行sql,具体为:如果存在多个指标,则将所有指标的sql进行join,例如:select*fromtemp1leftjointemp2ontemp1.x1=temp2.x1andtemp1.x2=temp2.x2leftjointemp3ontemp2.x1=temp3.x1andemp2.x2=temp3.x2;根据最终的交叉sql执行查询,查询最终的结果集:单一指标:finalsql=finalsql+ordersql;多个指标:finalsql=finalsql+groupsql+ordersql填充模型装置,用于获得表格中需要展现的列头;将结果集展现在模型中;执行导出之前的处理,可用户扩展;分批导出装置,用于获取用户的导出路径等信息;按照固定行数(例如每批5000行)进行分批导出;分批导出结束获得最终的导出文件。采用本发明实施例提供的交叉表导出数据的处理系统,导出交叉表如表2所示:表2本发明实施例提供的交叉表导出数据的处理系统,通过这种sql的转换方式既满足交叉表的全部导出又减轻了给服务器带来的一次性sql数据行数过多的压力,并且导出全部数据时效率明显增快很多,有良好的用户体验。本发明的实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现了如上述任一实施例中的交叉表导出数据的处理方法的步骤,因而该计算机可读存储介质能够实现该交叉表导出数据的处理方法的全部有益效果,不再赘述。以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1