基于SpringBoot2+vue2的人力资源管理系统
温馨提示:
本文最后更新于 2026年06月03日,已超过 7 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我。
1. 资源
读完可获取
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")
public R save(@RequestBody GongziEntity gongzi, HttpServletRequest request){
// 权限判断
String role = String.valueOf(request.getSession().getAttribute("role"));
if(StringUtil.isEmpty(role))
return R.error(511,"权限为空");
else if("员工".equals(role))
gongzi.setYuangongId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));
// 同一员工同一月份只能有一条工资记录
Wrapper<GongziEntity> queryWrapper = new EntityWrapper<GongziEntity>()
.eq("yuangong_id", gongzi.getYuangongId())
.eq("gongzi_time", gongzi.getGongziTime());
GongziEntity gongziEntity = gongziService.selectOne(queryWrapper);
if(gongziEntity==null){
gongzi.setShifaGongzi(gongzi.getJibenGongzi()+gongzi.getJiangjinGongzi());
gongzi.setInsertTime(new Date());
gongzi.setCreateTime(new Date());
gongziService.insert(gongzi);
return R.ok();
}else {
return R.error(511,"该员工该月份已有工资");
}
}
5.2 员工登录接口(YuangongController.java)
@IgnoreAuth
@RequestMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
YuangongEntity yuangong = yuangongService.selectOne(new EntityWrapper<YuangongEntity>().eq("username", username));
if(yuangong==null || !yuangong.getPassword().equals(password))
return R.error("账号或密码不正确");
String token = tokenService.generateToken(yuangong.getId(),username, "yuangong", "员工");
R r = R.ok();
r.put("token", token);
r.put("role","员工");
r.put("username",yuangong.getYuangongName());
r.put("tableName","yuangong");
r.put("userId",yuangong.getId());
return r;
}
5.3 应聘记录 MyBatis 联表查询(YingpinjiluDao.xml 片段)
<select id="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>
<if test="params.yingpinjiluName != null and params.yingpinjiluName != ''">
and a.yingpinjilu_name like CONCAT('%',#{params.yingpinjiluName},'%')
</if>
...
</where>
order by a.${params.orderBy} desc
</select>
5. 部分截图

















7. 项目总结
人力资源管理系统涵盖了企业人事管理中的核心业务场景,包括员工档案、部门架构、薪酬发放、人事调动、招聘应聘等。系统具备以下特点:
- 功能完整:从员工入职到薪资发放、岗位调动、招聘闭环,全流程支持。
- 权限清晰:管理员与员工角色分离,数据隔离保证安全。
- 技术规范:采用主流 Spring Boot + MyBatis-Plus + Vue 技术栈,代码结构清晰,易于二次开发。
- 数据字典化:将类型字段抽象为字典表,增强了系统的可配置性。
- 易用性:前端使用 Element UI 组件库,界面友好,支持表格分页、搜索、导出等常见操作。
通过本项目,可以快速搭建企业级人事管理系统,并可根据实际需求扩展考勤、绩效等更多模块。
正文到此结束
- 本文标签: Java Spring Spring Boot
- 本文链接: https://blog.xiaobias.com/article/44
- 版权声明: 本文由十五喵原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权
