如何使用ssm实现办公OA系统0

news2024/11/25 0:50:45

@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

功能:办公设备

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
shebeibianhaovarchar200设备编号
shebeimingchengvarchar200设备名称
fenleiint分类
tupianint图片
guigeint规格
pinpaiint品牌
shuliangdate数量
xiangqingvarchar200详情未支付

表名:gongsigonggao

功能:公司公告

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
gonggaobiaotivarchar200公告标题
tupianvarchar200图片
neirongvarchar200内容
faburiqivarchar200发布日期

表名:shebeishenqing

功能:设备申请

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
shebeibianhaovarchar200设备编号
shenqingbiaotivarchar200申请标题
shebeimingchengvarchar200设备名称
shuliangvarchar200数量
shenqingshuliangvarchar200申请数量
shenqingneironglongtext4294967295申请内容
shenqingriqidate申请日期
guihairiqivarchar200归还日期
beizhuvarchar200备注
shenqingfujianvarchar200申请附件
yuangonggonghaovarchar200员工工号
yuangongxingmingvarchar200员工姓名
bumenvarchar200部门
zhiweivarchar200职位
sfshvarchar200是否审核
shhfvarchar200审核回复

表名:yuangong

功能:员工

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
yuangonggonghaovarchar200员工工号
mimavarchar200密码
yuangongxingmingvarchar200员工姓名
xingbievarchar200性别
touxiangvarchar200头像
bumenvarchar200部门
zhiweivarchar200职位
lianxidianhuavarchar200联系电话
jiatingzhuzhivarchar200家庭住址

表名:yuangongliuyan

功能:员工留言

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimevarchar100创建时间
liuyanbiaotivarchar100留言标题
liuyanneirongvarchar100留言内容管理员
liuyanriqitimestamp留言日期CURRENT_TIMESTAMP
beizhuvarchar100备注
yuangonggonghaovarchar100员工工号
yuangongxingmingvarchar100员工姓名
bumenvarchar100部门
zhiweivarchar100
lianxidianhuavarchar100联系电话
sfshvarchar100是否审核
shhfvarchar100审核回复

