基于SpringBoot2+vue2的人力资源管理系统
1. 资源
https://blog.xiaobias.com/article/44
2. 项目简介
人力资源管理系统,旨在为企业提供员工信息管理、部门管理、工资管理、人事调配管理、招聘与应聘管理等核心功能。系统基于 B/S 架构,分为管理员端和员工端,管理员可进行全部数据维护,员工可查看个人工资、人事调配等信息。系统数据存储使用 MySQL 数据库,后端采用 Spring Boot 框架,前端使用 Vue + Element UI 构建后台管理界面。
3. 技术栈
后端
- Java 1.8
- Spring Boot 2.2.2
- MyBatis-Plus 2.3
- Apache Shiro 1.3.2(权限控制)
- MySQL 5.7.32(数据库)
- Apache Commons、Fastjson、Hutool 等工具库
前端
- Vue 2.x
- Vue Router
- Element UI
- axios
- vue-json-excel、vue-qr 等辅助组件
4. 详细介绍
4.1 功能模块
4.1.1 管理员端功能
| 模块 | 功能说明 |
|---|---|
| 部门管理 | 对部门进行增删改查,记录部门名称、人数、职责、介绍等。 |
| 员工管理 | 维护员工基本信息(账户、密码、所属部门、编号、姓名、手机号、身份证号、头像、职位、性别、邮箱),支持重置密码。 |
| 工资管理 | 为员工发放工资,记录工资名称、发放月份、基本工资、奖金、实发工资(自动计算)及备注。 |
| 人事调配管理 | 记录员工的人事调动信息(调配名称、详情、调配时间)。 |
| 招聘信息管理 | 发布招聘岗位,包括招聘名称、类型(社会/校园)、人数、详情。 |
| 应聘记录管理 | 查看应聘者提交的信息(姓名、手机号、身份证号、教育经历、工作经历、个人介绍、应聘时间),并可标记是否已面试及面试结果。 |
| 字典数据管理 | 维护系统中使用的枚举类型(如性别、招聘类型、是否已面试、面试结果等)。 |
4.1.2 员工端功能
| 模块 | 功能说明 |
|---|---|
| 工资管理 | 查看本人历史工资记录。 |
| 人事调配管理 | 查看本人相关的人事调动信息。 |
| 部门管理 | 查看公司部门信息(只读)。 |
4.2 数据库设计
- bumen(部门表):id, bumen_name, bumen_number, bumen_zhize, bumen_content, insert_time, create_time
- yuangong(员工表):id, username, password, bumen_id, yuangong_uuid_number, yuangong_name, yuangong_phone, yuangong_id_number, yuangong_photo, zhiwei, sex_types, yuangong_email, create_time
- gongzi(工资表):id, yuangong_id, gongzi_name, gongzi_time, jiben_gongzi, jiangjin_gongzi, shifa_gongzi, gongzi_content, insert_time, create_time
- renshidiaopei(人事调配表):id, yuangong_id, renshidiaopei_name, renshidiaopei_content, diaopei_time, insert_time, create_time
- zhaopinxinxi(招聘信息表):id, zhaopinxinxi_name, zhaopinxinxi_types, zhaopinxinxi_number, zhaopinxinxi_content, insert_time, create_time
- yingpinjilu(应聘记录表):id, zhaopinxinxi_id, yingpinjilu_name, yingpinjilu_phone, yingpinjilu_id_number, jiaoyu_content, gongzuo_content, geren_content, yingpin_time, mianshi_types, mianshi_jieguo_types, insert_time, create_time
- dictionary(字典表):id, dic_code, dic_name, code_index, index_name, super_id, beizhu, create_time
- users(管理员表):id, username, password, role, addtime
- token(登录令牌表):id, userid, username, tablename, role, token, addtime, expiratedtime
4.3 核心业务逻辑
- 工资实发自动计算:在保存或修改工资记录时,后端自动计算
shifa_gongzi = jiben_gongzi + jiangjin_gongzi。 - 员工唯一性校验:员工账户名、手机号、身份证号在系统中不可重复。
- 权限控制:通过 Shiro + Token 实现,管理员可操作所有模块,员工仅可查看本人相关数据。
- 字典转换:所有类型字段(如性别、招聘类型等)在前端展示时自动从
dictionary表中读取对应的中文名称。
5. 部分代码
5.1 工资模块后端 Controller(GongziController.java)
@RequestMapping("/save")publicRsave(@RequestBodyGongziEntitygongzi,HttpServletRequestrequest){// 权限判断Stringrole=String.valueOf(request.getSession().getAttribute("role"));if(StringUtil.isEmpty(role))returnR.error(511,"权限为空");elseif("员工".equals(role))gongzi.setYuangongId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));// 同一员工同一月份只能有一条工资记录Wrapper<GongziEntity>queryWrapper=newEntityWrapper<GongziEntity>().eq("yuangong_id",gongzi.getYuangongId()).eq("gongzi_time",gongzi.getGongziTime());GongziEntitygongziEntity=gongziService.selectOne(queryWrapper);if(gongziEntity==null){gongzi.setShifaGongzi(gongzi.getJibenGongzi()+gongzi.getJiangjinGongzi());gongzi.setInsertTime(newDate());gongzi.setCreateTime(newDate());gongziService.insert(gongzi);returnR.ok();}else{returnR.error(511,"该员工该月份已有工资");}}5.2 员工登录接口(YuangongController.java)
@IgnoreAuth@RequestMapping(value="/login")publicRlogin(Stringusername,Stringpassword,Stringcaptcha,HttpServletRequestrequest){YuangongEntityyuangong=yuangongService.selectOne(newEntityWrapper<YuangongEntity>().eq("username",username));if(yuangong==null||!yuangong.getPassword().equals(password))returnR.error("账号或密码不正确");Stringtoken=tokenService.generateToken(yuangong.getId(),username,"yuangong","员工");Rr=R.ok();r.put("token",token);r.put("role","员工");r.put("username",yuangong.getYuangongName());r.put("tableName","yuangong");r.put("userId",yuangong.getId());returnr;}5.3 应聘记录 MyBatis 联表查询(YingpinjiluDao.xml 片段)
<selectid="selectListView"resultType="com.entity.view.YingpinjiluView">SELECT a.id, a.yingpinjilu_name, a.yingpinjilu_phone, ... zhaopinxinxi.zhaopinxinxi_name as zhaopinxinxiName FROM yingpinjilu a left JOIN zhaopinxinxi ON a.zhaopinxinxi_id = zhaopinxinxi.id<where><iftest="params.yingpinjiluName != null and params.yingpinjiluName != ''">and a.yingpinjilu_name like CONCAT('%',#{params.yingpinjiluName},'%')</if>...</where>order by a.${params.orderBy} desc</select>6. 部分截图
7. 项目总结
人力资源管理系统涵盖了企业人事管理中的核心业务场景,包括员工档案、部门架构、薪酬发放、人事调动、招聘应聘等。系统具备以下特点:
- 功能完整:从员工入职到薪资发放、岗位调动、招聘闭环,全流程支持。
- 权限清晰:管理员与员工角色分离,数据隔离保证安全。
- 技术规范:采用主流 Spring Boot + MyBatis-Plus + Vue 技术栈,代码结构清晰,易于二次开发。
- 数据字典化:将类型字段抽象为字典表,增强了系统的可配置性。
- 易用性:前端使用 Element UI 组件库,界面友好,支持表格分页、搜索、导出等常见操作。
通过本项目,可以快速搭建企业级人事管理系统,并可根据实际需求扩展考勤、绩效等更多模块。
