admin管理员组

文章数量:1585345

@TOC

ssm274办公自动化管理系统java+vue

课题背景

随着社会经济的迅速发展和科学技术的全面进步,计算机技术的飞速发展,以及计算机与通信技术为基础的信息系统正处于蓬勃发展的时期[1]。在信息技术快速发展的时代,企业发展与信息技术的关系日益密切,企业创新日益加快,信息化规划无疑将成为企业创新和发展过程中最重要的工作,也是企业发展的助推剂[12]。各种信息化管理层出不穷,以前全是由人工管理的方法管理企业办公信息,这样存在很多缺点和漏洞。随着企业的不断发展,企业员工数量大大的增加,为了更方便的管理好企业办公信息,特开发了本办公自动化管理系统,系统的应用可大大提高企业办公管理效率,节约企业管理成本。

改革开发的不断深入,经济的飞速发展,企业要想生存发展,想在激烈的市场竞争中立于不败之地,没有现代化的管理万万不行的,企业办公的全面自动化、信息化,则是其中最重要的部分[2]。为了加快企业信息化管理的步伐,提高企业办公管理的效率,建立办公自动化管理系统已经变得十分必要。

  1. 研究现状

在国外他们的信息技术的发展是我国的许多倍,从1946年诞生在美国的世界上第一台计算机开始,国外的信息技术就一直在飞速地发展,一些计算机应用软件也纷纷出现,软件技术也一直在不断完善和更新。软件行业早已遍布各个地方。

在国内,我国信息技术发展起步比较晚,后期慢慢的不断地进行优化和改革,才让我们的信息技术上升到新的阶段。在现在软件开发的技术经过大量研究和生活实践基本能够达到独立开发系统应用的水平,生活中的各个行业也把软件操作替换成传统的记录模式。软件行业正是现在比较热门的行业。

互联网是人类的基本需要,尤其在现代社会,社会的高节奏的操作,根据世界信息的快速发展,以传统方式来进行的企业办公管理,长期以来一直无法满足企业办公管理的需求,使得办公自动化管理系统的开发成为必需。网络的发展都为办公自动化管理系统的设计与实现提供了良好的基础,在网络和计算机的大力发展下,办公自动化管理系统开始出现,办公自动化管理系统是借助网络和计算机的新型管理模式,既节省了记录信息纸张的浪费,又保证了企业办公管理的高效性,提高管理效率。

  1. 论文结构安排

对本文所涉及的相关技术进行学习,系统的分析是一个很重要的环节,更好的进行程序的设计,必须进行前期的深入调查,对系统进行全面的功能设计,和详细的解析。课题最主要的工作是通过Java+MYSQL建立一个完善的办公自动化管理系统,系统最主要的模块是企业办公相关信息的管理。本文主要分为六大部分:

第一部分绪论介绍了本文的研究背景,概述了的研究现状和论文的结构安排。

第二部分主要是是介绍了办公自动化管理系统所采用的技术,开发环境。

第三部分对办公自动化管理系统进行分析,包括可行性分析,系统功能需求,系统流程分析等。

第四部分进行系统的设计,这一部分是系统主要的数据库部分,介绍功能结构和数据库的设计等。

第五部分总结了系统的界面和实现过程进行分析。

第六部分主要是对系统测试进行阐述,对测试遇到的问题进行说明。

  1. 系统关键技术

    1. JAVA技术

Java是一种非常常用的编程语言,在全球编程语言排行版上总是前三。在方兴未艾的计算机技术发展历程中,Java的身影无处不在,并且拥有旺盛的生命力。Java的跨平台能力十分强大,只需一次编译,任何地方都可以运行。除此之外,它还拥有简单的语法和实用的类库,让编程人员可以尽可能将精力集中在问题的求解上,并且许多开源项目和科研成果都是采用它实现的。

