CN117909376A - 一种员工报表数据查询方法、系统、设备及存储介质 - Google Patents
一种员工报表数据查询方法、系统、设备及存储介质 Download PDFInfo
- Publication number
- CN117909376A CN117909376A CN202410069606.4A CN202410069606A CN117909376A CN 117909376 A CN117909376 A CN 117909376A CN 202410069606 A CN202410069606 A CN 202410069606A CN 117909376 A CN117909376 A CN 117909376A
- Authority
- CN
- China
- Prior art keywords
- data
- report
- employee
- query
- staff
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 77
- 238000013500 data storage Methods 0.000 claims abstract description 10
- 241001178520 Stomatepia mongo Species 0.000 claims description 10
- 238000009877 rendering Methods 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 5
- 238000012163 sequencing technique Methods 0.000 claims description 4
- 238000012549 training Methods 0.000 claims description 4
- 238000001914 filtration Methods 0.000 description 6
- 230000004044 response Effects 0.000 description 6
- 238000012216 screening Methods 0.000 description 6
- 230000001360 synchronised effect Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000001174 ascending effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000011056 performance test Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 241001465754 Metazoa Species 0.000 description 1
- 241000283973 Oryctolagus cuniculus Species 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013524 data verification Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种员工报表数据查询方法、系统、设备及存储介质,将每个员工的报表数据以单独json文档的数据格式存储在MongoDB数据库,其中每条员工报表数据均包含多个字段的数据;根据用户查询请求生成查询语句,在MongoDB数据库中执行所述查询语句,获取目标员工以及目标字段的数据并导入内存,生成员工报表。本发明基于MongoDB天然支持非关系数据存储和查询的优点,再基于元数据定义,只加载指定页码和指定列的数据到内存,相比于传统先将所有员工和所有列数据先加载至内存再进行筛选的方法,有效减少返回行数和列数,减少内存开销和数据库请求压力,能够灵活的呈现用户所需的员工报表。
Description
技术领域
本发明涉及数据查询技术领域,具体涉及一种员工报表数据查询方法、系统、设备及存储介质。
背景技术
人力资源管理平台用户有大量的员工报表数据查询的诉求,需要将员工的全字段(系统预置字段+用户自定义字段)都要在报表中呈现,且要求能够自定义筛选条件,列表展现指定的列,可以做到报表数据自定义配置。传统做法是将一个员工的数据以json大文本格式存储在mysql数据库中,每次报表查询的时候,需要将所有的员工数据查询到系统内存中,在内存过滤筛选且分页后给客户呈现。这样会有几个问题:(1)无论是否是用户需要的员工和列都要加载的内存中,内存开销较大,容易内存溢出;(2)数据库请求压力较大;(3)接口响应较慢,用户体验较差。
发明内容
为此,本发明提供一种员工报表数据查询方法、系统、设备及存储介质,以解决现有员工报表数据查询方法存在的内存开销大,数据库请求压力大,数据响应慢的问题。
为了实现上述目的,本发明提供如下技术方案:
根据本发明实施例的第一方面,提出一种员工报表数据查询方法,所述方法包括:
将每个员工的报表数据以单独json文档的数据格式存储在MongoDB数据库,其中每条员工报表数据均包含多个字段的数据;
根据用户查询请求生成查询语句,在MongoDB数据库中执行所述查询语句,获取目标员工以及目标字段的数据并导入内存;
将查询到的目标员工以及目标字段的数据分别作为报表的行和列信息并进行报表渲染,生成员工报表。
进一步的,将每个员工的报表数据以单独json文档的数据格式存储在MongoDB数据库,具体包括:
将Mysql数据库中存储的员工数据同步至MongoDB数据库,其中Mysql数据库中员工数据以json大文本格式存储,将json大文本数据转换为MongoDB的json文档格式。
进一步的,每条员工报表数据均包含多个字段的数据,具体包括:
所述字段包括字母形式的系统预置字段以及uuid形式的用户自定义字段。
进一步的,所述员工报表数据包括基础信息、岗位信息、教育经历、培训经历、证书、联系人、自定义字段值,所述岗位信息包括合同记录。
进一步的,根据用户查询请求生成查询语句,在MongoDB数据库中执行所述查询语句,获取目标员工以及目标字段的数据并导入内存,具体包括:
通过MongoDB分页指令加载指定页码数据到内存,以及基于用户请求头部分的字段参数加载指定字段的数据到内存。
进一步的,通过MongoDB分页指令加载指定页码数据到内存,具体包括:
使用skip()和limit()方法实现加载指定页码数据,其中skip()用于跳过指定数量的文档,limit()用于限制返回的文档数量。
进一步的,基于用户请求头部分的字段参数加载指定字段的数据到内存,具体包括:
将员工相关唯一标识信息以及请求的字段参数作为查询条件进行查询,获取指定字段的数据,并使用sort()方法对查询结果进行排序。
根据本发明实施例的第二方面,提出一种员工报表数据查询系统,所述系统包括:
数据存储模块,用于将每个员工的报表数据以单独json文档的数据格式存储在MongoDB数据库,其中每条员工报表数据均包含多个字段的数据;
数据查询模块,用于根据用户查询请求生成查询语句,在MongoDB数据库中执行所述查询语句,获取目标员工以及目标字段的数据并导入内存;
报表生成模块,用于将查询到的目标员工以及目标字段的数据分别作为报表的行和列信息并进行报表渲染,生成员工报表。
根据本发明实施例的第三方面,提出一种电子设备,所述设备包括:处理器和存储器;
所述存储器用于存储一个或多个程序指令;
所述处理器,用于运行一个或多个程序指令,用以执行如上任一项所述的一种员工报表数据查询方法的步骤。
根据本发明实施例的第四方面,提出一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上任一项所述一种员工报表数据查询方法的步骤。
本发明提出一种员工报表数据查询方法、系统、设备及存储介质,将每个员工的报表数据以单独json文档的数据格式存储在MongoDB数据库,其中每条员工报表数据均包含多个字段的数据;根据用户查询请求生成查询语句,在MongoDB数据库中执行所述查询语句,获取目标员工以及目标字段的数据并导入内存;将查询到的目标员工以及目标字段的数据分别作为报表的行和列信息并进行报表渲染,生成员工报表。本发明基于MongoDB天然支持非关系数据存储和查询的优点,再基于元数据定义,只加载指定页码和指定列的数据到内存,相比于传统先将所有员工和所有列数据先加载至内存再进行筛选的方法,有效减少返回行数和列数,减少内存开销和数据库请求压力,能够灵活的呈现用户所需的员工报表,性能强劲。
附图说明
为了更清楚地说明本发明的实施方式或现有技术中的技术方案,下面将对实施方式或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是示例性的,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图引伸获得其它的实施附图。
本说明书所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定本发明可实施的限定条件,故不具技术上的实质意义,任何结构的修饰、比例关系的改变或大小的调整,在不影响本发明所能产生的功效及所能达成的目的下,均应仍落在本发明所揭示的技术内容得能涵盖的范围内。
图1为本发明实施例提供的一种员工报表数据查询方法的流程图;
图2为本发明实施例提供的一种员工报表数据查询方法的整体实施架构;
图3为本发明实施例提供的一种员工报表数据查询方法中员工数据关系图;
图4为本发明实施例提供的一种员工报表数据查询系统的逻辑结构示意图。
具体实施方式
以下由特定的具体实施例说明本发明的实施方式,熟悉此技术的人士可由本说明书所揭露的内容轻易地了解本发明的其他优点及功效,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明第一实施例提供了一种员工报表数据查询方法,下面结合图1和图2进行说明。
如图1所示,在步骤S100中,将每个员工的报表数据以单独json文档的数据格式存储在MongoDB数据库,其中每条员工报表数据均包含多个字段的数据。
上述步骤具体包括,将Mysql数据库中存储的员工数据同步至MongoDB数据库,其中Mysql数据库中员工数据以json大文本格式存储,将json大文本数据转换为MongoDB的json文档格式。
员工数据包括基础信息、岗位信息、教育经历、培训经历、证书、联系人、自定义字段值,岗位信息包括合同记录。数据关系如图3所示。
在MongoDB中,数据以文档的形式存储,每个文档都是一个独立的记录,类似于关系数据库的行。文档是以键值对的形式组织的,可以包含各种类型的数据,包括字符串、数字、布尔值、日期、数组、嵌套文档等。每个文档都有一个唯一的"_id"字段,作为该文档的标识符。
MongoDB使用集合(Collection)来组织和存储文档,集合类似于关系数据库中的表。一个集合可以包含多个文档,并且不同文档之间的结构可以不同。MongoDB使用灵活的文档模型,可以根据需要动态地调整文档的结构,而无需事先定义固定的表结构。
因此,在MongoDB中,可以将上述员工数据作为一个文档插入到集合中,并通过查询语言(如使用find()方法)对集合进行查询和操作。
MongoDB中的1个员工数据格式为:
根据以上提供的员工数据格式,每个员工数据包含以下内容:
_id:唯一标识符,用于标识员工记录。该字段的值由多个字段的组合构成,包括company_id、report_id和employee_id等字段。
63d75e0878e944889b2088cb852c14e9:特定字段,其值为"20220615012840"。
a989df8c394a40629e67aa1e0ef6d926:特定字段,其值为"1"。
name:员工姓名。
group_contract:代表的为合同记录,表示一个员工有多条合同记录。每个合同记录包括以下字段:
contractRecordDuration:合同记录的持续时间。
contractRecordSignDate:合同的签订日期。
contractRecordType:合同的类型。
isMainContract:是否为主合同。
isRenew:是否为续签合同。
contractShowStatus:合同的显示状态。
constellation:员工星座。
secondary_department_name:次级部门名称。
personal_email:员工的个人邮箱。
根据这些字段,可以了解每个员工的基本信息、合同信息以及其他相关属性。
其中key为字母形式的为系统预置的字段,key为uuid形式的是客户自定义的字段,二者都按照统一格式存储在MongoDB中。
Mysql数据库中员工数据以json大文本格式存储。MySQL可以存储JSON大文本数据,自MySQL版本5.7及以上,MySQL引入了对JSON数据类型的支持,可以在MySQL中使用JSON数据类型来存储和处理JSON格式的数据。JSON数据类型可以用于存储包含任意结构和层级的JSON文档,包括JSON对象、数组和嵌套结构,可以在表中定义一个列为JSON类型,然后将JSON数据存储在该列中。
作为一个示例,将MySQL中的员工数据同步至MongoDB,可以按照以下步骤进行操作:
首先,连接到MySQL数据库,并查询员工数据。使用适当的编程语言(如Python)和MySQL驱动程序,执行SELECT语句来检索员工数据;
在获取到MySQL中的员工数据后,创建一个空的MongoDB集合或选择现有集合来存储员工数据;
将MySQL中的员工数据转换为MongoDB可以接受的格式:使用报表编码器,根据MongoDB的结构定义,将员工数据转换为对应的格式,这可以包括将字段映射和转换为MongoDB中的文档结构。
在转换员工数据之后,使用MongoDB驱动程序连接到MongoDB数据库;
将转换后的员工数据插入MongoDB的集合中,可以使用适当的方法(如insert_many或bulk_write)将员工数据批量插入MongoDB;
完成数据插入后,可以进行数据验证和测试,通过执行查询操作,确保员工数据已成功同步到MongoDB中的指定集合;
定期更新和同步员工数据到MongoDB,可以使用定时任务或触发器来自动化数据同步过程。
如图1所示,在步骤S200中,根据用户查询请求生成查询语句,在MongoDB数据库中执行所述查询语句,获取目标员工以及目标字段的数据并导入内存。
上述步骤具体包括,通过MongoDB分页指令加载指定页码数据到内存,以及基于用户请求头部分的字段参数加载指定字段的数据到内存。具体为:
使用skip()和limit()方法实现加载指定页码数据,其中skip()用于跳过指定数量的文档,limit()用于限制返回的文档数量。将员工相关唯一标识信息以及请求的字段参数作为查询条件进行查询,获取指定字段的数据,并使用sort()方法对查询结果进行排序。
数据查询解析:
如根据关键词筛选,比如查询姓名、手机号、工号和部门执行的查询语句如下:
根据以上查询语句,查询语句中包含的内容为:
restrictedTypes:限制类型,该字段为空数组,在此查询中未使用。
skip:跳过文档的数量,该字段值为0,表示从查询结果的第一条文档开始返回。
limit:限制返回的文档数量,该字段值为100,表示最多返回100条符合条件的文档。
queryObject:查询对象,包含了具体的查询条件。其中:
company_id:公司ID,值为"764da2c247804e43a540c6d3bf257eda",用于筛选指定公司的员工。
report_id:报告ID,值为"4e202eededaa4d02a5aff4816163b2a1",用于筛选指定报告的员工。
$and:使用逻辑与操作符,将多个条件组合在一起。在此查询中,包含了一个条件组:
$or:使用逻辑或操作符,将多个关键词筛选条件组合在一起。在此查询中,包含了四个关键词筛选条件:
name:姓名字段,关键词为"查询关键词"。
mobile:手机号字段,关键词为"查询关键词"。
job_number:工号字段,关键词为"查询关键词"。
department_name_path:部门字段,关键词为"查询关键词"。
sortObject:排序对象,用于对查询结果进行排序。其中:
employee_status:员工状态,升序排序。
entry_date:入职日期,升序排序。
employee_id:员工ID,降序排序。
sorted:指示是否对查询结果进行排序,该字段值为true,表示对结果进行排序。
根据这些查询参数,可以在数据库中找到符合指定条件的员工记录,并根据排序规则进行排序。
本发明基于MongoDB天然支持非关系数据存储和查询的优点,再基于元数据定义,能够灵活的呈现客户所需的员工报表,且性能强劲。具体表现在以下方面:
(1)减少了返回行数:通过MongoDB分页指令加载指定页码数据导内存,而不是将所有行数的数据加载到内存中再过出滤指定页的数据,减少分配内存的要求;
(2)减少了返回列数:传递用户请求表头部分列参数到MongoDB,从而只查出指定列到内存,而不是查询所有列的数据到内存再次过滤;
(3)由于返回行数和列数的减少,数据库响应的数据量(行数&列数)少了,数据库请求压力变小,减少了查询的数据量,减少了内存过滤的计算,减少了分配内存的申请和回收,即增加了响应速度。
作为引申的,当数据量较大时,使用skip()方法来分页查询可能会导致性能问题。skip()方法需要在每次查询时跳过指定数量的文档,这会增加查询的开销,尤其是在需要跳过大量文档时。为了优化查询性能,在本方案的基础上可以采用以下几种方法:
(1)使用索引:在查询的字段上创建索引可以显著提高查询性能。通过在关键字段上创建索引,MongoDB可以更快地定位匹配的文档,减少跳过的文档数量。可以使用create_index()方法来创建索引。
示例:先连接到MongoDB数据库,使用create_index()方法在集合的"name"字段上创建索引:collection.create_index("name")。
(2)使用基于游标的分页:使用基于游标的分页策略,可以避免使用skip()方法,提高查询性能。基本原理是使用一个游标来存储查询结果的状态,然后根据这个游标来获取下一页的结果,而无需跳过一定数量的文档。通过使用find()方法返回的游标对象,可以使用limit()方法限制返回的文档数量,并使用sort()方法对结果进行排序。然后,根据需要使用游标的next()方法逐个获取文档。
示例:首先连接到MongoDB数据库,并选择要操作的数据库和集合;
然后,定义每页的大小,即每次查询获取的文档数量;
接下来,通过使用find().limit()方法获取初始的游标,并使用list()方法将结果转换为列表;
可以处理第一页的结果,并获取最后一个文档的_id字段值作为游标,这里的游标可以是文档的任何唯一字段,不必局限于_id;
然后,使用find()方法并使用$gt操作符来获取下一页的结果,在查询中,指定了文档的唯一字段大于当前游标的值。
最后,可以处理下一页的结果,并使用相同的逻辑来获取更多的结果。
(3)使用范围查询:基于自增ID的字段,可以使用范围查询来实现分页。通过记录上一页最后一个文档的ID值,下一页查询时使用大于该ID值的条件进行查询。
可以根据实际情况选择适合需求的查询优化方法,并进行性能测试和调整来确定最佳方案。
如图1所示,在步骤S300中,将查询到的目标员工以及目标字段的数据分别作为报表的行和列信息并进行报表渲染,生成员工报表。
最终呈现的报表样式如下:
姓名 | 手机号 | 在职状态 | 属相 | 年龄 | 星座 |
员工4 | 194****6792 | 在职 | 水瓶座 | ||
李明 | 131****8822 | 在职 | 兔 | 23 | 处女座 |
与现有技术相比,本申请实施例提供的一种员工报表数据查询方法,将每个员工的报表数据以单独json文档的数据格式存储在MongoDB数据库,其中每条员工报表数据均包含多个字段的数据;根据用户查询请求生成查询语句,在MongoDB数据库中执行所述查询语句,获取目标员工以及目标字段的数据并导入内存;将查询到的目标员工以及目标字段的数据分别作为报表的行和列信息并进行报表渲染,生成员工报表。本发明基于MongoDB天然支持非关系数据存储和查询的优点,再基于元数据定义,只加载指定页码和指定列的数据到内存,相比于传统先将所有员工和所有列数据先加载至内存再进行筛选的方法,有效减少返回行数和列数,减少内存开销和数据库请求压力,能够灵活的呈现用户所需的员工报表,性能强劲。
与上述公开的一种员工报表数据查询方法相对应,本发明实施例还公开了一种员工报表数据查询系统,如图4所示,其具体包括:
数据存储模块,用于将每个员工的报表数据以单独json文档的数据格式存储在MongoDB数据库,其中每条员工报表数据均包含多个字段的数据;
数据查询模块,用于根据用户查询请求生成查询语句,在MongoDB数据库中执行所述查询语句,获取目标员工以及目标字段的数据并导入内存;
报表生成模块,用于将查询到的目标员工以及目标字段的数据分别作为报表的行和列信息并进行报表渲染,生成员工报表。
所述数据存储模块具体用于,将Mysql数据库中存储的员工数据同步至MongoDB数据库,其中Mysql数据库中员工数据以json大文本格式存储,将json大文本数据转换为MongoDB的json文档格式。
所述数据查询模块具体用于,通过MongoDB分页指令加载指定页码数据到内存,以及基于用户请求头部分的字段参数加载指定字段的数据到内存。
进一步的,通过MongoDB分页指令加载指定页码数据到内存,具体包括:
使用skip()和limit()方法实现加载指定页码数据,其中skip()用于跳过指定数量的文档,limit()用于限制返回的文档数量。
进一步的,基于用户请求头部分的字段参数加载指定字段的数据到内存,具体包括:
将员工相关唯一标识信息以及请求的字段参数作为查询条件进行查询,获取指定字段的数据,并使用sort()方法对查询结果进行排序。
进一步的,每条员工报表数据均包含多个字段的数据,具体包括:
所述字段包括字母形式的系统预置字段以及uuid形式的用户自定义字段。
进一步的,所述员工报表数据包括基础信息、岗位信息、教育经历、培训经历、证书、联系人、自定义字段值,所述岗位信息包括合同记录。
本发明基于MongoDB天然支持非关系数据存储和查询的优点,再基于元数据定义,能够灵活的呈现客户所需的员工报表,且性能强劲。具体表现在以下方面:
(1)减少了返回行数:通过MongoDB分页指令加载指定页码数据导内存,而不是将所有行数的数据加载到内存中再过出滤指定页的数据,减少分配内存的要求;
(2)减少了返回列数:传递用户请求表头部分列参数到MongoDB,从而只查出指定列到内存,而不是查询所有列的数据到内存再次过滤;
(3)由于返回行数和列数的减少,数据库响应的数据量(行数&列数)少了,数据库请求压力变小,减少了查询的数据量,减少了内存过滤的计算,减少了分配内存的申请和回收,即增加了响应速度。
作为引申的,当数据量较大时,使用skip()方法来分页查询可能会导致性能问题。skip()方法需要在每次查询时跳过指定数量的文档,这会增加查询的开销,尤其是在需要跳过大量文档时。为了优化查询性能,在本方案的基础上可以采用以下几种方法:
(1)使用索引:在查询的字段上创建索引可以显著提高查询性能。通过在关键字段上创建索引,MongoDB可以更快地定位匹配的文档,减少跳过的文档数量。可以使用create_index()方法来创建索引。
(2)使用基于游标的分页:使用基于游标的分页策略,可以避免使用skip()方法,提高查询性能。基本原理是使用一个游标来存储查询结果的状态,然后根据这个游标来获取下一页的结果,而无需跳过一定数量的文档。通过使用find()方法返回的游标对象,可以使用limit()方法限制返回的文档数量,并使用sort()方法对结果进行排序。然后,根据需要使用游标的next()方法逐个获取文档。
(3)使用范围查询:基于自增ID的字段,可以使用范围查询来实现分页。通过记录上一页最后一个文档的ID值,下一页查询时使用大于该ID值的条件进行查询。
可以根据实际情况选择适合需求的查询优化方法,并进行性能测试和调整来确定最佳方案。
需要说明的是,对于本发明实施例提供的一种员工报表数据查询系统的详细描述可以参考对本申请实施例提供的一种员工报表数据查询方法的相关描述,这里不再赘述。
与现有技术相比,本申请实施例提供的一种员工报表数据查询系统,将每个员工的报表数据以单独json文档的数据格式存储在MongoDB数据库,其中每条员工报表数据均包含多个字段的数据;根据用户查询请求生成查询语句,在MongoDB数据库中执行所述查询语句,获取目标员工以及目标字段的数据并导入内存;将查询到的目标员工以及目标字段的数据分别作为报表的行和列信息并进行报表渲染,生成员工报表。本发明基于MongoDB天然支持非关系数据存储和查询的优点,再基于元数据定义,只加载指定页码和指定列的数据到内存,相比于传统先将所有员工和所有列数据先加载至内存再进行筛选的方法,有效减少返回行数和列数,减少内存开销和数据库请求压力,能够灵活的呈现用户所需的员工报表,性能强劲。
另外,本发明实施例还提供了一种电子设备,所述设备包括:处理器和存储器;所述存储器用于存储一个或多个程序指令;所述处理器,用于运行一个或多个程序指令,用以执行如上任一项所述的一种员工报表数据查询方法的步骤。
需要说明的是,对于本发明实施例提供的一种电子设备的详细描述可以参考对本申请实施例提供的一种员工报表数据查询方法的相关描述,这里不再赘述。
另外,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上任一项所述一种员工报表数据查询方法的步骤。
需要说明的是,对于本发明实施例提供的一种计算机可读存储介质的详细描述可以参考对本申请实施例提供的一种员工报表数据查询方法的相关描述,这里不再赘述。
在本发明实施例中,处理器可以是一种集成电路芯片,具有信号的处理能力。处理器可以是通用处理器、数字信号处理器(Digital Signal Processor,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现场可编程门阵列(FieldProgrammable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。处理器读取存储介质中的信息,结合其硬件完成上述方法的步骤。
存储介质可以是存储器,例如可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。
其中,非易失性存储器可以是只读存储器(Read-Only Memory,简称ROM)、可编程只读存储器(Programmable ROM,简称PROM)、可擦除可编程只读存储器(Erasable PROM,简称EPROM)、电可擦除可编程只读存储器(Electrically EPROM,简称EEPROM)或闪存。
易失性存储器可以是随机存取存储器(Random Access Memory,简称RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,简称SRAM)、动态随机存取存储器(Dynamic RAM,简称DRAM)、同步动态随机存取存储器(Synchronous DRAM,简称SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data RateSDRAM,简称DDRSDRAM)、增强型同步动态随机存取存储器(EnhancedSDRAM,简称ESDRAM)、同步连接动态随机存取存储器(Synchlink DRAM,简称SLDRAM)和直接内存总线随机存取存储器(DirectRambus RAM,简称DRRAM)。
本发明实施例描述的存储介质旨在包括但不限于这些和任意其它适合类型的存储器。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件与软件组合来实现。当应用软件时,可以将相应功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
虽然,上文中已经用一般性说明及具体实施例对本发明作了详尽的描述,但在本发明基础上,可以对之作一些修改或改进,这对本领域技术人员而言是显而易见的。因此,在不偏离本发明精神的基础上所做的这些修改或改进,均属于本发明要求保护的范围。
Claims (10)
1.一种员工报表数据查询方法,其特征在于,所述方法包括:
将每个员工的报表数据以单独json文档的数据格式存储在MongoDB数据库,其中每条员工报表数据均包含多个字段的数据;
根据用户查询请求生成查询语句,在MongoDB数据库中执行所述查询语句,获取目标员工以及目标字段的数据并导入内存;
将查询到的目标员工以及目标字段的数据分别作为报表的行和列信息并进行报表渲染,生成员工报表。
2.根据权利要求1所述的一种员工报表数据查询方法,其特征在于,将每个员工的报表数据以单独json文档的数据格式存储在MongoDB数据库,具体包括:
将Mysql数据库中存储的员工数据同步至MongoDB数据库,其中Mysql数据库中员工数据以json大文本格式存储,将json大文本数据转换为MongoDB的json文档格式。
3.根据权利要求1所述的一种员工报表数据查询方法,其特征在于,每条员工报表数据均包含多个字段的数据,具体包括:
所述字段包括字母形式的系统预置字段以及uuid形式的用户自定义字段。
4.根据权利要求1所述的一种员工报表数据查询方法,其特征在于,所述员工报表数据包括基础信息、岗位信息、教育经历、培训经历、证书、联系人、自定义字段值,所述岗位信息包括合同记录。
5.根据权利要求1所述的一种员工报表数据查询方法,其特征在于,根据用户查询请求生成查询语句,在MongoDB数据库中执行所述查询语句,获取目标员工以及目标字段的数据并导入内存,具体包括:
通过MongoDB分页指令加载指定页码数据到内存,以及基于用户请求头部分的字段参数加载指定字段的数据到内存。
6.根据权利要求1所述的一种员工报表数据查询方法,其特征在于,通过MongoDB分页指令加载指定页码数据到内存,具体包括:
使用skip()和limit()方法实现加载指定页码数据,其中skip()用于跳过指定数量的文档,limit()用于限制返回的文档数量。
7.根据权利要求1所述的一种员工报表数据查询方法,其特征在于,基于用户请求头部分的字段参数加载指定字段的数据到内存,具体包括:
将员工相关唯一标识信息以及请求的字段参数作为查询条件进行查询,获取指定字段的数据,并使用sort()方法对查询结果进行排序。
8.一种员工报表数据查询系统,其特征在于,所述系统包括:
数据存储模块,用于将每个员工的报表数据以单独json文档的数据格式存储在MongoDB数据库,其中每条员工报表数据均包含多个字段的数据;
数据查询模块,用于根据用户查询请求生成查询语句,在MongoDB数据库中执行所述查询语句,获取目标员工以及目标字段的数据并导入内存;
报表生成模块,用于将查询到的目标员工以及目标字段的数据分别作为报表的行和列信息并进行报表渲染,生成员工报表。
9.一种电子设备,其特征在于,所述设备包括:处理器和存储器;
所述存储器用于存储一个或多个程序指令;
所述处理器,用于运行一个或多个程序指令,用以执行如权利要求1至7任一项所述的一种员工报表数据查询方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述一种员工报表数据查询方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410069606.4A CN117909376A (zh) | 2024-01-17 | 2024-01-17 | 一种员工报表数据查询方法、系统、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410069606.4A CN117909376A (zh) | 2024-01-17 | 2024-01-17 | 一种员工报表数据查询方法、系统、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117909376A true CN117909376A (zh) | 2024-04-19 |
Family
ID=90691778
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410069606.4A Pending CN117909376A (zh) | 2024-01-17 | 2024-01-17 | 一种员工报表数据查询方法、系统、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117909376A (zh) |
-
2024
- 2024-01-17 CN CN202410069606.4A patent/CN117909376A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8799229B2 (en) | Searchable archive | |
US9870382B2 (en) | Data encoding and corresponding data structure | |
US20040243618A1 (en) | Methods and systems for auto-partitioning of schema objects | |
CN101136027B (zh) | 用于数据库索引、搜索和数据检索的系统和方法 | |
US9824128B1 (en) | System for performing single query searches of heterogeneous and dispersed databases | |
CN108170752B (zh) | 基于模板的元数据管理方法和系统 | |
CN108241627A (zh) | 一种异构数据存储查询方法和系统 | |
CN104731945A (zh) | 一种基于HBase的全文检索方法及装置 | |
CN111506621A (zh) | 一种数据统计方法及装置 | |
CN117150050B (zh) | 一种基于大语言模型的知识图谱构建方法及系统 | |
CN112883030A (zh) | 数据收集方法、装置、计算机设备和存储介质 | |
CN114090760B (zh) | 表格问答的数据处理方法、电子设备及可读存储介质 | |
CN110597851B (zh) | 一种基于大数据的数据处理及报表展示方法 | |
CN106528810B (zh) | 一种融合异构数据便于快速大数据分析的方法 | |
CN108009195B (zh) | 一种基于大数据的降维转换方法、电子设备、存储介质 | |
US8566342B2 (en) | In-memory data optimization system | |
CN111984659A (zh) | 数据更新方法、装置、计算机设备和存储介质 | |
CN117909376A (zh) | 一种员工报表数据查询方法、系统、设备及存储介质 | |
EP1647901A1 (en) | System and method for collecting network performance data and storing it in a single relational table. | |
CN115168390A (zh) | 一种多维度的资产检索分析方法、系统、终端及存储介质 | |
CN111143356B (zh) | 报表检索方法及装置 | |
CN111143329B (zh) | 一种数据处理方法及装置 | |
CN114328577A (zh) | 数据查询方法和装置 | |
CN112395291A (zh) | 一种根据数据资产动态生成宽表的方法及系统 | |
US20050160101A1 (en) | Method and apparatus using dynamic SQL for item create, retrieve, update delete operations in a content management application |
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 |