《基于SpringBoot的医院设备管理系统设计与实现13000字(论文)》_第1页
《基于SpringBoot的医院设备管理系统设计与实现13000字(论文)》_第2页
《基于SpringBoot的医院设备管理系统设计与实现13000字(论文)》_第3页
《基于SpringBoot的医院设备管理系统设计与实现13000字(论文)》_第4页
《基于SpringBoot的医院设备管理系统设计与实现13000字(论文)》_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于SpringBoot的医院设备管理系统设计与实现在国家医疗改革的推动,以及软件工程技术的飞速发展和具有中国特色社会主义市场经济体制的迅速完善,医疗行业都在使用现代化技术手段,不断的深化改革、提高工作效率、实现无纸化办公。这都在很大程度上给设备管理增加了严峻的挑战,促进设备管理信息化改革势在必行。因此,本文设计与实现基于SpringBoot的医疗设备管理系统,相比人工而言,本系统具有操作简易、页面友好等优势。项目主要采用SpringBoot框架进行编程,Tomcat作为运行服务器,以及依托于Mysql作为数据处理,用RBAC进行权限控制。本系统开发了用户管理模块、部门管理模块、角色管理模块以及设备管理模块,同时对于不同的角色设备管理操作权限进行了不同的控制处理,满足医疗设备管理的基本需求,具有较高的维护性和扩展性。SpringBoot;RBAC;医疗设备管理目录TOC\o"1-3"\h\u241271绪论 绪论课题背景现如今,在国家医疗改革的推动,以及软件工程技术的飞速发展和具有中国特色社会主义市场经济体制的迅速完善,医疗行业都在使用现代化技术手段,不断的深化改革、提高工作效率、实现无纸化办公。随着2017年最新修订《医疗器械监督管理条例》和出台的《医疗器械使用质量监督管理办法》两者都强调了在管理、使用环节中确保医疗器械质量合格对保障临床用械安全至关重要,并大幅度的增加了医疗器械使用环节的监管条款,丰富了医疗器械使用质量管理的措施,使得医院医疗器械的全生命周期精细化管理和信息化管理成为医院设备科必不可少的一部分。因此,使用计算机去代替人工管理设备的系统应运而生[1]。从医院的方面来看,有相应的设备管理系统医院能够节省了很多人力和物力,也能大使用方的精力,使得使用方腾出更多的精力去处理医院的其他业务逻辑。从使用者来看,传统的纸质化管理不便于维护,更不便于权限的分割,十分容易便可产生交互的失误,使用软件系统来管理设备可以尽量的避免人与人交互中的人为失误,使得设备管理更加的安全和完善[2]。1.2 目的及意义在如今,国家医疗改革蒸蒸日上,计算机领域发展一日千里[3],各地医院发展更是迅速,因去年疫情原因,医院数量迅速增长,2020年中国医疗机构数量将达到99.33万家,医院数量也将达到3.69万家,其中综合医院数量也呈现平稳增长特点,数量将达到2万家左右。但是面对医院如此扩张,人力物力不能尽善尽美,应运而生的就是各种医疗事故和医者纠纷,因此能够简化医疗设备管理的软件管理系统必要性也就凸显出来了,这样就可以使得医院大大节省了人力和物力,将更多的精力放在患者和医院内部管理上。基于SpringBoot的医疗设备管理系统就是为了满足这个需求而产生[4]。1.3 论文组织结构第一个章节论文的内容从课题背景以及研究课题的目的及其意义开始论述第二个章节明确系统所需要的的技术,然后对相应技术进行概述。第三个章节接着对需求进行分析,分别从技术、操作、经济以及法律进行可行性研究分析。绘制业务流程,用例图及用例描述描述核心业务对象。包括功能和非功能需求的描述。第四个章节是对系统的功能模块以及数据库进行E-R图设计。第五个章节是编码与实现,撰写核心功能模块的代码,展示各功能模块效果。第六个章节是测试软件系统,这是对代码的可靠性和正确性的必要检验。系统开发相关技术SpringBoot

