【开源】基于JAVA语言的人事管理系统

在这里插入图片描述


目录

  • 一、摘要
    • 1.1 项目介绍
    • 1.2 项目录屏
  • 二、功能模块
    • 2.1 管理员功能模块
    • 2.2 普通员工功能模块
    • 2.3 答辩文案
  • 三、系统展示
  • 四、核心代码
    • 4.1 查询职称
    • 4.2 新增留言回复
    • 4.3 工资申请
    • 4.4 工资审核
    • 4.5 员工请假
  • 五、免责说明


一、摘要

1.1 项目介绍

基于JAVA+Vue+SpringBoot+MySQL的人事管理系统,包含了职位模块、职称模块、员工请假模块、员工留言模块、员工薪资模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,人事管理系统基于角色的访问控制,给公司管理员、员工使用,可将权限精确到按钮级别,您可以自定义角色并分配权限,系统适合设计精确的权限约束需求。

1.2 项目录屏


二、功能模块

2.1 管理员功能模块

1、公告管理:管理员发布公告需要普通员工能够查看到,如果有确认收到更好,没有也没事。
2、请假审核:管理员需要能看到员工的请假理由,然后进行审核,
3、打卡管理:管理员可以设置上班打卡的时间,并且界面有普通员工的打卡汇总情况(除管理员的,打卡人数和缺勤人数,迟到人数,请假人数进行页面显示汇总,按天来),最好能导出excel,
4、反馈管理:管理员可进行查看反馈,反馈内容由员工提交

2.2 普通员工功能模块

1、薪资管理:包括工资提现(将个人信息里那个提现搬到这来),薪资数额
2、公告:查看管理员发布的公告
3、上班打卡:超过时间就不能打卡(迟到)
4、请假:需要描述能描述请假理由,然后提交请假,由管理员审核,
系统反馈:能提交系统问题,由员工自行描述,管理员接收

2.3 答辩文案

基于 SpringBoot 的人事管理系统使用对象有两个,分别是公司管理员和员工。

公司管理员负责职位的维护、职称的维护、部门组织架构的维护、管理员的维护、员工的维护、工资的维护发放审核、薪资标准的维护、员工请假审核、公告的维护、留言板的维护。

员工可以进行薪资查询和申请提现、查询公司公告、员工请假、留言板留言。

  1. 承载中小型公司的薪资维护、审核、发放功能。也就是公司管理员可以对所辖范围内的薪资进行增删改查操作。
    薪资是中小型企业必备的元素,所以需要这个模块。

  2. 承载中小型公司的请假、请假审核功能。也就是公司管理员可以对员工提交的请假进行审批,员工可以发起审批。
    请假也是中小型企业必备的元素,所以需要这个模块。

  3. 承载中小型公司的新闻时政公告功能。
    一家公司要能够得到员工的信赖,新闻时政肯定是必不可少的
    所以需要这个模块,由公司管理员维护,开放给员工查询。

  4. 承载中小型公司的留言板功能。
    公司OA系统的标准化流程,肯定会有需要改进的点,或者现有功能不能被员工理解学会
    所以需要设计留言板功能,实现员工和公司的信息交互功能。

  5. 承载中小型公司的职位、职称、部门组织架构维护功能。
    职位和职称也是中小型企业必备的元素,所以需要这个模块。

  6. 承载可能需要的其他功能。
    在设计这个系统的时候,可能会用到其他功能,比如日志、文件管理
    我会把这些功能封装成独立的模块,利用Vue的组件化优势提供给别的模块调用

这个系统前端采用了国内流行的Vue技术,采用View UI作为组件库;后端采用SpringBoot整合MybatisPlus;
采用maven构建项目,采用Mysql数据库,使用Redis缓存加密的用户临时数据。


三、系统展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


四、核心代码

4.1 查询职称

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询职称")
public Result<IPage<JobTitle>> getByPage(@ModelAttribute JobTitle jobTitle,@ModelAttribute PageVo page) {QueryWrapper<JobTitle> qw = new QueryWrapper<>();if(jobTitle.getTitle() != null && !MyNullUtils.isNull(jobTitle.getTitle())) {qw.like("title",jobTitle.getTitle());}if(jobTitle.getCode() != null && !MyNullUtils.isNull(jobTitle.getCode())) {qw.like("code",jobTitle.getCode());}IPage<JobTitle> data = iJobTitleService.page(PageUtil.initMpPage(page),qw);return new ResultUtil<IPage<JobTitle>>().setData(data);
}

