智能停车计费系统设计与实现_urqs9

news2025/1/16 21:18:25

@TOC

springboot552智能停车计费系统设计与实现_urqs9--论文

绪 论

1.1 研究背景

在新世纪的今天,计算机已经发展到一定的规模,带动了国内经济和科学技术的快速发展,科学技术的发展大大提高了生产效率,使人们的物质生活需求得到了很大的满足。现在各种类型的网站系统都很流行,将传统的管理模式转移到线上来实现,可以大大提高管理效率。基于以上情况,智能停车计费系统逐渐出现在人们的视野中,也将成为未来发展的一个潜在增长点。

1.2 研究意义

在日新月异的21世纪,全球进入快速运转的科技时代,我国也在各位科学家不懈努力下实现了科技社会化、信息技术底层化、网络运用全民化。我们处在一个“互联网+”的时代,信息化的建设成为了当代的发展基石以及重要组成部分。随着智能停车计费管理的常态化,同时也出现了多样化的人员管理方式。而智能停车计费系统就可以实现管理人员及用户的日常管理,实现进行更高效的信息互换、让用户的动态变得透明公开,让管理人员更好地实现对智能停车计费的动态监管、真正的实现快速、便捷、高效的管理以降低管理成本、减轻管理人员的负担,保证管理技术以及运用互联网技术的能力的快速提升,提高综合管理和竞争能力。在保证人们的安全的同时,真正达到更好的为国家经济建设和社会安全做贡献的目的。

1.3 系统主要功能

因我国智能停车计费的数量也逐步增加。如果智能停车计费管理还是沿用传统的、人工的操作,那管理难度是十分巨大的、效率也会不尽人意;而如今我国的信息科学技术已趋于成熟,我们的生活、工作、学习已离不开互联网,为了更好的提升智能停车计费管理,并且在保证用户的安全前提下使人们生活有序、有效开展,需要一套操作简单、能高效导出并录入数据、安全性高、可用性强的智能停车计费系统。

此篇论文中包括管理员和用户两个不同的角色,根据不同的身份以及工作机制,赋予不同的权限。该智能停车计费系统的功能如下列所示:

  1. 用户之间的使用权限设定:根据业务管理的需求以及智能停车计费管理体系,在使用前将每个角色的固定标签设定好,明晰每个角色权限,并将状态控制功能添加到用户状态上,最终达到本系统角色控制基础形成的目标。
  2. 用户登录功能:用户可以根据自己的角色选择相应的账号进行登录,在输入合法的账号和密码后就可进入系统,根据自己的权限选择想要进行的操作。
  3. 查看个人资料功能:用户登录系统之后可以点击右上角头像查看自己的个人资料,在核查发现错误之后还可以进行修改,用户还可在该模块进行密码的修改。
  4. 系统管理功能:在模块的功能又可以细化成以下几个部分
  5. 用户管理:管理员和用户可以在该模块进行用户信息的管理与修改。
  6. 角色管理:管理员和用户可以在该模块对用户进行权限的修改与设置。

1.4 拟解决的主要问题

  1. 与智能停车计费管理工作契合的工作流结构

目前,智能停车计费的人员管理工作中,一般采用纸质表单结合手工传递的方式或者Word、Excel填写在线发放的方式[3],进行信息的收集,在信息收集完成之后再交由各级管理人员进行审批、签字,存在工作耗时较长、难以全面收集所需信息、工作步骤冗杂繁琐、中间环节易出错等缺点,因此采用与网络系统结合的工作流模式,让用户在固定时间进行信息的填写,之后按照已经设定好的规则进行工作流程的运行,自动在完成上一级任务后执行下一步指令,这样的操作方式比较灵活,而且减少了管理者手动完成操作信息的步骤,提高了工作效率,缩减了工作完成所需要的时间,并且可以保证任务完成的精确性与科学性。

  1. 科学、有效的信息收集机制

在保证信息的全面收集的同时还需要兼顾所收集信息的科学性与适用性。使用互联网固然可以提高收集信息的效率,但如果所收集的信息只是为了表面上数据的增加那就造成了极大的资源浪费,虚假的形式主义会造成用户精力的大量流失、并且降低信誉值,因此在确定信息收集内容的时候要着重筛选对智能停车计费管理起到促进作用的信息。例如本系统所收集的智能停车计费信息就可以很好的掌控智能停车计费的日常动态,为智能停车计费管理工作的成功打下了基础。

  1. 准确、可行的效果评价标准

