基于JAVA的人事管理系统 开源项目

news2024/11/18 10:53:33

在这里插入图片描述


目录

  • 一、摘要
    • 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.coloradmin.cn/o/1462324.html

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

相关文章

STM32-开发板介绍

市面的开发板有很多&#xff0c;博主有幸了解到一款集成度较高的开发板&#xff0c;朗峰STM32F103RCT6&#xff0c;知名度不高&#xff0c;性价比很高&#xff0c;这是目前唯一一款集成了大量传感器和功能模块的高集成度开发板。 巨大的优势在于&#xff0c;传感器和功能模块的…

高效社区:数字孪生在智慧社区中的应用与实践

随着科技的快速发展&#xff0c;数字孪生技术在智慧社区建设中扮演着越来越重要的角色。数字孪生技术通过建立物理空间与数字空间的交互映射关系&#xff0c;实现对社区设施、环境、服务等智能化管理和服务&#xff0c;为未来社区的发展提供了新的动力。本文将探讨数字孪生在智…

【AI大语言模型】ChatGPT在地学、GIS、气象、农业、生态、环境等领域中的应用

以ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diffusion、星火大模型、文心一言、千问为代表AI大语言模型带来了新一波人工智能浪潮&#xff0c;可以面向科研选题、思维导图、数据清洗、统计分析、高级编程、代码调试、算法学习、论文检索、写作、翻译、润色、文献辅助…

深入理解指针(c语言)

目录 一、使用指针访问数组二、数组名的理解1、数组首元素的地址2、整个数组 三、一维数组传参的本质四、冒泡排序五、二级指针六、指针数组 一、使用指针访问数组 可以使用指针来访问数组元素。例如&#xff0c;可以声明一个指针变量并将其指向数组的第一个元素&#xff0c;然…

Leo赠书活动-17期 《基础软件之路:企业级实践及开源之路》

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; 赠书活动专栏 ✨特色专栏&#xff1a;…

基于深度学习的连锁酒店场景识别与部署实践指南

基于深度学习的连锁酒店场景识别与部署实践指南 项目背景与意义数据集介绍数据预处理与加载模型选择与开发模型选择模型训练模型评估测试 模型部署服务 项目背景与意义 在智能旅游行业&#xff0c;场景识别&#xff08;又称为场景分类&#xff09;是一个关键技术&#xff0c;它…

Autosar-CanIf模块介绍

4.1CanIf模块简介 CanIf模块是为了要隔离MCal层与服务层,因此CanIf不可直接操作硬件资源。然而CanIf传输数据、接收数据要使用到Can模块的缓存,如果直接使用Can模块的缓存的话,那CanIf就与MCal层耦合在一起了。 为了解决这个问题,CanIf层使用了一个HOH的概念:Hardware Obj…

情暖冬日团建——手拉手助成长社会融合实践活动

2月21日上午合肥六中高一&#xff08;14&#xff09;班团支部的曹文祥、储诚羲、杜尤扬、林彦锋、古胜宇、周文涛、许君昊、郭稷豪、吴彤、徐欣悦 、 褚福磊、高彦希、李柄杉、周子翔、高杨、姚子涵和高一&#xff08;3&#xff09;班孙锦宸、高一&#xff08;7&#xff09;班朱…

Istio实战:Istio Kiali部署与验证

目录 前言一、Istio安装小插曲 注意事项 二、Kiali安装三、Istio测试参考资料 前言 前几天我就开始捣腾Istio。前几天在执行istioctl install --set profiledemo -y 的时候老是在第二步就报错了&#xff0c;开始我用的istio版本是1.6.8。 后面查看k8s与istio的版本对应关系后发…

FIPS 140-3认证有什么重要性

FIPS 140-3&#xff0c;全称为《Federal Information Processing Standards Publication 140-3》&#xff0c;是美国联邦政府制定的一套关于加密模块的标准。该标准旨在确保加密技术在政府、军事和商业等领域的安全性和合规性。自1994年首次发布以来&#xff0c;FIPS 140-3已成…

