原创

基于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. 部分截图

img1
img2
img3
img4
img5
img6
img7
img8
img9
img10
img11
img12
img13
img14
img15
img16
img17


7. 项目总结

人力资源管理系统涵盖了企业人事管理中的核心业务场景,包括员工档案、部门架构、薪酬发放、人事调动、招聘应聘等。系统具备以下特点:

  • 功能完整:从员工入职到薪资发放、岗位调动、招聘闭环,全流程支持。
  • 权限清晰:管理员与员工角色分离,数据隔离保证安全。
  • 技术规范:采用主流 Spring Boot + MyBatis-Plus + Vue 技术栈,代码结构清晰,易于二次开发。
  • 数据字典化:将类型字段抽象为字典表,增强了系统的可配置性。
  • 易用性:前端使用 Element UI 组件库,界面友好,支持表格分页、搜索、导出等常见操作。

通过本项目,可以快速搭建企业级人事管理系统,并可根据实际需求扩展考勤、绩效等更多模块。

代码:https://fifteen.xiaobias.com/source/167

正文到此结束