摘 要
随着信息技术的快速发展,医院人力资源管理面临着日益复杂的挑战。传统的人力资源管理方式已难以满足现代医院的需求。基于微信小程序的医院人力资源管理系统应运而生,以提升医院的人力资源管理效率和服务质量。该系统通过整合员工信息管理、招聘信息发布、培训计划安排、绩效考核及薪资管理等功能,实现了人力资源管理的数字化和智能化。系统采用前后端分离的架构,前端基于微信小程序,后端采用Spring、Spring MVC和MyBatis框架(SSM),确保了系统的高效性与可扩展性。通过对系统的设计与实现,本研究旨在为医院提供一套高效、便捷的人力资源管理解决方案,从而提高医院的管理水平和服务能力。
关键词:医院管理;人力资源管理;微信小程序;SSM架构
ABSTRACT
With the rapid development of information technology, hospital human resource management is facing increasingly complex challenges. The traditional human resource management methods are no longer able to meet the needs of modern hospitals. A hospital human resource management system based on WeChat mini programs has emerged to improve the efficiency and service quality of hospital human resource management. The system integrates functions such as employee information management, recruitment information release, training plan arrangement, performance evaluation, and salary management to achieve digitalization and intelligence of human resource management. The system adopts a front-end and back-end separation architecture, with the front-end based on WeChat mini programs and the back-end using Spring, Spring MVC, and MyBatis framework (SSM), ensuring the efficiency and scalability of the system. Through the design and implementation of the system, this study aims to provide hospitals with an efficient and convenient human resource management solution, thereby improving the hospital's management level and service capabilities.
Keywords: Hospital management; Human resource management; WeChat Mini Program; SSM architecture
目 录
第1章 绪论
1.1 研究背景和意义
随着医疗行业的快速发展,医院管理面临着越来越多的挑战,尤其是在人员管理方面。传统的人力资源管理方式往往依赖于纸质文档和手动操作,不仅效率低下,而且容易出现信息传递不畅和数据错误的问题。在此背景下,如何提高医院人力资源管理的效率,确保信息的准确性和及时性,成为亟待解决的问题。
微信小程序作为一种新兴的移动应用形式,凭借其便捷性和广泛的用户基础,为医院人力资源管理提供了全新的解决方案。通过微信小程序,员工可以随时随地访问和管理个人信息、查看培训计划、参与招聘信息等,极大地方便了医院的人力资源管理。同时,医院管理者也可以通过后台系统高效地管理和监控各项人力资源活动,提高工作效率,减少人力成本。
在信息化浪潮的推动下,构建基于微信小程序的医院人力资源管理系统不仅符合现代医院管理的需求,也为提升医疗服务质量提供了重要支持。通过集成各项功能,该系统能够有效整合医院内部资源,优化人力资源配置,从而更好地服务于医院的整体目标和发展战略。实现人力资源管理的数字化转型,将为医院的可持续发展奠定坚实基础。
1.2 国内外研究现状
近年来,医院人力资源管理的研究逐渐受到关注,特别是在信息技术迅速发展的背景下,相关研究不断深入。国内外学者在医院人力资源管理系统的设计与实现方面进行了广泛的探讨,形成了一定的理论基础和实践经验。在国外,许多医院已经开始应用信息化系统来优化人力资源管理,通过图形化界面和数据库技术,提高了管理效率和决策能力。例如,欧美地区的多家医院通过实施综合管理平台,实现了人力资源信息的实时更新和多维度分析,推动了管理模式的创新。
在国内,随着医疗体制改革的推进,越来越多的医院认识到信息化管理的重要性,开始探索适合自身特点的人力资源管理系统。研究者们针对医院的实际需求,开发了多种管理工具,涵盖了员工招聘、培训、考核等多个方面。同时,随着移动互联网的普及,基于微信小程序的管理系统逐渐引起关注,研究表明,利用这种便捷的工具能够提升员工的参与度和满意度,促进信息的快速传播。
尽管国内外在医院人力资源管理系统的研究方面取得了一定进展,但仍存在一些不足。许多系统在功能上尚不完善,缺乏灵活性和可扩展性,无法完全满足医院快速变化的需求。此外,系统的用户体验和操作界面设计也亟待提升。因此,基于微信小程序的医院人力资源管理系统的研究与开发,不仅具有重要的理论价值,也具备广阔的应用前景。通过整合现有研究成果,探索更加高效、便捷的管理方式,将为医院人力资源管理的现代化提供新的思路和实践方向。
第2章相关技术介绍
2.1B/S框架
B/S(Browser/Server)架构是一种基于浏览器和服务器的应用架构模式。它以Web浏览器作为客户端,服务器端通过Web技术提供应用服务。客户端通过浏览器与服务器进行交互,用户无需安装专门的客户端应用程序,只需要通过互联网连接即可访问应用程序[1]。在B/S架构中,客户端主要承担用户界面的呈现和基本的输入输出功能,而核心的业务处理、数据存储等操作则由服务器端完成。这种架构的核心优势在于无需在每个客户端机器上安装或更新软件,只要用户的浏览器符合要求,就可以使用系统。
B/S(Browser/Server)架构是一种网络架构模型,其主要特点是客户端通过浏览器与服务器进行通信,所有的业务逻辑和数据处理都在服务器端完成,客户端仅负责展示数据[2]。B/S架构本质上是一种客户端-服务器模式的变体,它通过将传统的C/S(Client/Server)架构中的客户端功能移到浏览器中,简化了客户端的开发和维护工作。在B/S架构中,用户通过浏览器发送请求,浏览器负责展示从服务器获取的数据,服务器则处理请求并返回响应。该架构避免了安装和配置客户端软件的麻烦,也减少了对客户端硬件的依赖,适合于需要大规模部署和跨平台支持的应用系统。
B/S模式三层结构图如图2-1所示。