在1995年这一年的5月份,著名的Sun Microsystems公司在程序开发设计上面郑重推出一种面向对象开发的程序设计语言——Java,最开始的时候Java是由詹姆斯.高斯林这位伟大的JAVA之父来进行主导,但是在后来由于各种原因,让甲骨文公司这个针对商业程序创建了oracle大型数据库的公司收购了Java[16]。Java的平台总共算下来有3个,分别为javaME和javaSE以及javaEE这3个java平台。下面将对其进行分别介绍。

(1)在电脑桌面程序的开发上面需要选择JavaME,这个用得也比较多。

(2)企业也会根据工作以及业务需要开发各种软件,那么就会选用JavcEE这个支持企业版软件的开发的Java平台,JavcEE主攻运用在企业领域上面的web应用,JavcEE也在javaSE的基础上获得了比如jsp技术 ,Servlet技术等程序开发技术的支持。

(3)现在生活中手机的普及化,也使得手机端这样的移动设备的软件的兴起,JavaME这个迷你版java平台就能运用于移动端的软件开发操作。

  1. B/S结构

B/S(浏览器/服务器)结构是目前主流的网络化的结构模式,它能够把系统核心功能集中在服务器上面,可以帮助系统开发人员简化操作,便于维护和使用。

在早期的程序开发中,使用得最多的莫过于C/S架构了,现在的生活中软件在生活的各个方面落地,使用了C/S架构开发出来的软件也是不在少数的,比如企业日常办公使用到的微软的OFFICE软件,我国自己研发的文档处理软件WPS,还有娱乐软件腾讯的QQ,腾讯的微信,以及电脑上安装的杀毒软件金山杀毒软件,瑞金杀毒软件等都是C/S架构。但是在Internet网络盛行之后,鉴于大家对数据信息共享的需求,在原来的C/S架构上进行了升级改进之后,有了现在的主流架构B/S架构,B/S架构就是在C/S架构上多了一个浏览器[3],让原来的直接访问服务器的方式,变成了通过浏览器去访问服务器。充分运用到了当下不断成熟的浏览器技术。也让软件的开发成本以及维护成本降低了。可以说B/S这种新型的架构模式让软件的开发变得便利化。

B/S架构不需要在任何客户端来进行程序的部署,使用这样的程序结构来使用开发好的系统是利用浏览器来使用的,就是把开发好的程序配置到一台远程服务器上,在任何可以访问这台服务器的客户端电脑上都可以对程序进行操作和使用,这样的方式给使用者带来了极大的便捷。这样的结构提高了程序的运行效率,打破了地域的限制,降低了程序的使用成本。

  1. MYSQL数据库

所谓数据库,实际上就是一个容器,按照数据结构来组织、存储和管理。数据库的作用就是为大量的信息进行管理并提供高效的解决方案。

MySQL是典型的关系数据库系统,拥有开源免费、稳定、高效等特点,一直是中小型web项目的最佳数据库选择。MySQL作为当今IT领域使用人数最多的开源关系型数据库软件之一,在2018年的数据库使用率排名中位居第二,仅次于目前为止最成功的商业版数据库Orcle[7]。MySQL最大的优势之一就是无偿使用,这也是它成功的关键。

MySQL支持标准化数据库查询语言SQL。MySQL是一款非常适合个人开发者或小型组织开发团体的数据库管理系统,因为它是开源并且免费的,体积小、速度快、成本低以及其最重要的一点开放源码,深受程序设计人员的喜爱,这也让它成为了许许多多中小型开发网站数据库的首选,同时提供了多种开发的连接API。MySQL将数据的存放按照记录之间的关系存放到了不同的表中,减少了数据的冗余并且提高了开发的工作效率。MySQL支持开发中需要用的大型数据库,并能处理数以万计的记录。因为MySQL是开源的软件,所以在项目的预算中的时候不用花费额外的资金,大大降低了开发的总体成本[10],这也是MySQL数据库在中小型企业和独立的开发者中广泛流行的原因。

  1. SSM框架

