1. 项目背景与意义
随着企业规模的不断扩大,传统的人事管理方式逐渐暴露出效率低、易出错、信息分散等问题。纸质档案和 Excel 表格难以满足企业对员工信息实时性、准确性和安全性的要求。因此,开发一套基于 Spring Boot 的企业人事信息管理系统具有重要的现实意义。
本系统旨在为企业提供一套统一、高效、安全的人事管理平台,实现员工信息、部门管理、考勤记录、薪资核算等核心业务的数字化管理,帮助企业降低管理成本、提升管理效率,并为决策层提供数据支撑。
2. 系统技术栈
本系统采用前后端分离的架构设计,后端基于 Spring Boot 框架构建,前端采用 Vue.js 进行页面渲染,数据库使用 MySQL 存储业务数据。具体技术栈如下:
| 层次 | 技术选型 | 说明 |
|---|---|---|
| 后端框架 | Spring Boot 2.7 | 快速构建独立运行的 Spring 应用 |
| 持久层框架 | MyBatis-Plus | 简化数据库操作,内置通用 CRUD 方法 |
| 数据库 | MySQL 8.0 | 存储员工、部门、考勤等业务数据 |
| 权限认证 | Spring Security + JWT | 实现用户认证与接口鉴权 |
| 前端框架 | Vue.js 3 + Element UI | 构建管理后台界面 |
| 构建工具 | Maven | 项目依赖管理与构建打包 |
| 接口文档 | Swagger 3 | 自动生成在线接口文档 |
3. 系统功能模块设计
系统按照企业人事管理的实际业务需求,划分为以下核心功能模块:
- 员工信息管理:实现员工基本信息的增删改查,包括姓名、性别、学历、入职时间、联系方式等。
- 部门管理:维护企业组织架构,支持部门的新增、调整和删除。
- 考勤管理:记录员工每日上下班打卡信息,支持按月份统计出勤情况。
- 薪资管理:根据基本工资、考勤扣款、绩效奖金等自动核算员工月度薪资。
- 系统用户管理:管理后台登录账号与角色权限,保障系统数据安全。
4. 数据库设计
系统核心数据表包括员工表、部门表、考勤表和薪资表。其中员工表与部门表通过部门 ID 建立关联关系,考勤表和薪资表通过员工 ID 与员工表关联。以下为员工表的核心结构:
CREATE TABLE employee ( id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID', emp_no VARCHAR(32) NOT NULL UNIQUE COMMENT '员工工号', name VARCHAR(50) NOT NULL COMMENT '姓名', gender TINYINT COMMENT '性别 1-男 2-女', dept_id BIGINT COMMENT '所属部门ID', position VARCHAR(50) COMMENT '职位', phone VARCHAR(20) COMMENT '联系电话', email VARCHAR(100) COMMENT '邮箱', hire_date DATE COMMENT '入职日期', status TINYINT DEFAULT 1 COMMENT '状态 1-在职 0-离职', create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间' ) COMMENT '员工信息表';5. 核心代码实现
5.1 项目依赖配置
在 pom.xml 中引入 Spring Boot、MyBatis-Plus 和 MySQL 驱动等核心依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.3</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency>5.2 实体类定义
以员工实体为例,使用 MyBatis-Plus 注解完成实体类与数据库表的映射:
@Data @TableName("employee") public class Employee { @TableId(type = IdType.AUTO) private Long id; private String empNo; private String name; private Integer gender; private Long deptId; private String position; private String phone; private String email; private LocalDate hireDate; private Integer status; }5.3 控制器层实现
控制器层负责接收前端请求并调用业务层处理,以下为员工管理的 RESTful 接口示例:
@RestController @RequestMapping("/api/employee") public class EmployeeController { @Autowired private EmployeeService employeeService; @GetMapping("/list") public Result list(@RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "10") Integer size) { Page<Employee> pageInfo = employeeService.page( new Page<>(page, size)); return Result.success(pageInfo); } @PostMapping("/save") public Result save(@RequestBody Employee employee) { employeeService.save(employee); return Result.success("保存成功"); } @PutMapping("/update") public Result update(@RequestBody Employee employee) { employeeService.updateById(employee); return Result.success("修改成功"); } @DeleteMapping("/delete/{id}") public Result delete(@PathVariable Long id) { employeeService.removeById(id); return Result.success("删除成功"); } }5.4 统一返回结果封装
为保证前后端接口数据格式统一,定义通用返回结果类:
@Data public class Result { private Integer code; private String message; private Object data; public static Result success(Object data) { Result result = new Result(); result.setCode(200); result.setMessage("操作成功"); result.setData(data); return result; } public static Result error(String message) { Result result = new Result(); result.setCode(500); result.setMessage(message); return result; } }6. 系统总结
本系统基于 Spring Boot 和 Vue.js 实现了企业人事信息管理的核心业务流程,具备员工信息维护、部门管理、考勤记录和薪资核算等功能。系统采用前后端分离架构,接口设计规范,便于后续功能扩展和维护。通过本系统的建设,企业能够有效提升人事管理的信息化水平,减少重复性人工操作,提高数据准确性和管理效率。