当前对我国的智能停车计费管理效果的评价已有一定的标准,例如用户人数的多少、智能停车计费管理所花费的物资及钱财数量,而作为智能停车计费系统,其效果体现在以下几个方面:

  1. 使用网络收集用户基础信息减少了填写信息的步骤,用户可在重合的时间分别进行信息的填写,缩短了信息收集所需的时间;
  2. 使用网络进行信息记录,减少了虚假信息的产生,使结果更加真实有效;
  3. 通过系统进行记录,并且更好的留痕,为以后的检查工作提供了可靠地证明。

2 相关概念和技术介绍

2.1 JAVA技术介绍

Java语言擅长开发互联网类应用和企业级应用,现在已经相当的成熟,而且也是目前使用最多的编程语言之一。Java语言具有很好的面向对象性,可以符合人的思维模式进行设计,封装是将对象的属性和方法尽可能地隐藏起来,使得外界并不知道是如何实现的,外界能通过接口进行访问,继承是指每个类都会有一个父类,所有的子类都有父类的方法,可以进行继承,但是只有final修饰的类不能被继承,通过继承可以使得代码得到重新利用,能够提高软件的开发效率,也是多态的前提。

Java就像C语言、C#语言等,也是一种程序开发语言,而它的特点就是面向对象。作为一种程序开发与设计的语言,它有很多特性,主要特性就是面向对象、夸平台以及可以分布式运行。Java语言项目不但安全性高、稳定性强,而且可以并发运行。

为了提高开发的速度及效率,必须做到代码的重复使用和简化程序的复杂度,要达到上述的要求java语言通过封装、继承与多态等方式实现,这样可以很大程度上达到信息的封装,提高代码复用率,减少冗余度,提高效率。在Java中难能可贵的一点就是它的垃圾回收机制,它使得以往程序中大量存在的内存泄漏的问题得到了较好的缓解。所谓的内存泄漏就是程序向操作系统申请了一块存储空间,比如定义了一个变量,但是由于某种原因,这个变量一直没有使用,但是仍然占用着系统的内存空间,可能一两个这样的变量对程序和操作系统造不成什么大的影响,但是试想如果这样的变量定义的多了系统的内存空间就会一步步减少,从而造成机器的性能降低甚至宕机。但是在Java中有垃圾回收机制的存在,这种机制极大地避免了内存泄漏的出现,在Java虚拟机中,垃圾回收机制会对长时间没有引用变量指向的对象实施垃圾回收,简单的说就是将这个对象销毁,以避免内存泄漏的情况出现。

2.2 SpringBoot框架

Spring Boot是由Pivotal的开发团队在2013年开发的一个免费、轻量级、开源的系统框架。SpringBoot的主要设计思想是约定大于配置,因此SpringBoot在设计时几乎达到零配置。SpringBoot集成了业界的开源框架。

SpringBoot是一个非常强大的后台框架,因为SpringBoot的开发基本上不需要写配置文件,所以利用SpringBoot来构建网站的后台环境,在SpringBoot的YML配置文件中写项目启动端口,项目就可以启动了。项目的Java和静态文件由SpringBoot管理。

2.3B/S架构

B/S(Browser/Server,浏览器/服务器)模式,是一种架构模式,属于WEB发展后的所出现的一种网络构造,而WEB又是主要的浏览器应用商品软件。B/S架构模式不仅将系统的重新开发、维修及利用等简单化,更将其重点放到了服务器上[8]。它使客户端得到了统一,服务器上集中了系统功能的最关键部分。

B/S架构的工作模式是浏览器发出请求后服务器进行相应的响应。Internet上文本、图片、动画等信息主要由Web服务器产生,而用户主要是通过浏览器访问这些信息。在Web服务器上下载程序时,如果在下载过程中遇到某些与数据库相关的指令,可以将这些指令交给数据库服务器来解释、进行执行。B/S架构工作流程图如2-1所示:

图2-1 B/S架构工作流程图

2.4 MySQL数据库

MySQL是一个关系型数据库管理系统,具有体积小、速度快、成本低等特点。MySQL数据库的功能强大,是可以处理存储着成千上万条记录的大型数据库;并且它是可以定制的,因为它采用了GPL协议,使用者可以通过修改源代码来开发自己的MySQL系统;MySQL支持多种操作系统,包括AIX、FreeBSD、Linux、Solaris等;它还可以提供用于管理、检索、升级数据库操作的处理工具;最重要的是MySQL是一个开源的、不收取任何费用的、适用范围较广产品,使用者可以直接在互联网上下载然后使用。MySQL工作架构图如图2-2所示:

https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimage.mamicode.com%2Finfo%2F201805%2F20180517104608720994.png&refer=http%3A%2F%2Fimage.mamicode.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1655298240&t=aa98023f57b87539e4e4d2fa9f4042f4

图2-2 MySQL工作架构图

3 系统需求分析

