基于SpringBoot+Vue的OA管理系统

一、项目背景介绍:

办公自动化(Office Automation,简称OA),是将计算机、通信等现代化技术运用到传统办公方式,进而形成的一种新型办公方式。办公自动化利用现代化设备和信息化技术,代替办公人员传统的部分手动或重复性业务活动,优质而高效地处理办公事务和业务信息,实现对信息资源的高效利用,进而达到提高生产率、辅助决策的目的,最大限度地提高工作效率和质量、改善工作环境

二、项目技术简介:
  1. JAVA:Java是一门 面向对象编程语言 ,不仅 吸收了C++语言的各种优点 ,还摒弃了C++里难以理解的 多继承、指针 等概念,因此Java语言具有 功能强大和简单易用 两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
  2. Vue:Vue (发音为 /vjuː/,类似 view) 是一款用于构建用户界面的JavaScript框架。它基于标准HTML、CSS和JavaScript构建,并提供了一套声明式的、组件化的编程模型,帮助开发者高效地开发用户界面。- Vue是一个独立的社区驱动的项目,它是由尤雨溪在2014年作为其个人项目创建, 是一个成熟的、经历了无数实战考验的框架,它是目前生产环境中使用最广泛的JavaScript框架之一,可以轻松处理大多数web应用的场景,并且几乎不需要手动优化,并且Vue完全有能力处理大规模的应用。
  3. Element-UI:Element,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库。
  4. SpringBoot:Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来 简化 新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
  5. Mybatis-Plus:MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为 简化开发、提高效率而生。

三、系统功能模块介绍:

四、数据库设计:

1:‘报销管理’(claim)

字段名

类型

默认值

列注释

id

bigint

NULL

主键ID

emp_id

bigint

NULL

员工ID

info

varchar

NULL

申请理由

append_url

varchar

NULL

附件链接

create_time

datetime

NULL

申请时间

total

varchar

NULL

申请金额

status

int

NULL

状态[0:已提交,1:申请通过,2:申请驳回,3已撤回]

leave_info

varchar

NULL

拒绝理由

2:‘员工表’(emps)

字段名

类型

默认值

列注释

id

bigint

NULL

主键ID

name

varchar

NULL

姓名

sex

int

NULL

性别[0:男,1:女,2:未知]

birthday

datetime

NULL

出生日期

id_card

varchar

NULL

身份证号

address

varchar

NULL

家庭住址

age

int

NULL

年龄

phone

varchar

NULL

联系方式

work_state

varchar

NULL

就职状态[0:在职,1:离职]

join_time

datetime

NULL

入职时间

leave_time

datetime

NULL

离职时间

salary

varchar

NULL

基本工资

create_time

datetime

NULL

创建时间

user_name

varchar

NULL

账号

pass_word

varchar

NULL

密码

img

varchar

NULL

照片

bank_no

varchar

NULL

银行卡号

3:‘员工请假表’(leaves)

字段名

类型

默认值

列注释

id

bigint

NULL

主键ID

emp_id

bigint

NULL

员工ID

start_time

datetime

NULL

开始时间

end_time

datetime

NULL

结束时间

info

text

NULL

申请理由

status

int

NULL

状态[0:未审批,1:通过,2:拒绝,3:撤回]

refused_indo

varchar

NULL

拒绝理由

create_time

datetime

NULL

创建时间

4:‘管理员表’(manage)

字段名

类型

默认值

列注释

id

bigint

NULL

主键ID

user_name

varchar

NULL

用户名

pass_word

varchar

NULL

密码

head_img

varchar

NULL

头像

nick_name

varchar

NULL

昵称

create_time

datetime

NULL

创建时间

5:‘会议表’(meets)

字段名

类型

默认值

列注释

id

bigint

NULL

主键ID

title

varchar

NULL

会议标题

append_url

varchar

NULL

附件链接

status

int

NULL

状态[0:未发送,1:已发送]

create_time

datetime

NULL

创建时间

6:‘通知表’(noticle)

字段名

类型

默认值

列注释

id

bigint

NULL

主键ID

notice_info

text

NULL

通知内容

title

varchar

NULL

通知标题

create_time

datetime

NULL

创建时间

staus

int

NULL

状态[0:已发送,1:未发送]

7:‘打卡表’(punchs)

字段名

类型

默认值

列注释

id

bigint

NULL

主键ID

emp_id

bigint

NULL

员工ID

handle_time

date

NULL

日期

type

int

NULL

状态[0:正常,1:请假]

8:‘报告表’(reports)

字段名

类型

默认值

列注释

id

bigint

NULL

主键ID

emp_id

bigint

NULL

员工ID

content

text

NULL

报告内容

type

int

NULL

类型[0:日报,1:周报,2:月报]

append_url

varchar

NULL

附件URL

create_time

date

NULL

汇报时间

9:‘工资表’(salary)

字段名

类型

默认值

列注释

id

bigint

NULL

主键ID

emp_id

bigint

NULL

员工ID

total

varchar

NULL

工资总额

basic

varchar

NULL

基本工资

with_hold

varchar

NULL

扣款

add_money

varchar

NULL

其他金额

month_time

varchar

NULL

月份

info

varchar

NULL

说明

10:‘员工日程表’(schedules)

字段名

类型

默认值

列注释

id

bigint

NULL

主键ID

emp_id

bigint

NULL

员工ID

content

text

NULL

日程内容

create_time

date

NULL

创建时间

五、功能模块:
  1. 考勤模块:员工可通过系统进行每日打卡,请假,请假需要管理员进行审核,管理员可以拒绝亦可以通过,拒绝时可以填写拒绝理由

  1. 会议通知模块:管理员可以向员工发布会议通知,以及日常通知,会议通知则可以添加附件,而普通通知则会以markdown的格式向员工进行展示多样化的内容,并且员工可以实时收取到通知

  1. 日程模块:员工可以给自己添加每日计划来提醒自己,然后也可以编写日报周报或者年报,管理员则可以查看员工填写的内容

六、代码示例:
考勤模块
@Overrideprotected void beforeSave(PunchsDTO entity) throws Exception {String formatNow = LocalDateTimeUtils.formatNow(LocalDateTimeUtils.yyyy_MM_dd);LambdaQueryWrapper<PunchsDTO> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.eq(PunchsDTO::getHandleTime, formatNow);List<PunchsDTO> punchsDTOS = this.baseService.list(queryWrapper);if (CollectionUtil.isNotEmpty(punchsDTOS)) throw new Exception("当日已打卡,不可重复打卡!");entity.setHandleTime(new Date());super.beforeSave(entity);}

会议通知模块
 /*** 员工获取会议** @return*/@GetMapping("/emp")public ReturnMsg getEmpNotice() {LambdaQueryWrapper<MeetsDTO> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.eq(MeetsDTO::getStatus, 1).orderByDesc(MeetsDTO::getCreateTime).last("limit 5");return ReturnMsg.ok(this.baseService.list(queryWrapper));}

日程模块
 @GetMapping("/all/emps")public ReturnMsg allEmps() {List<BaseSelectEntity> list = new ArrayList<>();List<EmpsDTO> dtos = empsService.list();for (EmpsDTO dto : dtos) {BaseSelectEntity baseSelectEntity = new BaseSelectEntity();baseSelectEntity.setKey(dto.getId());baseSelectEntity.setValue(dto.getName());list.add(baseSelectEntity);}return ReturnMsg.ok(list);}@GetMapping("/current/{empId}")public ReturnMsg current(@PathVariable Long empId) {LambdaQueryWrapper<SchedulesDTO> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.eq(SchedulesDTO::getEmpId,empId).eq(SchedulesDTO::getCreateTime, LocalDateTimeUtils.formatNow(LocalDateTimeUtils.yyyy_MM_dd)).last("limit 1");return ReturnMsg.ok(baseService.getOne(queryWrapper));}

七、项目总结:

作为毕业设计,分配给本系统的设计与制作时间还是不足的,所以,OA系统还有许多需要完善的地方。

    第一个就是本系统的编程代码问题,各个程序文件的代码存在冗余的地方非常多,导致代码不够简洁,同时对代码的注释也比较麻烦。编码期间,对于很多页面可以共享的函数与方法都没有单独列出来,而是在需要用到函数和方法的页面上都重新编写了代码,通过后期的技术学习,以及对编码过程的分析总结,发现可以把共用的函数或方法编写在同一个页面上,在之后的页面中,需要使用此函数的页面,则可以直接调用函数,无需再编写代码了,这样可以简化代码,也能节省时间和存储空间。第二个就是对数据库的设计不够好,在数据处理中,影响程序运行速度。因此需要对数据库的性能进行优化。通过这方面知识的学习,在某个开发技术类的博客中,发现可以用数据库连接池技术来解决数据库的性能问题,另外还需规范数据库里面的关系模式,降低数据库的冗余率,提高运行速度。如果说平时的作业也是检查对知识的掌握情况,那么制作毕业设计,将是对自身所有知识的一个全面检测。因为系统能够制作完成则是经历了很多阶段,正如文中所展示的那样,先有可行性分析,对功能的分析,对功能的设计,对数据库的设计,对程序功能的编码实现,对完成编码程序的测试等,这些环节缺一不可,而且还都需要认真对待,大学学到的所有知识在制作系统时,才会发现不够用。所以这个项目制作,在检测自身能力的同时,也对问题分析,资料搜集,问题解决等能力进行了培养。

八、源码获取:

 此源码非开源,若需要此源码可扫码添加微信进行咨询!

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

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

相关文章

LangChain-09 Query SQL DB With RUN GPT 查询数据库 并 执行SQL 返回结果

安装依赖 pip install --upgrade --quiet langchain-core langchain-community langchain-openai编写代码 from langchain_core.prompts import ChatPromptTemplate from langchain_community.utilities import SQLDatabase from langchain_core.output_parsers import StrO…

python 02字符串

字符串可能是用到最多的数据类型了&#xff0c;所有标准序列操作&#xff08;索引、切片、乘法、成员资格检查、长度、最小值和最大值&#xff09;都适用于字符串 但别忘了字符串是不可变的&#xff0c;因此所有的元素赋值和切片赋值都是非法的。 1.居中效果 默认为空格 可…

Redis集群三种模式

一、Redis集群的三种模式 Redis有三种模式&#xff0c;分别是主从复制、哨兵模式、cluster 主从复制:主从复制是高可用Redis的基础&#xff0c;哨兵和集群都是在主从复制基础上实现高可用的。主从复制主要实现了数据的多机备份&#xff0c;以及对于读操作的负载均衡和简单的故障…

基于springboot的社区医疗服务系统

文章目录 项目介绍主要功能截图&#xff1a;部分代码展示设计总结项目获取方式 &#x1f345; 作者主页&#xff1a;超级无敌暴龙战士塔塔开 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &…

JavaScript实现全选、反选功能(Vue全选、反选,js原生全选、反选)

简介&#xff1a; 在JavaScript中&#xff0c;实现全选和反选通常是通过操作DOM元素和事件监听来实现&#xff1b; 全选功能&#xff1a;当用户点击一个“全选”复选框时&#xff0c;页面中所有具有相同类名的复选框都将被选中&#xff1b; 反选功能&#xff1a;用户点击一个…

2024.4.2-[作业记录]-day07-CSS 盒子模型(显示模式、盒子模型)

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; 文章目录 作业 2024.4.2 学习笔记CSS标签元素显示模式1 块元素2 行内元素3 行内块元素4…

C++从入门到精通——初步认识面向对象及类的引入

初步认识面向对象及类的引入 前言一、面向过程和面向对象初步认识C语言C 二、类的引入C的类名代表什么示例 C与C语言的struct的比较成员函数访问权限继承默认构造函数默认成员初始化结构体大小 总结 前言 面向过程注重任务的流程和控制&#xff0c;适合简单任务和流程固定的场…

Java栈和队列的实现

目录 一.栈(Stack) 1.1栈的概念 1.2栈的实现及模拟 二.队列(Queue) 2.1队列的概念 2.2队列的实现及模拟 2.3循环队列 2.4双端队列&#xff08;Deque&#xff09; 一.栈(Stack) 1.1栈的概念 栈:一种特殊的线性表&#xff0c;其 只允许在固定的一端进行插入和删除元素操作…

Tailwind 4.0 即将到来:前端开发的“速度与激情”

随着前端开发技术的不断进步&#xff0c;我们每天都在寻找更快、更简洁的解决方案来提升我们的开发效率和用户体验。今天&#xff0c;我要为大家介绍一项令人振奋的新技术进展——Tailwind 4.0的来临&#xff01; 对于经常使用Tailwind的朋友们来说&#xff0c;这个消息无疑是激…

【Kaggle】练习赛《鲍鱼年龄预测》(上)

前言 上一篇文章&#xff0c;讲解了《肥胖风险的多类别预测》机器学习方面的文章&#xff0c;主要是多分类算法的运用&#xff0c;本文是一个回归的算法&#xff0c;本期是2024年4月份的题目《Regression with an Abalone Dataset》即《鲍鱼年龄预测》&#xff0c;在此分享高手…

go包下载时报proxyconnect tcp: dial tcp 127.0.0.1:80: connectex错误的解决方案

一大早的GoLand就开始抽风了&#xff0c;好几个文件import都红了&#xff0c;于是我正常操作点击提示的sync&#xff0c;但是却报了一堆错&#xff1a; go: downloading google.golang.org/grpc v1.61.1 go: downloading google.golang.org/genproto v0.0.0-20240228224816-df9…

【Web应用技术基础】JavaScript(2)——案例:切换按钮的文本

视频已发。截图如下&#xff1a; 很简单的&#xff0c;只需要实现一个按钮的点击方法 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initia…