@TOC
springboot632档案管理系统_g2p7x--论文
第一章 绪 论
1.1研究背景
随着社会和经济的快速发展,信息技术已经迈入了新一代人工智能时代,人类的生活水平也随之水涨船高。随着计算机和互联网的广泛应用,人类对于使用智能技术进行信息管理的能力也越来越强。纵观全球,目前各大企事业单位逐步引入了多计算机技术。因工作种类繁多,工作繁杂,要确保各层次工作能顺利、有条不紊地进行,必须要建立一个管理制度。为了使这一问题得到更好的解决,一个功能强大、使用方便、操作简便、人性化的档案管理系统应运而生。随着网络的快速普及,使得档案管理系统可以被全面、广泛的运用。它使得传统的管理系统向电子化、智能化、综合化方向发展,实现集中管理、分散操作、共享信息。
随着信息化的不断发展,科技的进步也越来越大。软件编程是一个不断发展的行业,每个行业都必须进行适合自身特点的系统开发,才能在机构中生存和发展。当前,随着用户规模的不断扩大,用户数量不断增多,档案在管理和维护上都遇到了巨大的困难。因此,档案管理的工作是一个重要内容。同时,对档案进行有效地管理和维护,可以降低管理者的工作负担、提高工作效率。因此,要根据我国的国情,建立适合我国国情的档案管理制度。
在我国,随着时代的发展,各个地区都在积极探索与实践,并取得了一定的成效。当前,在借鉴国外先进的信息管理方式后,根据自己的实际情况,进行了一系列的现代化管理。
比如,档案管理制度。从我国现阶段的信息化建设来看,当前的用户信息保存和更新仍有很多问题。由于计算机网络形态多样,分布不均,容易受到病毒、黑客等攻击。所以,加强对档案管理体系的维护是非常必要的。
1.2研究目的及意义
传统的档案管理,都是依靠人力来完成的,比如更改联系方式、更改个人信息、档案信息等输入和查询,这些都是由管理员手工完成的。每天要处理的档案信息数不胜数,海量的信息资料都是以传统的纸质文件形式存在的,既浪费了大量的人力、物力、空间,又给管理员和员工带来了极大的不便。海量的信息资料、分类、工作考察的详细程度,都在不断地推动着一种更加快速、高效的信息管理方法。
通过对计算机和互联网的综合化管理,实现了一个统一管理、独立操作、共享平台的智能化管理系统,相较于人工操作,档案管理系统不但可以保证数据的完整性和可读性,还可以防止人为失误操作造成的信息丢失,同时,合理地设定系统的权限,管理人员要处理的信息也越来越多,这就给管理员的工作带来了很大的难度。员工的数量越来越多,档案的分类也越来越精细,若不引入智能化的资讯管理,会耗费大量的人力、时间、金钱,并会造成整体的工作效率下降。
纵观当今社会,大部分产业都是通过资讯科技与网络来发展,这不单单符合现代人的生活节奏,更是促进了全球资讯的即时互动,让人类的眼界从宽度、广度上,都得到了极大的提升。随着这一系统在档案的广泛应用和推广,必将大大提高档案管理的效率。员工资料在电脑或手机上均可查阅,并能充分保障资讯的时效性与效率。对管理者来说,利用该系统可以使他们的工作更加方便、快捷、高效。对用户而言,通过即时获得档案信息,可以更好地促进他们的自主性和自觉性。电子化的环境办公在迅速得到推广,反映了学界积极响应国家号召与国际接轨的现状。
1.3研究方法
该系统能有效地管理档案,包括基本信息的输入、添加、修改、删除、查询、打印等。本文从理论上对档案人力资源进行了优化,并对其进行了科学地管理。目前的问题主要有:一是发展的难点在于开发流程的不熟练;二是程序代码太多,无法准确地表述;三是在调试中,存在着一定的误差。解决方法就是在参考文献和网络资源的基础上,完善该系统的开发流程;还有多与老师沟通,并在老师的协助下纠正错误[4]。
第二章 开发平台及环境简介
2.1java技术
Java是一种面向对象的静态式编程语言。Java编程语言具有多线程和对象定向的特点。其特点是根据方案的属性将方案分为几个不同的模块,这些模块是封闭的和多样化的,在申请过程中具有很强的独立性。Java语言在计算机软件开发过程中的运用可以达到交互操作的目的,通过各种形式的交换,可以有效地处理所需的数据,从而确保计算机软件开发的可控性和可见性。开发Java语言时,保留了网络接口,Java保留的缺省网络接口可以与web应用程序编程所依赖的类别库相匹配。为了使Java开发的应用程序更加稳定和强健,Java会自动收集程序中的垃圾,并处理程序中存在的异常。Java语言是日常开发过程中广泛使用的通用基本语言。其中Java语言课程库、句子、语法规则和关键字经常用于计算机软件的开发和编程。
2.2 SpringBoot框架介绍
随着Java技术发展,为了简化开发而诞生了众多框架。科技是随着人们追求简单且高效的技术的渴望而发展的,在这种情况下,SpringBoot框架应运而生。
SpringBoot是一种轻量级的、非侵入式的Java/JavaEE应用框架。它的出现大幅度的简化了开发步骤。SpringBoot是具有简单高效、轻量级、依赖注入和面向切面编程而深受Java开发程序员的喜爱。现在的众多程序员都使用spring来简化开发。
2.3 MySQL数据库
MySQL是一个小型,廉价,快速的开源数据库。本系统对大量的数据进行了全面的支持,可以同时处理数百万的数据,在调试、管理、优化等方面都有较大的优势。它支持 SQL语句的通用规格,使用非常灵活和安全的授权和口令。虽然 Sql服务器易于使用,并且可以存储大量的数据,但是它比 MS Sql服务器要好得多。但是在网络连接的速度上,无法实现实时、高效的目的。因此,尽管 MySql有很大的缺陷,但是它的可移植性,支持多线程,优化查询算法,这使得 MySql在个人和中小型企业中非常流行[8]。
2.4 B/S体系结构介绍
B/S结构(Browser/Server,浏览器/服务器模式),是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户机上只要安装一个浏览器,如Chrome、Safari、Microsoft Edge、Netscape Navigator或Internet Explorer,服务器安装SQL Server、Oracle、MYSQL等数据库。浏览器通过Web Server同数据库进行数据交互。
第三章 系统分析
3.1可行性分析
3.1.1技术可行性
由于整个系统都是以网页形式呈现在使用者面前,因此必须要有一个安全的网络环境。本系统基于目前大学校园网络的快速发展与普及,为学生在有限的条件下,提供了便捷、快速的资源查询服务。采用java技术实现了用户与用户之间的动态互动, MySQL支持多种用户使用权限,满足了中、高数据需求。
因此,从技术上讲,本系统是可行的。
3.1.2经济可行性
现在计算机的性能有了很大的提高,而且它的平均售价已经很低了。从学校的经济情况和投资回报来看,通过比较硬件设施和运行费用,可以从更长期的角度来衡量。主要体现在:一是节省人力、物力;第二,减少人力资源管理中可能存在的错误;第三,全面提高了用户的工作效率;第四,方便个人查询、更改信息。
因而,本系统具有一定的经济性。
3.1.3操作可行性
该系统具有体积小、占地少、能耗低等特点。学校电脑和校园网络均能满足需求。该系统具有操作简便、直观、易于操作的特点。操作简单,快速,只要经过简单的训练,就能让管理者使用。
因此,该系统不仅在操作上可行,而且在实际应用中也是可行的。
3.2需求分析
在项目开发中,需求分析是进行项目设计和实施的先决条件也是基础。开发者应全面理解和全面分析,并按照使用者的要求,对其进行细致的工作,并具体说明需要完成的工作。在此阶段,系统如何完成工作是不重要的,你只需确认系统正在执行什么工作就可以了。
只要确定该工作是什么,就可以知道该系统是怎么工作的。档案管理系统的用户是管理员和员工信息两个角色,为了满足现代社会对环保和节约的需要,将传统的纸质文档通过计算机输入计算机并以电子文档的方式显示出来。档案要负责许多方面的工作,因此,要建立一个简单、直观的查询渠道,并设定特定的存取权限,以保证档案工作的顺畅和高效。此外,要实现对用户的直接管理,便于用户的个人信息的集中存储与管理。
用户个人资料的查询和修改,将会对所有用户的个人资料进行增、删、改、查:第一,使用者输入使用者的用户名、密码,将会进行存在性与及耦合性检查,并于使用者登入系统时,进行身份验证,以避免因非使用者操作或其它违规行为而造成的非法登录行为;第二,进入该界面后,可以查询、更改自己的信息。
后台管理用户信息:第一、在网站的后台,管理员可以对用户的个人资料进行全面的管理,如增添、修改、删除、查询等。
系统的运行过程:通过对档案管理体系的分析和对比,并结合实际情况提出了一些建议。
采用面向对象的思维方式,以符合实际的功能与性能要求,并进行了创新。为了提升档案管理的自动化和友善性的档案管理系统。
本文提出了一种基于面向对象的思想方法,以适应系统的实际功能与性能要求。为了使档案管理更具自动化和亲和力,在对档案进行简单的需求分析之后,将其分为两大功能模块,分别为管理员和员工信息。其用例如下:
图3-1 管理员用例图
图3-2 员工用例图
3.3系统流程的分析
3.3.1系统操作流程
系统操作流程如图3-3所示:
图3-3 系统操作流程图
3.3.2 登录流程
登录流程如图3-4所示:
图3-4 登录流程
第四章 系统设计
4.1总体功能设计
根据上文中对用户需求的一系列综合细致的分析,针对本档案管理系统,得到一个如图4-1所示的宏观的总体功能结构图。
图4-1 系统功能结构图
4.2 数据库E-R图设计
ER图是由实体及其关系构成的图,通过E/R图可以清楚地描述系统涉及到的实体之间的相互关系。在系统中对一些主要的几个关键实体如下图:
1、设备维修实体图如图4-2所示:
图4-2设备维修实体图
2、设备保养实体图如图4-3所示:
图4-3设备保养实体图
3、配件信息实体图如图4-4所示:
图4-4配件信息实体图
4、配件采购实体图如图4-5所示:
图4-5配件采购实体图
4.3数据库的表的设计与开发
在现有的软件工程运行环境中,数据库与数据表的设计都是为了构建最适合最优秀的数据存储框架。建立一个优秀的数据库,必须保证数据的完整、准确,并尽量满足用户对数据存储的需求。那么,数据库中的信息和网络应用程序之间的链接就必须得到保障。在已有的条件下,尽可能地降低占用的数据库的空间资源消耗,使得整个档案管理系统能够迅速地做出反应。根据上述原则并结合实际需要,本文采用MySql进行设计。现列出如下几张表。
表4-1:设备型号
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
shebeixinghao | varchar | 200 | 设备型号 |
表4-2:设备维修
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
shebeibianhao | varchar | 200 | 设备编号 | ||
shebeimingcheng | varchar | 200 | 设备名称 | ||
shebeileixing | varchar | 200 | 设备类型 | ||
weixiuneirong | longtext | 4294967295 | 维修内容 | ||
weixiuriqi | date | 维修日期 | |||
gonghao | varchar | 200 | 工号 | ||
xingming | varchar | 200 | 姓名 |
表4-3:设备类型
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
shebeileixing | varchar | 200 | 设备类型 |
表4-4:设备保养
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
shebeibianhao | varchar | 200 | 设备编号 | ||
shebeimingcheng | varchar | 200 | 设备名称 | ||
shebeileixing | varchar | 200 | 设备类型 | ||
baoyangshuoming | longtext | 4294967295 | 保养说明 | ||
baoyangriqi | date | 保养日期 | |||
gonghao | varchar | 200 | 工号 | ||
xingming | varchar | 200 | 姓名 |
表4-5:配件信息
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
peijianmingcheng | varchar | 200 | 配件名称 | ||
peijianleixing | varchar | 200 | 配件类型 | ||
shuliang | int | 数量 | |||
shengchanshang | varchar | 200 | 生产商 | ||
shengchanriqi | date | 生产日期 | |||
peijianjianjie | longtext | 4294967295 | 配件简介 | ||
dengjiriqi | date | 登记日期 |
表4-6:配件采购
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
peijianmingcheng | varchar | 200 | 配件名称 | ||
peijianleixing | varchar | 200 | 配件类型 | ||
kehubianhao | varchar | 200 | 客户编号 | ||
gongsimingcheng | varchar | 200 | 公司名称 | ||
caigoujiage | float | 采购价格 | |||
shuliang | int | 数量 | |||
zonge | varchar | 200 | 总额 | ||
caigouriqi | date | 采购日期 | |||
gonghao | varchar | 200 | 工号 | ||
xingming | varchar | 200 | 姓名 |
表4-7:客户信息
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
kehubianhao | varchar | 200 | 客户编号 | ||
gongsimingcheng | varchar | 200 | 公司名称 | ||
lianxiren | varchar | 200 | 联系人 | ||
caigoujiage | float | 采购价格 | |||
lianxidianhua | varchar | 200 | 联系电话 | ||
youxiang | varchar | 200 | 邮箱 | ||
dizhi | varchar | 200 | 地址 | ||
beizhu | longtext | 4294967295 | 备注 |
表4-8:员工
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
gonghao | varchar | 200 | 工号 | ||
mima | varchar | 200 | 密码 | ||
xingming | varchar | 200 | 姓名 | ||
xingbie | varchar | 200 | 性别 | ||
bumen | varchar | 200 | 部门 | ||
zhiwei | varchar | 200 | 职位 | ||
dianhua | varchar | 200 | 电话 |
表4-9:合同信息
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
hetongbianhao | varchar | 200 | 合同编号 | ||
hetongmingcheng | varchar | 200 | 合同名称 | ||
jiafang | varchar | 200 | 甲方 | ||
yifang | varchar | 200 | 乙方 | ||
zonge | float | 总额 | |||
hetongwenjian | longtext | 4294967295 | 合同文件 | ||
qiandingriqi | date | 签订日期 | |||
hetongneirong | longtext | 4294967295 | 合同内容 | ||
youxiaoqi | varchar | 200 | 有效期 | ||
crossuserid | bigint | 跨表用户id | |||
crossrefid | bigint | 跨表主键id |
表4-10:用户表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
username | varchar | 100 | 用户名 | ||
password | varchar | 100 | 密码 | ||
role | varchar | 100 | 角色 | 管理员 | |
addtime | timestamp | 新增时间 | CURRENT_TIMESTAMP |
表4-11:定检信息
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
shebeibianhao | varchar | 200 | 设备编号 | ||
shebeimingcheng | varchar | 200 | 设备名称 | ||
shebeileixing | varchar | 200 | 设备类型 | ||
jianchaqingkuang | longtext | 4294967295 | 检查情况 | ||
jianchashijian | date | 检查时间 | |||
gonghao | varchar | 200 | 工号 | ||
xingming | varchar | 200 | 姓名 |
表4-12:设备信息
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
---|---|---|---|---|---|
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
shebeibianhao | varchar | 200 | 设备编号 | ||
shebeimingcheng | varchar | 200 | 设备名称 | ||
shebeileixing | varchar | 200 | 设备类型 | ||
shebeixinghao | varchar | 200 | 设备型号 | ||
baoyangriqi | date | 保养日期 | |||
dingjianriqi | date | 定检日期 | |||
shebeijianjie | longtext | 4294967295 | 设备简介 | ||
shebeizhuangtai | varchar | 200 | 设备状态 |
第五章 系统运行
5.1系统登录实现
系统登录,在登录页面选择需要登录的角色,在正确输入用户名和密码后,进入操作系统进行操作;如图5-1所示。
图5-1 系统登录界面
系统注册:在系统注册页面的输入栏中输入用户注册信息进行注册操作,系统注册页面如图5-2所示:
图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-8所示:
图5-8定检信息管理界面
管理员点击配件信息管理。在配件信息页面输入配件名称和配件类型进行查询、新增或删除配件信息列表,并根据需要对配件详情信息进行详情、修改或删除操作;如图5-9所示:
图5-9配件信息管理界面
管理员点击配件采购管理。在配件采购页面输入配件名称、配件类型和公司名称进行查询或删除配件采购列表,并根据需要对配件采购详情信息进行详情、签订合同、修改或删除操作;如图5-10所示:
图5-10配件采购管理界面
管理员点击合同信息管理。进入合同信息页面输入合同编号、合同名称进行查询、打印或删除合同信息列表,并根据需要对合同详细信息进行详情、修改或删除操作。如图5-11所示:
图5-11合同信息管理界面
5.3员工管理实现
员工进入系统可以对系统首页、个人中心、客户信息管理、设备信息管理、设备维修管理、设备保养管理、定检信息管理、配件信息管理、配件采购管理等功能进行操作。员工主页面如图5-12所示:
图5-12 员工主界面
员工点击设备信息管理。在设备信息页面输入设备编号、设备名称、选择设备类型、设备型号和设备状态进行查询设备信息列表,并根据需要对设备详细信息进行详情、维修、保养或定检操作。如图5-13所示:
图5-13设备信息管理界面
员工点击配件信息管理。在配件信息页面输入配件名称和配件类型进行查询配件信息列表,并根据需要对配件详细信息进行详情或采购操作。如图5-14所示:
图5-14配件信息管理界面
ShebeixinxiServiceImpl.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.ShebeixinxiDao;
import com.entity.ShebeixinxiEntity;
import com.service.ShebeixinxiService;
import com.entity.vo.ShebeixinxiVO;
import com.entity.view.ShebeixinxiView;
@Service("shebeixinxiService")
public class ShebeixinxiServiceImpl extends ServiceImpl<ShebeixinxiDao, ShebeixinxiEntity> implements ShebeixinxiService {
@Override
public PageUtils queryPage(Map<String, Object> params) {
Page<ShebeixinxiEntity> page = this.selectPage(
new Query<ShebeixinxiEntity>(params).getPage(),
new EntityWrapper<ShebeixinxiEntity>()
);
return new PageUtils(page);
}
@Override
public PageUtils queryPage(Map<String, Object> params, Wrapper<ShebeixinxiEntity> wrapper) {
Page<ShebeixinxiView> page =new Query<ShebeixinxiView>(params).getPage();
page.setRecords(baseMapper.selectListView(page,wrapper));
PageUtils pageUtil = new PageUtils(page);
return pageUtil;
}
@Override
public List<ShebeixinxiVO> selectListVO(Wrapper<ShebeixinxiEntity> wrapper) {
return baseMapper.selectListVO(wrapper);
}
@Override
public ShebeixinxiVO selectVO(Wrapper<ShebeixinxiEntity> wrapper) {
return baseMapper.selectVO(wrapper);
}
@Override
public List<ShebeixinxiView> selectListView(Wrapper<ShebeixinxiEntity> wrapper) {
return baseMapper.selectListView(wrapper);
}
@Override
public ShebeixinxiView selectView(Wrapper<ShebeixinxiEntity> wrapper) {
return baseMapper.selectView(wrapper);
}
}
KehuxinxiController.java
package com.controller;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.text.ParseException;
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.KehuxinxiEntity;
import com.entity.view.KehuxinxiView;
import com.service.KehuxinxiService;
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 2023-02-21 20:47:16
*/
@RestController
@RequestMapping("/kehuxinxi")
public class KehuxinxiController {
@Autowired
private KehuxinxiService kehuxinxiService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,KehuxinxiEntity kehuxinxi,
HttpServletRequest request){
EntityWrapper<KehuxinxiEntity> ew = new EntityWrapper<KehuxinxiEntity>();
PageUtils page = kehuxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, kehuxinxi), params), params));
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,KehuxinxiEntity kehuxinxi,
HttpServletRequest request){
EntityWrapper<KehuxinxiEntity> ew = new EntityWrapper<KehuxinxiEntity>();
PageUtils page = kehuxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, kehuxinxi), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( KehuxinxiEntity kehuxinxi){
EntityWrapper<KehuxinxiEntity> ew = new EntityWrapper<KehuxinxiEntity>();
ew.allEq(MPUtil.allEQMapPre( kehuxinxi, "kehuxinxi"));
return R.ok().put("data", kehuxinxiService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(KehuxinxiEntity kehuxinxi){
EntityWrapper< KehuxinxiEntity> ew = new EntityWrapper< KehuxinxiEntity>();
ew.allEq(MPUtil.allEQMapPre( kehuxinxi, "kehuxinxi"));
KehuxinxiView kehuxinxiView = kehuxinxiService.selectView(ew);
return R.ok("查询客户信息成功").put("data", kehuxinxiView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
KehuxinxiEntity kehuxinxi = kehuxinxiService.selectById(id);
return R.ok().put("data", kehuxinxi);
}
/**
* 前端详情
*/
@IgnoreAuth
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
KehuxinxiEntity kehuxinxi = kehuxinxiService.selectById(id);
return R.ok().put("data", kehuxinxi);
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody KehuxinxiEntity kehuxinxi, HttpServletRequest request){
kehuxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(kehuxinxi);
kehuxinxiService.insert(kehuxinxi);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody KehuxinxiEntity kehuxinxi, HttpServletRequest request){
kehuxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(kehuxinxi);
kehuxinxiService.insert(kehuxinxi);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
@Transactional
public R update(@RequestBody KehuxinxiEntity kehuxinxi, HttpServletRequest request){
//ValidatorUtils.validateEntity(kehuxinxi);
kehuxinxiService.updateById(kehuxinxi);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
kehuxinxiService.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<KehuxinxiEntity> wrapper = new EntityWrapper<KehuxinxiEntity>();
if(map.get("remindstart")!=null) {
wrapper.ge(columnName, map.get("remindstart"));
}
if(map.get("remindend")!=null) {
wrapper.le(columnName, map.get("remindend"));
}
int count = kehuxinxiService.selectCount(wrapper);
return R.ok().put("count", count);
}
}
YuangongServiceImpl.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.YuangongDao;
import com.entity.YuangongEntity;
import com.service.YuangongService;
import com.entity.vo.YuangongVO;
import com.entity.view.YuangongView;
@Service("yuangongService")
public class YuangongServiceImpl extends ServiceImpl<YuangongDao, YuangongEntity> implements YuangongService {
@Override
public PageUtils queryPage(Map<String, Object> params) {
Page<YuangongEntity> page = this.selectPage(
new Query<YuangongEntity>(params).getPage(),
new EntityWrapper<YuangongEntity>()
);
return new PageUtils(page);
}
@Override
public PageUtils queryPage(Map<String, Object> params, Wrapper<YuangongEntity> wrapper) {
Page<YuangongView> page =new Query<YuangongView>(params).getPage();
page.setRecords(baseMapper.selectListView(page,wrapper));
PageUtils pageUtil = new PageUtils(page);
return pageUtil;
}
@Override
public List<YuangongVO> selectListVO(Wrapper<YuangongEntity> wrapper) {
return baseMapper.selectListVO(wrapper);
}
@Override
public YuangongVO selectVO(Wrapper<YuangongEntity> wrapper) {
return baseMapper.selectVO(wrapper);
}
@Override
public List<YuangongView> selectListView(Wrapper<YuangongEntity> wrapper) {
return baseMapper.selectListView(wrapper);
}
@Override
public YuangongView selectView(Wrapper<YuangongEntity> wrapper) {
return baseMapper.selectView(wrapper);
}
}
http.js
import axios from 'axios'
import router from '@/router/router-static'
import storage from '@/utils/storage'
const http = axios.create({
timeout: 1000 * 86400,
withCredentials: true,
baseURL: '/springbootg2p7x',
headers: {
'Content-Type': 'application/json; charset=utf-8'
}
})
// 请求拦截
http.interceptors.request.use(config => {
config.headers['Token'] = storage.get('Token') // 请求头带上token
return config
}, error => {
return Promise.reject(error)
})
// 响应拦截
http.interceptors.response.use(response => {
if (response.data && response.data.code === 401) { // 401, token失效
router.push({ name: 'login' })
}
return response
}, error => {
return Promise.reject(error)
})
export default http