图2-1 B/S模式三层结构图
SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)。常作为数据源较简单的web项目的框架。
2.2.1 Spring
Spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象[3]。也可以称之为项目中的粘合剂。
Spring的核心思想是IoC(控制反转),即不再需要程序员去显式地`new`一个对象,而是让Spring框架帮你来完成这一切。
2.2.2 SpringMVC
SpringMVC在项目中拦截用户请求,它的核心Servlet即DispatcherServlet承担中介或是前台这样的职责,将用户请求通过HandlerMapping去匹配Controller,Controller就是具体对应请求所执行的操作。SpringMVC相当于SSH框架中struts。
2.2.3 mybatis
mybatis是对jdbc的封装,它让数据库底层操作变的透明[4]。mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。
页面发送请求给控制器,控制器调用业务层处理逻辑,逻辑层向持久层发送请求,持久层与数据库交互,后将结果返回给业务层,业务层将处理逻辑发送给控制器,控制器再调用视图展现数据。
Vue.js是一款用于构建用户界面的渐进式JavaScript框架,提供一种灵活而高效的方式来开发单页面应用(SPA)。Vue的设计理念是通过尽量简化开发过程,提供一种声明式的方式来构建用户界面[5]。Vue.js通过数据驱动的视图模型,允许开发者以声明式语法绑定数据与视图,使得应用的状态和界面表现更加简洁和可维护。它的核心思想是通过组件化开发将复杂的UI拆分为可重用的独立模块,从而提升了代码的模块化、可维护性和可扩展性。
Vue.js具备响应式数据绑定和虚拟DOM的特性。响应式数据绑定意味着当数据变化时,Vue会自动更新与之绑定的DOM元素,从而实现视图的实时更新。虚拟DOM则是Vue.js的一种优化手段,通过将对DOM的操作抽象为一个虚拟的DOM树来提高性能,减少实际DOM操作的开销[6]。Vue还提供了丰富的插件和工具,如Vue Router用于路由管理,Vuex用于状态管理,方便开发者构建复杂的前端应用。Vue的灵活性和简洁性使其成为现代Web开发中常用的前端框架之一。
MySQL是一种开源的关系型数据库管理系统(RDBMS),基于SQL(结构化查询语言)进行数据操作。作为一个被广泛使用的数据库系统,MySQL具有高度的性能、可扩展性和可靠性。MySQL使用表格结构来存储数据,每个表由多个列和行组成,数据通过SQL查询语言进行操作[7]。MySQL支持多种数据类型,如整数、浮动小数、字符串、日期等,以满足不同应用场景对数据存储的需求。在实际应用中,MySQL通常用于存储和管理结构化数据,通过索引、视图、触发器等功能提升数据查询的效率和数据的完整性。
MySQL支持ACID事务特性(原子性、一致性、隔离性、持久性),确保数据库操作的可靠性和数据的一致性。它还支持多种存储引擎,其中InnoDB是最常用的存储引擎,具备事务支持、行级锁定和外键约束等特性,适用于高并发、高可靠性的数据存储需求。MySQL可以通过主从复制、分区和分库分表等技术实现横向扩展,以应对大规模数据存储和高负载的应用需求。MySQL还具有灵活的权限管理机制,支持用户角色管理、细粒度的权限控制等,保障数据的安全性。
第3章 系统分析
3.1 可行性分析
3.1.1技术可行性
医院人力资源管理系统在技术上是完全可行的。SSM框架作为业界广泛使用的轻量级、开源的Java Web开发框架,具有成熟稳定、高效灵活的特点,能够满足医院人力资源管理系统的技术需求。Spring提供全面的编程和配置模型,SpringMVC实现了模型-视图-控制器的设计模式,而MyBatis则简化了数据库操作。三者结合使用,可以确保系统具备良好的可扩展性、可维护性和稳定性。
3.1.2经济可行性
在开发医院人力资源管理系统中所使用的开发软件像IDEA开发工具、Tomcat服务器、MySQL数据库等,这些都是开源免费的,这些环境在学校都进行了系统的学习,自己能够独立操作完成,不需要额外花费,而且系统的开发工具从网上都可以直接下载,因此在经济方面是可行的。
3.1.3操作可行性
可操作性主要是对医院人力资源管理系统设计完成后,用户的使用体验度,以及管理员可以通过系统随时管理相关的数据信息,并且对于管理员、员工用户、科室主任三种角色,都可以简单明了的进入到自己的系统界面,通过界面导航菜单可以简单明了地操作功能模块,方便用户信息的操作需求和管理员管理数据信息,对于系统的操作,不需要专业人员都可以直接进行功能模块的操作管理,所以在系统的可操作性是完全可以的。本系统的操作使用的也是界面窗口进行登录,所以操作人员只要会简单的电脑操作就完全可以的。
3.2 功能需求分析
3.2.1 功能性分析
按照医院人力资源管理系统的角色,划分为了员工用户模块、科室主任模块和管理员模块这三大部分。
(一)员工用户功能需求分析:
员工用户在医院人力资源管理系统中可以享受多项便捷功能。系统首页汇集了医院的最新动态和重要信息,为员工提供了快速获取信息的渠道。新闻资讯模块让员工及时了解医院及行业内的新闻,增强了信息透明度。培训计划功能使员工能够查看和报名参与各类培训课程,提升自身专业技能和素质。招聘信息模块则提供最新的岗位空缺,员工可以方便地申请感兴趣的职位。网站公告功能确保员工及时获取医院发布的重要通知。
在“我的”模块中,员工可以进行个性化管理,包括收藏感兴趣的内容、查看和发布评论、更新个人信息、查询绩效信息及反馈、了解薪资状况、查看考勤排班及打卡记录,以及管理假期信息。这些功能的整合,不仅提升了员工的参与感和归属感,也使人力资源管理变得更加高效和透明。
(二)科室主任功能需求分析
科室主任在医院人力资源管理系统中发挥着桥梁作用,负责科室内部的管理与协调。后台首页为科室主任提供了科室整体运营情况的实时数据,便于管理决策。员工信息管理功能使科室主任能够维护和更新科室内员工的基本信息,确保信息的准确性和完整性。
在招聘信息管理方面,科室主任可以根据科室需求发布和管理岗位信息,吸引合适的人才加入。培训计划管理功能则帮助科室主任制定符合科室发展需求的培训方案,提升团队的专业技能。绩效信息管理和绩效反馈管理功能使科室主任能够及时了解员工的工作表现,给予适当的指导与支持。
薪资信息管理功能确保科室员工的薪资发放及时准确,考勤排班管理功能帮助科室主任合理安排员工的工作时间。打卡记录管理和假期信息管理功能则使科室主任能够掌握员工的考勤情况,合理安排工作与休假。这些功能的综合应用,为科室的高效运作提供了坚实的支持。
(三)管理员功能需求分析
管理员在医院人力资源管理系统中承担着重要的管理职责。后台首页提供系统整体情况的概览,使管理员能快速掌握各项管理数据。管理员可以管理系统用户的权限和信息,确保系统安全性和数据准确性。科室分类管理功能使管理员能够有效管理各个科室的信息,便于后续的资源调配。
管理员还负责员工信息管理,确保员工基本信息的及时更新与维护。招聘信息管理功能则使管理员能够发布和更新招聘岗位,吸引合适的人才。培训计划管理通过制定和调整培训内容,帮助员工提升专业能力。绩效信息管理和绩效反馈管理功能则确保员工绩效评价的公正和透明,促进员工工作积极性。
此外,管理员可以管理薪资信息,考勤排班,打卡记录和假期信息,确保各项人力资源活动的顺利进行。系统管理部分包括轮播图和通知公告的管理,提升了信息传播的效率和效果。资源管理功能则整合了新闻资讯及其分类,增强了信息的可获取性与实用性。
3.2.2 非功能性分析
医院人力资源管理系统的非功能性需求比如系统的安全性怎么样,可靠性怎么样,性能怎么样,可拓展性怎么样等。具体可以表示在如下3-1表格中:
表3-1医院人力资源管理系统非功能需求表
| 安全性 | 主要指医院人力资源管理系统数据库的安装,数据库的使用和密码的设定必须合乎规范。 |
| 可靠性 | 可靠性是指医院人力资源管理系统能够安装用户的指示进行操作,经过测试,可靠性90%以上。 |
| 性能 | 性能是影响医院人力资源管理系统占据市场的必要条件,所以性能最好要佳才好。 |
| 可扩展性 | 比如数据库预留多个属性,比如接口的使用等确保了系统的非功能性需求。 |
| 易用性 | 用户只要跟着医院人力资源管理系统的页面展示内容进行操作,就可以了。 |
| 可维护性 | 医院人力资源管理系统开发的可维护性是非常重要的,经过测试,可维护性没有问题 |
3.3 系统用例分析
通过3.2功能的分析,得出了系统的用例图:
员工用户用例图如下所示。