在对一个软件进行设计与开发之前,需要对该系统进行深层次的调查、分析、研究。良好的需求分析不仅能使开发人员快速、准确地理解开发任务,还能提高开发效率,还能好地完成工作[6]。对系统进行需求分析是必不可少的,这是软件生存周期上一个很重要的部分,在这个阶段需要确定该系统需要实现什么功能,然后做成一个数据规范、图表清晰的文档,为接下来的系统设计工作提供一定的基础。

3.1 问题定义

问题定义也是软件开发中一个重要的环节,在这个阶段我们要清楚的找到以下问题的答案:开发这个系统的原因是什么,开发这个系统所需要的具备什么样的技术支持,需要获得什么样的物资基础,取得哪个方面的国家政策支持等。所采用的智能停车计费系统就可以很好的促进智能停车计费管理工作的完成、而且可以使得整体管理水平得到有效的提升。因为使用该系统的主要是管理员和用户,所以要准确的进行角色的定位,然后对不同的角色给予不同的使用权限,表现如下:

1.使用角色的明晰

智能停车计费是一个人数众多、规模庞大、工作机制复杂的机构,需要对管理范围内的人员进行清楚的角色定位。

2.使用角色的权限赋予

角色权限分配应灵活,尽量满足用户对于权限的使用需求以及适应工作变动[3]。管理权限级别由下往上的增加,上一级的管理人员可以对下一级管理人员进行部分权限的限制与赋予,不同级别的管理者也可能拥有相同的管理权限。

3.系统所需要达到的性能要求

1 实用性:可以满足同一时间不同人员的登录,系统操作简单,界面明了干净。 1 可操作性:对每个角色在进行操作权限之后,后期还可以对其权限进行修改,可以增加或删除使用角色、部门等。 1 及时性:在对系统进行修改之后可以实时的系统的同步变化。 1 安全性:在系统出现故障之时可以在较短时间内进行修复,并且保证用户信息的绝密性,防止信息泄露的发生。 1 效率:可以满足各大使用群体的需求,解决使用者的问题

3.2 可行性分析

可行性分析是需求分析中一个关键的部分,在进行可行性分析之后可以了解到系统实现所具备的条件,以此来判断系统实现的难度。本篇论文主要进行以下几个方面的分析:

  1. 经济切实性

该系统并没有独特、十分创新的地方,所需要的硬件设备可以从学校已经在使用或者目前闲置的存量里面选取;系统的后期维护和升级也比较容易,学校从事这个专业的老师或者学生就可完成,而学校所派发的日常经费就可满足需求;在系统开发完成之后还可将系统进行出租或者售卖,也可产生一定的经济效益;并且该系统所使用的MySQL数据库是免费的。

  1. 使用可行性

该系统在的开发,从设计的功能以及使用者的角度出发进行设计,可以更有针对性的对智能停车计费进行有效的监管,也符合智能停车计费管理工作的需要,并且操作简单,覆盖范围广,这就提高了使用者主动适应并使用该系统的几率。

  1. 技术可行性

该系统的设计所选用的都是经过时间筛选、比较成熟的技术,Spring boot都是当前使用率较高、可靠性和安全性有一定保障的开发框架,MySQL数据库是拥有强大服务器支撑的系统,这就让系统开发的效率、质量得到了一定的保障。

3.3系统用例分析

在设计系统的过程中,用例图是系统设计过程中必不可少的模型,用例图可以更为细致的,结合系统中人员的有关分配,能够从细节上描绘出系统中有关功能所完成的具体事件,确切的反映出某个操作以及它们相互之间的内部联系。

其中参与者就是和系统能够发生交互的外在实体,一般可以指系统的某个用户。一个用例图就能对应出系统中的一个功能过程,系统中完整的功能都是由不同的用例图所组成的。系统用例图下所示。

图3-1 管理员用例图

图3-2 用户用例图

3.4 系统流程分析

3.4.1 登录流程

每个用户都有专属的密码和账号,在输入合法的账号、密码以及验证之后即可进入系统。登录流程如图3-3所示:

登录流程图

图3-3 登录流程图

3.4.2 添加信息流程

用户和管理员可以添加信息,内容没有问题之后按下确定键就添加成功了。添加信息的流程图如图3-4所示:

C:\Users\lenovo\AppData\Local\Temp\WeChat Files\da8dfc62fa46238fbebe4d324ba8419.jpg

图3-4 添加信息流程图

3.4.3 删除信息流程

用户可以选择把自己发布的信息删掉,选择要删除的信息确认之后,删除信息的操作就完成了。删除信息流程图如图3-5所示:

C:\Users\lenovo\AppData\Local\Temp\WeChat Files\da8dfc62fa46238fbebe4d324ba8419.jpg

图3-5删除信息流程图