4.2 新增留言回复

@RequestMapping(value = "/insertReply", method = RequestMethod.POST)
@ApiOperation(value = "新增留言回复")
public Result<MessageBoard> insertReply(@RequestParam String content, @RequestParam String replyId){User currUser = securityUtil.getCurrUser();MessageBoard mb = iMessageBoardService.getById(replyId);if(mb == null) {return new ResultUtil<MessageBoard>().setErrorMsg("回复留言已被删除");}MessageBoard messageBoard = new MessageBoard();messageBoard.setUserId(currUser.getId());messageBoard.setUserName(currUser.getNickname());messageBoard.setDate(getZwzNowTime());messageBoard.setReplyId(replyId);messageBoard.setContent(content);if(iMessageBoardService.saveOrUpdate(messageBoard)){return new ResultUtil<MessageBoard>().setData(messageBoard);}return new ResultUtil<MessageBoard>().setErrorMsg("操作失败");
}

4.3 工资申请

@RequestMapping(value = "/apply", method = RequestMethod.POST)
@ApiOperation(value = "申请")
public Result<Object> apply(){Date date = new Date();int year = date.getYear() + 1900;int month = date.getMonth() + 1;String nowMouth = year + "-" + (month < 10 ? "0" + month : month) + "-";User currUser = securityUtil.getCurrUser();QueryWrapper<SalaryWithdrawal> qw = new QueryWrapper<>();qw.eq("user_id",currUser.getId());qw.eq("mouth",nowMouth);List<SalaryWithdrawal> salaryWithdrawalList = iSalaryWithdrawalService.list(qw);if(salaryWithdrawalList.size() > 0) {return ResultUtil.error("您已申请,无需重复申请");}SalaryWithdrawal salaryWithdrawal = new SalaryWithdrawal();salaryWithdrawal.setSalaryTime(getZwzNowTime());salaryWithdrawal.setMouth(nowMouth);salaryWithdrawal.setAuditName("");salaryWithdrawal.setUserName(currUser.getNickname());salaryWithdrawal.setUserId(currUser.getId());salaryWithdrawal.setStatus(0);salaryWithdrawal.setAuditTime("-");salaryWithdrawal.setMoneyData(currUser.getMoneyData());iSalaryWithdrawalService.saveOrUpdate(salaryWithdrawal);return ResultUtil.success("OK");
}

4.4 工资审核

@RequestMapping(value = "/audit", method = RequestMethod.POST)
@ApiOperation(value = "审核")
public Result<Object> audit(@RequestParam String id){User currUser = securityUtil.getCurrUser();SalaryWithdrawal sw = iSalaryWithdrawalService.getById(id);if(sw == null) {return ResultUtil.error("审核申请不存在");}if(sw.getStatus() > 0) {return ResultUtil.error("审核单已被审核,无需重复审核");}sw.setStatus(1);sw.setAuditTime(getZwzNowTime());sw.setAuditName(currUser.getNickname());iSalaryWithdrawalService.saveOrUpdate(sw);return ResultUtil.success("OK");
}

4.5 员工请假

@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = "编辑或更新数据")
public Result<UserLeave> insert(@RequestParam String date,@RequestParam String reason){User currUser = securityUtil.getCurrUser();UserLeave userLeave = new UserLeave();userLeave.setUserId(currUser.getId());userLeave.setUserName(currUser.getNickname());userLeave.setDateTime(getZwzNowTime());userLeave.setStatus("未审核");userLeave.setLeaveDate(date);userLeave.setLeaveReason(reason);userLeave.setAuditUser("");if(iUserLeaveService.saveOrUpdate(userLeave)){return new ResultUtil<UserLeave>().setData(userLeave);}return new ResultUtil<UserLeave>().setErrorMsg("操作失败");
}

五、免责说明

  • 本项目仅供个人学习使用,商用授权请联系博主,否则后果自负。
  • 博主拥有本软件构建后的应用系统全部内容所有权及独立的知识产权,拥有最终解释权。
  • 如有问题,欢迎在仓库 Issue 留言,看到后会第一时间回复,相关意见会酌情考虑,但没有一定被采纳的承诺或保证。