本办公自动化管理系统基于Spring、SpringMVC、Mybatis框架进行开发设计。

Spring 框架是在2004年首次发布,之后出现了多次的重大修订。Spring框架是由七个不同的模块组成,分别是SpringCore、Spring AOP、Spring ORM、Spring DAO、Spring Web Flow、Spring Context和Spring Web MVC[19]。这些模块提供不同的平台来开发不同的企业应用程序 ,本课题使用Spring Web MVC模块开发基于MVC的应用程序。

Spring Web MVC是基于Servlet API的原始Web框架,从一开始就包含在Spring 框架中。“Spring Web MVC”是该框架的正式名称,但通常被简称为“Spring MVC” [20]。Spring MVC框架提供了模型模块-视图模块-控制器的架构和可用于直接开发的Web应用程序的现成组件。Spring MVC模式将应用程序的不同方面分开,使元素之间形成松散耦合。

MyBatis原名叫做iBatis属于持久层框架,消除了大部分JDBC代码和参数的设置以及结果集的检索。这个框架不仅支持普通SQL查询和存储过程,还支持高级的映射[21]。MyBatis使用.xml和注解来做原始映射和配置,将接口和Java对象映射成数据库记录。

  1. 系统分析

    1. 可行性分析

在进行可行性分析时,我们通常根据软件工程里方法,通过四个方面来进行分析,分别是技术、经济、运行和法律可行性。因此,在基于对目标系统的基本调查和研究后,对提出的基本方案进行可行性分析

  1. 技术可行性

技术可行性一是考虑客观的技术可行性,二是考虑实际的技术可行性。从客观上、简单地说,现已经出现了类似的系统,因此客观上的可行性是满足的。从现有的实际情况上来看,该系统使用的是Java开发语言、MYSQL都是容易获得的,同时计算机的硬件性能也满足开发软件的需求;且在本科课程中都有进行相关软件的学习和开发。综上所述,该系统具有技术可行性。

  1. 经济可行性

开发该系统时,优先考虑了使用网页来完成该系统。从已有的Web网页开发的案例、资料中,可知Web所需要的软硬件简单,切开发成本低。且从引进该系统后的预想表现将会比传统方式优异,其具有高效、低成本的特点。可以大量节省管理的人力、物力,具有一定经济效益和社会效益。综上所述,该系统具有高经济可行性

  1. 运行可行性

运行可行性是对组织结构的影响,现有人员和机构和环境对系统的适应性及人员培训补充计划的可行性。以目前信息技术的普及程度之广、相关工作的操作人员的水平之高,是足以胜任的。综上所述,该系统具有高运行可行性。

  1. 法律可行性

(1)所使用的技术或者资料(书籍、文献、软件)合乎中国法律。

(2)所开发过程不涉合同、侵权、责任和各种法律相抵的问题。

(3)所完成系统不存在侵犯版权问题。

(4)完全符合中国的《中华人民共和国著作权法》和《计算机软件保护条例》。

综上所述,该系统具有高法律可行性。

通过分析论证,该系统总体上是具有高可行性的。

  1. 系统性能分析

达到如以下的性能需求指标,可以保证系统的安全性、可靠性、稳定性,需要:

(1)系统响应的精确性和实时性

这是本系统必要的性能。考虑到未来系统可能承受的工作量,需要能够承担得起企业级的信息处理需求。实时性是该系统的生命线,因此需采用软实时系统来进行保证。

(2)系统的开放性和系统的可扩充性

本系统是一个较为初期的一个雏形,以后势必会根据的企业办公管理需求的扩大或转变。这就要求本系统需要提供足够的开放型和可扩充性,只要符合本系统的设计准则都可以将新的模块加入。通过这样的升级、维护来完成本系统后期的生命周期。

(3)系统的易用性和易维护性