图3-1 员工用户用例图
科室主任用例图如下所示。

图3-2 科室主任用例图
管理员用例图如下所示。

图3-3 管理员用例图
3.4 系统的流程分析
3.4.1登录流程

图3-4登录流程图
3.4.2添加信息流程
添加信息流程图,如下图所示:

图3-5添加信息流程图
3.4.3删除信息流程
删除信息流程图,如下图所示:

图3-6删除信息流程图
第4章 系统总体设计
4.1 系统架构设计
本系统主要使用了五层架构进行开发,主要分为“表现层”、“控制层”、“服务层”、“业务逻辑层”、“数据访问层”。
“表现层”主要作为与用户交互的接口,提供给用户良好的可体验性,本系统在前后端交互主要使用的是Ajax技术来实现数据传输,不仅可以达到无刷新交互,同时还拥有较稳定的运行状态[8]。
“控制层”主要控制前端界面和后端程序数据之间的同步,然后根据前端请求完成数据更新或者是界面控制。以及负责将“服务层”提供的服务进行最后组装并调用。
“服务层”介于“控制层”和“业务逻辑层”之间,主要是将“业务逻辑层”的数据服务进行再一次组装,之后在作为接口提供给“控制层”使用。
“业务逻辑层”主要是动态的调用“数据访问层”的方法,对复杂的算法进行操作,处理前端传过来的请求并且做出相应的逻辑处理。
“数据访问层”主要负责对数据库的访问,可以访问数据库系统、文本文件、二进制文件、xml文档等等。负责业务对象的增加,修改,删除,加载[9]。
系统架构图如图4-1所示。

图4-1系统架构图
4.2开发流程设计
医院人力资源管理系统的开发对管理模块和系统使用的数据库进行分析,编写代开发,规划和操作是构建信息管理应用程序的必要三步曲,它决定了系统是否能够真正实现预设功能以及是否可以在成功设计后实施。在开发过程中,每个阶段必须严格按照线性顺序进行开发,并且在相应阶段生成的每个工作都可以通过技术进行验证和检查。确保一个阶段完成后是正确的,不会造成下一阶段拖拽现象,使系统完成设计功能后得到保证。
从医院人力资源管理系统的成功开发经验来看,上述方法效果最为明显,最大程度地降低了系统开发的复杂性。如图4-2所示。

图4-2开发系统流程图
4.3系统功能模块设计
通过对医院人力资源管理系统的功能需求分析以及用例分析,得出了医院人力资源管理系统的功能模块图如图4-3所示。

4.4数据库设计
数据库设计一般包括需求分析、概念模型设计、数据库表建立三大过程,其中需求分析前面章节已经阐述,概念模型设计有概念模型和逻辑结构设计两部分。
4.4.1 数据库概念结构设计
下面是整个医院人力资源管理系统中主要的数据库表总E-R实体关系图。