4 系统功能的设计与实现

4.1 总体设计思路

该系统采用了B/S架构,对使用网络没有特别的要求,使用者可以随时访问该系统。该系统运行原理如图4-1所示:

系统工作原理图

图4-1 系统工作原理图

4.2 系统功能结构设计

完成了设计思路的构想,接下来就是按照实际要求完成所需功能。该系统功能结构图如图4-2所示:

图4-2 系统功能结构图

4.3 数据库设计

4.3.1 数据库E-R图设计

E-R图即实体-联系图,主要作用是提供了解显示数据类型存在的联系的途径,是藐视现实世界的概念模型,其关键要素是实体型、属性、联系。以下是本系统主要的实体图,如下图所示。

(1)车位信息实体图

图4-3车位信息实体图

(2)用户实体图

图4-4用户实体图

(3)违规处罚实体图

图4-5违规处罚实体图

(4)在线交流实体图

图4-6在线交流实体图

(5)系统公告实体图

图4-7系统公告实体图

4.3.2 数据库表结构设计

该系统采用的数据库是MySQL,根据该系统的数据存储特点进行数据库关系表的设计。下面是该系统中关键部分关系表的详细信息。

表4-1:车位信息

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
tingchechangmingchengvarchar200停车场名称
quyuvarchar200区域
cheweibianhaovarchar200车位编号
cheweimingchengvarchar200车位名称
cheweileixingvarchar200车位类型
cheweitupianlongtext4294967295车位图片
cheweiweizhivarchar200车位位置
cheweizhuangtaivarchar200车位状态
xiaoshidanjiaint小时单价
cheweixiangqinglongtext4294967295车位详情

表4-2:用户

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
yonghuzhanghaovarchar200用户账号
xingmingvarchar200姓名
mimavarchar200密码
xingbievarchar200性别
shoujivarchar200手机
touxianglongtext4294967295头像

表4-3:车位分类

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
cheweileixingvarchar200车位类型

表4-4:违规处罚

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
weiguishixiangvarchar200违规事项
weiguibeizhuvarchar200违规备注
chufajineint处罚金额
chufashijiandatetime处罚时间
yonghuzhanghaovarchar200用户账号
xingmingvarchar200姓名
shoujivarchar200手机
touxianglongtext4294967295头像
ispayvarchar200是否支付未支付

表4-5:在线交流

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
useridbigint用户id
adminidbigint管理员id
asklongtext4294967295提问
replylongtext4294967295回复
isreplyint是否回复

表4-6:用户表

字段名称类型长度字段说明主键默认值
idbigint主键主键
usernamevarchar100用户名
passwordvarchar100密码
rolevarchar100角色管理员
addtimetimestamp新增时间CURRENT_TIMESTAMP

表4-7:token表

字段名称类型长度字段说明主键默认值
idbigint主键主键
useridbigint用户id
usernamevarchar100用户名
tablenamevarchar100表名
rolevarchar100角色
tokenvarchar200密码
addtimetimestamp新增时间CURRENT_TIMESTAMP
expiratedtimetimestamp过期时间CURRENT_TIMESTAMP

表4-8:系统公告

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
titlevarchar200标题
introductionlongtext4294967295简介
picturelongtext4294967295图片
contentlongtext4294967295内容

表4-9:投诉建议

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
useridbigint留言人id
usernamevarchar200用户名
avatarurllongtext4294967295头像
contentlongtext4294967295留言内容
cpicturelongtext4294967295留言图片
replylongtext4294967295回复内容
rpicturelongtext4294967295回复图片

表4-10:论坛交流

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
titlevarchar200帖子标题
contentlongtext4294967295帖子内容
parentidbigint父节点id
useridbigint用户id
usernamevarchar200用户名
avatarurllongtext4294967295头像
isdonevarchar200状态

表4-11:配置文件

字段名称类型长度字段说明主键默认值
idbigint主键主键
namevarchar100配置参数名称
valuevarchar100配置参数值

表4-12:车子离场

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
tingchechangmingchengvarchar200停车场名称
quyuvarchar200区域
cheweibianhaovarchar200车位编号
cheweimingchengvarchar200车位名称
cheweileixingvarchar200车位类型
cheweiweizhivarchar200车位位置
xiaoshidanjiaint小时单价
yonghuzhanghaovarchar200用户账号
xingmingvarchar200姓名
shoujivarchar200手机
touxianglongtext4294967295头像
chepaihaovarchar200车牌号
jinchangshijianvarchar200进场时间
lichangshijiandatetime离场时间
tingcheshizhangfloat停车时长
tingchefeiyongfloat停车费用
sfshvarchar200是否审核待审核
shhflongtext4294967295审核回复
ispayvarchar200是否支付未支付