下载本系统代码或使用本系统的用户,必须同意以下内容,否则请勿下载!

  1. 出于自愿而使用/开发本软件,了解使用本软件的风险,且同意自己承担使用本软件的风险。
  2. 利用本软件构建的网站的任何信息内容以及导致的任何版权纠纷和法律争议及后果和博主无关,博主对此不承担任何责任。
  3. 在任何情况下,对于因使用或无法使用本软件而导致的任何难以合理预估的损失(包括但不仅限于商业利润损失、业务中断与业务信息丢失),博主概不承担任何责任。
  4. 必须了解使用本软件的风险,博主不承诺提供一对一的技术支持、使用担保,也不承担任何因本软件而产生的难以预料的问题的相关责任。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/645949.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring 声明式事务 @Transactional(详解)【面试重点,小林出品】

关于 Transactional 注解的基本使用&#xff0c;推荐看Spring 声明式事务 Transactional&#xff08;基本使用&#xff09; 概述 本篇博客主要学习 Transactional 注解当中的三个常⻅属性: 1. rollbackFor:异常回滚属性.指定能够触发事务回滚的异常类型.可以指定多个异常类型 …

AIGC是什么?GPT-4.0、DALL·E以及Midjourney等多种智能服务

AIGC&#xff08;人工智能生成内容&#xff0c;Artificial Intelligence Generated Content&#xff09;是指利用人工智能技术自动生成的文本、图像、音频和视频等内容。随着技术的进步&#xff0c;AIGC已经成为创意产业和内容创作领域的一股新兴力量。MidTool作为一款集成了多…

qml与C++的交互

qml端使用C对象类型、qml端调用C函数/c端调用qml端函数、qml端发信号-连接C端槽函数、C端发信号-连接qml端函数等。 代码资源下载&#xff1a; https://download.csdn.net/download/TianYanRen111/88779433 若无法下载&#xff0c;直接拷贝以下代码测试即可。 main.cpp #incl…

mmpose 2d姿态预测值转json文件

目录 效果图: 参考 模板文件下载地址: python预测代码: 效果图: <

51单片机ESP8266

一、MQTT透传AT固件 安信可提供的烧录WiFi固件工具&#xff1a; 链接: https://docs.ai-thinker.com/%E5%BC%80%E5%8F%91%E5%B7%A5%E5%85%B72 安信可提供的固件库链接: https://docs.ai-thinker.com/%E5%9B%BA%E4%BB%B6%E6%B1%87%E6%80%BB 经过测试&#xff0c;选择这个不可以…

Zephyr 源码调试

背景 调试环境对于学习源码非常重要&#xff0c;但嵌入式系统的调试环境搭建稍微有点复杂&#xff0c;需要的条件略多。本文章介绍如何在 Zephyr 提供的 qemu 上调试 Zephyr 源码&#xff0c;为后续分析 Zephyr OS 相关原理做铺垫。 环境 我的开发环境为 wsl ubuntu&#xf…

Redis 击穿、穿透、雪崩产生原因解决思路

大家都知道&#xff0c;计算机的瓶颈之一就是IO&#xff0c;为了解决内存与磁盘速度不匹配的问题&#xff0c;产生了缓存&#xff0c;将一些热点数据放在内存中&#xff0c;随用随取&#xff0c;降低连接到数据库的请求链接,避免数据库挂掉。需要注意的是&#xff0c;无论是击穿…

逻辑回归中的损失函数梯度下降

一、引言 逻辑回归中的损失函数通常采用的是交叉熵损失函数&#xff08;cross-entropy loss function&#xff09;。在逻辑回归中&#xff0c;我们通常使用sigmoid函数将线性模型的输出转换为概率值&#xff0c;然后将这些概率值与实际标签进行比较&#xff0c;从而计算损失。 …

模型选择实战

我们现在可以通过多项式拟合来探索这些概念。 import math import numpy as np import torch from torch import nn from d2l import torch as d2l生成数据集 给定x&#xff0c;我们将使用以下三阶多项式来生成训练和测试数据的标签&#xff1a; max_degree 20 # 多项式的最…

前端面试题-(浏览器内核,CSS选择器优先级,盒子模型,CSS硬件加速,CSS扩展)