图4-4 系统总体ER图
4.4.2数据表
将数据库概念设计的E-R图转换为关系数据库。在关系数据库中,数据关系由数据表组成,但是表的结构表现在表的字段上。
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | token_id | int | 是 | 是 | 临时访问牌ID | |
| 2 | token | varchar | 64 | 否 | 否 | 临时访问牌 |
| 3 | info | text | 65535 | 否 | 否 | 信息 |
| 4 | maxage | int | 是 | 否 | 最大寿命:默认2小时 | |
| 5 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 6 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 7 | user_id | int | 是 | 否 | 用户编号 |
表 4-2-article(文章)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | article_id | mediumint | 是 | 是 | 文章id | |
| 2 | title | varchar | 125 | 是 | 是 | 标题 |
| 3 | type | varchar | 64 | 是 | 否 | 文章分类 |
| 4 | hits | int | 是 | 否 | 点击数 | |
| 5 | praise_len | int | 是 | 否 | 点赞数 | |
| 6 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 7 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 8 | source | varchar | 255 | 否 | 否 | 来源 |
| 9 | url | varchar | 255 | 否 | 否 | 来源地址 |
| 10 | tag | varchar | 255 | 否 | 否 | 标签 |
| 11 | content | longtext | 4294967295 | 否 | 否 | 正文 |
| 12 | img | varchar | 255 | 否 | 否 | 封面图 |
| 13 | description | text | 65535 | 否 | 否 | 文章描述 |
表 4-3-article_type(文章分类)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | type_id | smallint | 是 | 是 | 分类ID | |
| 2 | display | smallint | 是 | 否 | 显示顺序 | |
| 3 | name | varchar | 16 | 是 | 否 | 分类名称 |
| 4 | father_id | smallint | 是 | 否 | 上级分类ID | |
| 5 | description | varchar | 255 | 否 | 否 | 描述 |
| 6 | icon | text | 65535 | 否 | 否 | 分类图标 |
| 7 | url | varchar | 255 | 否 | 否 | 外链地址 |
| 8 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 9 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-4-attendance_scheduling(考勤排班)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | attendance_scheduling_id | int | 是 | 是 | 考勤排班ID | |
| 2 | directors_account | int | 否 | 否 | 主任账号 | |
| 3 | employee_account | int | 否 | 否 | 员工账号 | |
| 4 | employee_name | varchar | 64 | 否 | 否 | 员工姓名 |
| 5 | employee_phone_number | varchar | 64 | 否 | 否 | 员工电话 |
| 6 | employee_id | varchar | 64 | 否 | 否 | 员工工号 |
| 7 | attendance_title | varchar | 64 | 否 | 否 | 考勤标题 |
| 8 | scheduling_table | varchar | 255 | 否 | 否 | 排班表格 |
| 9 | scheduling_information | longtext | 4294967295 | 否 | 否 | 排班信息 |
| 10 | check_in_record_limit_times | int | 是 | 否 | 打卡限制次数 | |
| 11 | create_time | datetime | 是 | 否 | 创建时间 | |
| 12 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 13 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 14 | source_id | int | 否 | 否 | 来源ID | |
| 15 | source_user_id | int | 否 | 否 | 来源用户 |
表 4-5-auth(用户权限管理)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | auth_id | int | 是 | 是 | 授权ID | |
| 2 | user_group | varchar | 64 | 否 | 否 | 用户组 |
| 3 | mod_name | varchar | 64 | 否 | 否 | 模块名 |
| 4 | table_name | varchar | 64 | 否 | 否 | 表名 |
| 5 | page_title | varchar | 255 | 否 | 否 | 页面标题 |
| 6 | path | varchar | 255 | 否 | 否 | 路由路径 |
| 7 | parent | varchar | 64 | 否 | 否 | 父级菜单 |
| 8 | parent_sort | int | 是 | 否 | 父级菜单排序 | |
| 9 | position | varchar | 32 | 否 | 否 | 位置 |
| 10 | mode | varchar | 32 | 是 | 否 | 跳转方式 |
| 11 | add | tinyint | 是 | 否 | 是否可增加 | |
| 12 | del | tinyint | 是 | 否 | 是否可删除 | |
| 13 | set | tinyint | 是 | 否 | 是否可修改 | |
| 14 | get | tinyint | 是 | 否 | 是否可查看 | |
| 15 | field_add | text | 65535 | 否 | 否 | 添加字段 |
| 16 | field_set | text | 65535 | 否 | 否 | 修改字段 |
| 17 | field_get | text | 65535 | 否 | 否 | 查询字段 |
| 18 | table_nav_name | varchar | 500 | 否 | 否 | 跨表导航名称 |
| 19 | table_nav | varchar | 500 | 否 | 否 | 跨表导航 |
| 20 | option | text | 65535 | 否 | 否 | 配置 |
| 21 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 22 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-6-check_in_record(打卡记录)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | check_in_record_id | int | 是 | 是 | 打卡记录ID | |
| 2 | employee_account | int | 否 | 否 | 员工账号 | |
| 3 | employee_name | varchar | 64 | 否 | 否 | 员工姓名 |
| 4 | employee_id | varchar | 64 | 否 | 否 | 员工工号 |
| 5 | employee_phone_number | varchar | 64 | 否 | 否 | 员工电话 |
| 6 | check_in_type | varchar | 64 | 否 | 否 | 打卡类型 |
| 7 | check_in_time | datetime | 否 | 否 | 打卡时间 | |
| 8 | check_in_notes | text | 65535 | 否 | 否 | 打卡备注 |
| 9 | location_address | varchar | 64 | 否 | 否 | 当前位置 |
| 10 | location_lng | varchar | 64 | 否 | 否 | 当前位置经度 |
| 11 | location_lat | varchar | 64 | 否 | 否 | 当前位置纬度 |
| 12 | create_time | datetime | 是 | 否 | 创建时间 | |
| 13 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 14 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 15 | source_id | int | 否 | 否 | 来源ID | |
| 16 | source_user_id | int | 否 | 否 | 来源用户 |
表 4-7-code_token(验证码)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | code_token_id | int | 是 | 是 | 验证码ID | |
| 2 | token | varchar | 255 | 否 | 否 | 令牌 |
| 3 | code | varchar | 255 | 否 | 否 | 验证码 |
| 4 | expire_time | timestamp | 是 | 否 | 失效时间 | |
| 5 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 6 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-8-collect(收藏)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | collect_id | int | 是 | 是 | 收藏ID | |
| 2 | user_id | int | 是 | 是 | 收藏人ID | |
| 3 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 4 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 5 | source_id | int | 是 | 否 | 来源ID | |
| 6 | title | varchar | 255 | 否 | 否 | 标题 |
| 7 | img | varchar | 255 | 否 | 否 | 封面 |
| 8 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 9 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-9-comment(评论)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | comment_id | int | 是 | 是 | 评论ID | |
| 2 | user_id | int | 是 | 是 | 评论人ID | |
| 3 | reply_to_id | int | 是 | 否 | 回复评论ID | |
| 4 | content | longtext | 4294967295 | 否 | 否 | 内容 |
| 5 | nickname | varchar | 255 | 否 | 否 | 昵称 |
| 6 | avatar | varchar | 255 | 否 | 否 | 头像地址 |
| 7 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 9 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 10 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 11 | source_id | int | 是 | 否 | 来源ID |
表 4-10-department_classification(科室分类)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | department_classification_id | int | 是 | 是 | 科室分类ID | |
| 2 | department_name | varchar | 64 | 否 | 否 | 科室名称 |
| 3 | create_time | datetime | 是 | 否 | 创建时间 | |
| 4 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-11-department_director(科室主任)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | department_director_id | int | 是 | 是 | 科室主任ID | |
| 2 | directors_name | varchar | 64 | 否 | 否 | 主任姓名 |
| 3 | directors_phone_number | varchar | 64 | 否 | 否 | 主任电话 |
| 4 | directors_department | varchar | 64 | 否 | 否 | 主任科室 |
| 5 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 6 | user_id | int | 是 | 否 | 用户ID | |
| 7 | create_time | datetime | 是 | 否 | 创建时间 | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-12-employee_information(员工信息)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | employee_information_id | int | 是 | 是 | 员工信息ID | |
| 2 | employee_account | int | 否 | 否 | 员工账号 | |
| 3 | employee_name | varchar | 64 | 否 | 否 | 员工姓名 |
| 4 | employee_phone_number | varchar | 64 | 否 | 否 | 员工电话 |
| 5 | employee_id | varchar | 64 | 否 | 否 | 员工工号 |
| 6 | employee_educational_background | varchar | 64 | 否 | 否 | 员工学历 |
| 7 | employee_title | varchar | 64 | 否 | 否 | 员工职称 |
| 8 | entry_time | date | 否 | 否 | 入职时间 | |
| 9 | job_changes | text | 65535 | 否 | 否 | 岗位变动 |
| 10 | rewards_and_punishment_record | text | 65535 | 否 | 否 | 奖惩记录 |
| 11 | performance_information_limit_times | int | 是 | 否 | 绩效限制次数 | |
| 12 | salary_information_limit_times | int | 是 | 否 | 薪资限制次数 | |
| 13 | attendance_scheduling_limit_times | int | 是 | 否 | 考勤限制次数 | |
| 14 | holiday_information_limit_times | int | 是 | 否 | 假期限制次数 | |
| 15 | create_time | datetime | 是 | 否 | 创建时间 | |
| 16 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-13-hits(用户点击)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | hits_id | int | 是 | 是 | 点赞ID | |
| 2 | user_id | int | 是 | 否 | 点赞人 | |
| 3 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 4 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 5 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 6 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 7 | source_id | int | 是 | 否 | 来源ID |
表 4-14-holiday_information(假期信息)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | holiday_information_id | int | 是 | 是 | 假期信息ID | |
| 2 | directors_account | int | 否 | 否 | 主任账号 | |
| 3 | employee_account | int | 否 | 否 | 员工账号 | |
| 4 | holiday_name | varchar | 64 | 否 | 否 | 假期名称 |
| 5 | holiday_time | datetime | 否 | 否 | 放假时间 | |
| 6 | holiday_arrangements | longtext | 4294967295 | 否 | 否 | 假期安排 |
| 7 | create_time | datetime | 是 | 否 | 创建时间 | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 9 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 10 | source_id | int | 否 | 否 | 来源ID | |
| 11 | source_user_id | int | 否 | 否 | 来源用户 |
表 4-15-notice(公告)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | notice_id | mediumint | 是 | 是 | 公告ID | |
| 2 | title | varchar | 125 | 是 | 否 | 标题 |
| 3 | content | longtext | 4294967295 | 否 | 否 | 正文 |
| 4 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 5 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-16-ordinary_employees(普通员工)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | ordinary_employees_id | int | 是 | 是 | 普通员工ID | |
| 2 | employee_name | varchar | 64 | 否 | 否 | 员工姓名 |
| 3 | employee_phone_number | varchar | 64 | 否 | 否 | 员工电话 |
| 4 | employee_id | varchar | 64 | 否 | 否 | 员工工号 |
| 5 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 6 | user_id | int | 是 | 否 | 用户ID | |
| 7 | create_time | datetime | 是 | 否 | 创建时间 | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-17-performance_feedback(绩效反馈)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | performance_feedback_id | int | 是 | 是 | 绩效反馈ID | |
| 2 | employee_account | int | 否 | 否 | 员工账号 | |
| 3 | employee_name | varchar | 64 | 否 | 否 | 员工姓名 |
| 4 | employee_phone_number | varchar | 64 | 否 | 否 | 员工电话 |
| 5 | employee_id | varchar | 64 | 否 | 否 | 员工工号 |
| 6 | performance_theme | varchar | 64 | 否 | 否 | 绩效主题 |
| 7 | feedback_time | datetime | 否 | 否 | 反馈时间 | |
| 8 | feedback_content | text | 65535 | 否 | 否 | 反馈内容 |
| 9 | create_time | datetime | 是 | 否 | 创建时间 | |
| 10 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 11 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 12 | source_id | int | 否 | 否 | 来源ID | |
| 13 | source_user_id | int | 否 | 否 | 来源用户 |
表 4-18-performance_information(绩效信息)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | performance_information_id | int | 是 | 是 | 绩效信息ID | |
| 2 | directors_account | int | 否 | 否 | 主任账号 | |
| 3 | employee_account | int | 否 | 否 | 员工账号 | |
| 4 | employee_name | varchar | 64 | 否 | 否 | 员工姓名 |
| 5 | employee_id | varchar | 64 | 否 | 否 | 员工工号 |
| 6 | performance_theme | varchar | 64 | 否 | 否 | 绩效主题 |
| 7 | performance_time | datetime | 否 | 否 | 绩效时间 | |
| 8 | working_ability | varchar | 64 | 否 | 否 | 工作能力 |
| 9 | working_attitude | varchar | 64 | 否 | 否 | 工作态度 |
| 10 | execution_ability | varchar | 64 | 否 | 否 | 执行能力 |
| 11 | communication_and_coordination | varchar | 64 | 否 | 否 | 沟通协调 |
| 12 | safety_consciousness | varchar | 64 | 否 | 否 | 安全意识 |
| 13 | performance_feedback_limit_times | int | 是 | 否 | 反馈限制次数 | |
| 14 | create_time | datetime | 是 | 否 | 创建时间 | |
| 15 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 16 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 17 | source_id | int | 否 | 否 | 来源ID | |
| 18 | source_user_id | int | 否 | 否 | 来源用户 |
表 4-19-praise(点赞)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | praise_id | int | 是 | 是 | 点赞ID | |
| 2 | user_id | int | 是 | 是 | 点赞人 | |
| 3 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 4 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 5 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 6 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 7 | source_id | int | 是 | 否 | 来源ID | |
| 8 | status | tinyint | 是 | 否 | 点赞状态:1为点赞,0已取消 |
表 4-20-recruitment_information(招聘信息)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | recruitment_information_id | int | 是 | 是 | 招聘信息ID | |
| 2 | directors_account | int | 否 | 否 | 主任账号 | |
| 3 | recruitment_title | varchar | 64 | 否 | 否 | 招聘标题 |
| 4 | cover_photo | varchar | 255 | 否 | 否 | 封面图片 |
| 5 | recruitment_department | varchar | 64 | 否 | 否 | 招聘科室 |
| 6 | job_recruitment | varchar | 64 | 否 | 否 | 招聘岗位 |
| 7 | recruiting_numbers | double | 否 | 否 | 招聘人数 | |
| 8 | salary_and_benefits | text | 65535 | 否 | 否 | 薪资待遇 |
| 9 | recruitment_requirements | longtext | 4294967295 | 否 | 否 | 招聘要求 |
| 10 | hits | int | 是 | 否 | 点击数 | |
| 11 | praise_len | int | 是 | 否 | 点赞数 | |
| 12 | collect_len | int | 是 | 否 | 收藏数 | |
| 13 | comment_len | int | 是 | 否 | 评论数 | |
| 14 | create_time | datetime | 是 | 否 | 创建时间 | |
| 15 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-21-salary_information(薪资信息)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | salary_information_id | int | 是 | 是 | 薪资信息ID | |
| 2 | directors_account | int | 否 | 否 | 主任账号 | |
| 3 | employee_account | int | 否 | 否 | 员工账号 | |
| 4 | employee_name | varchar | 64 | 否 | 否 | 员工姓名 |
| 5 | employee_phone_number | varchar | 64 | 否 | 否 | 员工电话 |
| 6 | employee_id | varchar | 64 | 否 | 否 | 员工工号 |
| 7 | salary_title | varchar | 64 | 否 | 否 | 工资标题 |
| 8 | basic_salary | double | 否 | 否 | 基本工资 | |
| 9 | bonus_salary | double | 否 | 否 | 奖金工资 | |
| 10 | merit_pay | double | 否 | 否 | 绩效工资 | |
| 11 | allowance_salary | double | 否 | 否 | 津贴工资 | |
| 12 | deduction_of_salary | double | 否 | 否 | 扣款工资 | |
| 13 | total_actual_gain | varchar | 64 | 否 | 否 | 合计实得 |
| 14 | distribution_time | datetime | 否 | 否 | 发放时间 | |
| 15 | salary_remarks | text | 65535 | 否 | 否 | 工资备注 |
| 16 | create_time | datetime | 是 | 否 | 创建时间 | |
| 17 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 18 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 19 | source_id | int | 否 | 否 | 来源ID | |
| 20 | source_user_id | int | 否 | 否 | 来源用户 |
表 4-22-schedule(日程管理)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | schedule_id | smallint | 是 | 是 | 日程ID | |
| 2 | content | varchar | 255 | 否 | 否 | 日程内容 |
| 3 | scheduled_time | datetime | 否 | 否 | 计划时间 | |
| 4 | user_id | int | 是 | 否 | 用户ID | |
| 5 | create_time | datetime | 否 | 否 | 创建时间 | |
| 6 | update_time | datetime | 否 | 否 | 更新时间 |
表 4-23-score(评分)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | score_id | int | 是 | 是 | 评分ID | |
| 2 | user_id | int | 是 | 否 | 评分人 | |
| 3 | nickname | varchar | 64 | 否 | 否 | 昵称 |
| 4 | score_num | double | 是 | 否 | 评分 | |
| 5 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 6 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 7 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 8 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 9 | source_id | int | 是 | 否 | 来源ID |
表 4-24-slides(轮播图)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | slides_id | int | 是 | 是 | 轮播图ID | |
| 2 | title | varchar | 64 | 否 | 否 | 标题 |
| 3 | content | varchar | 255 | 否 | 否 | 内容 |
| 4 | url | varchar | 255 | 否 | 否 | 链接 |
| 5 | img | varchar | 255 | 否 | 否 | 轮播图 |
| 6 | hits | int | 是 | 否 | 点击量 | |
| 7 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-25-training_plan(培训计划)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | training_plan_id | int | 是 | 是 | 培训计划ID | |
| 2 | directors_account | int | 否 | 否 | 主任账号 | |
| 3 | training_name | varchar | 64 | 否 | 否 | 培训名称 |
| 4 | cover_photo | varchar | 255 | 否 | 否 | 封面图片 |
| 5 | lecturer_information | varchar | 64 | 否 | 否 | 讲师信息 |
| 6 | training_time | datetime | 否 | 否 | 培训时间 | |
| 7 | place | text | 65535 | 否 | 否 | 培训地点 |
| 8 | training_content | longtext | 4294967295 | 否 | 否 | 培训内容 |
| 9 | hits | int | 是 | 否 | 点击数 | |
| 10 | praise_len | int | 是 | 否 | 点赞数 | |
| 11 | collect_len | int | 是 | 否 | 收藏数 | |
| 12 | comment_len | int | 是 | 否 | 评论数 | |
| 13 | create_time | datetime | 是 | 否 | 创建时间 | |
| 14 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-26-upload(文件上传)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | upload_id | int | 是 | 是 | 上传ID | |
| 2 | name | varchar | 64 | 否 | 否 | 文件名 |
| 3 | path | varchar | 255 | 否 | 否 | 访问路径 |
| 4 | file | varchar | 255 | 否 | 否 | 文件路径 |
| 5 | display | varchar | 255 | 否 | 否 | 显示顺序 |
| 6 | father_id | int | 否 | 否 | 父级ID | |
| 7 | dir | varchar | 255 | 否 | 否 | 文件夹 |
| 8 | type | varchar | 32 | 否 | 否 | 文件类型 |
表 4-27-user(用户账户)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | user_id | int | 是 | 是 | 用户ID | |
| 2 | state | smallint | 是 | 否 | 账户状态:(1可用|2异常|3已冻结|4已注销) | |
| 3 | user_group | varchar | 32 | 否 | 否 | 所在用户组 |
| 4 | login_time | timestamp | 是 | 否 | 上次登录时间 | |
| 5 | phone | varchar | 11 | 否 | 否 | 手机号码 |
| 6 | phone_state | smallint | 是 | 否 | 手机认证:(0未认证|1审核中|2已认证) | |
| 7 | username | varchar | 16 | 是 | 否 | 用户名 |
| 8 | nickname | varchar | 16 | 否 | 否 | 昵称 |
| 9 | password | varchar | 64 | 是 | 否 | 密码 |
| 10 | | varchar | 64 | 否 | 否 | 邮箱 |
| 11 | email_state | smallint | 是 | 否 | 邮箱认证:(0未认证|1审核中|2已认证) | |
| 12 | avatar | varchar | 255 | 否 | 否 | 头像地址 |
| 13 | open_id | varchar | 255 | 否 | 否 | 针对获取用户信息字段 |
| 14 | create_time | timestamp | 是 | 否 | 创建时间 |
表 4-28-user_group(用户组)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | group_id | mediumint | 是 | 是 | 用户组ID | |
| 2 | display | smallint | 是 | 否 | 显示顺序 | |
| 3 | name | varchar | 16 | 是 | 否 | 名称 |
| 4 | description | varchar | 255 | 否 | 否 | 描述 |
| 5 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 6 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 7 | source_id | int | 是 | 否 | 来源ID | |
| 8 | register | smallint | 否 | 否 | 注册位置 | |
| 9 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 10 | update_time | timestamp | 是 | 否 | 更新时间 |
第5章 系统关键模块设计与实现
5.1 员工用户模块
5.1.1 用户注册界面
注册模块满足用户两部分,当用户想要进行资料相关信息的查询管理的时候,就必须进行登录,如果没有账号的话,在登录界面,点击“注册”按钮就会跳转到注册的界面,根据提示填写好账号、密码、昵称、邮箱、身份等注册信息,添加提交,注册的信息在数据库中就添加完成了,然后再输入填写好的账号和密码进行登录,其注册主界面展示如下图所示。

