基于uni-app与Spring Boot的企业级人力资源管理系统设计与实现
技术架构选型
本系统采用前后端分离的架构设计,以确保系统的高可用性与可扩展性。具体技术栈如下:
- 后端框架:Spring Boot 2.x,提供快速开发与自动配置能力。
- 持久层框架:MyBatis-Plus,简化SQL操作,提供丰富的CRUD接口。
- 开发语言:Java (JDK 1.8+)。
- 数据库:MySQL 8.0,配合Navicat等工具进行数据建模与管理。
- 前端框架:uni-app (基于Vue.js),实现一套代码多端运行(重点编译为微信小程序)。
- 开发工具:IntelliJ IDEA(后端)、HBuilderX(前端)、微信开发者工具(小程序调试)、Maven(依赖管理)。
系统核心功能模块
该系统旨在为企业提供一套数字化、智能化的人力资源管理解决方案,核心业务模块包括:
- 基础账户管理:支持员工自助注册与登录,维护个人基础档案与账号安全设置。
- 人事档案与组织架构:管理员可配置企业部门架构与岗位信息。支持员工合同、档案的数字化录入与永久归档。提供转正、调岗、离职等人事流程的在线审批。
- 薪酬与福利核算:系统自动关联考勤与绩效数据计算月度薪资。支持加班费、调休及各类补贴的在线申请。员工可查询薪资明细,并对异常数据发起申诉。
- 考勤与排班调度:集成LBS地理位置定位打卡功能,支持灵活的班组排班。员工可在线提交请假、出差、外出培训等申请,审批结果直接同步至考勤日历。
- 假期额度管理:精细化管事假、年假、病假等各类假期额度。系统自动计算剩余可休天数,并在额度不足时触发全勤奖预警。
- 月度绩效评估:以自然月为考核周期,综合统计员工出勤率、请假时长及项目交付进度,自动生成月度绩效报表。
- 企业文化与员工关怀:提供员工生日倒计时提醒与内部祝福墙。支持企业公告发布、内部活动报名以及留言互动功能,增强团队凝聚力。
核心后端代码实现
以下展示系统配置管理模块的核心控制器代码。该模块负责处理系统级参数与字典数据的增删改查操作,采用了RESTful风格的API设计。
package com.hr.controller;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.hr.common.ApiResponse;
import com.hr.common.PageResult;
import com.hr.entity.SystemSetting;
import com.hr.service.SystemSettingService;
import com.hr.util.QueryUtils;
/**
* 系统配置参数控制器
*/
@RestController
@RequestMapping("/api/v1/settings")
public class SystemSettingController {
@Autowired
private SystemSettingService settingService;
/**
* 分页查询系统配置
*/
@GetMapping("/page")
public ApiResponse getPage(
@RequestParam Map queryParams,
SystemSetting setting) {
PageResult<SystemSetting> pageData = settingService.findPage(queryParams, setting);
return ApiResponse.success(pageData);
}
/**
* 获取所有配置列表(免鉴权)
*/
@GetMapping("/list")
public ApiResponse getList(SystemSetting setting) {
List<SystemSetting> list = settingService.findAll(setting);
return ApiResponse.success(list);
}
/**
* 根据ID获取配置详情
*/
@GetMapping("/{id}")
public ApiResponse<SystemSetting> getById(@PathVariable("id") Long id) {
SystemSetting setting = settingService.findById(id);
return ApiResponse.success(setting);
}
/**
* 根据配置键名获取详情
*/
@GetMapping("/key/{keyName}")
public ApiResponse<SystemSetting> getByKey(@PathVariable("keyName") String keyName) {
SystemSetting setting = settingService.findByKey(keyName);
return ApiResponse.success(setting);
}
/**
* 新增系统配置
*/
@PostMapping
public ApiResponse<Void> create(@RequestBody SystemSetting setting) {
settingService.save(setting);
return ApiResponse.success();
}
/**
* 更新系统配置
*/
@PutMapping
public ApiResponse<Void> update(@RequestBody SystemSetting setting) {
settingService.update(setting);
return ApiResponse.success();
}
/**
* 批量删除系统配置
*/
@DeleteMapping("/batch")
public ApiResponse<Void> deleteBatch(@RequestBody List<Long> ids) {
settingService.removeByIds(ids);
return ApiResponse.success();
}
}
数据库表结构设计
以下提取了系统中两个关键业务表的DDL语句,分别用于存储企业部门架构信息以及员工的补贴申请记录。表结构经过规范化设计,并添加了必要的索引以优化查询性能。
CREATE DATABASE IF NOT EXISTS `hr_system_db` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE `hr_system_db`;
-- 部门信息表
DROP TABLE IF EXISTS `sys_department`;
CREATE TABLE `sys_department` (
`dept_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '部门ID',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`dept_name` varchar(100) NOT NULL COMMENT '部门名称',
`manager_name` varchar(50) DEFAULT NULL COMMENT '部门负责人',
`establish_date` date DEFAULT NULL COMMENT '成立日期',
`headcount` int(11) DEFAULT '0' COMMENT '部门编制人数',
`employee_list` text COMMENT '部门员工名单(JSON格式)',
PRIMARY KEY (`dept_id`),
KEY `idx_dept_name` (`dept_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='部门信息表';
-- 员工补贴申请表
DROP TABLE IF EXISTS `emp_allowance_apply`;
CREATE TABLE `emp_allowance_apply` (
`apply_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '申请ID',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '提交时间',
`emp_account` varchar(50) DEFAULT NULL COMMENT '员工工号',
`emp_name` varchar(50) DEFAULT NULL COMMENT '员工姓名',
`dept_name` varchar(100) DEFAULT NULL COMMENT '所属部门',
`position` varchar(100) DEFAULT NULL COMMENT '岗位名称',
`apply_time` datetime DEFAULT NULL COMMENT '申请日期',
`allowance_detail` text COMMENT '补贴事由及明细',
`audit_status` tinyint(4) DEFAULT '0' COMMENT '审核状态(0:待审, 1:通过, 2:驳回)',
`audit_remark` text COMMENT '审批意见',
PRIMARY KEY (`apply_id`),
KEY `idx_emp_account` (`emp_account`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='员工补贴申请表';
系统界面展示
以下为微信小程序端的部分核心界面效果,展示了系统的主视觉风格与交互布局: