如何使用ssm实现办公OA系统0
@TOC
10907ssm办公OA系统10907ssm0
第一章 绪 论
1.1背景及意义
系统管理也都将通过计算机进行整体智能化操作,对于办公OA系统所牵扯的管理及数据保存都是非常多的,例如管理员;主页、个人中心、公司公告管理、设备分类管理、办公设备管理、员工管理、员工考勤管理、员工请假管理、员工工资管理、员工健康管理、员工留言管理、设备申请管理,员工;主页、个人中心、公司公告管理、办公设备管理、员工考勤管理、员工请假管理、员工工资管理、员工健康管理、员工留言管理、设备申请管理等,这给管理者的工作带来了巨大的挑战,面对大量的信息,传统的管理系统,都是通过笔记的方式进行详细信息的统计,后来出现电脑,通过电脑输入软件将纸质的信息统计到电脑上,这种方式比较传统,而且想要统计数据信息比较麻烦,还受时间和空间的影响,所以为此开发了办公OA系统;为员工提供了方便管理平台,方便管理员查看及维护,并且可以通过需求进行办公设备内容的编辑及维护等;对于员工而言,可以随时进行查看员工考勤信息和设备申请信息,管理员可以足不出户就可以获取到系统的数据信息等,而且还能节省员工很多时间,所以开发办公OA系统给管理者带来了很大的方便,同时也方便管理员对员工信息进行处理。
本论文办公OA系统主要牵扯到的程序,数据库与计算机技术等。覆盖知识面大,可以大大的提高系统人员工作效率。
1.2国内外研究概况
随着国内经济形势的不断发展,中国互联网进入了一个难得的高峰发展时期,这使得中外资本家纷纷转向互联网市场。 然而,许多管理领域的不合理结构,人员不足以及市场管理需求的增加使得更多的人具备了互联网管理的意识。
在当今高度发达的信息中,信息管理改革已成为一种更加广泛和全面的趋势。 “办公OA系统”是基于Mysql数据库,在JSP程序设计的基础上实现的。为确保中国经济的持续发展,信息时代日益更新,服务业仍在蓬勃发展。同时,随着信息社会的快速发展,各种管理系统面临着越来越多的数据需要处理,如何用方便快捷的方式使管理者在广阔的数据海洋里面查询、存储、管理和共享有效的数据信息,对我们的学习,工作和生活具有重要的现实意义。因此,国内外学术界对此进行了深入而广泛的研究,一个新的研究领域——办公OA系统诞生了。
28
1.3 研究的内容
目前许多人仍将传统的纸质工具作为信息管理的主要工具,而网络技术的应用只是起到辅助作用。在对网络工具的认知程度上,较为传统的office软件等仍是人们使用的主要工具,而相对全面且专业的信息管理软件仍没有得到大多数人的了解或认可。本选题则旨在通过标签分类管理等方式,实现办公OA系统的各种功能,从而达到对办公OA系统的管理。
详细内容介绍,将在以下六章中详细阐述:
第一章、绪论,介绍了研究课题选择的背景及意义、研究现状,简要介绍了本文的章节内容。
第二章、引入技术知识,通过引入关键技术进行开发,向系统中涉及直观表达的技术知识。
第三章、重点分析了系统的分析,从系统强大的供需市场出发,对系统开发的可行性,系统流程以及系统性能和功能进行了探讨。
第四章、介绍了系统的详细设计方案,包括系统结构设计和数据库设计。
第五章、系统设计的实现,通过对系统功能设计的详细说明,论证了系统的结构。
第六章、系统的整体测试,评判系统是否可以上线运行。
第二章 关键技术的研究
2.1 JSP技术介绍
JSP技术本身是一种脚本语言,但它的功能是十分强大的,因为它可以使用所有的JAVA类。当它与JavaBeans 类进行结合时,它可以使显示逻辑和内容分开,这就极大的方便了员工的需求。JavaBeans 可以对JSP技术的程序进行扩展,从而形成新的应用程序,而且JavaBeans的代码可以重复使用,所以就便于对程序进行维护。JavaBean 组件有内部的接口,可以帮助不同的人对系统进行访问。1999年,Sun微系统公司正式推出了JSP技术,这是一种动态技术,是基于整个JAVA体系和JavaServlet提出的,是具有普遍适用性的WEB技术,也是本系统设计的核心技术之一。JSP技术能够极大的提高WEB网页的运行速度。这些内容会与脚本结合,并且由JavaBean和Servlet组件封装。所有的脚本均在服务器端运行,JSP引擎会针对客户端所 提交的申请进行解释,然后生成脚本程序和JSP标识,然后通过HTML/XML页面将结果反馈给浏览器。因此,开发人员亲自设计最终页面的格式和HTML/XML标识时,完全可以使用JSP技术。
所以结合办公OA系统的需求及功能模块的实现,使用JSP技术是最合适的,而且JSP的拓展性比较好,对于系统在后期使用过程中可以不断对系统功能进行拓展,是系统更完成,更方便的满足员工管理。
2.2 JAVA简介
Java主要采用CORBA技术和安全模型,可以在互联网应用的数据保护。它还提供了对EJB(Enterprise JavaBeans)的全面支持,java servlet API,JSP(java server pages),和XML技术。JAVA语言是一种面向对象的语言,它通过提供最基本的方法来完成指定的任务,开发者只需要知道一些概念就能够编写出一些应用程序。Java程序相对较小,其代码能够在小机器上运行。Java是一种计算机编程语言,具有封装、继承和多态性三个主要特性,广泛应用于企业Web应用程序开发和移动应用程序开发。
Java语言和一般编译器以及直译的区别在于,Java首先将源代码转换为字节码,然后将其转换为JVM的可执行文件,JVM可以在各种不同的JVM上运行。因此,实现了它的跨平台特性。虽然这使得Java在早期非常缓慢,但是随着Java的开发,它已经得到了改进。
2.3 ECLIPSE 开发环境
ECLIPSE 支持广泛、兼容性高并且功能强大,是一个Eclipse 插件集合,普遍适应于JAVA和J2EE的系统开发,支持 JDBC,Hibernate,AJAX,Struts,Java Servlet,Spring,EJB3等市面上存在的几乎所有数据库链接工具和主流Eclipse产品 开发工具。
ECLIPSE 在业内是所熟知的开发工具,该平台在开发的过程中运用的就是该工具。ECLIPSE 又被称之为企业级的工作平台,它是以Eclipse IDE为基础的。ECLIPSE 可以帮助我们进行数据库的研发和J2EE的使用,除此之外,还可以提高系统的运营能力,这突出表现在服务器的整合过程中。ECLIPSE 的功能相当完备,能够为J2EE的集成提供必要的环境支持,从而完成编码、测试、调试及发布等功能。它可以支持JSP,HTML,SQL,Javascript,Struts, CSS等。
2.4 Tomcat服务器
Tomcat属于一种轻型的服务器,所以说在中小企业中并不具有普适性。但是当程序员需要开发或调试JSP 程序时,则通常会将该服务器作为首选。对于一个仅具有计算机基础知识的人来说,计算机系统具有一个好的Apache服务器,可以很好的对HTML 页面进行访问。Tomcat 虽然是Apache的扩展,但是它们都是可以独立运行的,二者是不互相干扰的。当配置正确的时候,Apache服务器为HTML 页面的运行提供技术支持,Tomcat 的任务则是运行Servle和JSP 页面。Tomca也具有一定的HTML页面处理功能。
2.5 MySQL数据库
数据库是系统开发过程中不可或缺的一部分。在WEB应用方面,MySQL AB开发了一个具有很大优势的MySQL关系数据库管理系统。 MySQL可以将数据存储在不同的表中,这非常灵活,并且还可以提高系统在实际应用中的速度。数据库访问最常用于标准SQL语言,MySQL用于SQL语言,因此它具有高度兼容性。数据库的操作是必不可少的,包括对数据库表的增加、删除、修改、查询等功能。现如今,数据库可以分为关系型数据库和非关系型数据库,Mysql属于关系性数据库,Mysql数据库是一款小型的关系型数据库,它以其自身特点:体积小、速度快、成本低等,Mysql数据库是目前最受欢迎的开源数据库。
在WEB应用技术中, Mysql数据库支持不同的操作系统平台,虽然在不同平台下的安装和配置都不相同,但是差别也不是很大,Mysql在Windows平台下两种安装方式,二进制版和免安装版。安装完Mysql数据库之后,需要启动服务进程,相应的客户端就可以连接数据库,客户端可通过命令行或者图形界面工具登录数据库。
第三章 系统分析
3.1 系统设计目标
办公OA系统主要是为了员工方便对办公设备的了解以及查看员工考勤信息和查看员工请假信息,也是为了更好的让管理员进行更好存储所有数据信息及快速方便的检索功能,对系统的各个模块是通过许多今天的发达系统做出合理的分析来确定考虑员工的可操作性,遵循开发的系统优化的原则,经过全面的调查和研究。
系统所要实现的功能分析,对于现在网络方便的管理,根据自己的需求可以进行查看主页、个人中心、公司公告管理、办公设备管理、员工考勤管理、员工请假管理、员工工资管理、员工健康管理、员工留言管理、设备申请管理等,这样既能节省员工的时间,不用在像传统的方式,需要查询,由于很多员工的时间原因,没有办法去相关实体店了解信息,真的很难去满足员工的各种需求。所以办公OA系统的开发不仅仅是能满足员工的需求,还能提高管理员的工作效率,减少原有不必要的工作量。
3.2 系统可行性分析
系统的开发环境和配置都是可以自行安装的,系统使用JSP开发工具,使用比较成熟的Mysql数据库进行对系统员工和管理员之间相关的数据交互,根据技术语言对数据库,结合需求进行修改维护,可以使得系统运行更具有稳定性和安全性,从而完成实现系统的开发。
(1)硬件可行性分析
办公OA系统及信息分析的设计对于所使用的计算机没有什么硬性的要求,计算机只要可以正常的使用进行代码的编写及页面设计就可行,主要是对于服务器有些要求,对于平台搭建完成要上传的服务器是有一定的要求的,服务器必须选择安全性比较高的,然后就是在打开系统必须顺畅,不能停顿太长时间;性价比高;安全性高。
(2)软件可行性分析
开发整个系统使用的是云计算,流量的可扩展性和基于流量的智能调整云计算的优点就是流量的可扩展性和基于流量的智能调整,保障系统的安全及数据信息的及时备份。
因此,我们从两个方面进行了可行性研究,可以看出系统的开发没有问题。
3.3 系统功能分析和描述
使用办公OA系统的用户分管理员和员工两个角色的权限子模块。
管理员所能使用的功能主要有:主页、个人中心、公司公告管理、设备分类管理、办公设备管理、员工管理、员工考勤管理、员工请假管理、员工工资管理、员工健康管理、员工留言管理、设备申请管理等。
员工可以实现主页、个人中心、公司公告管理、办公设备管理、员工考勤管理、员工请假管理、员工工资管理、员工健康管理、员工留言管理、设备申请管理等。
3.4系统UML用例分析
3.4.1管理员用例
管理员登录后可进行主页、个人中心、公司公告管理、设备分类管理、办公设备管理、员工管理、员工考勤管理、员工请假管理、员工工资管理、员工健康管理、员工留言管理、设备申请管理,管理员的用例如图3-1所示。
图3-1 管理员用例图
3.4.2员工用例
员工注册登录后可进行主页、个人中心、公司公告管理、办公设备管理、员工考勤管理、员工请假管理、员工工资管理、员工健康管理、员工留言管理、设备申请管理,员工用例如图3-2所示。
图3-2 员工用例图
3.5系统流程分析
3.5.2添加信息流程
添加信息,编号系统使用自动编号模式,没有员工填写,员工添加信息输入信息,系统将自动确认的信息和数据,验证的成功是有效的信息添加到数据库,信息无效,重新输入信息。添加信息流程如图3-4所示。
图3-4 添加信息流程图
3.5.1操作流程
员工想进入系统,首先进入系统登录界面,通过正确的用户名、密码,选择登录类型登录,系统会检查登录信息,信息正确,然后输入相应的功能界面,提示信息错误,登录失败。系统操作流程如图3-3所示。
图3-3操作流程图
3.5.3删除信息流程
员工选择要删除的信息并单击Delete按钮。系统提示是否删除信息。如果员工想要删除信息,系统将删除信息。系统数据库删除信息。删除信息流程图如图3-5所示。
图3-5 删除信息流程图
第四章 系统设计
4.1 系统体系结构
办公OA系统开发系统的结构图4-1所示:
网
络
员工
服务器和程序
管理员
图4-1 系统结构
模块包括主界面,主页、个人中心、公司公告管理、设备分类管理、办公设备管理、员工管理、员工考勤管理、员工请假管理、员工工资管理、员工健康管理、员工留言管理、设备申请管理等进行相应的操作。
登录系统结构图,如图4-2所示:
Y
办公OA系统登录
用户登录
密码正确
管理员界面
员工界面
图4-2 登录结构图
这些功能可以充分满足办公OA系统的需求。此系统功能较为全面如下图系统功能结构如图4-4所示。
图4-4系统功能结构图
4.2 数据库设计原则
每个数据库的应用它们都是和区分开的,当运行到一定的程序当中,它就会与自己相关的协议与客户端进行通讯。那么这个系统就会对使这些数据进行连接。当我们选择哪个桥段的时候,接下来就会简单的叙述这个数据库是如何来创建的。当点击完成按钮的时候就会自动在对话框内弹出数据源的名称,在进行点击下一步即可,直接在输入相对应的身份验证和登录密码。
办公OA系统的数据流程:
图4-5 系统数据流程图
员工管理实体E-R图,如图4.6所示。
图4.6员工管理E-R图
办公设备管理E-R图,如图4.7所示。
图4.7办公设备管理E-R图
4.3 数据表
将数据库概念设计的E-R图转换为关系数据库。在关系数据库中,数据关系由数据表组成,但是表的结构表现在表的字段上。
表名:bangongshebei
功能:办公设备
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
shebeibianhao | varchar | 200 | 设备编号 | ||
shebeimingcheng | varchar | 200 | 设备名称 | ||
fenlei | int | 分类 | |||
tupian | int | 图片 | |||
guige | int | 规格 | |||
pinpai | int | 品牌 | |||
shuliang | date | 数量 | |||
xiangqing | varchar | 200 | 详情 | 未支付 |
表名:gongsigonggao
功能:公司公告
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
gonggaobiaoti | varchar | 200 | 公告标题 | ||
tupian | varchar | 200 | 图片 | ||
neirong | varchar | 200 | 内容 | ||
faburiqi | varchar | 200 | 发布日期 |
表名:shebeishenqing
功能:设备申请
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
shebeibianhao | varchar | 200 | 设备编号 | ||
shenqingbiaoti | varchar | 200 | 申请标题 | ||
shebeimingcheng | varchar | 200 | 设备名称 | ||
shuliang | varchar | 200 | 数量 | ||
shenqingshuliang | varchar | 200 | 申请数量 | ||
shenqingneirong | longtext | 4294967295 | 申请内容 | ||
shenqingriqi | date | 申请日期 | |||
guihairiqi | varchar | 200 | 归还日期 | ||
beizhu | varchar | 200 | 备注 | ||
shenqingfujian | varchar | 200 | 申请附件 | ||
yuangonggonghao | varchar | 200 | 员工工号 | ||
yuangongxingming | varchar | 200 | 员工姓名 | ||
bumen | varchar | 200 | 部门 | ||
zhiwei | varchar | 200 | 职位 | ||
sfsh | varchar | 200 | 是否审核 | ||
shhf | varchar | 200 | 审核回复 |
表名:yuangong
功能:员工
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
yuangonggonghao | varchar | 200 | 员工工号 | ||
mima | varchar | 200 | 密码 | ||
yuangongxingming | varchar | 200 | 员工姓名 | ||
xingbie | varchar | 200 | 性别 | ||
touxiang | varchar | 200 | 头像 | ||
bumen | varchar | 200 | 部门 | ||
zhiwei | varchar | 200 | 职位 | ||
lianxidianhua | varchar | 200 | 联系电话 | ||
jiatingzhuzhi | varchar | 200 | 家庭住址 |
表名:yuangongliuyan
功能:员工留言
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | varchar | 100 | 创建时间 | ||
liuyanbiaoti | varchar | 100 | 留言标题 | ||
liuyanneirong | varchar | 100 | 留言内容 | 管理员 | |
liuyanriqi | timestamp | 留言日期 | CURRENT_TIMESTAMP | ||
beizhu | varchar | 100 | 备注 | ||
yuangonggonghao | varchar | 100 | 员工工号 | ||
yuangongxingming | varchar | 100 | 员工姓名 | ||
bumen | varchar | 100 | 部门 | ||
zhiwei | varchar | 100 | |||
lianxidianhua | varchar | 100 | 联系电话 | ||
sfsh | varchar | 100 | 是否审核 | ||
shhf | varchar | 100 | 审核回复 |
第五章 系统实现
5.1员工功能模块
员工点击进入到系统操作界面,可以对主页、个人中心、公司公告管理、办公设备管理、员工考勤管理、员工请假管理、员工工资管理、员工健康管理、员工留言管理、设备申请管理等功能模块,个人中心:通过列表可以获取原密码、新密码、确认密码信息并进行修改操作,如图5-1所示。
图5-1个人中心界面图
个人信息:通过列表可以获取员工工号、密码、员工姓名、性别、头像、部门、职位、联系电话、家庭住址等信息,进行查看操作,如图5-2所示。
图5-2个人信息界面图
公司公告管理:通过列表可以获取公告标题、公告类型、图片、内容等信息,进行查看操作,如图5-3所示。
图5-3公司公告管理界面图
办公设备管理:通过列表可以获取设备编号、设备名称、分类、图片、规格、品牌、数量等信息,进行查看操作,如图5-4所示。
图5-4办公设备管理界面图
员工考勤管理:通过列表可以获取考勤编号、考勤名称、考勤类型、打卡时间、备注、员工工号等信息,进行查看操作,如图5-5所示。
图5-5员工考勤管理界面图
员工工资管理:通过列表可以获取工资单号、工资名称、月份、年份、员工工号、员工姓名、部门等信息,进行查看操作,如图5-6所示。
图5-6员工工资管理界面图
员工健康管理:通过列表可以获取标题名称、员工工号、员工姓名、部门、职位、体温等信息,进行查看操作,如图5-7所示。
图5-7员工健康管理界面图
5.2管理员功能模块
管理员通过用户名和密码填写完成后进行登录,如图5-8所示。管理员登录成功后进入到系统操作界面,可以对主页、个人中心、公司公告管理、设备分类管理、办公设备管理、员工管理、员工考勤管理、员工请假管理、员工工资管理、员工健康管理、员工留言管理、设备申请管理等功能模块进行相对应操作。
个人中心:通过列表可以获取原密码、新密码、确认密码等内容,可以进行修改或删除操作,如图5-9所示。
图5-8管理员登录页面
图5-9个人中心页面
公司公告管理:通过列表可以获取公告标题、公告类型、图片、内容、发布日期等信息,进行删除或修改操作,如图5-10所示。
图5-10公司公告管理界面图
设备分类管理:通过列表可以获取分类等信息,进行修改或删除操作,如图5-11所示。
图5-11设备分类管理界面图
员工管理:通过列表可以获取员工工号、密码、员工姓名、性别、头像、部门、职位、联系电话、家庭住址等信息,进行修改或删除操作,如图5-12所示。
图5-12员工管理界面图
办公设备管理:管理员通过列表可以获取设备编号、设备名称、分类、图片、规格、品牌、数量、详情等信息,进行修改或删除操作,如图5-13所示。
图5-13办公设备管理界面图
员工考勤管理:管理员通过列表可以获取考勤编号、考勤名称、考勤类型、打卡时间、备注、员工工号等信息,进行修改或删除操作,如图5-14所示。
图5-14员工考勤管理界面图
员工工资管理:管理员通过列表可以获取工资单号、工资名称、月份、年份、员工工号、员工姓名、部门等信息,进行修改或删除操作,如图5-15所示。
图5-15员工工资管理界面图
员工健康管理:管理员通过列表可以获取标题名称、员工工号、员工姓名、部门、职位、体温等信息,进行修改或删除操作,如图5-16所示。
图5-16员工健康管理界面图
设备申请管理:管理员通过列表可以获取设备编号、申请标题、设备名称、数量、申请数量、申请内容、申请日期等信息,进行修改或删除操作,如图5-17所示。
图5-17设备申请管理界面图
YuangongjiankangController.java
package com.controller;import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;import com.entity.YuangongjiankangEntity;
import com.entity.view.YuangongjiankangView;import com.service.YuangongjiankangService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MPUtil;
import com.utils.CommonUtil;/*** 员工健康* 后端接口* @author * @email * @date 2020-12-28 17:10:33*/
@RestController
@RequestMapping("/yuangongjiankang")
public class YuangongjiankangController {@Autowiredprivate YuangongjiankangService yuangongjiankangService;/*** 后端列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params,YuangongjiankangEntity yuangongjiankang, HttpServletRequest request){String tableName = request.getSession().getAttribute("tableName").toString();if(tableName.equals("yuangong")) {yuangongjiankang.setYuangonggonghao((String)request.getSession().getAttribute("username"));}EntityWrapper<YuangongjiankangEntity> ew = new EntityWrapper<YuangongjiankangEntity>();PageUtils page = yuangongjiankangService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, yuangongjiankang), params), params));request.setAttribute("data", page);return R.ok().put("data", page);}/*** 前端列表*/@RequestMapping("/list")public R list(@RequestParam Map<String, Object> params,YuangongjiankangEntity yuangongjiankang, HttpServletRequest request){EntityWrapper<YuangongjiankangEntity> ew = new EntityWrapper<YuangongjiankangEntity>();PageUtils page = yuangongjiankangService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, yuangongjiankang), params), params));request.setAttribute("data", page);return R.ok().put("data", page);}/*** 列表*/@RequestMapping("/lists")public R list( YuangongjiankangEntity yuangongjiankang){EntityWrapper<YuangongjiankangEntity> ew = new EntityWrapper<YuangongjiankangEntity>();ew.allEq(MPUtil.allEQMapPre( yuangongjiankang, "yuangongjiankang")); return R.ok().put("data", yuangongjiankangService.selectListView(ew));}/*** 查询*/@RequestMapping("/query")public R query(YuangongjiankangEntity yuangongjiankang){EntityWrapper< YuangongjiankangEntity> ew = new EntityWrapper< YuangongjiankangEntity>();ew.allEq(MPUtil.allEQMapPre( yuangongjiankang, "yuangongjiankang")); YuangongjiankangView yuangongjiankangView = yuangongjiankangService.selectView(ew);return R.ok("查询员工健康成功").put("data", yuangongjiankangView);}/*** 后端详情*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") String id){YuangongjiankangEntity yuangongjiankang = yuangongjiankangService.selectById(id);return R.ok().put("data", yuangongjiankang);}/*** 前端详情*/@RequestMapping("/detail/{id}")public R detail(@PathVariable("id") String id){YuangongjiankangEntity yuangongjiankang = yuangongjiankangService.selectById(id);return R.ok().put("data", yuangongjiankang);}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody YuangongjiankangEntity yuangongjiankang, HttpServletRequest request){yuangongjiankang.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(yuangongjiankang);yuangongjiankangService.insert(yuangongjiankang);return R.ok();}/*** 前端保存*/@RequestMapping("/add")public R add(@RequestBody YuangongjiankangEntity yuangongjiankang, HttpServletRequest request){yuangongjiankang.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(yuangongjiankang);yuangongjiankangService.insert(yuangongjiankang);return R.ok();}/*** 修改*/@RequestMapping("/update")public R update(@RequestBody YuangongjiankangEntity yuangongjiankang, HttpServletRequest request){//ValidatorUtils.validateEntity(yuangongjiankang);yuangongjiankangService.updateById(yuangongjiankang);//全部更新return R.ok();}/*** 删除*/@RequestMapping("/delete")public R delete(@RequestBody Long[] ids){yuangongjiankangService.deleteBatchIds(Arrays.asList(ids));return R.ok();}/*** 提醒接口*/@RequestMapping("/remind/{columnName}/{type}")public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, @PathVariable("type") String type,@RequestParam Map<String, Object> map) {map.put("column", columnName);map.put("type", type);if(type.equals("2")) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Calendar c = Calendar.getInstance();Date remindStartDate = null;Date remindEndDate = null;if(map.get("remindstart")!=null) {Integer remindStart = Integer.parseInt(map.get("remindstart").toString());c.setTime(new Date()); c.add(Calendar.DAY_OF_MONTH,remindStart);remindStartDate = c.getTime();map.put("remindstart", sdf.format(remindStartDate));}if(map.get("remindend")!=null) {Integer remindEnd = Integer.parseInt(map.get("remindend").toString());c.setTime(new Date());c.add(Calendar.DAY_OF_MONTH,remindEnd);remindEndDate = c.getTime();map.put("remindend", sdf.format(remindEndDate));}}Wrapper<YuangongjiankangEntity> wrapper = new EntityWrapper<YuangongjiankangEntity>();if(map.get("remindstart")!=null) {wrapper.ge(columnName, map.get("remindstart"));}if(map.get("remindend")!=null) {wrapper.le(columnName, map.get("remindend"));}String tableName = request.getSession().getAttribute("tableName").toString();if(tableName.equals("yuangong")) {wrapper.eq("yuangonggonghao", (String)request.getSession().getAttribute("username"));}int count = yuangongjiankangService.selectCount(wrapper);return R.ok().put("count", count);}}
UserServiceImpl.java
package com.service.impl;import java.util.List;
import java.util.Map;import org.springframework.stereotype.Service;import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.dao.UserDao;
import com.entity.UserEntity;
import com.service.UserService;
import com.utils.PageUtils;
import com.utils.Query;/*** 系统用户* @author yangliyuan* @date 2019年10月10日 上午9:17:59*/
@Service("userService")
public class UserServiceImpl extends ServiceImpl<UserDao, UserEntity> implements UserService {@Overridepublic PageUtils queryPage(Map<String, Object> params) {Page<UserEntity> page = this.selectPage(new Query<UserEntity>(params).getPage(),new EntityWrapper<UserEntity>());return new PageUtils(page);}@Overridepublic List<UserEntity> selectListView(Wrapper<UserEntity> wrapper) {return baseMapper.selectListView(wrapper);}@Overridepublic PageUtils queryPage(Map<String, Object> params,Wrapper<UserEntity> wrapper) {Page<UserEntity> page =new Query<UserEntity>(params).getPage();page.setRecords(baseMapper.selectListView(page,wrapper));PageUtils pageUtil = new PageUtils(page);return pageUtil;}
}
YuangongjiankangServiceImpl.java
package com.service.impl;import org.springframework.stereotype.Service;
import java.util.Map;
import java.util.List;import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.utils.PageUtils;
import com.utils.Query;import com.dao.YuangongjiankangDao;
import com.entity.YuangongjiankangEntity;
import com.service.YuangongjiankangService;
import com.entity.vo.YuangongjiankangVO;
import com.entity.view.YuangongjiankangView;@Service("yuangongjiankangService")
public class YuangongjiankangServiceImpl extends ServiceImpl<YuangongjiankangDao, YuangongjiankangEntity> implements YuangongjiankangService {@Overridepublic PageUtils queryPage(Map<String, Object> params) {Page<YuangongjiankangEntity> page = this.selectPage(new Query<YuangongjiankangEntity>(params).getPage(),new EntityWrapper<YuangongjiankangEntity>());return new PageUtils(page);}@Overridepublic PageUtils queryPage(Map<String, Object> params, Wrapper<YuangongjiankangEntity> wrapper) {Page<YuangongjiankangView> page =new Query<YuangongjiankangView>(params).getPage();page.setRecords(baseMapper.selectListView(page,wrapper));PageUtils pageUtil = new PageUtils(page);return pageUtil;}@Overridepublic List<YuangongjiankangVO> selectListVO(Wrapper<YuangongjiankangEntity> wrapper) {return baseMapper.selectListVO(wrapper);}@Overridepublic YuangongjiankangVO selectVO(Wrapper<YuangongjiankangEntity> wrapper) {return baseMapper.selectVO(wrapper);}@Overridepublic List<YuangongjiankangView> selectListView(Wrapper<YuangongjiankangEntity> wrapper) {return baseMapper.selectListView(wrapper);}@Overridepublic YuangongjiankangView selectView(Wrapper<YuangongjiankangEntity> wrapper) {return baseMapper.selectView(wrapper);}}
home.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>主页</title>
</head>
<body><div style="width: 100%;height: 720px"><h1 align="center" style="margin-top: 250px;"><strong></strong></h1></div><script src="${pageContext.request.contextPath}/resources/xznstatic/js/jquery.min.js"></script><script src="${pageContext.request.contextPath}/jsp/static/iframeAuto.js"></script><script><%@ include file = "../../utils/baseUrl.jsp" %>$('h1 strong').html('欢迎使用' + projectName)</script>
</body>
</html>
声明
本博客适用于广泛的学术和教育用途,包括但不限于个人学习、开发设计,产品设计。仅供学习参考,旨在为读者提供深入理解和学术研究的材料。
相关文章:

如何使用ssm实现办公OA系统0
TOC 10907ssm办公OA系统10907ssm0 第一章 绪 论 1.1背景及意义 系统管理也都将通过计算机进行整体智能化操作,对于办公OA系统所牵扯的管理及数据保存都是非常多的,例如管理员;主页、个人中心、公司公告管理、设备分类管理、办公设备管理、…...

IPguard与Ping32—选择合适的企业数据保护解决方案
在数字化时代,企业面临着各种数据安全挑战,选择合适的保护工具至关重要。IPguard与Ping32是两款备受关注的数据保护软件,但它们各自的功能和适用场景有所不同,企业在选择时需根据自身需求做出明智决策。 Ping32:全面的…...

2024 kali虚拟机安装教程,分两大步骤,图文讲解(2)
准备工作: 按照图文讲解(1)搭建好虚拟机,继续以下步骤 2024 kali虚拟机安装教程,分两大步骤,图文讲解(1)-CSDN博客 正式开始 1.开启,↑ ↓ 方向键,选择第一…...

【解决办法】git clone报错unable to access ‘xxx‘: SSL certificate problem
git clone 是 Git 版本控制系统中的一个基本命令,用于从远程仓库复制一个完整的版本库到本地。这个命令不仅复制远程仓库中的所有文件,还复制仓库的历史记录,使得你可以在本地进行版本控制操作,如提交(commitÿ…...

基于STM32的智能家居--硬件接线
分配GPIO 1.首先分配串口通讯引脚,该开发板中有三组串口引脚分别分配如图所示。 2.分配SPI。 3.其他为普通GPIO口,B8,B9模拟IIC协议与OLED屏幕进行通讯。...

mac电脑如何删除应用程序?怎么删除苹果电脑里的软件
在使用Mac电脑的过程中,随着时间的推移,我们可能会安装大量的应用程序。然而,这些应用程序中有很多可能只是临时使用,或者已经不再需要了。这些无用的应用程序不仅占据了宝贵的硬盘空间,还可能拖慢Mac系统的运行速度。…...

Hive优化操作(一)
Hive SQL 优化指南 在使用 Hive 进行数据分析时,提高查询性能至关重要。以下是一些具体的优化策略,帮助我们在工作中更有效地管理和查询数据。 一、 减少数据量进行优化 1. 分区表优化 分区是一种表的子集,用于按某一列(如日期…...

Vue中常用指令——(详解,并附有代码)
文章目录 一.指令合集1.0 概述1.1 插值表达式1.2 v-text/v-html1.3 v-show/ v-if1.4 v-on1.4.1 内联语句1.4.2 事件处理函数 1.5 v-bind1.6 Test1.7 v-for 一.指令合集 内容渲染指令(v-html、v-text)条件渲染指令(v-show、v-if、v-else、v-e…...

redistemplate实现点赞相关功能
使用Redis的SET数据结构来存储每个实体的点赞用户ID列表,方便进行点赞数量的计数和用户点赞状态的检查。以下是一个小demo,只提供简单思路。 Service public class LikeService {Autowiredprivate RedisTemplate redisTemplate;//点赞public Long like(…...

C++ 算法学习——7.4.1 优化算法——双指针
双指针法(Two Pointers)是一种常用的算法技巧,通常用于解决数组或链表中的问题。这种技巧通过维护两个指针,通常分别指向数组或链表的不同位置,来协同解决问题。双指针法一般有两种类型:快慢指针和左右指针…...

镁光DDR3的命名
64M16的解释如图。 125是指一个时钟周期需要1.25ns走完,1us对应 1MHZ, 1ns对应1000MHZ ,那么1.25ns对应的时钟频率,就先用 1/1.25得到 1.25us对应的时钟频率 0.8 ,然后再乘以1000,得到800就是MHZ 带宽的计算就是 800M…...

[Git] Git下载及使用 从入门到精通 详解(附下载链接)
前言 目录 Git概述 简介 下载 Git代码托管服务 Git常用命令 Git全局配置 获取Git仓库 在本地初始化一个Git仓库 从远程仓库克隆 基本概念 工作区文件状态 本地仓库操作 远程仓库操作 分支操作 标签操作 在IDEA中使用Git 在IDEA中配置Git 本地仓库操作 远程仓…...

Linux源码阅读笔记-USB驱动分析
基础层次详解 通用串行总线(USB)主要用于连接主机和外部设备(协调主机和设备之间的通讯),USB 设备不能主动向主机发送数据。USB 总线采用拓扑(树形),主机侧和设备侧的 USB 控制器&a…...

【超级详细解释】力扣每日一题 134.加油站 48. 旋转图像
134.加油站 力扣 这是一个很好的问题。这个思路其实基于一种贪心策略。我们从整个路径的油量变化来理解它,结合一个直观的“最低点法则”,来确保找到正确的起点。 问题的核心:油量差值的累积 对于每个加油站,我们有两个数组&…...

数据挖掘基本架构知识点
数据挖掘的基本架构主要包含以下几个部分: 一、数据获取 1. 数据源 - 可以是数据库(如关系型数据库MySQL、Oracle等)、文件系统(如CSV文件、XML文件等)、网络数据(如网页内容、社交媒体数据)等…...

LangChain中使用Prompt01
1.引入提示模板 from langchain.prompts import (SystemMessagePromptTemplate,AIMessagePromptTemplate,HumanMessagePromptTemplate, )2.设置系统提示 system_template_text"你是一位专业的翻译,能够将{input_language}翻译成{output_language},…...

如何使用bpmn-js实现可视化流程管理
介绍 BPMN-JS是一个流行的开源库,用于在Web应用程序中可视化、创建、编辑和分析BPMN(Business Process Model and Notation,业务流程建模与表示法)2.0 图。BPMN是一种国际标准的图形化语言,用于描述企业中的业务流程&a…...

【PostgreSQL 】实战篇——如何使用 EXPLAIN 和 ANALYZE 工具分析查询计划和性能,优化查询
在数据库管理中,优化查询性能是确保应用程序高效运行的关键因素之一。 随着数据量的不断增长和复杂查询的增多,理解查询的执行计划变得尤为重要。 PostgreSQL 提供了强大的工具 EXPLAIN 和 ANALYZE,帮助开发者分析查询计划和性能࿰…...

List、Map、Set 三个接口存取元素时,各有什么特点
List、Map、Set是Java集合框架中的三个核心接口,它们在存取元素时各自具有独特的特点。以下是对这三个接口存取元素特点的详细分析: List接口 有序性: List中的元素是有序的,它们按照插入的顺序进行排列。 可重复性:…...

掌握 ASP.NET Web 开发:从基础到身份验证
ASP.NET 是微软开发的一个功能强大的框架,广泛用于构建现代化的 Web 应用程序。它支持 MVC 架构、Web API、Razor 语法,并提供完善的身份验证与授权机制。本文将介绍 ASP.NET 的基础知识、MVC 模式、Web API 开发、Razor 语法,以及如何实现身…...

【C++图文并茂】01背包问题不会?超详细的详解,看完保证你会
大家好,今天 给大家讲解01背包问题 有N件物品和一个容量为V的背包。第i件物品的体积是c[i],价值是w[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。 01背包问题是典型的动态规划问题,我们拿葡萄矿泉水和西…...

SQL自学:什么是子查询,如何使用它们
在 SQL(Structured Query Language,结构化查询语言)的世界里,子查询是一种强大的工具,它允许我们在一个 SQL 查询内部嵌套另一个查询。子查询也被称为内部查询或嵌套查询,为我们提供了一种灵活且强大的方式…...

No.10 笔记 | PHP学习指南:PHP数组掌握
本指南为PHP开发者提供了一个全面而简洁的数组学习路径。从数组的基本概念到高级操作技巧,我们深入浅出地解析了PHP数组的方方面面。无论您是初学者还是寻求提升的中级开发者,这份指南都能帮助您更好地理解和运用PHP数组,提高编码效率和代码质…...

RS-232 串口通信和 RS-485 串口通信的区别
RS-232 串口通信和 RS-485 串口通信有以下区别: 1. 通信方式: RS-232:全双工通信方式,即数据的发送和接收可以同时进行。在全双工模式下,通信双方可以在同一时刻既发送数据又接收数据,就像两个人可以同时…...

【K8s】专题十四(1):Kubernetes 安全机制之 RBAC
本文内容均来自个人笔记并重新梳理,如有错误欢迎指正! 如果对您有帮助,烦请点赞、关注、转发、订阅专栏! 专栏订阅入口 | 精选文章 | Kubernetes | Docker | Linux | 羊毛资源 | 工具推荐 | 往期精彩文章 【Docker】(全网首发)Kylin V10 下 MySQL 容器内存占用异常的解决…...

8. 多态、匿名内部类、权限修饰符、Object类
文章目录 一、多态 -- 花木兰替父从军1. 情境2. 小结 二、匿名内部类三、权限修饰符四、Object -- 所有类的父类(包括我们自己定义的类)五、内容出处 一、多态 – 花木兰替父从军 1. 情境 我们现在新建两个类HuaMuLan和HuaHu。HuMuLan是HuaHu的女儿,所以她会有她父…...

CentOS/Ubuntu/Debian安装LibeventCentOS安装Libevent库(含示例代码)库(含示例代码)
使用命令:CentOS安装Libevent库(含示例代码) sudo yum install libevent-devel Ubuntu/Debian: sudo apt install libevent-dev 示例代码: #include <stdio.h> #include <stdlib.h> #include <unistd.h> …...

【大数据】数据采集工具sqoop介绍
文章目录 什么是sqoop?一、Sqoop的起源与发展二、Sqoop的主要功能三、Sqoop的工作原理四、Sqoop的使用场景五、Sqoop的优势六、Sqoop的安装与配置 sqoop命令行一、Sqoop简介与架构二、Sqoop特点三、Sqoop常用命令及参数四、使用示例五、注意事项 什么是sqoop? Sqoop是一款开…...

vite学习教程02、vite+vue2配置环境变量
文章目录 前言1、安装依赖2、配置环境变量3、应用环境变量4、运行和构建项目资料获取 前言 博主介绍:✌目前全网粉丝3W,csdn博客专家、Java领域优质创作者,博客之星、阿里云平台优质作者、专注于Java后端技术领域。 涵盖技术内容࿱…...

k8s 的网络通信
目录 1 k8s通信整体架构 2 flannel 网络插件 2.1 flannel 插件组成 2.2 flannel 插件的通信过程 2.3 flannel 支持的后端模式 3 calico 网络插件 3.1 calico 简介 3.2 calico 网络架构 3.3 部署 calico 1 k8s通信整体架构 k8s通过CNI接口接入其他插件来实现网络通讯。目前比较…...