@TOC
ssm817高校毕业生就业管理系统+jsp
第1章 绪论
1.1 研究背景
互联网时代不仅仅是通过各种各样的电脑进行网络连接的时代,也包含了移动终端连接互联网进行复杂处理的一些事情。传统的互联网时代一般泛指就是PC端,也就是电脑互联网时代,但是最近几十年,是移动互联网时代,是向下一步互联网时代过度的一个重要时代,下一个互联网时代叫物联网,而移动互联网就是一个风口,是当前社会的主流风向。目前移动互联网大行其道,人人都手中拿着智能机,手机手机,手不离机,如果开发一个用在手机上的程序软件,那是多么的符合潮流,符合管理者和客户的理想。本次就是开发高校毕业生就业管理系统有管理员,学生,用人单位三个角色。管理员功能有个人中心,学生管理,用人单位管理,就业信息管理,岗位信息管理,未就业管理,招聘信息管理,就业派遣管理,学生就业反馈管理,用人单位反馈管理。用人单位可以修改个人信息,发布招聘岗位,对就业信息里面进行就业派遣,并且添加用人单位反馈信息。学生可以修改个人信息,添加就业信息,添加未就业信息,查看招聘信息,查看就业派遣,提交学生就业反馈信息。
1.2 研究现状
当微软操作系统占领了多半江山,目前不分年龄和种族,使用频率最高,覆盖面积最广。使用人群使用的大多数都是微软系统。而微软又不遗余力的更新Windows版本,从微软对Windows的市场定位来讲,Windows的未来不仅仅是一个操作系统,而是让所有人都拥抱Windows,建立一个属于Windows的互联网生态圈。目前各大行业,各种类型的软件阵地转移到了Windows平台上,包含一些带商城的免费管理系统,或者一些带广告的免费应用,还有好多游戏之类的应用。尤其是经过疫情涌现的互联网办公,学校的互联网教学等,都不断的刷新人们对于互联网的认知。
1.3 目的和意义
从经济成本考虑,手机的价格比较亲民,对于不是必须在电脑上办公的人员来讲,手机上如果能解决事情就更方便了。
从使用便利角度上讲,用手机上的应用处理业务,不用考虑网线是否存在,不用考虑位置是否变化,依托无处不在的手机信号就可以在任何有信号的地方处理事务,这是多么的方便和使用,不限制时间,不限制地点,高山平原山谷都可以作为使用的地点而不影响使用的效果。
从操作角度上讲,手机的操作先天性的高于电脑的操作,因为电脑适合处理复杂的操作,而手机就是为了简化操作而生的,方便高效操作简单。
此次开发这个高校毕业生就业管理系统,不仅仅满足用户的需要,也能跟上时代的发展风向,从技术的角度还是用户的角度上进行开发都是很有意义的。
1.4 论文研究内容
论文设计的结构也是依照程序开发的流程进展的,也涉及到功能需求分析,功能设计与实现,程序测试等流程。
绪论:讲解课题的背景与意义,展示论文结构。
程序开发技术:讲解程序运用到的工具与技术知识。
系统分析:讲解程序的功能需求与开发可行性问题。
系统设计:讲解程序的功能与数据库的设计。
系统实现:讲解程序功能与界面实现。
系统测试:讲解程序的功能测试。
第2章 程序开发技术
2.1 JSP技术介绍
Java Server Pages这三个英文词汇的首字母的组合就是JSP。所以JSP是一个简写的名字,代表动态网页开发技术。JSP与Java的关系可以使用公式表示,即:JSP= HTML+Java,HTML就是编写静态内容的标记语言。JSP则是可以编写网页动态内容的技术,与同属于SUN公司的动态网页技术之一Servlet技术相比,JSP在输出动态内容上面比较容易,但是Servlet技术更适合编写Java逻辑代码,通常在动态网页的开发上,使用Servlet技术需要承担巨大的工作量,往往这个时候,JSP就已经可以看成是Servlet工作的替代品,换句话说就是,在对HTML进行输出时,就靠JSP进行输出。使用JSP技术开发完成的WEB程序,是隶属于Java程序的。因此JSP也具备了Java具有的跨平台特性。JSP的运行原理为了能够方便理解,现以图片的方式进行描述。
图2.1 JSP运行原理图
2.2 B/S结构介绍
在早期,一些使用HTML语言编写的文件,再集合一些其它资源文件就可以组成一个最简单的Web程序,了解了Web程序也需要了解Web站点,它们之间的关系就是一个或者多个Web程序可以放在Internet上的一个Web站点(Web服务器)中进行使用。可以说Web应用程序的开发也带动了B/S这种网络结构模式的兴起。B是Brower(浏览器)的首字母,S是Server(服务器)的首字母,两个首字母进行组合就成了网络结构模式的简称B/S。由于这种结构模式通过安装在客户端的浏览器进行服务器的访问,可以把程序的核心功能安排在服务器中进行处理,给程序的开发,后期使用和维护省去了许多工作。图2.2展示的就是使用这种架构开发的程序的工作原理。
图2.2 B/S架构的工作原理图
2.3 Mysql数据库介绍
开发的程序面向用户的只是程序的功能界面,让用户操作程序界面的各个功能,那么很多人就会问,用户使用程序功能生成的数据信息放在哪里的?这个就需要涉及到数据库的知识了,一般来说,程序开发通常就会对常用数据存储工具的特点进行分析比对,比如Mysql数据库的特点与优势,Access数据库的特点与优势,Sqlserver数据库的特点与优势等,最终看哪个数据库与需要开发的程序比较匹配,也符合程序功能运行需要的数据存储要求,比如,需要开发商业级别的程序,存储的数据对数据库要求较高,可以选用Oracle,如果只是比较简单的程序,对数据存储没有过多要求,可以选用微软旗下的Access,当开发程序要求数据库占用空间小,并能满足程序数据存储要求时,就可以考虑Oracle公司从瑞典MySQL AB公司在很早之前就收购过一个关系型数据库,它是现在的Mysql数据库。在数据库工具里面它是最受认可的其中一个应用软件。需要说明的信息就是,本程序的开发就运用到了此数据库。它将程序数据通过使用不同的数据表格进行保存,在增加了程序数据的存储速度的时候,也提高了数据库的灵活性。 图2.3展示的就是MySQL的架构图。
图2.3 MySQL数据库架构图
2.4 SSM框架介绍
SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)。 常作为数据源较简单的web项目的框架。 Spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。 也可以称之为项目中的粘合剂。
第3章 系统分析
在进行系统分析之前,需要从网络上或者是图书馆的开发类书籍中收集大量的资料,因为这个环节也是帮助即将开发的程序软件制定一套最优的方案,一旦确定了程序软件需要具备的功能,就意味着接下来的工作和任务都是围绕着这个方案执行的,所以系统分析需要对程序功能反复进行思考和研究。
3.1可行性分析
开发一款系统软件之前,用户都会思考这个软件程序值不值得去开发,把开发软件过程中可能涉及到的问题罗列出来,并一个个分析解决,以此来确定开发这款程序软件是否有必要,这样的分析方法也能帮助用户降低损失,不至于开发者开发进度进行到一半之后,突然遇到问题就放弃对软件的开发,到那时,资金损失,人力投入等方面就损耗太大了。
3.1.1技术可行性分析
此次开发程序使用到的开发工具有:Mysql等工具,使用的开发语言是Java,选择的开发工具和开发语言都是在大学课堂接触并学习过,后期因为自己也比较感兴趣,所以也通过网络渠道,或借助图书馆的开发类书籍进行过软件开发知识的系统学习,让自己有了一定的知识积累,加上自己在校期间也独立开发过一些软件作品,也积累了一定的开发经验,所以这次毕设作品的制作在技术上无须担忧过多。
3.1.2经济可行性分析
目前的信息时代,对信息的管理趋于高效化,便捷化,这也是计算机大力普及所带来的便利,此程序软件在设备选用上,依靠的是比较大众的电脑设备,对电脑的配置没有过多要求,一般学校的计算机机房的电脑都可以满足程序开发需求,另外,开发出此款程序,让信息处理变得高效率,其所带来的高效益是远超程序开发的低成本的,因此程序开发的资金投入是可以忽略不计的。
3.1.3操作可行性分析
程序软件的操作界面是符合大众审美的需求,功能模块的布局也是类似于社会上同种类型的软件,因此使用者操作该软件可以无需培训就上手。加上现在计算机入驻各家各户,大部分人的计算机操作水平都比较高,这样的局面也表明开发出来的程序在操作性问题上也是不用担心的。
综合上面的可行性论证,基本可以确定程序开发完全可行。
3.2系统运行环境
程序经过编码可以实现对程序设计的功能。但是编码实现时需要一定的配置环境,包括了电脑上的硬件环境,也包括在电脑操作系统上安装的软件环境。
硬件环境:一台可以正常使用并能够上网的笔记本或者是电脑,电脑内存最低要求4个G,电脑的中央处理器可以配置i5CPU。
软件环境:运用的微软操作系统是比较稳定的win7旗舰版系统,采用比较熟练的360安全浏览器,并在此系统上通过浏览器下载安装好MYSQL软件等。
3.3系统流程分析
分析程序的流程,涉及到程序的整体操作流程,通过分析与设计,绘制的程序操作流程图见下图。此程序为了确保安全,会让使用者通过登录模块验证信息,符合要求的使用者才有权限操作程序。
图3-1 程序操作流程图
程序处理数据会涉及到数据的录入环节,绘制的添加流程见下图。程序录入数据过程中,始终与数据库保持同步。
图3-2 信息添加流程图
程序里面的数据也会出现错误,因此就有相应的修改数据的功能,绘制的程序修改流程见下图。此过程也是跟后台数据库进行数据同步显示。
图3-3信息修改流程图
程序数据存放于数据仓库,有时也会涉及到数据删除,此过程对应的流程图见下图。数据信息被删除之后,数据库里面也就没有了该数据信息了。
图3-4 信息删除流程图
第4章 系统设计
4.1 系统设计的原则
在系统设计过程中,也需要遵循相应的设计原则,这些设计原则可以帮助设计者在短时间内设计出符合设计规范的设计方案。设计原则主要有可靠性,安全性,可定制化,可扩展性,可维护性,可升级性以及客户体验等原则。下面就对这些原则进行简要阐述。
可靠性:一个软件是否可靠决定了其是否被用户使用,设计不可靠的软件,用户很容易就遗弃;
安全性:程序软件承担了信息的保存与管理等事务,安全性不足的软件会导致使用者承担巨大的损失;所以系统安全也是需要考虑进入的;
可定制化:市场环境从来都不是一直固定不变,面对客户群体的改变,以及使用环境的改变,市场需求的改变等因素,程序软件也要易于调整以适应各种变化;
可扩展性:程序软件在运行使用期间,也需要及时引进当下的新技术来进行系统优化,主要就是在系统功能层面,系统性能层面上进行相应的扩展,只有这样才能让系统在实际生活中继续占有市场;
可维护性:程序软件的维护需要一定量的资金,不管是排除现有程序错误,还是变更软件的现有需求,都需要在软件技术上投入一定资金,所以易于维护的软件程序就可以降低技术层面的资金消耗;
可升级性:程序软件的投入使用,会面临用户数量增多的情况,用户对软件的使用率也会提升,所以系统面临这种情况,仍然需要通过升级保持性能的合理,这样才能够适应市场;
客户体验:设计出来的程序软件在界面上不能够太复杂,要遵循界面设计的原理设计出简单,方便操作的功能操作界面,让用户易于接受软件,并乐于使用软件提供的功能。
4.2 功能结构设计
在管理员功能模块确定下来的基础上,绘制的功能结构见下图。功能有个人中心,学生管理,用人单位管理,就业信息管理,岗位信息管理,未就业管理,招聘信息管理,就业派遣管理,学生就业反馈管理,用人单位反馈管理。
图4-2 管理员功能结构图
4.3 数据库设计
与功能结构设计一样,数据库设计也是程序开发不可避免的设计环节,数据库设计最主要的目的就是帮助运行程序存储相应的数据信息。数据库设计包含的内容有数据表结构的设计,也包含了数据库E-R图的设计。
4.3.1 数据库E-R图
在绘制E-R图之前,先要找出数据库的实体,明确各个实体具有的属性,比如用户信息这个实体,它具备的属性包括了用户的姓名属性,用户的密码属性,用户的创建时间属性等,所以明确了用户这个实体,以及用户实体具备的属性之后,就需要根据这些信息绘制用户实体对应的实体属性图了。绘制软件选用当下认可度高,使用范围广,操作便利的微软旗下的Visio工具。
(1)管理员实体属性图通过Visio工具绘制,绘制结果展示如下:
图4-4 管理员实体属性图
(2)学生实体属性图通过Visio工具绘制,绘制结果展示如下:
图4-5学生实体属性图
(3)用人单位实体属性图通过Visio工具绘制,绘制结果展示如下:
图4-6 用人单位实体属性图
4.3.2 数据库表结构
在进行这部分设计之前,需要明白和掌握数据类型以及各个数据类型的长度范围等知识,因为在一张具体的数据表中,为了方便理解,这里就举个简单的例子。比如用户信息表,这个表格的字段就是用户这个实体具备的属性,这时就需要对字段进行数据类型,以及字段长度的设置,也要设置一个主键来作为用户信息表的唯一标识。这些都是数据库表结构设计需要完成的内容。根据高校毕业生就业管理系统的功能设计以及数据库设计要求,展示该系统的数据表结构。
1岗位类型表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | addtime | Date | 创建时间 | 是 |
3 | gangweileixing | String | 岗位类型 | 是 |
2招聘信息表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | addtime | Date | 创建时间 | 是 |
3 | qiyezhanghao | String | 企业账号 | 是 |
4 | qiyemingcheng | String | 企业名称 | 是 |
5 | lianxifangshi | String | 联系方式 | 是 |
6 | qiyeyouxiang | String | 企业邮箱 | 是 |
7 | zhaopingangwei | String | 招聘岗位 | 是 |
8 | gongzuodidian | String | 工作地点 | 是 |
9 | xinzifanwei | String | 薪资范围 | 是 |
10 | gangweiyaoqiu | String | 岗位要求 | 是 |
11 | tianjiashijian | date | 添加时间 | 是 |
3未就业表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | addtime | Date | 创建时间 | 是 |
3 | xuehao | String | 学号 | 是 |
4 | xueshengxingming | String | 学生姓名 | 是 |
5 | yuanxi | String | 院系 | 是 |
6 | zhuanye | String | 专业 | 是 |
7 | banji | String | 班级 | 是 |
8 | qiuzhiyixiang | String | 求职意向 | 是 |
9 | weijiuyeyuanyin | String | 未就业原因 | 是 |
10 | xueshengyoushi | String | 学生优势 | 是 |
11 | tianjiashijian | datetime | 添加时间 | 是 |
4就业派遣表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | addtime | Date | 创建时间 | 是 |
3 | xuehao | String | 学号 | 是 |
4 | xueshengxingming | String | 学生姓名 | 是 |
5 | qiyezhanghao | String | 企业账号 | 是 |
6 | qiyemingcheng | String | 企业名称 | 是 |
7 | paiqianquxiang | String | 派遣去向 | 是 |
8 | xueshengdangan | String | 学生档案 | 是 |
9 | xueshenghukou | String | 学生户口 | 是 |
10 | paiqianfangan | String | 派遣方案 | 是 |
11 | sfsh | String | 是否审核 | 是 |
12 | shhf | String | 审核回复 | 是 |
5用人单位反馈表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | addtime | Date | 创建时间 | 是 |
3 | qiyezhanghao | String | 企业账号 | 是 |
4 | qiyemingcheng | String | 企业名称 | 是 |
5 | lianxifangshi | String | 联系方式 | 是 |
6 | fankuishijian | datetime | 反馈时间 | 是 |
7 | fankuineirong | String | 反馈内容 | 是 |
6学生表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | addtime | Date | 创建时间 | 是 |
3 | xuehao | String | 学号 | 是 |
4 | mima | String | 密码 | 是 |
5 | xueshengxingming | String | 学生姓名 | 是 |
6 | xingbie | String | 性别 | 是 |
7 | touxiang | String | 头像 | 是 |
8 | xueshengshouji | String | 学生手机 | 是 |
9 | yuanxi | String | 院系 | 是 |
10 | zhuanye | String | 专业 | 是 |
11 | banji | String | 班级 | 是 |
7用人单位表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | addtime | Date | 创建时间 | 是 |
3 | qiyezhanghao | String | 企业账号 | 是 |
4 | mima | String | 密码 | 是 |
5 | qiyemingcheng | String | 企业名称 | 是 |
6 | qiyedidian | String | 企业地点 | 是 |
7 | fuzeren | String | 负责人 | 是 |
8 | lianxifangshi | String | 联系方式 | 是 |
9 | qiyeyouxiang | String | 企业邮箱 | 是 |
8就业信息表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | addtime | Date | 创建时间 | 是 |
3 | xuehao | String | 学号 | 是 |
4 | xueshengxingming | String | 学生姓名 | 是 |
5 | touxiang | String | 头像 | 是 |
6 | yuanxi | String | 院系 | 是 |
7 | zhuanye | String | 专业 | 是 |
8 | banji | String | 班级 | 是 |
9 | qiyezhanghao | String | 企业账号 | 是 |
10 | qiyemingcheng | String | 企业名称 | 是 |
11 | gangweimingcheng | String | 岗位名称 | 是 |
12 | gangweileixing | String | 岗位类型 | 是 |
13 | jiuyeshijian | date | 就业时间 | 是 |
14 | sanfanghetong | String | 三方合同 | 是 |
15 | beizhu | String | 备注 | 是 |
16 | sfsh | String | 是否审核 | 是 |
17 | shhf | String | 审核回复 | 是 |
9学生就业反馈表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | addtime | Date | 创建时间 | 是 |
3 | xuehao | String | 学号 | 是 |
4 | xueshengxingming | String | 学生姓名 | 是 |
5 | fankuineirong | String | 反馈内容 | 是 |
6 | fankuishijian | datetime | 反馈时间 | 是 |
10配置文件表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | name | String | 配置参数名称 | 是 |
3 | value | String | 配置参数值 | 是 |
11用户表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | username | String | 用户名 | 是 |
3 | password | String | 密码 | 是 |
4 | role | String | 角色 | 是 |
5 | addtime | Date | 新增时间 | 是 |
12token表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | userid | Integer | 用户id | 是 |
3 | username | String | 用户名 | 是 |
4 | tablename | String | 表名 | 是 |
5 | role | String | 角色 | 是 |
6 | token | String | 密码 | 是 |
7 | addtime | Date | 新增时间 | 是 |
8 | expiratedtime | Date | 过期时间 | 是 |
第5章 系统实现
系统实现这个章节的内容主要还是展示系统的功能界面设计效果,在实现系统基本功能,比如修改,比如添加,比如删除等管理功能的同时,也显示出系统各个功能的界面实现效果,该部分内容一方面与前面提到的系统分析,系统设计的内容相呼应,另一方面也是一个实际成果的展示。
5.1管理员功能实现
5.1.1 学生管理
管理员可以对学生信息进行添加,修改,删除,查询操作。
图5-1 学生管理页面
5.1.2 用人单位管理
管理员可以对用人单位信息进行添加,修改,删除,查询操作。
图5-2 用人单位管理页面
5.2 用人单位功能实现
5.2.1 招聘信息管理
用人单位可以对招聘信息进行添加,修改,删除,查询操作。
图5-3 招聘信息管理页面
5.2.2 就业派遣管理
用人单位可以对学生提交的就业信息进行就业派遣操作。
图5-4 就业派遣管理页面
5.2.3 用人单位反馈管理
用人单位可以在用人单位反馈信息里面进行添加,修改,删除,查询操作。
图5-5 用人单位反馈管理页面
5.3 学生功能实现
5.3.1 就业信息管理
学生可以对自己的就业信息进行添加,修改,删除,查询操作。
图5-6 就业信息管理页面
5.3.2 未就业管理
学生可以对自己的未就业信息进行添加,修改,删除,查询操作。
图5-7 未就业管理页面
5.3.3 学生就业反馈
学生可以对自己的学生就业反馈信息进行添加,修改,删除,查询操作。
图5-8 学生就业反馈管理页面
YongrendanweifankuiController.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.transaction.annotation.Transactional;
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.YongrendanweifankuiEntity;
import com.entity.view.YongrendanweifankuiView;
import com.service.YongrendanweifankuiService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;
import java.io.IOException;
/**
* 用人单位反馈
* 后端接口
* @author
* @email
* @date 2022-05-07 10:33:42
*/
@RestController
@RequestMapping("/yongrendanweifankui")
public class YongrendanweifankuiController {
@Autowired
private YongrendanweifankuiService yongrendanweifankuiService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,YongrendanweifankuiEntity yongrendanweifankui,
HttpServletRequest request){
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("yongrendanwei")) {
yongrendanweifankui.setQiyezhanghao((String)request.getSession().getAttribute("username"));
}
EntityWrapper<YongrendanweifankuiEntity> ew = new EntityWrapper<YongrendanweifankuiEntity>();
PageUtils page = yongrendanweifankuiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, yongrendanweifankui), params), params));
request.setAttribute("data", page);
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,YongrendanweifankuiEntity yongrendanweifankui,
HttpServletRequest request){
EntityWrapper<YongrendanweifankuiEntity> ew = new EntityWrapper<YongrendanweifankuiEntity>();
PageUtils page = yongrendanweifankuiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, yongrendanweifankui), params), params));
request.setAttribute("data", page);
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( YongrendanweifankuiEntity yongrendanweifankui){
EntityWrapper<YongrendanweifankuiEntity> ew = new EntityWrapper<YongrendanweifankuiEntity>();
ew.allEq(MPUtil.allEQMapPre( yongrendanweifankui, "yongrendanweifankui"));
return R.ok().put("data", yongrendanweifankuiService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(YongrendanweifankuiEntity yongrendanweifankui){
EntityWrapper< YongrendanweifankuiEntity> ew = new EntityWrapper< YongrendanweifankuiEntity>();
ew.allEq(MPUtil.allEQMapPre( yongrendanweifankui, "yongrendanweifankui"));
YongrendanweifankuiView yongrendanweifankuiView = yongrendanweifankuiService.selectView(ew);
return R.ok("查询用人单位反馈成功").put("data", yongrendanweifankuiView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
YongrendanweifankuiEntity yongrendanweifankui = yongrendanweifankuiService.selectById(id);
return R.ok().put("data", yongrendanweifankui);
}
/**
* 前端详情
*/
@IgnoreAuth
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
YongrendanweifankuiEntity yongrendanweifankui = yongrendanweifankuiService.selectById(id);
return R.ok().put("data", yongrendanweifankui);
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody YongrendanweifankuiEntity yongrendanweifankui, HttpServletRequest request){
yongrendanweifankui.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(yongrendanweifankui);
yongrendanweifankuiService.insert(yongrendanweifankui);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody YongrendanweifankuiEntity yongrendanweifankui, HttpServletRequest request){
yongrendanweifankui.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(yongrendanweifankui);
yongrendanweifankuiService.insert(yongrendanweifankui);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
@Transactional
public R update(@RequestBody YongrendanweifankuiEntity yongrendanweifankui, HttpServletRequest request){
//ValidatorUtils.validateEntity(yongrendanweifankui);
yongrendanweifankuiService.updateById(yongrendanweifankui);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
yongrendanweifankuiService.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<YongrendanweifankuiEntity> wrapper = new EntityWrapper<YongrendanweifankuiEntity>();
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("yongrendanwei")) {
wrapper.eq("qiyezhanghao", (String)request.getSession().getAttribute("username"));
}
int count = yongrendanweifankuiService.selectCount(wrapper);
return R.ok().put("count", count);
}
}
XueshengServiceImpl.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.XueshengDao;
import com.entity.XueshengEntity;
import com.service.XueshengService;
import com.entity.vo.XueshengVO;
import com.entity.view.XueshengView;
@Service("xueshengService")
public class XueshengServiceImpl extends ServiceImpl<XueshengDao, XueshengEntity> implements XueshengService {
@Override
public PageUtils queryPage(Map<String, Object> params) {
Page<XueshengEntity> page = this.selectPage(
new Query<XueshengEntity>(params).getPage(),
new EntityWrapper<XueshengEntity>()
);
return new PageUtils(page);
}
@Override
public PageUtils queryPage(Map<String, Object> params, Wrapper<XueshengEntity> wrapper) {
Page<XueshengView> page =new Query<XueshengView>(params).getPage();
page.setRecords(baseMapper.selectListView(page,wrapper));
PageUtils pageUtil = new PageUtils(page);
return pageUtil;
}
@Override
public List<XueshengVO> selectListVO(Wrapper<XueshengEntity> wrapper) {
return baseMapper.selectListVO(wrapper);
}
@Override
public XueshengVO selectVO(Wrapper<XueshengEntity> wrapper) {
return baseMapper.selectVO(wrapper);
}
@Override
public List<XueshengView> selectListView(Wrapper<XueshengEntity> wrapper) {
return baseMapper.selectListView(wrapper);
}
@Override
public XueshengView selectView(Wrapper<XueshengEntity> wrapper) {
return baseMapper.selectView(wrapper);
}
}
GangweileixingController.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.transaction.annotation.Transactional;
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.GangweileixingEntity;
import com.entity.view.GangweileixingView;
import com.service.GangweileixingService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;
import java.io.IOException;
/**
* 岗位类型
* 后端接口
* @author
* @email
* @date 2022-05-07 10:33:41
*/
@RestController
@RequestMapping("/gangweileixing")
public class GangweileixingController {
@Autowired
private GangweileixingService gangweileixingService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,GangweileixingEntity gangweileixing,
HttpServletRequest request){
EntityWrapper<GangweileixingEntity> ew = new EntityWrapper<GangweileixingEntity>();
PageUtils page = gangweileixingService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, gangweileixing), params), params));
request.setAttribute("data", page);
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,GangweileixingEntity gangweileixing,
HttpServletRequest request){
EntityWrapper<GangweileixingEntity> ew = new EntityWrapper<GangweileixingEntity>();
PageUtils page = gangweileixingService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, gangweileixing), params), params));
request.setAttribute("data", page);
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( GangweileixingEntity gangweileixing){
EntityWrapper<GangweileixingEntity> ew = new EntityWrapper<GangweileixingEntity>();
ew.allEq(MPUtil.allEQMapPre( gangweileixing, "gangweileixing"));
return R.ok().put("data", gangweileixingService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(GangweileixingEntity gangweileixing){
EntityWrapper< GangweileixingEntity> ew = new EntityWrapper< GangweileixingEntity>();
ew.allEq(MPUtil.allEQMapPre( gangweileixing, "gangweileixing"));
GangweileixingView gangweileixingView = gangweileixingService.selectView(ew);
return R.ok("查询岗位类型成功").put("data", gangweileixingView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
GangweileixingEntity gangweileixing = gangweileixingService.selectById(id);
return R.ok().put("data", gangweileixing);
}
/**
* 前端详情
*/
@IgnoreAuth
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
GangweileixingEntity gangweileixing = gangweileixingService.selectById(id);
return R.ok().put("data", gangweileixing);
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody GangweileixingEntity gangweileixing, HttpServletRequest request){
gangweileixing.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(gangweileixing);
gangweileixingService.insert(gangweileixing);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody GangweileixingEntity gangweileixing, HttpServletRequest request){
gangweileixing.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(gangweileixing);
gangweileixingService.insert(gangweileixing);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
@Transactional
public R update(@RequestBody GangweileixingEntity gangweileixing, HttpServletRequest request){
//ValidatorUtils.validateEntity(gangweileixing);
gangweileixingService.updateById(gangweileixing);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
gangweileixingService.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<GangweileixingEntity> wrapper = new EntityWrapper<GangweileixingEntity>();
if(map.get("remindstart")!=null) {
wrapper.ge(columnName, map.get("remindstart"));
}
if(map.get("remindend")!=null) {
wrapper.le(columnName, map.get("remindend"));
}
int count = gangweileixingService.selectCount(wrapper);
return R.ok().put("count", count);
}
}
scriptbreaker-multiple-accordion-1.js
/*
* jQuery UI Multilevel accordionze v.1
*
* Copyright (c) 2011 Pieter Pareit
*
* http://www.scriptbreaker.com
*
*/
//plugin definition
(function($){
$.fn.extend({
//pass the options variable to the function
accordionze: function(options) {
var defaults = {
accordionze: 'true',
speed: 300,
closedSign: '[+]',
openedSign: '[-]'
};
// Extend our default options with those provided.
var opts = $.extend(defaults, options);
//Assign current element to variable, in this case is UL element
var $this = $(this);
//add a mark [+] to a multilevel menu
$this.find("li").each(function() {
if($(this).find("ul").size() != 0){
//add the multilevel sign next to the link
$(this).find("a:first").append("<h4>"+ opts.closedSign +"</h4>");
//avoid jumping to the top of the page when the href is an #
if($(this).find("a:first").attr('href') == "#"){
$(this).find("a:first").click(function(){return false;});
}
}
});
//open active level
$this.find("li.active").each(function() {
$(this).parents("ul").slideDown(opts.speed);
$(this).parents("ul").parent("li").find("h4:first").html(opts.openedSign);
});
$this.find("li a").click(function() {
if($(this).parent().find("ul").size() != 0){
if(opts.accordionze){
//Do nothing when the list is open
if(!$(this).parent().find("ul").is(':visible')){
parents = $(this).parent().parents("ul");
visible = $this.find("ul:visible");
visible.each(function(visibleIndex){
var close = true;
parents.each(function(parentIndex){
if(parents[parentIndex] == visible[visibleIndex]){
close = false;
return false;
}
});
if(close){
if($(this).parent().find("ul") != visible[visibleIndex]){
$(visible[visibleIndex]).slideUp(opts.speed, function(){
$(this).parent("li").find("h4:first").html(opts.closedSign);
});
}
}
});
}
}
if($(this).parent().find("ul:first").is(":visible")){
$(this).parent().find("ul:first").slideUp(opts.speed, function(){
$(this).parent("li").find("h4:first").delay(opts.speed).html(opts.closedSign);
});
}else{
$(this).parent().find("ul:first").slideDown(opts.speed, function(){
$(this).parent("li").find("h4:first").delay(opts.speed).html(opts.openedSign);
});
}
}
});
}
});
})(jQuery);
声明
本博客适用于广泛的学术和教育用途,包括但不限于个人学习、开发设计,产品设计。仅供学习参考,旨在为读者提供深入理解和学术研究的材料。