图5-1用户注册界面图
5.1.2 员工用户登录界面
员工用户在登录界面输入账号+密码,点击“登录”按钮,系统在用户数据库表中会对用户的账号进行匹配,账号+密码正确的话,就会登录到系统中各个用户的主管理界面,否则提示对应的信息,返回到登录的界面,其登录主界面展示如下图所示。

图5-2员工用户登录界面图
登录关键代码如下所示。
/**
* 登录
* @param data
* @param httpServletRequest
* @return
*/
@PostMapping("login")
public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
log.info("[执行登录接口]");
String username = data.get("username");
String email = data.get("email");
String phone = data.get("phone");
String password = data.get("password");
List resultList = null;
QueryWrapper wrapper = new QueryWrapper<User>();
Map<String, String> map = new HashMap<>();
if(username != null && "".equals(username) == false){
map.put("username", username);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
else if(email != null && "".equals(email) == false){
map.put("email", email);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
else if(phone != null && "".equals(phone) == false){
map.put("phone", phone);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}else{
return error(30000, "账号或密码不能为空");
}
if (resultList == null || password == null) {
return error(30000, "账号或密码不能为空");
}
//判断是否有这个用户
if (resultList.size()<=0){
return error(30000,"用户不存在");
}
User byUsername = (User) resultList.get(0);
Map<String, String> groupMap = new HashMap<>();
groupMap.put("name",byUsername.getUserGroup());
List groupList = userGroupService.selectBaseList(userGroupService.select(groupMap, new HashMap<>()));
if (groupList.size()<1){
return error(30000,"用户组不存在");
}
UserGroup userGroup = (UserGroup) groupList.get(0);
//查询用户审核状态
if (!StringUtils.isEmpty(userGroup.getSourceTable())){
String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());
if (res==null){
return error(30000,"用户不存在");
}
if (!res.equals("已通过")){
return error(30000,"该用户审核未通过");
}
}
//查询用户状态
if (byUsername.getState()!=1){
return error(30000,"用户非可用状态,不能登录");
}
String md5password = service.encryption(password);
if (byUsername.getPassword().equals(md5password)) {
// 存储Token到数据库
AccessToken accessToken = new AccessToken();
accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
accessToken.setUser_id(byUsername.getUserId());
tokenService.save(accessToken);
// 返回用户信息
JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
user.put("token", accessToken.getToken());
JSONObject ret = new JSONObject();
ret.put("obj",user);
return success(ret);
} else {
return error(30000, "账号或密码不正确");
}
}
public String select(Map<String,String> query,Map<String,String> config){
StringBuffer sql = new StringBuffer("select ");
sql.append(config.get(FindConfig.FIELD) == null || "".equals(config.get(FindConfig.FIELD)) ? "*" : config.get(FindConfig.FIELD)).append(" ");
sql.append("from ").append("`").append(table).append("`").append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));
if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){
sql.append("group by ").append(config.get(FindConfig.GROUP_BY)).append(" ");
}
if (config.get(FindConfig.ORDER_BY) != null && !"".equals(config.get(FindConfig.ORDER_BY))){
sql.append("order by ").append(config.get(FindConfig.ORDER_BY)).append(" ");
}
if (config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE))){
int page = config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;
int limit = config.get(FindConfig.SIZE) != null && !"".equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;
sql.append(" limit ").append( (page-1)*limit ).append(" , ").append(limit);
}
log.info("[{}] - 查询操作,sql: {}",table,sql);
return sql.toString();
}
public List selectBaseList(String select) {
List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);
List<E> list = new ArrayList<>();
for (Map<String,Object> map:mapList) {
list.add(JSON.parseObject(JSON.toJSONString(map),eClass));
}
return list;
}
5.1.3新闻资讯界面
用户可以查看新闻资讯信息。资讯内容按照类别进行组织,方便用户根据兴趣查看相关内容。系统提供搜索功能,用户可以按关键词查询特定的新闻资讯。在详情页可以点赞、收藏和评论。新闻资讯界面图如下图所示。