SpringBoot是一个框架,一种全新的编程规范,他的产生简化了框架的使用,所谓简化是指简化了Spring众多框架中所需的大量且繁琐的配置文件,所以SpringBoot是一个服务于框架的框架,服务范围是简化配置文件。让文件配置变的相当简单、让应用部署变的简单(SpringBoot内置服务器,并装备启动类代码),可以快速开启一个Web容器进行开发[5]。一个简单的SpringBoot工程是不需要在pom.xml手动添加什么配置的,如果与其他技术合用比如PostMan(文档在线自动生成、开发功能测试的一套工具)、Swagger(文档在线自动生成、开发功能测试的一套工具),则需要在pom.xml中添加依赖,由程序自动加载依赖jar包等配置文件。Mysql MySQL是一个开源的数据库,所有人都能够获得该数据库的源码。这就促使所有人都能够调整MySQL的缺点,而且所有人都能以任意目的来应用该数据库。这一点为mysql的使用大大提升了自由度[9]。MySQL网络服务器能够在桌面上或是笔记本上与别的程序运行、web服务器这些一起轻轻松松运作。假如要将全部设备用以MySQL,还可以调节MySQL设定,以灵活运用全部的运行内存、CPU工作能力和能用的I/O工作能力。MySQL还能够拓展到一组设备,并将他们连接网络[10]。MySQL是一个完全意义上的多用户、多线程的数据库服务器。它可以迅速、高效、安全地处理大容量的数据。相对性于Oracle等数据库而言,MySQL操作起来也非常简易,其关键目的便是迅速、安全和实用。MySQL数据库遵从客户端/网站服务器架构,查询效率一直以来都是衡量数据库性能的关键因素由一个多线程的SQL服务构成[11],适用后端开发、不同用户程序和库、管理专用工具的接口。MySQL数据库安全机制也较为完善[12],MySQL服务器还可以做为内嵌式线程同步库,与应用程序进行连接,以获得更小、更快,更便于管理的独立产品。TomcatTomcat服务器是一个开源的轻量级Web应用服务器,在中小型系统和并发量小的场合下被普遍使用,是开发和调试Servlet、JSP程序的首选。

一个完整的web项目,有客户端(浏览器),服务器端,数据库(另一个服务器),你在本地安装Tomcat,就相当于你把自己电脑变成服务器,在同一个局域网内部,别人用浏览器是可以访问你发布的程序的,当然你可以在本机使用浏览器访问。当应用系统访问量比较大的时,会遇到系统运行缓慢、内存溢出等问题它都能很好的调参提升性能[13]。Tomcat所做的事情主要有:开启监听端口监听用户的请求,解析用户发来的http请求然后访问到你指定的应用系统,然后你返回的页面经过Tomcat返回给用户。能够通过配置连接Mysql数据库[14]。主要组件:服务器Server、服务Service、连接器Connector、容器Container。其中连接器Connector和容器Container是Tomcat的核心[15]。