要求不论是熟悉或不熟悉计算机的人员都可以对系统进行有效的人机交互。因此提供给用户一个友好、漂亮的图形接口是非常重要的。这可以通过发一些纸质和实际的界面模型问卷调查来获得最佳的效果。此外,也考虑到维护本系统的操作人员,有效的手段的数据备份、管理和错误检测、恢复需要被提供给相关的人员。

(4)系统的响应速度

要求系统在任何情况下的平均响应速度达到秒级,具有软实时性。一是为了保证了系统的工作效率,二为了防止系统因同一时间段大量的员工登录系统而造成错误、瘫痪。

  1. 系统功能分析

本办公自动化管理系统主要包括员工功能模块、部门功能模块和管理员功能模块3大部分,下面将对这三大功能模块分别进行功能分析。

(1)管理员:管理员登录后主要功能模块包括个人中心、员工管理、部门管理、员工档案管理、员工考勤管理、员工请假管理、员工销假管理、工作内容管理、工作报表管理、公司公告管理以及系统管理。管理员用户用例图如图3-1所示。

图3-1 管理员用例图

(2)部门:部门注册登录后主要功能模块包括个人中心、工作内容管理、工作报表管理,部门用例图如图3-2所示。

图3-2 部门用例图

(3)员工:员工在系统前台可查看系统信息,包括首页、公司公告、公司新闻等,注册登录后主要功能模块包括个人中心、员工档案管理、员工考勤管理、员工请假管理以及员工销假管理。员工用例图如图3-3所示。

图3-3 员工用例图

  1. 系统流程分析

    1. 操作流程

用户要想进入本系统,必须进行登录操作,登录成功则进入对应用户功能界面,可进行功能操作处理,反之登录失败。系统操作流程如图3-4所示。

图3-4 系统操作流程图

  1. 添加信息流程

用户在添加信息时,系统编号自动生成,用户需要输入信息,系统会对其进行验证,验证通过则添加成功,反之添加失败,添加信息流程如图3-5所示。

图3-5 添加信息流程图

  1. 修改信息流程图

修改信息这一块的流程和添加信息类似,首先由用户选定需要修改的信息,然后输入对应要修改的数据,系统对输入的这些数据再进行验证,验证成功就可以添加到系统的数据库里面,相反不能添加成功。图3-6就是修改信息的流程图。

图3-6 修改信息流程图

  1. 删除信息流程

用户在删除的时候,系统会再次提示是不是确定要删除,因为一旦删除了,信息就不存在了,确定要删除的话,就会从数据库里将这些数据删除,重新更新数据库。图3-7演示的就是删除信息的流程图。

图3-7 删除信息流程图

  1. 系统设计

    1. 系统概要设计

办公自动化管理系统并没有使用C/S结构,而是基于网络浏览器的方式去访问服务器,进而获取需要的数据信息,这种依靠浏览器进行数据访问的模式就是现在用得比较广泛的适用于广域网并且没有网速限制要求的B/S结构,图4-1就是开发出来的程序工作原理图。

图4-1 系统工作原理图

  1. 系统结构设计

系统的设计和划分是系统的核心研究问题,以确定整体结构和功能模块。该系统的结构化设计的思想,是自顶向下的方式将系统分成若干个子系统,以及反过来的子系统分成模块,其被划分成子模块,层划分各计算机可执行模块可迄今用作一个单独的程序。

本办公自动化管理系统的结构图如图4-2所示。

图4-2 系统结构图

  1. 系统顺序图设计

(1)登录模块顺序图

登录模块主要满足了管理员、员工以及部门的权限登录,登录模块的顺序图如图4-3所示。

图4-3 登录模块顺序图

(2)添加信息模块顺序图

管理员、部门以及员工登录后均可进行信息的添加,添加信息顺序图如图4-4所示

图4-4 添加信息模块顺序图

  1. 数据库设计

    1. 数据库E-R图设计