图5-3新闻资讯界面图
5.1.4招聘信息界面
进入“招聘信息”后,用户会看到所有就招聘信息列表。显示招聘信息照片、基本信息。用户点击具体招聘信息的照片后,将进入详细信息页面,用户可以查看更多详细描述。在详情页可以点赞、收藏和评论。招聘信息界面图如下图所示。

图5-4就诊中心界面图
5.1.5培训计划界面
进入“培训计划”后,用户会看到所有培训计划列表。显示培训计划照片、基本信息。用户点击具体培训计划的照片后,将进入详细信息页面,用户可以查看更多详细描述。在详情页可以点赞、收藏和评论。培训计划识界面图如下图所示。

图5-5培训计划界面图
5.2 科室主任模块
5.2.1 招聘信息管理界面
科室主任点击“招聘信息管理”这一菜单会显示招聘信息列表和招聘信息添加两个子菜单,点击“招聘信息列表”可以查看招聘信息详情和用户评论,可以进行查询、重置、删除等操作。点击“招聘信息添加”,可以添加新的招聘信息。界面如下图所示。

图5-6招聘信息管理界面图
5.2.2培训计划管理界面
科室主任点击“培训计划管理”这一菜单会显示培训计划列表和培训计划添加两个子菜单,点击“培训计划列表”可以查看培训计划详情和用户评论,可以进行查询、重置、删除等操作。点击“培训计划添加”,可以添加新的培训计划。培训计划管理如下图所示。