【学习总结】慢SQL治理经验总结

一、慢SQL定义 执行超过1s的SQL为慢SQL 三、慢SQl的风险 系统的响应时间延迟&#xff0c;影响用户体验 资源占用增加&#xff0c;增高了系统的负载&#xff0c;其他请求响应时间也可能会收到影响。 慢SQL占用数据库连接的时间长,如果有大量慢SQL查询同时执行&#xff0c;可能…

人工智能讲师AI讲师大模型讲师叶梓介绍及大语言模型技术原理与实践提纲

叶梓&#xff0c;上海交通大学计算机专业博士毕业&#xff0c;高级工程师。主研方向&#xff1a;数据挖掘、机器学习、人工智能。历任国内知名上市IT企业的AI技术总监、资深技术专家&#xff0c;市级行业大数据平台技术负责人。 长期负责城市信息化智能平台的建设工作&#xff…

[ai笔记11] 论ai韭菜的自我修养

欢迎来到文思源想的ai空间&#xff0c;这是技术老兵学习ai以及观点分享的第11篇内容&#xff01; 上班之后时间确实少了许多&#xff0c;但是最近也没闲着&#xff0c;关于ai的学习一直在探索两个部分&#xff0c;一个是看那本有名的书《这就是ChatGPT》&#xff0c;另外一个则…

详细设计文档模版

背景 描述为什么要做这个技术改造&#xff0c;改造后收益是什么。可以是业务背景或者技术背景。 业务需求类此处可以将产品需求文档中的内容放到此处。技术改造类项目记录发起改造的原因&#xff0c;如系统问题、架构升级、bug修复、性能优化等。 现状 描述当前的技术实现的…

C#上位机与三菱PLC的通信09---开发自己的通讯库(A-3E版)

1、A-3E报文回顾 具体细节请看&#xff1a; C#上位机与三菱PLC的通信05--MC协议之QnA-3E报文解析 C#上位机与三菱PLC的通信06--MC协议之QnA-3E报文测试 2、为何要开发自己的通讯库 前面开发了自己的A-1E协议的通讯库&#xff0c;实现了数据的读写&#xff0c;对于封装的通…

合金电阻2512 0.01R是怎么应用在电池保护板中的

合金电阻2512 0.01R可以应用在电池保护板中的过流保护电路中。电池保护板用于监测和控制电池的充放电状态&#xff0c;以防止电池过充、过放和过流等情况&#xff0c;保护电池的安全和寿命。 过流保护电路是电池保护板的主要功能之一&#xff0c;用于检测电池输出电流是否超过安…

DT DAY3 信号和槽

作业&#xff1a; 1> 思维导图 2> 使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 btn3 new QPushButton("按钮3",this);btn3->resize(ui->btn2->width(),ui->b…

Android14 InputManager-InputReader的处理

IMS启动时会调用InputReader.start()方法 InputReader.cpp status_t InputReader::start() {if (mThread) {return ALREADY_EXISTS;}mThread std::make_unique<InputThread>("InputReader", [this]() { loopOnce(); }, [this]() { mEventHub->wake(); });…

第3.4章:StarRocks数据导入-Routine Load

注&#xff1a;本篇文章阐述的是StarRocks-3.2版本的Routine Load导入机制 一、概述 Routine Load&#xff08;例行导入&#xff09;支持用户提交一个常驻的导入任务&#xff0c;可以将消息流存储在 Kafka 的Topic中&#xff0c;通过订阅Topic 中的全部或部分分区的消息&#…

什么是EMC电磁兼容性测试?

摘要: 电磁兼容性测试&#xff08;Electromagnetic Compatibility Testing&#xff0c;简称EMC测试&#xff09;是对电子产品在电磁场方面干扰大小&#xff08;EMI&#xff09;和抗干扰能力&#xff08;EMS&#xff09;的综合评定。其目的是检测电器产品所产生的电磁辐射对人体…