E-R图是一种描述显示数据类型间的关系的数据描述方法,E-R图可以完整地映射出现实模型的关系。E-R图中的三个最为重要的元素就是实体、属性、关系。E-R图即由这三点组成。

实体:E-R图中数据的实体,用矩形表示上面为实体名,下面为实体属性,实体包含主外键等关系。

属性:E-R图中的属性,是指实体的属性,实体由多条属性所构成,属性拥有自己的数据类型,数据大小。属性的优劣决定了E-R图中实体的健全性、完整性。

关系:E-R图中的关系是指实体之间的关系,用菱形来表示实体间的关系,这些菱形关系的联系上有着一对多或多对多的数据联系,这些构成了E-R图的关系,E-R图的关系紧密连接了实体,使实体间的关联性更加的显著、易懂。本办公自动化管理系统的E-R图如下所示:

(1)部门信息实体E-R图如图4-5所示:

图4-4 部门信息实体E-R图

(2)工作报表信息实体E-R图如图4-5所示:

图4-5 工作报表实体E-R图

(3)工作内容信息实体E-R图如图4-6所示:

图4-6 工作内容信息实体E-R图

(4)员工请假信息实体E-R图如图4-7所示:

图4-7 员工请假实体E-R图

(5)员工信息实体E-R图如图4-8所示:

图4-8 员工实体E-R图

(6)管理员信息实体E-R图如图4-9所示:

图4-9 管理员实体E-R图

  1. 数据库表设计

办公自动化管理系统采用MYSQL数据库系统进行系统数据的储存,下面介绍数据库中的各个表的详细信息。

表4-1 bumen部门信息表

字段名称字段意义字段类型字段长度是否主键能否为空
id编号bigint20
addtime创建时间timestamp
bumenzhanghao部门账号varchar200
mima密码varchar200
`bumenxingming部门姓名varchar200

表4-2 gongzuobaobiao工作报表信息表

字段名称字段意义字段类型字段长度是否主键能否为空
id编号bigint20
addtime创建时间timestamp
baobiaomingcheng报表名称varchar200
tongjishijian统计时间datetime
tongjineirong统计内容varchar200
tongjiren统计人varchar200
baobiaoneirong报表内容longtext
bumenzhanghao部门账号varchar200
bumenxingming部门姓名varchar200

表4-3 gongzuoneirong工作内容信息表

字段名称字段意义字段类型字段长度是否主键能否为空
id编号bigint20
addtime创建时间timestamp
bumenzhanghao部门账号varchar200
`bumenxingming部门姓名varchar200
gongzuobiaoti工作标题varchar200
gongzuoshijian工作时间datetime
gongzuoanpai工作安排varchar200
gongzuoneirong工作内容longtext
gongzuowenjian工作文件varchar200

表4-4 yuangongqingjia员工请假信息表

字段名称字段意义字段类型字段长度是否主键能否为空
id编号bigint20
addtime创建时间timestamp
zhanghao账号varchar200
xingming姓名varchar200
bumen部门varchar200
zhiwu职务varchar200
qingjiashijian请假时间datetime
qingjiatianshu请假天数int11
qingjiayuanyin请假原因longtext
sfsh是否审核varchar200
shhf审核回复longtext

表4-5 yuangong员工信息表

字段名称字段意义字段类型字段长度是否主键能否为空
id编号bigint20
addtime添加时间timestamp
zhanghao账号varchar200
xingming密码varchar200
mima姓名varchar200
xingbie性别varchar200
youxiang邮箱varchar200
shouji`手机varchar200
zhaopian照片varchar200

表4-6 users管理员信息表

字段名称字段意义字段类型字段长度是否主键能否为空
id编号bigint(20
`username用户名varchar100
password`密码varchar100
role角色varchar100
addtime`添加时间timestamp
  1. 系统的实现

    1. 管理员功能模块的实现

      1. 管理员登录界面

管理员要想进入本系统进行管理操作,必须登录系统后台,管理员登录界面展示如图5-1所示。