表4-13:车子进场

字段名称类型长度字段说明主键默认值
idbigint主键主键
addtimetimestamp创建时间CURRENT_TIMESTAMP
tingchechangmingchengvarchar200停车场名称
quyuvarchar200区域
cheweibianhaovarchar200车位编号
cheweimingchengvarchar200车位名称
cheweileixingvarchar200车位类型
cheweiweizhivarchar200车位位置
xiaoshidanjiaint小时单价
yonghuzhanghaovarchar200用户账号
xingmingvarchar200姓名
shoujivarchar200手机
touxianglongtext4294967295头像
chepaihaovarchar200车牌号
jinchangshijiandatetime进场时间

5 系统详细功能的实现

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.2管理员模块实现

管理员登录,在登录页面正确输入用户名和密码后,点击登录进入操作系统进行操作;如图5-7所示。

图5-7 管理员登录界面

管理员进入主页面,主要功能包括对系统首页,个人中心,用户管理,车位分类管理,车位信息管理,车子进场管理,车子离场管理,违规处罚管理,投诉建议,交流论坛,系统管理等进行操作。管理员主页面如图5-8所示:

图5-8 管理员主界面

管理员点击用户管理。在用户页面输入用户账号和姓名进行查询、新增或删除用户列表,并根据需要对用户详情信息进行详情、修改或删除操作;如图5-9所示:

图5-9用户管理界面

管理员点击车位分类管理。在车位分类页面输入车位类型进行查询、新增或删除车位分类列表,并根据需要对车位分类详情信息进行详情、修改或删除操作;如图5-10所示:

图5-10车位分类管理界面

管理员点击车子进场管理。在车子进场页面输入停车场名称进行查询或删除车子进场列表,并根据需要对车子进场详情信息进行详情或删除操作;如图5-11所示:

图5-11车子进场管理界面

管理员点击车子离场管理。在车子离场页面输入停车场名称和选择是否通过进行查询或删除车子离场列表,并根据需要对车子离场详情信息进行详情、修改或删除操作;如图5-12所示:

图5-12车子离场管理界面

管理员点击系统管理。进入系统公告页面输入标题可以查询,新增或删除系统公告列表,并根据需要对系统公告详细信息进行详情,修改或删除操作。还可对在线交流,轮播图管理进行详细操作。如图5-13所示:

图5-13系统管理界面

5.3用户后台模块实现

用户进入主页面,主要功能包括对系统首页,个人中心,车子进场管理,车子离场管理,违规处罚管理等进行操作。用户主页面如图5-14所示:

图5-14 用户后台主界面

CheweifenleiController.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.CheweifenleiEntity;
import com.entity.view.CheweifenleiView;

import com.service.CheweifenleiService;
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-05-17 16:29:22
 */
@RestController
@RequestMapping("/cheweifenlei")
public class CheweifenleiController {
    @Autowired
    private CheweifenleiService cheweifenleiService;


    


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,CheweifenleiEntity cheweifenlei,
		HttpServletRequest request){
        EntityWrapper<CheweifenleiEntity> ew = new EntityWrapper<CheweifenleiEntity>();

		PageUtils page = cheweifenleiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, cheweifenlei), params), params));

        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
	@IgnoreAuth
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,CheweifenleiEntity cheweifenlei, 
		HttpServletRequest request){
        EntityWrapper<CheweifenleiEntity> ew = new EntityWrapper<CheweifenleiEntity>();

		PageUtils page = cheweifenleiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, cheweifenlei), params), params));
        return R.ok().put("data", page);
    }

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

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(CheweifenleiEntity cheweifenlei){
        EntityWrapper< CheweifenleiEntity> ew = new EntityWrapper< CheweifenleiEntity>();
 		ew.allEq(MPUtil.allEQMapPre( cheweifenlei, "cheweifenlei")); 
		CheweifenleiView cheweifenleiView =  cheweifenleiService.selectView(ew);
		return R.ok("查询车位分类成功").put("data", cheweifenleiView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        CheweifenleiEntity cheweifenlei = cheweifenleiService.selectById(id);
        return R.ok().put("data", cheweifenlei);
    }

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



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



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



    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        cheweifenleiService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    
	









}

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;
	}

}

ChezijinchangServiceImpl.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.ChezijinchangDao;
import com.entity.ChezijinchangEntity;
import com.service.ChezijinchangService;
import com.entity.vo.ChezijinchangVO;
import com.entity.view.ChezijinchangView;