图5-7培训计划界面图
培训计划添加的关键代码如下:
@RequestMapping(value = {"/sum_group", "/sum"})
public Map<String, Object> sum(HttpServletRequest request) {
Query count = service.sum(service.readQuery(request), service.readConfig(request));
return success(count.getResultList());
}
5.2.3绩效信息管理界面
科室主任点击“绩效信息管理”这一菜单会显示绩效信息列表这个子菜单,点击“绩效信息列表”可以查看绩效信息详情,可以进行查询和重置等操作。绩效信息管理如下图所示。

图5-8绩效信息管理界面图
5.3管理员功能模块
5.3.1系统用户界面
在系统用户页面中可以对管理员、员工用户和科室主任三种角色进行管控,还可以对三种角色进行查询、重置、添加和删除。系统用户界面如下图所示。

图5-9系统用户界面图
系统用户管理关键代码如下所示。
public List selectBaseList(String select) {
List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);
List<E> list = new ArrayList<>();
for (Map<String,Object> map:mapList) {
list.add(JSON.parseObject(JSON.toJSONString(map),eClass));
}
return list;
}
5.3.2 科室分类管理界面
管理员点击“科室分类管理”这一菜单会显示科室分类列表和科室分类添加两个子菜单,点击“科室分类列表”可以查看科室分类详情,可以进行查询、重置、删除等操作。点击“科室分类添加”,可以添加新的科室分类。科室分类管理界面如下图所示。

图5-10科室分类管理界面图
5.3.3 薪资信息管理界面
管理员点击“薪资信息管理”这一菜单会显示薪资信息列表这个子菜单,点击“薪资信息列表”可以查看薪资信息详情,可以进行查询、重置、删除等操作。薪资信息管理界面如下图所示。

图5-11薪资信息管理界面图
5.3.4 系统管理界面
管理员可以管理网站首页的轮播图,上传、编辑和删除图片内容。可设置轮播图的展示顺序和有效时间,使得平台首页内容保持最新和吸引用户。系统管理界面如下图所示。

图5-12系统管理界面图
5.3.5通知公告管理界面
管理员点击“通知公告管理”这个菜单,可以查看到系统中所有添加的系统公告,支持通过标题对系统公告进行查询,添加、删除等操作。通知公告管理界面如下图所示。

