当前位置:首页 > 技术 > 正文内容

基于uni-app与Spring Boot的企业级人力资源管理系统设计与实现

访客 技术 2026年7月17日 1

技术架构选型

本系统采用前后端分离的架构设计,以确保系统的高可用性与可扩展性。具体技术栈如下:

  • 后端框架:Spring Boot 2.x,提供快速开发与自动配置能力。
  • 持久层框架:MyBatis-Plus,简化SQL操作,提供丰富的CRUD接口。
  • 开发语言:Java (JDK 1.8+)。
  • 数据库:MySQL 8.0,配合Navicat等工具进行数据建模与管理。
  • 前端框架:uni-app (基于Vue.js),实现一套代码多端运行(重点编译为微信小程序)。
  • 开发工具:IntelliJ IDEA(后端)、HBuilderX(前端)、微信开发者工具(小程序调试)、Maven(依赖管理)。

系统核心功能模块

该系统旨在为企业提供一套数字化、智能化的人力资源管理解决方案,核心业务模块包括:

  1. 基础账户管理:支持员工自助注册与登录,维护个人基础档案与账号安全设置。
  2. 人事档案与组织架构:管理员可配置企业部门架构与岗位信息。支持员工合同、档案的数字化录入与永久归档。提供转正、调岗、离职等人事流程的在线审批。
  3. 薪酬与福利核算:系统自动关联考勤与绩效数据计算月度薪资。支持加班费、调休及各类补贴的在线申请。员工可查询薪资明细,并对异常数据发起申诉。
  4. 考勤与排班调度:集成LBS地理位置定位打卡功能,支持灵活的班组排班。员工可在线提交请假、出差、外出培训等申请,审批结果直接同步至考勤日历。
  5. 假期额度管理:精细化管事假、年假、病假等各类假期额度。系统自动计算剩余可休天数,并在额度不足时触发全勤奖预警。
  6. 月度绩效评估:以自然月为考核周期,综合统计员工出勤率、请假时长及项目交付进度,自动生成月度绩效报表。
  7. 企业文化与员工关怀:提供员工生日倒计时提醒与内部祝福墙。支持企业公告发布、内部活动报名以及留言互动功能,增强团队凝聚力。

核心后端代码实现

以下展示系统配置管理模块的核心控制器代码。该模块负责处理系统级参数与字典数据的增删改查操作,采用了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='员工补贴申请表';

系统界面展示

以下为微信小程序端的部分核心界面效果,展示了系统的主视觉风格与交互布局:

系统首页与公告界面 人事管理与考勤界面
返回列表

上一篇:Java多态详解

没有最新的文章了...

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。