组件之间的关系:一个容器Container和一个或多个连接器Connector组合在一起,加上其它的一些组件共同组成了一个服务Service,服务器Server提供一个或多个服务Service[16]。RBACRBAC就是一个权限控制模型,这个模型是经过时间沉淀之后,相当通用、成熟且被大众接受认可的一个模型。RBAC和数学公式是一个道理,数学题可以套用数学公式,而权限系统也可以套用RBAC权限模型。RBAC(Role-BasedAccessControl)权限模型的概念,即:基于角色的权限控制。通过角色关联用户,角色关联权限的方式间接赋予用户权限。多个用户拥有相同的权限,在分配的时候就要分别为这几个用户指定相同的权限,修改时也要为这几个用户的权限进行一一修改。有了角色后,只需要为该角色制定好权限后,将相同权限的用户都指定为同一个角色即可,便于权限管理。对于批量的用户权限调整,只需调整用户关联的角色权限,无需对每一个用户都进行权限调整,既大幅提升权限调整的效率,又降低了漏调权限的概率。系统分析系统概述本系统需要满足医院医疗设备管理的基本需要,用户可以按照自己的需求系统的管理医疗设备,用户登录后会受着自己职位的制约,只能操作权限允许范围之内的操作权限。管理员可以对用户、部门、角色权限等模块进行管理,也可以对医疗设备进行审核操作。功能性需求分析登录功能的实现在系统中通过默认访问地址访问到login页面,页面需要用户名和密码两个字段以及登录一个表单提交按钮,由于本系统是用来满足医院内部管理需要,故不需要注册功能,为了安全起见,用户管理用专门的系统管理人员统一增加。通过Shiro来实现认证的功能,拦截发去后端的请求进行认证,在认证通过后通过前端路由转到index页面,接着再由Shiro的SercurityManager授权其可见的功能模块。部门管理模块此功能主要负则医院内部各个科室的管理,计划有新增科室,删除部门,更改部门以及查询部门四个小功能。通过js技术获取前端用户传入的数据,使用ajax进行前后端交互,完成对部门的全方位管理。用户管理模块这一模块主要负则医院人事的管理,计划有新增用户,删除用户,更改用户以及查询用户四个小功能。通过js技术获取前端用户传入的数据,使用ajax进行前后端交互,完成对用户的全方位管理。此外,对用户也进行所属部门的分类。角色管理模块此模块是对RBAC权限管理阐述所衍生的模块,对应着的是医院内部的职能划分,如院长,科长等等。每个角色对用着相应的操作权限,需要有一个最高权限管理所有的权限角色,权限可以重新分配,也可以进行修改和删除,用户也可以对应相应的角色权限。设备管理模块设备管理模块是对医院设备建账流程所设计的模块,新入的设备需要进行建账审核,普通用户可以对未审核的设备进行增、删、改、查等操作,设备建账审核需要具有设备管理权限的人员进行审核,审核通过后才能成为医院的设备,才能对其进行设备的生命周期管理。设备报废管理模块设备报废管理模块是对设备管理生命周期的一个模块,当设备老旧破损到不能用的情况下可以申请报废,设备报废由相应科室去申请。其中,价值高的设备需要浏览设备具体参数后才能进行审核其是否报废。这一功能由设备管理人员进行控制。非功能性需求多模块开发方便重用,按功能需求划分具体的模块进行开发可以使得业务逻辑更加的明确,每个模块都有其自己的功能,当你引入很多个JS文件的时候,很有可能会不清楚这些JS文件之间的依赖关系,从而导致加载顺序出错。使用模块化开发之后就能避免这个问题。JS本身是没有命名空间的,为了减少命名冲突,经常使用对象或者闭包来减少命名冲突。对象只能减少命名冲突的概率,闭包的过多使用会造成内存泄漏。模块化开发之后,在模块内任何形式的命名都不会和其他模块的命名产生冲突,有效的解决了命名冲突的问题。当我们想要实现某个功能的时候,如果某个模块正好有这个功能,我们就可以直接引用该模块,不必再写多余的代码,这样可以提高代码整体的效率,减少重复冗余的代码。系统用例分析此系统是web的医疗设备管理系统,针对不同角色的用户有着不同的可见资源,角色分为管理员、设备管理员、普通用户。设备管理人员拥有系统登录、登出功能,还具有对用户、角色、岗位、进行管理,以及对设备建账和报废的审核等操作,除此之外,公告通知的发布和修改也是在管理员权限范围之内。设备管理员用例图3-1如下:图3-1设备管理员用例图(1)“设备管理员审核设备信息”用例描述如表3-1所示:表3-SEQ表格\*ARABIC1“设备管理员审核设备信息”用例描述用例名称设备管理员审核设备信息用例目的设备管理员审核设备信息参与者设备管理员前置条件设备管理员成功登录系统职工已添加设备信息设备信息未审核基本事件流(1)设备管理员登录系统(2)单击设备建账审核栏(3)进入设备信息列表页面(4)点击审核按钮(5)判断是否可以通过建账(6)点击提交按钮后置条件操作成功,提示审核成功(2)“设备管理员审核设备报废”用例描述如表3-2所示:表3-2“设备管理员审核设备报废”用例描述用例名称设备管理员审核设备报废用例目的设备管理员审核设备报废参与者设备管理员前置条件(1)设备管理员成功登录系统(2)职工已申请设备报废(3)设备信息报废未审核基本事件流(1)设备管理员登录系统(2)单击设备报废审核栏(3)进入设备信息列表页面(4)点击审核按钮(5)判断是否可以通过设备报废(6)点击提交按钮后置条件操作成功,提示审核成功(3)“设备管理员添加公告信息”用例描述如表3-3所示:表3-3“设备管理员添加公告信息”用例描述用例名称设备管理员添加公告信息用例目的设备管理员添加公告信息参与者设备管理员前置条件设备管理员成功登录系统基本事件流(1)系统后台登录(2)点击公告信息管理(3)进入公告信息列表页面(4)点击上方添加公告信息(5)输入公告相关信息(6)单击提交按钮后置条件操作成功,提示添加成功一般职工可以进行登录和登出,登录后可以查看系统的公告通知,也可以去浏览科室设备,或者申请设备建账。如果该科室设备报废可以申请去报废处理。职工用例图3-2如下:图3-2职工用例图(1)“职工添加设备信息”用例描述如表3-4所示:表3-4“职工添加设备信息”用例描述用例名称职工添加设备信息用例目的职工添加设备信息参与者职工前置条件职工成功登录系统基本事件流(1)职工登录系统(2)单击设备建账栏(3)进入设备信息列表页面(4)点击上方添加按钮(5)按要求输入设备信息(6)点击提交按钮后置条件操作成功,提示添加成功(2)“职工申请设备报废”用例描述如表3-5所示:表3-5“职工添加设备信息”用例描述用例名称职工申请设备报废用例目的职工申请设备报废参与者职工前置条件职工成功登录系统设备因损坏等其它原因进入报废期基本事件流(1)职工登录系统(2)单击设备报废栏(3)进入设备信息列表页面(4)点击上方申请报废按钮(5)点击提交按钮后置条件操作成功,进入待审核状态系统管理员是本系统最高的角色权限,具有登陆登出、用户管理、角色管理、岗位管理,部门管理和设备管理等所有模块的操作权限。管理员可随时更改任何人的信息、权限等。管理员用例图3-3如下:图3-3管理员用例图(1)“管理员添加用户信息”用例描述如表3-6所示:表3-6“管理员添加用户信息”用例描述用例名称管理员添加用户信息用例目的管理员添加用户信息参与者管理员前置条件管理员成功登录系统基本事件流(1)管理员登录系统(2)单击用户信息管理栏(3)进入用户信息列表页面(4)点击上方添加按钮(5)按要求输入用户信息(6)点击提交按钮后置条件操作成功,提示添加成功(2)“管理员删除用户信息”用例描述如表3-7所示:表3-7“管理员删除用户信息”用例描述用例名称管理员删除用户信息用例目的管理员删除用户信息参与者管理员前置条件管理员成功登录系统基本事件流(1)管理员登录系统(2)单击用户信息管理栏(3)进入用户信息列表页面(4)点击操作栏删除按钮后置条件操作成功,提示删除成功(3)“管理员添加部门信息”用例描述如表3-8所示:表3-8“管理员添加部门信息”用例描述用例名称管理员添加部门信息用例目的管理员添加部门信息参与者管理员前置条件管理员成功登录系统基本事件流(1)系统后台登录(2)点击部门管理(3)进入部门信息列表页面(4)点击下方添加部门按钮(5)输入部门信息(6)单击提交按钮后置条件操作成功,提示添加成功可行性分析经济可行性本系统是对医院的设备管理进行模拟开发,开发所需要的成本只需要一台电脑和java技术,而医院内部设备管理系统体量也比较小,因此系统的规模并不大,经济上完全可以可行的。技术可行性通过对医院设备管理流程的具体分析,同时要兼顾系统的稳定性、可扩展性和持久性,经过通读技术文档选定系统所需要的技术,本系统所需要的技术是已经在市场上运行很多年的成熟技术,java技术,SpringBoot等技术生态稳定,结构上采用传统的三层架构,View层(表现层)使用Html页面表现,BLL层(业务逻辑层)使用SpringMVC框架简化开发过程,DAO层(数据访问层)使用MyBatis框架连接数据库,访问数据库完成ORM(对象关系映射)。后台数据交由Mysql数据库存储。现有的人员资源及开发人员所掌握的技术均可满足系统的开发目的。系统需求分析已经完善,所需要的各模块的逻辑业务已经明确敲定,服务器资源采用本地主机配置服务器,可以满足系统开发。通过以上分析得出,开发本系统在技术方面是可行的。社会可行性医疗设备管理系统是为了响应国家医疗改革浪潮、简化医院内部管理而设计的,市场上各行各业成熟的设备管理系统不在少数。此系统使用了市场上成熟的B/S架构,即Browser/Server模式(浏览器/服务器模式),在通过规划医疗设备管理流程设计出适合的业务模块下提高系统的稳定性、持久性和可扩展性。此系统的业务逻辑符合现实中医院的业务逻辑,因此在社会上是可行的。系统设计系统功能结构设计系统按用户角色划分主要有系统管理员、设备管理员、普通职工三种类型,按功能结构划分也有三种类型分别是系统管理模块、设备管理模块。系统管理模块主要负责对用户角色关系进行处理以及对用户、部门和菜单等模块的管理。系统管理结构如图4-1所示:图4-1系统管理模块图设备管理模块主要负责医疗设备的生命周期管理,包括设备的建账申请模块、设备建账审核模块、设备报废申请模块以及设备报废审核模块。设备管理结构如图4-2所示:图4-2设备管理模块图系统流程设计系统登录流程设计用户管理模块只对系统管理员开放,管理员、设备管理员和职工都是用同一个login页面进行登录的,因此这个页面输入公共资源,登录时,如果密码错误或者忘记密码应该及时联系系统管理员重置密码。登录后才能才能访问公共资源和已授权资源。图4-3系统登录流程图设备管理模块流程设计当设备管理员登录验证通过后,可进行设备的生命周期管理,医院引进设备仪器皆可入账,入账审核成功后即可进行设备管理,若不通过则重新审查设备参数。待设备老化报废或者遇到不可修复的破损时可以申请报废,报废审核通过后设备进行逻辑上的删除。图4-4设备管理流程图系统数据库设计概念结构设计为了满足系统设计需要、确保系统正常运行我们设计出最重要的六个表单,并且用实体属性图描述实体属性以及实体之间的关系,可以清楚的表现出实体和实体属性之间的关系,用E-R图表示实体之间的关系。用户表包括用户ID、所属部门ID、登录账号、密码以及盐加密。用户ID为主键,是用户实体的唯一标识。登录账号以及密码是内网首页登录所需要的,且每个用户都属于一个部门,因此用户也有部门ID这个属性。盐加密是为了通过Shiro进行用户认证判断是否能够登录。图4-5用户实体属性图角色表有两个属性,包括角色id以及角色名称。这个表的功能主要是和用户表相关联,从而判断某一个用户具有什么样的角色,根据RBAC思想,用户与角色的关系是一对多的关系。角色实体属性图如下图4-6所示。图4-6角色实体属性图部门表包括部门id,父部门id,部门名称,部门负责人,负责人联系电话。这个表主要负责部门管理,关联用户表和设备表,用户和部门一对一,设备和部门也是一对一,部门实体属性图如下图4-7所示。图4-7部门实体属性图公告实体包含公告id、公告标题、公告类型、公告内容、创建者以及创建时间。唯一标识为公告id。公告实体属性图如下图4-8所示。图4-8公告实体属性图设备表包含设备id、部门id、设备名称、设备的购置日期、设备总价格、是否是高值设备、设备的规格及技术指标、设备的放置地点、设备生产厂家、是否报废的标志、设备状态、功能特色以及设备报废审核标志。设备id是唯一标识符。公告实体属性图如下图4-9所示。图4-9设备实体属性图菜单信息表包含菜单id、菜单名称、父菜单id、显示顺序、菜单类型、权限表示以及请求地址。其中菜单父子关系需要父id,权限标识是是菜单权限控制,请求地址是对菜单功能的请求路径。图4-10菜单实体属性图系统各个实体之间是有关系的。主要关系是设备实体、部门实体以及用户实体的关系。一个设备属于一个部门,而一个部门可以管理多个用户。系统总体E-R图如图4-11所示:图4-11系统总体E-R图逻辑结构设计(1)用户表(sys_user)系统数据库中的用户表表名为sys_user。用户表包括用户id、所属部门id、登录账号、密码以及盐加密。盐加密是为了通过Shiro进行用户认证判断是否能够登录。用户表如4-1所示。表4-1用户信息表字段名称字段类型长度是否为空是否为主键说明user_idint0非空是用户idlogin_namevarchar30非空否登录账户user_namevarchar30非空否用户昵称dept_idint0非空否部门idpasswordvarchar50非空否用户密码saltvarchar20非空否盐加密(2)角色表(sys_role)角色表有两个属性,包括角色id以及角色名称。这个表的功能主要是和用户表相关联,从而判断某一个用户具有什么样的角色,根据RBAC思想,用户与角色的关系是一对多的关系。表4-2角色信息表字段名称字段类型长度是否为空是否为主键说明role_idint0非空是角色idrole_namevarchar30非空否角色账户role_keyvarchar100非空否角色密码(3)部门信息表(sys_dept)部门表有6个属性,包括部门id(主键),父部门id,部门名称,部门负责人,负责人联系电话,以及部门具体的显示顺序。添加部门时候需要指定其父部门,无父部门父部门id为0。表4-3部门信息表字段名称字段类型长度是否为空是否为主键说明dept_idint0非空是部门idparent_idint0非空否父部门iddept_namevarchar30非空否部门名称order_numint0非空否显示顺序leadervarchar20非空否部门负责人phonevarchar11非空否负责人电话公告信息表(sys_notice)公告表包含公告id、公告标题、公告类型、公告内容、创建者以及创建时间。唯一标识为公告id。公告id是表的唯一标识符。表4-4公告信息表字段名称字段类型长度是否为空是否为主键说明notice_idint0非空是公告IDnotice_titlevarchar50非空否公告标题notice_typechar2非空否公告类型notice_contentvarchar500非空否公告内容设备信息表(eq_info)设备信息表的设计是为了满足设备的生命周期管理,此表设备id为唯一标识符,设备表关联部门表,每个设备都有所属的部门,其设备负责人为部门的负责人。设备高值标志为设备是否是高值设备,设备有三个状态:建账,入库,报废。表4-5设备信息表字段名称字段类型长度是否为空是否为主键说明equip_idint0非空是设备IDdept_idint0非空否部门IDeq_namevarchar100非空否名称型号eq_serial_novarchar100非空否设备序列号eq_buy_timedatetime0非空否设备购置日期eq_total_pricevarchar100非空否总价格eq_value_flagchar1非空否高值设备标志eq_placevarchar200非空否设备放置地点eq_manufacturervarchar200非空否生产厂家eq_support_phonevarchar50非空否设备售后电话eq_featuresvarchar500非空否设备功能特色eq_specificationvarchar500非空否设备的型号eq_statuschar1非空否设备状态eq_audit_flagchar1非空否审核标志菜单信息表(sys_menu)表4-6菜单信息表字段名称字段类型长度是否为空是否为主键说明menu_idint0非空是菜单IDmenu_namevarchar50非空否菜单名称parent_idint0非空否父菜单IDorder_numint0非空否显示顺序urlvarchar200非空否请求地址menu_typechar1非空否菜单类型permsvarchar100非空否权限标识系统实现开发环境介绍本系统必须在一个稳定的开发环境中进行开发,开发工具为IDEA,IDEA是市面上较为优秀稳定的开发工具,以方便、快捷开发、稳定著称。系统使用多模块构建项目的开发包架构,后端使用由Spring开发的SpringBoot2.0.5RELEASE版本框架,前端使用Thymeleaf+html+css为主,服务器搭载Tomcat运行系统,此开发环境稳定可靠且后续维护方便。系统包结构系统采用多模块设计项目包结构,按系统的模块进行划分包结构,系统项目包结构如图5-1所示:图5-1包结构图系统模块详尽设计登录模块实现登录功能模块的实现,用户需要输入正确的账号密码经过Shiro认证后才能跳转到首页页面并根据用户进行受限资源的授权,系统是被用于医院内网的设备管理系统,为了安全起见,若密码忘记应联系管理员进行密码重置。登录界面如图5-1所示。图5-2登录界面核心代码如下:@ResponseBody@RequestMapping("/login")publicAjaxResultajaxLogin(Stringloginname,Stringpassword){UsernamePasswordTokenusernamePasswordToken=newUsernamePasswordToken(username,password,rememberMe);Subjectsubject=SecurityUtils.getSubject();try{subject.login(usernamePasswordToken);returnsuccess();}catch(Exceptione){Stringmessage="用户名或密码错误";if(StringUtils.isNotEmpty(e.getMessage())){message=e.getMessage();}returnerror(message);}}查看用户模块实现用户模块的实现,用户管理员可以查看所有的用户并对用户进行管理,还可以通过Shiro对每个用户的受限资源进行访问控制和分配资源。也有对全部用户导出用户信息、删除用户等功能。用户界面如图5-2所示。图5-3用户界面用户功能核心代码如下:/***查询用户列表*/@RequiresPermissions("system:user:list")@PostMapping("/userList")@ResponseBodypublicList<User>userList(SystemUseruser){startPage();List<SysUser>UserList=userService.selectUserList(user);returnUserList;}@RequiresPermissions("system:user:rpassword")@GetMapping("/rpassword/{userId}")publicStringresetPwd(@PathVariable("userId")LonguserId,Modelmodel){Useruser=userService.selectUserById(userId);model).put("user",);returnctx+"/resetPwd";}@RequiresPermissions("system:user:rpassword")@PostMapping("/:rpassword")@ResponseBodypublicWebAjaxrpasswordSave(SystemUseruser){ Stringsalt=ShiroUtils.randomSalt() user.setSalt(salt); Stringusername=user.getName(); Stringpassword=user.getPassword()user.setPassword(passwordServiceresetPassword(uername,password,salt));userService.resetUserPwd(user)returntoWebAjax();}角色模块实现基于RBAC权限管理模式的实现,角色是必不可少的一部分,角色和权限是一对多的关系,用户和角色则是一对一的关系。角色对所有的菜单都有权限关联。界面如图图5-4角色管理界面角色功能核心代码如下:@RequiresPermissions("manager:role:prelist")@GetMapping()publicStringgetrole(){returncrt+"/role";}@RequiresPermissions("manager:role:getlist")@PostMapping("/list")@ResponseBodypublicList<systemUser>getlist(SystemRolerole){startPage();List<SystemRole>userlist=roleService.selectRoleListByrole(role);returnuserList;}<sqlid="selectRoleContactVo">selectdistinctr.role_id,r.role_name,r.role_key,r.role_sort,r.data_scope,r.status,r.del_flag,r.create_time,r.remarkfromsys_roler leftjoinsys_user_roleuronur.role_id=r.role_id leftjoinsys_useruonu.user_id=ur.user_id leftjoinsys_deptdonu.dept_id=d.dept_id</sql><selectid="selectRolesByUserId"parameterType="Long"resultMap="SysRoleResult"> <includerefid="selectRoleContactVo"/> WHEREr.del_flag='0'andur.user_id=#{userId} </select> <selectid="selectRoleById"parameterType="Long"resultMap="SysRoleResult"> <includerefid="selectRoleVo"/> wherer.del_flag='0'andr.role_id=#{roleId} </select>菜单模块实现菜单模块有级联关系,每个菜单都有其父菜单和子菜单。此模块由管理员管理,菜单分为公共资源菜单和受限资源菜单,每个菜单都有相应的接口路径和访问权限。管理员可管理每个菜单的状态,请求地址以及菜单的级联关系。界面如图5-4、5-5所示:图5-5菜单界面图5-6菜单修改界面菜单核心代码如下:/***根据用户查询菜单**@paramuserId用户信息*@return菜单列表*/@OverridepublicList<SystemMenu>selectMenusByUser(SysUseruser){List<SystemMenu>menus=newLinkedList<SystemMenu>();//管理员显示所有菜单信息if(user.isAdmin()){menus=menuMapper.selectMenuNormalAll();}else{menus=menuMapper.selectMenusByUserId(user.getUserId());}returngetChildPerms(menus,0);}<sqlid="selectMenuVo">selectmenu_id,menu_name,parent_id,order_num,url,menu_type,visible,perms,icon,create_by,create_time fromsys_menu</sql><selectid="selectMenusByUserId"parameterType="Long"resultMap="SysMenuResult"> selectdistinctm.menu_id,m.parent_id,m.menu_name,m.url,m.perms,m.menu_type,m.icon,m.order_num,m.create_time fromsys_menum leftjoinsys_role_menurmonm.menu_id=rm.menu_id leftjoinsys_user_roleuronrm.role_id=ur.role_id LEFTJOINsys_roleroonur.role_id=ro.role_id whereur.user_id=#{userId}andm.menu_typein('M','C')andm.visible=0ANDro.status=0 orderbym.order_num </select>部门模块实现部门管理是管理员所拥有的权限,部门对应着医疗设备管理的众多科室,管理员可对科室进行增、删、改、查等操作,也可以对部门的状态还有部门的父部门进行管理。部门界面如图5-6所示:图5-7部门界面核心代码如下:/***根据角色ID查询部门(数据权限)**@paramrole角色对象*@return部门列表(数据权限)*/@OverridepublicList<Map<String,Object>>roleDeptTreeData(SysRolerole){LongroleId=role.getRoleId();List<Map<String,Object>>trees=newArrayList<Map<String,Object>>();List<SysDept>deptList=selectDeptList(newSysDept());if(StringUtils.isNotNull(roleId)){List<String>roleDeptList=deptMapper.selectRoleDeptTree(roleId);trees=getTrees(deptList,true,roleDeptList);}else{trees=getTrees(deptList,false,null);}returntrees;}通知公告模块实现通知公告是一个企业级管理系统所必须的,模块分为通知和管理两部分,管理员可在此发布通知公告下达所属部门的具体事务,职工可登录系统查看通知公告内容,根据通知公告处理内部事务。通知公告界面如图5-7所示:图5-8通知公告界面核心代码如下:@RequiresPermissions("emsys:notice:list")@GetMapping()publicStringnotice(){returncrt+"/notice";}/***公告页*/@GetMapping("/notice")publicModelAndViewnotice(){ModelAndViewmodel=newModelAndView(crt+"/notice");model.addObject("notice",true);returnmodel;}设备建账模块实现医院设备管理引进设备需要进行建账处理,待审核通过后方能放入科室使用,根据最新的医疗设备参数手册,医疗设备须具有参数规格,功能特色和设备类别等功能参数。设备建账界面如图5-8、5-9所示:图5-9设备建账界面图5-10设备建账详细界面核心代码如下:@RequiresPermissions("equipment:info:view")@GetMapping()publicStringinfo(){returncrt+"/info";}/***查询设备信息列表*/@RequiresPermissions("equipment:info:list")@PostMapping("/list")@ResponseBodypublicList<EquipInfo>list(EquipInfoequipInfo){startPage();List<EquipInfo>eqList=equipInfoService.selectEquipInfoList(equipInfo);returneqList);}建账审核模块实现在此页面下的设备都是未审核入库的设备,医院设备入账后医院设备管理员需要对设备的特性、参数规格等属性进行审核查收,待设备管理员审核完成后再登录审核同意设备入库。如果是高值设备则需要对其参数详情再审查一遍才能够同意设备入库。建账审核如图5-10所示:图5-11设备建账审核界面建账审核核心代码如下:@RequiresPermissions("equipment:check:view") @GetMapping() publicStringinfo() { returncrt+"/equipInfoList"; } /** *条件分页查询设备列表 */ @RequiresPermissions("equipment:check:eqList") @PostMapping("/eqList") @ResponseBody publicList<EquipmentInfo>list(EquipmentInfoequipmentInfo) { equipInfo.setCheck(CHECK); startPage();List<EquipInfo>equipmentList=equipInfoService.selectInfoList(equipInfo); returnequipmentList; }/***设备导出*/@RequiresPermissions("equipment:check:export")@PostMapping("/equipExport")@ResponseBodypublicAjaxResultexport(EquipInfoequipInfo){ equipInfo.setCheck(CHRCK);List<EquipInfo>equipList=equipInfoService.selectInfoList(equipInfo);ExcelUtil<EquipInfo>util=newExcelUtil<>(EquipInfo.class);returnutil.exportExcel(list,"equipList");}报废审核模块实现医疗设备保质期已过则设备就进入了报废的阶段,科室的负责人可进入系统对设备管理员申请设备报废。图5-12设备报废审核界面如若是高值设备则需要浏览设备细节后才能同意报废,不同意则设备状态变回待审核状态。如图5-12所示:图5-13设备报废审核界面核心代码如下:/** *设备详情查询根据Id */ @RequiresPermissions("equipment:check:particulars") @GetMapping("/particulars/{equipId}") publicStringparticulars(@PathVariable("equipId")LongequipId,Modelmodel) { model.put("equipInfo",equipInfoService.selectInfoById(equipId)); StringparticularsPath=cxt+"/particulars" returnparticularsPath; } /** *设备审核通过check变为1 */ @RequiresPermissions("equipment:check:through") @PostMapping("/through") @ResponseBody publicWebAjaxeditCheck(Stringids) { WebAjaxwebs=equipInfoService.passAuditByIds(ids) returntoAjax(webs); }系统测试测试目的通过对软件测试的描述,能总结出软件测试的目的,以最少的人力、物力和时间找出软件中潜在的各种错误和缺陷,通过修正各种错误和缺陷保障软件质量,避免软件发布后由于潜在的软件错误和缺陷造成的隐患所带来的商业风险。同时利用测试过程中得到的测试结果和测试信息,作为后续项目开发和测试过程改进的重要输入,避免在将来的项目开发和测试中重复同样的错误;采用更加高效的测试管理手段,提高软件测试的效率和软件产品的质量。无论怎么样的流程和模式测试这个活动肯定就是降低风险,不可能做到先知预防风险,所谓预防风险就是0风险的意思,所以最终从结果来看的话还是降低风险,这点无庸置疑,但是肯定不仅仅是降低风险。从结果来看的话,其实测试的目的就是发现软件的缺陷,现在的各种开源框架,各种流程,各种模型,各种理念为的就是从项目的各个时间,各个切入点,各种深度来发现缺陷,这点也是永远不会改变的。测试方法黑盒测试测试方法通常分为黑盒测试和白盒测试。黑盒测试是从一种从软件外部对软件实施的测试,也称功能测试或基于规格说明的测试。其基本观点是:任何程序都可以看作是从输入定义域到输出值域的映射,这种观点将被测程序看作一个打不开的黑盒,黑盒里面的内容(实现)是完全不知道的,只知道软件要做什么。因无法看到盒子中的内容,所以不知道软件是如何实现的,也不关心黑盒里面的结构,只关心软件的输入数据和输出结果。与软件具体实现无关,如果软件实现发生了变化,测试用例仍可用。基本覆盖标准:逻辑驱动、循环、基路测试等,主要用于软件验证。白盒测试白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能“白盒”法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。“白盒”法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。但即使每条路径都测试了仍然可能有错误。系统测试用例为了发现系统特定功能中可能出现的错误以及功能的实现是否符合预期结果,所以进行系统用例测试,在此章节将对系统的登录模块、用户管理模块、部门管理模块、设备建账审核模块以及设备保费审核模块等进行测试。(1)登录系统测试用例表如6-1所示。表STYLEREF1\s6–SEQ表\*ARABIC\s11登录系统测试用例表功能名称登录系统测试用例编号Equip_0001测试目的登录功能是否正常、是否可以获取用户信息预期效果登陆成功测试步骤访问登录页面,输入登录信息,点击登录测试结果用户输入错误的用户名和密码登录不了测试结论登录功能测试成功(2)用户管理功能测试用例表如6-2所示。表STYLEREF1\s6–2用户管理功能测试用例表功能名称用户管理功能测试用例编号Equip_0002测试目的是否可以对用户进行增删改查预期效果增删改查成功测试步骤访问用户管理模块,添加用户后修改密码,删除用户测试结果用户管理模块增删改查正常测试结论用户管理功能测试成功(3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论