前端面试题-(浏览器内核&#xff0c;CSS选择器优先级&#xff0c;盒子模型&#xff0c;CSS硬件加速&#xff0c;CSS扩展&#xff09; 常见的浏览器内核CSS选择器优先级盒子模型CSS硬件加速CSS扩展 常见的浏览器内核 内核描述Trident(IE内核)主要用在window系统中的IE浏览器中&…

分布式锁实现(mysql,以及redis)以及分布式的概念(续)redsync包使用

道生一&#xff0c;一生二&#xff0c;二生三&#xff0c;三生万物 这张尽量结合上一章进行使用&#xff1a;上一章 这章主要是讲如何通过redis实现分布式锁的 redis实现 这里我用redis去实现&#xff1a; 技术&#xff1a;golang&#xff0c;redis&#xff0c;数据结构 …

使用Python的pygame库实现自动追踪目标的Snake游戏

和上一期不同的目标追踪入门不同的是&#xff0c;这期是自动追踪科学游戏&#xff0c;话不多说&#xff0c;321上链接 一、项目背景 Snake游戏是一款经典的游戏&#xff0c;玩家需要控制一条蛇在屏幕上移动&#xff0c;吃掉食物并避免撞到自己的身体或墙壁。传统的Snake游戏通常…

校园跑腿小程序源码系统+代取快递+食堂超市代买+跑腿 带完整的安装代码包以及搭建教程

随着移动互联网的普及&#xff0c;人们越来越依赖于手机应用来解决日常生活中的各种问题。特别是在校园内&#xff0c;由于快递点距离宿舍较远、食堂排队人数过多等情况&#xff0c;学生对于便捷、高效的服务需求愈发强烈。在此背景下&#xff0c;校园跑腿小程序源码系统应运而…

蓝桥杯备赛 week 3 —— 高精度(C/C++,零基础,配图)

目录 &#x1f308;前言&#xff1a; &#x1f4c1; 高精度的概念 &#x1f4c1; 高精度加法和其模板 &#x1f4c1; 高精度减法和其模板 &#x1f4c1; 高精度乘法和其模板 &#x1f4c1; 高精度除法和其模板 &#x1f4c1; 总结 &#x1f308;前言&#xff1a; 这篇文…

Linux/Academy

Enumeration nmap 首先扫描目标端口对外开放情况 nmap -p- 10.10.10.215 -T4 发现对外开放了22,80,33060三个端口&#xff0c;端口详细信息如下 结果显示80端口运行着http&#xff0c;且给出了域名academy.htb&#xff0c;现将ip与域名写到/et/hosts中&#xff0c;然后从ht…

【12.PWM输出】蓝桥杯嵌入式一周拿奖速成系列

系列文章目录 蓝桥杯嵌入式系列文章目录(更多此系列文章可见) PWM输出 系列文章目录一、STM32CUBEMX配置二、项目代码1.main.c --> PWMOutputProcess 总结 一、STM32CUBEMX配置 STM32CUBEMX PA6 ->TIM16_CH1; PA7-> TIM17_CH1 预分频设置为79,自动重装载设置999PWM输…

PyQtGraph 之PlotCurveItem 详解

PyQtGraph 之PlotCurveItem 详解 PlotCurveItem 是 PyQtGraph 中用于显示曲线的图形项。以下是 PlotCurveItem 的主要参数和属性&#xff1a; 创建 PlotCurveItem 对象 import pyqtgraph as pg# 创建一个 PlotCurveItem curve pg.PlotCurveItem()常用的参数和属性 setData(…

资源管理核心考点梳理

个人总结&#xff0c;仅供参考&#xff0c;欢迎加好友一起讨论 PMP - 资源管理核心考点梳理 资源管理包括人力资源和实物资源管理。学习的重点是人力资源的管理&#xff0c;这一章是考试的重点章节&#xff0c;在新考纲中&#xff0c;“人”这一模块在题目种的比例是42%。 01 …

14.块参照的旋转(BlockReference)

愿你出走半生,归来仍是少年&#xff01; 环境&#xff1a;.NET FrameWork4.5、ObjectArx 2016 64bit、Entity Framework 6. 在排水管网数据的编图时&#xff0c;时常会遇见针对雨水箅等进行旋转。由于数据存储在数据库内&#xff0c;通过CAD自带的旋转功能只能变更图面而无法…

SVG 矩形 – SVG Rectangle (3)

简介 rect 元素用于创建 SVG 矩形和矩形图形的变体。有六个属性决定矩形在屏幕上的形状和位置 x, y – 矩形左上角的 x, y 坐标width、height – 矩形的宽度和高度rx、ry – 矩形角的 x 和 y 半径 如果没有设置 x 和 y 属性&#xff0c;则矩形的左上角放置在点 (0,0) 处。 如…