@Service("chezijinchangService")
public class ChezijinchangServiceImpl extends ServiceImpl<ChezijinchangDao, ChezijinchangEntity> implements ChezijinchangService {
	
	
    @Override
    public PageUtils queryPage(Map<String, Object> params) {
        Page<ChezijinchangEntity> page = this.selectPage(
                new Query<ChezijinchangEntity>(params).getPage(),
                new EntityWrapper<ChezijinchangEntity>()
        );
        return new PageUtils(page);
    }
    
    @Override
	public PageUtils queryPage(Map<String, Object> params, Wrapper<ChezijinchangEntity> wrapper) {
		  Page<ChezijinchangView> page =new Query<ChezijinchangView>(params).getPage();
	        page.setRecords(baseMapper.selectListView(page,wrapper));
	    	PageUtils pageUtil = new PageUtils(page);
	    	return pageUtil;
 	}
    
    @Override
	public List<ChezijinchangVO> selectListVO(Wrapper<ChezijinchangEntity> wrapper) {
 		return baseMapper.selectListVO(wrapper);
	}
	
	@Override
	public ChezijinchangVO selectVO(Wrapper<ChezijinchangEntity> wrapper) {
 		return baseMapper.selectVO(wrapper);
	}
	
	@Override
	public List<ChezijinchangView> selectListView(Wrapper<ChezijinchangEntity> wrapper) {
		return baseMapper.selectListView(wrapper);
	}

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


}

IndexMain.vue
<template>
	<div style="height: 100%;">
		<index-aside v-if="'vertical' == 'vertical'" :style='{"boxShadow":"0px 4px 10px 0px rgba(0,0,0,0.3020)","padding":"0 0 100px","overflow":"hidden","top":"0","left":"0","background":"rgba(255, 255, 255, 1)","bottom":"0","width":"190px","fontSize":"0px","position":"fixed","height":"100%","zIndex":"1001"}'></index-aside>
		<el-main :style='"vertical" == "vertical" ? {"minHeight":"100%","padding":"0","margin":"0 0 0 190px","backgroundImage":"url(http://codegen.caihongy.cn/20220804/febccfdcc12347f0afccab7938e90a2e.png)","display":"block","backgroundSize":"100% 100%","position":"relative"} : {"minHeight":"100%","margin":"0","position":"relative"}'>
			<index-header :style='{"padding":"8px 20px","alignItems":"center","top":"0","left":"0","background":"linear-gradient(360deg, #3CB5AF 0%, #3CB5AF 13%, #FFFFFF 13%, #FFFFFF 86%, #3CB5AF 86%, #3CB5AF 99%)","display":"flex","width":"100%","position":"fixed","justifyContent":"center","fontWeight":"550","zIndex":"1004"}'></index-header>
			<index-aside v-if="'vertical' == 'horizontal'" :style='{"width":"100%","borderColor":"#efefef","borderStyle":"solid","background":"#304156","borderWidth":"0 0 1px 0","height":"auto"}'></index-aside>
			<bread-crumbs :title="title" :style='{"padding":"10px 20px","margin":"85px auto 0","borderColor":"#eee","borderRadius":"20px","borderWidth":"0 0 1px 0","background":"rgba(27, 167, 166, 1)","width":"calc(100% - 40px)","borderStyle":"solid"}' class="bread-crumbs"></bread-crumbs>
			<router-view class="router-view"></router-view>
		</el-main>
	</div>
</template>

<script>
	import IndexAside from '@/components/index/IndexAsideStatic'
	import IndexHeader from '@/components/index/IndexHeader'
	import menu from "@/utils/menu";
	export default {
		components: {
			IndexAside,
			IndexHeader
		},
		data() {
			return {
				menuList: [],
				role: "",
				currentIndex: -2,
				itemMenu: [],
				title: ''
			};
		},
		mounted() {
			let menus = menu.list();
			this.menuList = menus;
			this.role = this.$storage.get("role");
		},
		created() {
			this.init();
			console.log(console.log(this.$route.path))
		},
		methods: {
			init(){
				this.$nextTick(()=>{
					
				})
			},
			menuHandler(menu) {
				this.$router.push({
					name: menu.tableName
				});
				this.title = menu.menu;
			},
			titleChange(index, menus) {
				this.currentIndex = index
				this.itemMenu = menus;
				console.log(menus);
			},
			homeChange(index) {
				this.itemMenu = [];
				this.title = ""
				this.currentIndex = index
				this.$router.push({
					name: 'home'
				});
			},
			centerChange(index) {
				this.itemMenu = [{
					"buttons": ["新增", "查看", "修改", "删除"],
					"menu": "修改密码",
					"tableName": "updatePassword"
				}, {
					"buttons": ["新增", "查看", "修改", "删除"],
					"menu": "个人信息",
					"tableName": "center"
				}];
				this.title = ""
				this.currentIndex = index
				this.$router.push({
					name: 'home'
				});
				
			}
		}
	};