图5-1 管理员登录界面图

  1. 员工管理界面

管理员可增删改查员工信息,员工管理界面如图5-2所示。

图5-2 员工管理界面

  1. 部门管理界面

管理员可添加、修改和删除部门信息,部门管理界面展示如图5-3所示。

图5-3 部门管理界面

  1. 员工档案管理界面

管理员可增删改查员工档案信息,员工档案管理界面展示如图5-4所示,添加员工档案界面展示如图5-5所示。

图5-4 员工档案管理界面

图5-5 添加员工档案界面

  1. 公司公告管理界面

管理员可增删改查公司公告信息,公司公告管理界面如图5-6所示,添加公司公告界面展示如图5-7所示。

图5-6 公司公告管理界面

图5-7 添加公司公告界面

  1. 员工请假管理界面

管理员可查看员工请假信息,并可对其进行审核、修改和删除操作,员工请假管理界面展示如图5-8所示。

图5-8 员工请假管理界面

  1. 员工功能模块的实现

    1. 员工登录界面

员工在登录界面可输入用户名和密码,选择登录类型,点击登录按钮进行登录系统,员工登录界面如图5-9所示。

图5-9 员工登录界面

  1. 系统主界面

用户在系统主界面可查看系统信息,包括首页、公司公告以及公司新闻等,系统主界面展示如图5-10所示。

图5-10 系统主界面

  1. 添加员工考勤界面

员工登录后可添加员工考勤信息,添加员工考勤界面如图5-11所示。

图5-11 添加员工考勤界面

  1. 员工请假界面

员工通过本平台可进行添加请假,员工请假界面展示如图5-12所示。

图5-12 员工请假界面

  1. 部门功能模块的实现

    1. 工作内容管理界面

部门可增删改查工作内容信息,工作内容管理界面展示如图5-13所示。

图5-13 工作内容管理界面

  1. 工作报表管理界面

部门可增删改查工作报表信息,工作报表管理界面展示如图5-14所示。

图5-14 工作报表管理界面

YuangongkaoqinServiceImpl.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.YuangongkaoqinDao;
import com.entity.YuangongkaoqinEntity;
import com.service.YuangongkaoqinService;
import com.entity.vo.YuangongkaoqinVO;
import com.entity.view.YuangongkaoqinView;

@Service("yuangongkaoqinService")
public class YuangongkaoqinServiceImpl extends ServiceImpl<YuangongkaoqinDao, YuangongkaoqinEntity> implements YuangongkaoqinService {
	

    @Override
    public PageUtils queryPage(Map<String, Object> params) {
        Page<YuangongkaoqinEntity> page = this.selectPage(
                new Query<YuangongkaoqinEntity>(params).getPage(),
                new EntityWrapper<YuangongkaoqinEntity>()
        );
        return new PageUtils(page);
    }
    
    @Override
	public PageUtils queryPage(Map<String, Object> params, Wrapper<YuangongkaoqinEntity> wrapper) {
		  Page<YuangongkaoqinView> page =new Query<YuangongkaoqinView>(params).getPage();
	        page.setRecords(baseMapper.selectListView(page,wrapper));
	    	PageUtils pageUtil = new PageUtils(page);
	    	return pageUtil;
 	}
    
    @Override
	public List<YuangongkaoqinVO> selectListVO(Wrapper<YuangongkaoqinEntity> wrapper) {
 		return baseMapper.selectListVO(wrapper);
	}
	
	@Override
	public YuangongkaoqinVO selectVO(Wrapper<YuangongkaoqinEntity> wrapper) {
 		return baseMapper.selectVO(wrapper);
	}
	
	@Override
	public List<YuangongkaoqinView> selectListView(Wrapper<YuangongkaoqinEntity> wrapper) {
		return baseMapper.selectListView(wrapper);
	}