第五章 系统实现

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 {
    @Autowired
    private 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 {

	@Override
	public PageUtils queryPage(Map<String, Object> params) {
		Page<UserEntity> page = this.selectPage(
                new Query<UserEntity>(params).getPage(),
                new EntityWrapper<UserEntity>()
        );
        return new PageUtils(page);
	}

	@Override
	public List<UserEntity> selectListView(Wrapper<UserEntity> wrapper) {
		return baseMapper.selectListView(wrapper);
	}

	@Override
	public 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 {


    @Override
    public PageUtils queryPage(Map<String, Object> params) {
        Page<YuangongjiankangEntity> page = this.selectPage(
                new Query<YuangongjiankangEntity>(params).getPage(),
                new EntityWrapper<YuangongjiankangEntity>()
        );
        return new PageUtils(page);
    }
    
    @Override
	public 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;
 	}
    
    @Override
	public List<YuangongjiankangVO> selectListVO(Wrapper<YuangongjiankangEntity> wrapper) {
 		return baseMapper.selectListVO(wrapper);
	}
	
	@Override
	public YuangongjiankangVO selectVO(Wrapper<YuangongjiankangEntity> wrapper) {
 		return baseMapper.selectVO(wrapper);
	}
	
	@Override
	public List<YuangongjiankangView> selectListView(Wrapper<YuangongjiankangEntity> wrapper) {
		return baseMapper.selectListView(wrapper);
	}

	@Override
	public 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>

声明

本博客适用于广泛的学术和教育用途,包括但不限于个人学习、开发设计,产品设计。仅供学习参考,旨在为读者提供深入理解和学术研究的材料。

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

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

相关文章

入门C语言基础

文章目录 入门C语言基础1 基础语法1.1 整形1.2 浮点型1.3 常量1.4 运算符1.4.1 算数运算符1.4.2 关系运算1.4.3 逻辑运算1.4.4 赋值运算符1.4.5 其他 1.5 if判断1.6 循环1.7 函数1.8 字符串和字符串1.9 数组 2 指针2.1 定义指针类型变量和取变量地址2.2 指针类型变量解引用2.3 …

一文讲明白初学者怎么入门大语言模型(LLM)?

关于如何入门LLM&#xff0c;大多数回答都提到了调用API、训练微调和应用。但是大模型更新迭代太快&#xff0c;这个月发布的大模型打榜成功&#xff0c;仅仅过了一个月就被其他模型超越。训练微调也已经不是难事&#xff0c;有大量开源的微调框架&#xff08;llamafactory、fi…

工业物联网关-系统说明

系统介绍 如下图所示&#xff0c;网关采集终端数据&#xff0c;经解析&#xff0c;运算&#xff0c;组成网络报文后上送云端服务器。从下而上分别是设备数据采集层&#xff0c;数据缓存计算层&#xff0c;云端对接层。主要功能模块包括虚拟产品、设备管理&#xff0c;数据缓存…

2024大模型新书《大模型基础》教材发布,开源!

我已将这本大模型资料 免费分享 出来&#xff0c;需要的小伙伴可以扫取。 浙江大学DAILY实验室毛玉仁研究员、高云君教授领衔撰写的《大模型基础》教材第一版付梓。本教材为开源教材&#xff0c;旨在为对大语言模型感兴趣的读者系统地讲解相关基础知识、介绍前沿技术。作者团…

【LLM大模型】RAG早已经过时,RAG-Fusion正当时

人工智能和自然语言处理正在以惊人的速度发展&#xff0c;现在比以往任何时候都更需要更好、更可靠的信息获取途径和使用方式。正如我们现在所面对的&#xff0c;传统系统往往难以结合丰富的上下文以最相关的方式回答我们的提问。以谷歌为例&#xff0c;通常需要进行多次搜索才…

性价比之王!三角型(单体式)电动采光排烟天窗

三角型(单体式)电动采光排烟天窗是一种在厂房、仓库等大型建筑屋顶上常用的通风、采光和排烟设备。一、基本概念 三角型(单体式)电动采光排烟天窗是指其窗扇与安装面形成一定角度(通常为30)&#xff0c;整体呈“三角”形状&#xff0c;并通过电动装置实现开合的采光排烟天窗&am…

7. BBP 控制板首次运行步骤说明

7.1. 概述 BBP 控制板在硬件焊接安装完成之后, 就可以通过烧写器将控制程序烧写到控制板的 MCU 上, 此步骤与通常的stm32单片机程序烧写完全一致。 烧写完成在程序能够正常运行后, 还需要执行至少一次机载参数初始化工作. 在后续调试及开发过程中, 如果参数系统内容未发生改变…

让你一看就懂,Javascript的原型和原型链

自己的话&#xff1a; 你是否看过很多关于javascript的原型&#xff0c;和原型链的技术文章&#xff1f;但是看完后仍然是一头雾水&#xff1f; 没关系&#xff0c;希望我的这一篇文章&#xff0c;能让你一看就懂。 原型和原型链是JavaScript实现继承和共享属性的重要机制。…

零样本主题驱动图像生成新方法!EZIGen:在保持灵活性的同时保留主题身份!

今天给大家介绍一个零样本主题驱动图像生成方法EZIGen&#xff0c;它会从你提供的主体图像中提取出重要特征&#xff0c;就像是给图像做一个“身份识别”&#xff0c;确保生成的新图像能够保留主体的独特特征。接下来&#xff0c;EZIGen会根据你输入的文本提示&#xff0c;生成…

怎么高效恢复硬盘和u盘里的数据:全面指南

在数字时代&#xff0c;数据已成为我们生活与工作中不可或缺的一部分。无论是个人珍贵的照片、视频&#xff0c;还是企业至关重要的文档、项目资料&#xff0c;一旦硬盘或U盘中的数据丢失&#xff0c;都可能带来不可估量的损失。幸运的是&#xff0c;随着技术的发展&#xff0c…

.Net基础1

.NET框架 项目结构 Connected Services是第三方服务MVC框架appsettings.json配置文件Program.cs控制台应用程序Properties里的json文件是配置启动方式 1. 基本开发 出现这个bug是因为防火墙没有把浏览器加入白名单&#xff0c;可以暂时先用http启动代替 第一步创建控制器&am…

希亦超声波清洗机是智商税吗?百元级超声波清洗机旗舰机皇真相大揭秘!

在深入探讨这个问题之前&#xff0c;我们先来了解一下超声波清洗机的工作原理。超声波清洗机利用高频振动波&#xff0c;通过液体介质传递能量&#xff0c;产生无数微小的气泡。这些气泡在压力作用下迅速闭合&#xff0c;形成强大的冲击波&#xff0c;能够深入清洁物品表面难以…

苹果秋季盛典:iPhone 16系列引领未来科技潮流

9月10日&#xff0c;苹果公司在众人瞩目中举办了2024年的秋季特别活动&#xff0c;发布了备受期待的iPhone 16系列。 尽管网络发布会已经持续了一整年&#xff0c;但熬夜观看的果粉们仍然热情不减&#xff0c;因为每一次苹果的新品发布都代表着科技界的一次重大飞跃。 iPhone …

汽车销量预测系统

项目介绍 此项目服务于汽车经销商、汽车生产商&#xff0c;旨在成为用于使企业充分了解消费者诉求&#xff0c;预见市场未来的需求量和可能存在的销售变化趋势&#xff0c;合理规划产能&#xff0c;正确制定生产计划&#xff0c;实施以销定产的生产策略的交流平台&#xff0c;…

应对专利过期的有效方法与补救措施

专利作为创新成果的重要保护手段&#xff0c;在一定期限内为所有者提供了独家的权利。然而&#xff0c;当专利过期时&#xff0c;情况会变得较为复杂&#xff0c;需要采取不同的应对方法&#xff0c;以下将分别针对忘记缴纳年费以及保护期限届满这两种常见情况进行要点解析。 一…

100V调光芯片SL8701 支持PWM/模拟调光 无频闪 多路共阳 高辉度65536级

一、产品概述 SL8701是一款内置100V MOS的降压型高调光比LED恒流驱动芯片&#xff0c;专为智能调光调色照明研发设计。它支持多种调光方式&#xff0c;包括PWM调光、模拟调光等&#xff0c;能够实现高调光比&#xff0c;满足不同场景的照明需求。 二、主要特点 高效降压&…

银行流水获取方式(二)

银行流水获取方式 摘要&#xff1a; 本文探讨了银行流水在企业财务管理中的重要性及其获取方式。银行流水是企业财务活动的关键记录&#xff0c;涵盖了所有资金流动情况&#xff0c;对日常运营、财务管理、税务申报和审计至关重要。企业通过核对银行流水确保账务准确性&#…

软测实验:熟悉功能测试工具

实验背景&#xff1a;理解自动化测试原理和方法&#xff0c;熟悉功能测试工具的使用。 实验目的&#xff1a; 熟悉功能测试工具的基本使用方法熟悉功能测试的基本流程能够根据测试结果撰写测试报告 一、测试需求 自动化测试原理是通过使用自动化测试工具和脚本来模拟人工测…

python 共享内存(注册、写入、读取)

import sys from PyQt5.QtWidgets import * from PyQt5.QtCore import * from UI.ui_shareMmap import Ui_ShareMServiceDlg # 导入UI类 import mmapclass QMainDialog(QDialog, Ui_ShareMServiceDlg): # 修改点&#xff08;UI类&#xff09;def __init__(self, parentNone):…

数据库文档编写流程

在一个系统中新增一个模块&#xff0c;通常不是一个人能够独立完成的。这需要多个团队甚至两个组的共同合作。例如&#xff0c;如果我们想在设备管理系统中添加一个IT资产管理模块&#xff0c;领导不会简单地说&#xff1a;“喂&#xff0c;你给我加一个IT资产管理模块。”直接…