</script>
<style lang="scss" scoped>
	a {
		text-decoration: none;
		color: #555;
	}

	a:hover {
		background: #00c292;
	}
	
	.el-main {
		padding: 0;
		display: block;
	}

	.nav-list {
		width: 100%;
		margin: 0 auto;
		text-align: left;
		margin-top: 20px;

		.nav-title {
			display: inline-block;
			font-size: 15px;
			color: #333;
			padding: 15px 25px;
			border: none;
		}

		.nav-title.active {
			color: #555;
			cursor: default;
			background-color: #fff;
		}
	}

	.nav-item {
		margin-top: 20px;
		background: #FFFFFF;
		padding: 15px 0;

		.menu {
			padding: 15px 25px;
		}
	}
	
	.detail-form-content {
	    background: transparent;
	}
</style>

声明

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

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

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

相关文章

为啥每个语音的printf(“%d%d%d%d“,i,j,i++,j++)不一样

题目来源一位考研同学的题目。 第一眼&#xff1a;小子&#xff0c;这都不会&#x1f600; 第二眼&#xff1a;wok&#xff0c;咋没有选项&#x1f622; 作为一个大一学C语音&#xff0c;大二学Java的同学来说&#xff0c;我一看就觉得肯定是11 6 11 6 。 结果很遗憾&#xff0…

微服务开发相关问题

微服务开发相关问题 服务注册nacos 2.X注册问题[Nacos Config] config[dataIddatasource.yml, groupDEFAULT_GROUP] is empty 参考 持续更新… 服务注册 nacos 2.X注册问题 [Nacos Config] config[dataIddatasource.yml, groupDEFAULT_GROUP] is empty 因为&#xff1a;# 由于…

C++第十二弹 -- STL之list模拟实现

文章索引 前言模拟实现list1. ListNode节点类2. list的迭代器封装3. 反向迭代器4. list类的模拟实现测试代码 list的反向迭代器总结 前言 通过模拟实现可以让我们更加深刻的理解C底层STL的实现逻辑, 本篇就对list的底层进行模拟实现. 博客主页: 酷酷学!!! 点击关注 共同进步!…

影响五金精密零件加工价格的因素

在制造业中&#xff0c;五金精密零件的加工价格受到多种因素的影响。了解这些因素&#xff0c;对于企业合理控制成本、选择合适的加工供应商至关重要。 首先&#xff0c;零件的设计复杂度是一个重要因素。复杂的设计通常需要更先进的加工技术和更多的加工工序。例如&#xff0c…

intel ECI作为ACRN VM使用dpdk(vfio和iommu问题)以及img扩容

ACRN虚拟机内IOMMU 对非虚拟机而言&#xff0c;只要在BIOS里开启VT-d就可以用iommu去映射vfio使用DPDK&#xff0c;但是在虚拟机中即便BIOS开启了VT-d&#xff0c;它也传不到VM中。因此这个帖子解决一下这个问题。 在ACRN的launch脚本中需要passthru两个网卡&#xff0c;一个用…

C++ TinyWebServer项目总结(8. 高性能服务器程序框架)

《Linux 高性能服务器编程》一书中&#xff0c;把这一章节作为全书的核心&#xff0c;同时作为后续章节的总览。这也意味着我们在经历了前置知识的学习后&#xff0c;正式进入了 Web 服务器项目的核心部分&#xff01; 前置内容回顾&#xff1a; 1. C TinyWebServer项目总结&…

《深入浅出多模态》(九)多模态经典模型:MiniGPT-v2、MiniGPT5

🎉AI学习星球推荐: GoAI的学习社区 知识星球是一个致力于提供《机器学习 | 深度学习 | CV | NLP | 大模型 | 多模态 | AIGC 》各个最新AI方向综述、论文等成体系的学习资料,配有全面而有深度的专栏内容,包括不限于 前沿论文解读、资料共享、行业最新动态以、实践教程、求职…

【Datawhale AI夏令营第四期】 浪潮源大模型应用开发方向笔记 Task03 大咖项目分享 人话八股文Bakwaan_Buddy项目开发尝试

【Datawhale AI夏令营第四期】 浪潮源大模型应用开发方向笔记 Task03 人话八股文Bakwaan_Buddy项目开发尝试 Idea: 我们草台班子目前的想法是解决大家计算机学院毕业面临的BUG——不爱背、背不下来八股文&#xff0c;觉得枯燥、烦、工作了用不着&#xff0c;反正就是知识他不…

triton之flaggems的point-wise分析