图5-13通知公告管理界面图
第6章 系统测试
6.1系统测试的目的
程序设计不能保证没有错误,这是一个开发过程,在错误或错误的过程中都是难以避免的。虽然这是不可避免的,但我们不能使这些错误始终存在于系统中,错误可能会造成无法估量的后果,如系统崩溃,安全信息泄露,系统无法正常启动等,为了避免这些问题,我们需要测试程序,再测试过程中发现问题,并纠正它们,从而使系统更长时间稳定成熟。本章的作用是发现这些问题,并对其进行修改,虽然耗时费力,但对于长期使用而言是非常重要和必要系统的开发。
软件在设计后必须进行测试,调试过程中使用的方法是软件测试方法。在开发新软件时,系统测试是检查软件是否合格的关键步骤,以及是否符合设计目标的参考。测试主要是查看软件中数据的准确性,正确的操作与否,以及操作的结果,还有哪些方面需要改进。
医院人力资源管理系统的实现,对于系统中功能模块的实现及操作都必须通过测试进行来评判系统是否可以准确的实现。在医院人力资源管理系统正式上传使用之前必须做的一步就是系统测试,对于测试发现的错误及时修改处理,保证系统准确无误的供给用户使用。
6.2系统测试方法
在对医院人力资源管理系统进行测试的时候在找到问题的情况下必须在第一时间找到解决问题的办法,不要存在侥幸的心理,这样才能让医院人力资源管理系统开发的质量可以过关,并且开发的周期会大大缩短,还有就是在测试时,不要出现重复性的错误,遇到一个错误问题,要将整个医院人力资源管理系统开发所牵扯的该问题都必须一一解决,提高医院人力资源管理系统的安全性、稳定性。
白盒测试与黑盒测试是测试中比较常用的两种方法。
①结构测试俗称白盒测试:这种测试是在对程序的处理过程与结构都有详尽谅解的前提下,顺从程序内部的逻辑而完成的系统测试,以确定系统中所有的通路都能够遵照设计要求正常工作,不出现任何偏差。
②功能测试又成黑盒测试:主要是针对程序功能能够按照设计正常实现的一种检测,在程序接口处进行,检测程序手法数据是否正常,与外部信息的交换是否完整。
6.3功能测试
用户登录测试:
| 模块名称 | 测试用例 | 预期结果 | 实际结果 | 是否通过 |
| 登录模块 | 用户名:admin 密码:123 | 弹出错误提示,提示密码错误 | 弹出错误提示,提示密码错误 | 通过 |
| 登录模块 | 用户名:123 密码:admin | 弹出错误提示,提示用户名错误 | 弹出错误提示,提示用户名错误 | 通过 |
| 登录模块 | 用户名:admin 密码:admin | 管理员登录成功 | 管理员登录成功 | 通过 |
删除招聘信息测试:
| 模块名称 | 测试用例 | 预期结果 | 实际结果 | 是否通过 |
| 删除招聘信息模块 | 招聘信息 | 删除成功、页面自动跳转 | 删除成功、页面自动跳转 | 通过 |
修改密码测试:
| 模块名称 | 测试用例 | 预期结果 | 实际结果 | 是否通过 |
| 修改密码模块 | 原密码:666 新密码:123 确认密码:123 | 弹出错误提示,提示原密码错误 | 弹出错误提示,提示原密码错误 | 通过 |
| 修改密码模块 | 原密码:admin 新密码:123 确认密码:333 | 弹出错误提示,提示确认密码不一致 | 弹出错误提示,提示确认密码不一致 | 通过 |
| 修改密码模块 | 原密码:admin 新密码:123 确认密码:123 | 密码修改成功 | 密码修改成功 | 通过 |
通过对功能的测试,医院人力资源管理系统的基本功能都是可行的,不管是系统里面的功能,还是界面的设计都是可值得推广宣传的。
第7章 总结
在开发医院人力资源管理系统之前我胸有成竹,觉得很简单,但在实际的开发中我发现了自身的很多问题,许多编程思想和方法都还没有掌握牢靠,比如Bootsatrp、Jquery、AJAX 、SSM、mybeatis等许多Java Web开发技术,通过开发这个医院人力资源管理系统我成长了很多,懂得了做什么事情都要脚踏实地,不能眼高手低,在本次医院人力资源管理系统的开发中我逐渐掌握逐渐熟悉的技术。
同时,在本次项目中我也暴露了诸多问题。对于Java的编程知识有所欠缺,环境配置和算法上出现诸多问题,时常导致项目运行出错,或者目标的实现有问题。或者实现想法时算法未优化,使得代码冗长,程序运行不顺畅。
参考文献
- 王志涛.基于B/S模式的项目管理信息系统开发与设计[J].办公自动化,2024,29(24):84-86.
- 郦昕昕.基于B/S模式的人事管理系统设计与实现[J].集成电路应用,2024,41(05):246-247.DOI:10.19339/j.issn.1674-2583.2024.05.112.
- 夏禹.基于FreeMarker、ECharts以及SSM的数据可视化平台[J].电脑编程技巧与维护,2019,(07):91-92+99.DOI:10.16184/j.cnki.comprg.2019.07.035.
- 赵静静.基于SSM框架的检查业务数据应用系统开发[J].现代信息科技,2025,9(02):52-57.DOI:10.19850/j.cnki.2096-4706.2025.02.009.
- 赵媛.基于Vue的Web系统前端性能优化分析[J].电脑编程技巧与维护,2024,(09):44-46.
- 秦冬.浅析Vue框架在前端开发中的应用[J].信息与电脑(理论版),2024,36(13):61-63.
- 李艳杰.MySQL数据库下存储过程的综合运用研究[J].现代信息科技,2023,7(11):80-82+88.
- 邱丹萍.Web开发中SSM框架的分析[J].电脑知识与技术,2020,16(17):81-82.DOI:10.14004/j.cnki.ckt.2020.2080.
- 张桓,刘仲会,丁明浩.SSM轻量级框架应用开发教程[M].人民邮电出版社:202007.217.
- 邱晓冰.基于J2EE的医院人力资源管理系统设计与实现[J].网络安全和信息化,2025,(01):91-93.
- 李权光.医院人力资源管理信息系统与会计薪酬绩效管理关系的探讨[J].市场周刊,2024,37(33):179-182.
- 蔡嘉宏.医院人力资源管理系统的设计与实现[J].经济师,2024,(06):254-255+257.
- 段瑞,李方一.Java项目任务教学研究与设计[C]//河南省民办教育协会.2024年高等教育发展论坛论文集(上册).绵阳城市学院;,2024:2.DOI:10.26914/c.cnkihy.2024.009751.
- Ullenboom C .Java Programming Exercises:Volume Two: Java Standard Library[M].CRC Press:2024-03-30.
- Zhou R ,Luo K ,Chen X , et al.Research on the Construction of Computer Courses Based on CBE-CDIO Engineering Education Concept: Taking the Course “JAVA Programming” as an Example[J].Contemporary Education Frontiers,2023,1(2):
- Davi V .Designing Hexagonal Architecture with Java:Build maintainable and long-lasting applications with Java and Quarkus[M].Packt Publishing Limited:2023-09-29.DOI:10.0000/9781837630714.
- 张伟.多院区医院人力资源管理系统设计研究[J].网络安全和信息化,2023,(08):96-98.
- 谢艳清,范志通,吕雅杰,等.浅谈现代化医院人力资源信息管理系统的建设与思考[J].现代医院,2023,23(04):626-628.
- 林宏荣.基于数据挖掘算法的医院人力资源管理系统设计[J].商业观察,2022,(34):65-68+72.
- 王伟.基于JSP的医院人力资源管理系统的设计与实现研究[J].数字通信世界,2022,(09):29-31.
致 谢
这次毕业设计能够完成,最重要的就是来自指导老师的帮助,老师不厌其烦的对我的论文及毕业设计提出非常有建设性的建议,我的毕设能够完成离不开老师的帮助。我对老师由衷的表示感谢,
其次要感谢大学四年里学院里所有的任课老师的教导,老师们在我整个大学四年里给予了我丰富的知识,让我能够在大学中不虚度光阴,踏踏实实的学习,没有这些老师不辞辛劳的教诲,我无法完成这四年的学业。
由于自己的水平有限,毕设仍然存在着很大的缺陷,各位老师若提出意见,我会努力改正。
请关注点赞+私信博主,免费领取项目源码

被折叠的 条评论
为什么被折叠?