	@Override
	public YuangongkaoqinView selectView(Wrapper<YuangongkaoqinEntity> wrapper) {
		return baseMapper.selectView(wrapper);
	}

}

GongzuoneirongController.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.apachemons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
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.GongzuoneirongEntity;
import com.entity.view.GongzuoneirongView;

import com.service.GongzuoneirongService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;


/**
 * 工作内容
 * 后端接口
 * @author 
 * @email 
 * @date 2021-04-21 19:15:23
 */
@RestController
@RequestMapping("/gongzuoneirong")
public class GongzuoneirongController {
    @Autowired
    private GongzuoneirongService gongzuoneirongService;
    


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,GongzuoneirongEntity gongzuoneirong, 
		HttpServletRequest request){

		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("bumen")) {
			gongzuoneirong.setBumenzhanghao((String)request.getSession().getAttribute("username"));
		}
        EntityWrapper<GongzuoneirongEntity> ew = new EntityWrapper<GongzuoneirongEntity>();
		PageUtils page = gongzuoneirongService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, gongzuoneirong), params), params));
        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,GongzuoneirongEntity gongzuoneirong, 
		HttpServletRequest request){
        EntityWrapper<GongzuoneirongEntity> ew = new EntityWrapper<GongzuoneirongEntity>();
		PageUtils page = gongzuoneirongService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, gongzuoneirong), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/lists")
    public R list( GongzuoneirongEntity gongzuoneirong){
       	EntityWrapper<GongzuoneirongEntity> ew = new EntityWrapper<GongzuoneirongEntity>();
      	ew.allEq(MPUtil.allEQMapPre( gongzuoneirong, "gongzuoneirong")); 
        return R.ok().put("data", gongzuoneirongService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(GongzuoneirongEntity gongzuoneirong){
        EntityWrapper< GongzuoneirongEntity> ew = new EntityWrapper< GongzuoneirongEntity>();
 		ew.allEq(MPUtil.allEQMapPre( gongzuoneirong, "gongzuoneirong")); 
		GongzuoneirongView gongzuoneirongView =  gongzuoneirongService.selectView(ew);
		return R.ok("查询工作内容成功").put("data", gongzuoneirongView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        GongzuoneirongEntity gongzuoneirong = gongzuoneirongService.selectById(id);
        return R.ok().put("data", gongzuoneirong);
    }

    /**
     * 前端详情
     */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        GongzuoneirongEntity gongzuoneirong = gongzuoneirongService.selectById(id);
        return R.ok().put("data", gongzuoneirong);
    }
    



    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody GongzuoneirongEntity gongzuoneirong, HttpServletRequest request){
    	gongzuoneirong.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(gongzuoneirong);

        gongzuoneirongService.insert(gongzuoneirong);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody GongzuoneirongEntity gongzuoneirong, HttpServletRequest request){
    	gongzuoneirong.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(gongzuoneirong);

        gongzuoneirongService.insert(gongzuoneirong);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody GongzuoneirongEntity gongzuoneirong, HttpServletRequest request){
        //ValidatorUtils.validateEntity(gongzuoneirong);
        gongzuoneirongService.updateById(gongzuoneirong);//全部更新
        return R.ok();
    }
    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        gongzuoneirongService.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<GongzuoneirongEntity> wrapper = new EntityWrapper<GongzuoneirongEntity>();
		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("bumen")) {
			wrapper.eq("bumenzhanghao", (String)request.getSession().getAttribute("username"));
		}

		int count = gongzuoneirongService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
	


}

MD5Util.java
package com.utils;

import cn.hutool.crypto.digest.DigestUtil;

public class MD5Util {
    
	/**
	 * @param text明文
	 * @param key密钥
	 * @return 密文
	 */
	// 带秘钥加密
	public static String md5(String text) {
		// 加密后的字符串
		String md5str = DigestUtil.md5Hex(text);
		return md5str;
	}

}

声明

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

本文标签: 管理系统如何使用办公自动化vueSSM