一 流程 1 代码分析 1.1 parameter_ref_for_wrapper 对应 二 拾遗 报错 1 缺少@triton.jit File "/opt/conda/envs/py38/lib/python3.8/site-packages/Open_triton/utils/dynamic_index_put.py", line 676, in decorator num_inputs = len(fn.arg_name…

提高谷歌引擎搜索排名一连串儿丝滑小连招

在运营独立网站时&#xff0c;最令人沮丧的事情莫过于网站未能获得谷歌的高排名&#xff0c;尽管付出了诸多努力。由于互联网上内容繁多&#xff0c;找到在谷歌上获得排名的确切方法几乎是不可能的。谷歌有多个排名因素&#xff0c;但这些因素并非孤立存在&#xff0c;而是由多…

java如何判断一个列表中是否存在大于1000的数字

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…

帆软报表设计器函数相关问题

官方漏洞声明&#xff1a;安全漏洞声明- FineReport帮助文档 - 全面的报表使用教程和学习资料 最近出的两个漏洞&#xff0c;官方已修复&#xff0c;问题有些相似&#xff0c;都是通过设计器函数来构造rce。尤其第二个sql注入造成RCE的漏洞还是挺有意思的&#xff0c;记录一下…

地表最强Ai视频创作工具?Pika保姆级注册使用指南

大家好&#xff01;我是YUAN。 今天&#xff0c;我要带大家探索一个全新的领域——AI视频生成。Pika Labs以其独特的魅力和强大的功能&#xff0c;成为了众多创作者的新宠。准备好了吗&#xff1f;让我们一起探索Pika Labs的无限可能。 一、Pika Labs是什么&#xff1f; Pika …

fl studio24.1.1中文完整版,直接安装激活!免费分享

&#x1f389; FL Studio 24.1.1 中文版本&#xff0c;音乐制作人的福音&#xff01; 嗨&#xff0c;亲爱的音乐制作爱好者们&#xff01;&#x1f44b; 如果你对音乐创作有着无限的热爱&#xff0c;那你绝对不能错过 FL Studio 24.1.1 中文版本这款神器。它不仅是一个音乐制作…

跟着 iLogtail 学习高质量软件建设

作者&#xff1a;余韬 本文根据 iLogtail PMC 成员余韬 2024 年 6 月 26 日在 DBAPlus 社群的公开直播《云上千万级可观测 Agent SRE 实践》整理而成。 引言 近年来&#xff0c;关于可靠性工程这一话题的热议不断升温&#xff0c;这主要归因于当前形势的显著变化。 首先&…

如何备份电脑所有数据?四个方法实现一键备份所有数据

备份电脑所有数据是一个重要的步骤&#xff0c;可以确保在数据丢失或损坏时能够迅速恢复。以下是一些备份电脑所有数据的方法&#xff0c;对于有重要数据的企业来说非常实用。 一、使用外置存储设备 选择设备&#xff1a;首先&#xff0c;选择一个容量足够大的外置存储设备&am…

肿瘤免疫治疗队列转录组及单细胞数据下载-TIGER

目录 转录组数据 ​编辑单细胞数据 TIGER不仅提供了多种在线分析&#xff0c;还提供了多个肿瘤免疫治疗队列转录组及单细胞数据下载。 TIGER:肿瘤免疫治疗&#xff08;转录组单细胞免疫&#xff09;_肿瘤免疫治疗基因表达资源tiger-CSDN博客 转录组数据 TIGER: Tumor Immu…

构建全面的用户增长蓝图

在竞争日益激烈的SaaS市场中&#xff0c;用户增长已成为企业持续繁荣的关键驱动力。为了实现这一目标&#xff0c;企业不仅需要制定高效的用户增长策略&#xff0c;还需要借助先进的工具和技术来加速这一过程。 1. 明确目标市场与用户画像 首先&#xff0c;SaaS企业需要深入了…

PNG转BMP要怎么操作?分享四种不同的转换方案

PNG转BMP要怎么操作&#xff1f;PNG和BMP是两种常见的图像格式&#xff0c;PNG格式以其无损压缩和支持透明度而闻名&#xff0c;而BMP格式则是一种未经压缩的位图格式&#xff0c;常用于操作系统和应用程序内部。有时出于兼容性或特定需求的原因&#xff0c;你可能需要将 PNG 文…

【全网最真实测评】随身WiFi值得入手吗?自费入手华为、中兴、格行、上赞4款随身WiFi,内含国产4款热门随身WiFi推荐!(最实用、最高性价比!)

随身WiFi的风越吹越大&#xff0c;市场乱象也更变本加厉。作为一名资深随身WiFi使用者&#xff0c;接触过太多的随身WiFi产品&#xff0c;越是了解这个行业黑幕&#xff0c;就越对无良商家夸大宣传、虚标限速&#xff0c;甚至售卖二手产品的行为深恶痛绝&#xff01; 本篇测评涉…