版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要第1章引言随着互联网的日渐发展,互联网的衍生技术也逐渐完善。现如今各类软件APP非常常见,软件技术发展的同时,编写软件的编码语言也变得流行。当下,B/S模式即为浏览器结合服务器的模式,此类的系统十分的普遍,编写这类系统用到的是java编码语言并使用SpringBoot架构,让程序逻辑清晰、功能模块划分明确。浏览器上页面的效果通常使用FreeMarker+js渲染。我选择的课题就是基于B/S模式的系统,也很好的运用了上面提到的技术。1.1问题的提出目前我国对防火设备的研发很关注,而且人们对防火的认识逐年提高,现在各个场所对消防设备的使用也越来越多。在上个世纪我国处于刚发展的阶段,电器方面不是很普及甚至有时供电都会出问题,大家对预防火灾的意识不是很强烈,而且防火设备十分不健全,所以那时候防火系统总会出现很多问题,以至于再发还是能火灾时不能有效工作,最后导致火灾扩张造很大的损失。而现在我国消防意识越来越强很多的公共场所如大型购物广场、高级写字楼等都安装了很多的消防系统:自动报警系统自动喷洒系统消防事故广播防火措施是否完善主要是看防火系统的好坏,整个大系统包括探测报警系统和一些消防设备在发生火灾时可否在第一时间做出响应并工作,以及对设备状态的监控和维护是否及时。因此,确保消防设备的正常工作成了安全工作中的重中之最。
通过了解网上的消防系统反馈和调查,以及指导教师的建议,自己搜集了大量的资料,从系统结构的组织,功能的实现,技术的要求以及可行性等多方面进行考虑,认为本课题是一个适应当前社会对消防监控需求的设备管理系统,具有一定的实际开发价值和使用价值。最终与指导教师沟通后选择了这个课题。1.2目的及意义为了解决以上问题,在我实习期间,我尝试了消防设备监控管理系统的开发。1.解决的问题:(1)每个设备有不同的基本信息、标识和相对应的安装管理人员,实时显示设备状态,在设备状态出现异常时提醒安装管理人员,使安装管理人员更方便的管理设备;(2)管理人员可以根据实际需求手动设置设备各个状态间的阈值,以实现针对性的管理。(3)通过实时查看设备列表、告警记录、数据统计和巡检列表等信息,以实现对整体设备情况的把控。(4)通过查看设备的基本信息、安装信息和巡检信息,了解具体设备的故障历史情况,以加强对多故障设备的维护等。综合以上几点,研究该消防设备监控管理系统有很大的必要性。1.3国内外研究现状当下我国的消防安全管理普遍存在一些问题:目前我国的城市中都使用了消防远程监控技术,这类技术在整个消防领域起着极大的作用,现在的国家正处于飞速发展的时期,自然更加重视对消防方面相关的法律法规以及防火设备的研发,对这类消防远程监控技术的要求自然也越来越严格。在当今互联网加速发展的大前提下,消防监控系统行业发展面临的机遇与挑战并存。一是,目前城市消防监控系统大体由人防和技防组成,也就是把信息通过互联网传输到总消防控制系统,平台接受信息从而可以进行监测和防范。但是这类系统在运使用中发现其使用维护成本很高、设备不兼容(接口和通道不畅),政策支撑不配套,联网监控普及率不高等问题,致使城市消防远程监控覆盖率不高。二是,联网单位消防安全主体责任不落实,消防管理水平参差不齐,部分联网单位存在消防设施设备是一次性投入终身受益的片面认识,部分单位产权不清导致消防管理责任不落实,联网单位消防远程监控设备运行不正常,完好率低误报率高;加之单位消防管理人员队伍不稳定,消防远程监控工作经费无法正常保障等原因,导致城市消防远程监控系统的重要性被弱化。三是,政策法规不配套、实际操作起来困难,很大程度的对远程消防系统使用的继续发展造成影响。因为每个城市的发展程度不同、经济不同以及发展趋势不同,从而使整个的消防监测系统行业十分复杂,且各个公司之间存在不良竞争,使整个行业的服务很难提高,也妨碍了这个行业的发展。1.4本文所用技术消防设备监控管理系统是一个前后端交互的javaweb系统,使用的编程语言是Java语言,运用了SpringBoot框架。项目的架构是基于B/S模式的。前端主要运用了FreeMarker+SCSS+JS技术。在编程过程中,使用的系统是Windows系统,用到的编译工具是ItellijIdea,数据库工具是Navicat,需求设计用Axure设计。1.4.1JavaWeb项目1.概念:JavaWeb其实就是一个技术的总和,把Web看成一个容器而已主要使用JavaEE技术来实现2.JavaWeb的整体框架:使用Servlet、Filter拦截请求使用类似MVC的思想架构使用约定,xml或者Annotation实现配置运用Java面向对象的特点实现请求和响应的流程面向对象,支持jsp,Freemarker(ftl)等视图1.4.2Java语言1.梗概:Java是Java程序设计语言和Java平台的总称。采用java完成的Hotjava浏览器突出了java的优点其中包括跨平台、动态Web以及Internet计算。2.Java语言的特性:抽象父类为子类提供一些属性和行为,子类根据业务需求实现具体的行为。抽象类使用abstract进行修饰,子类要实现所有父类抽象方法继承子类继承父类的属性和行为,并且能够根据自己的需求扩展出新的属性和行为,提高了代码的可复用性。Java继承通过extends关键字来实现,实现继承的类被称为子类,被继承的类成为父类(也称为基类、超类),父类和子类是一种特殊的关系。子类扩展父类,能获得父类的全部属性和方法。重载当子类和父类中出现相同的方法时,回显运行子类的方法。封装把对象的属性和方法结合成一个整体,并尽可能的隐藏对象内部的实现细节。多态再不修改程序代码的基础上,让程序有多种运行状态;主要是接口实现、继承父类进行方法重写,同一个方法中进行方法重载。多态存在的必要条件:要有继承、要有重写、父类引用子类对象。1.4.3Java的优点简单Java略去了运算符重载、多重继承等模糊的概念,并且通过实现自动垃圾收集大大简化了程序设计者的内存管理工作。面向对象Java语言的设计集中于对象及其接口,它提供了简单的类机制以及动态的接口模型。对象中封装了它的状态变量以及相应的方法,实现了模块化和信息隐藏;而类则提供了一类对象的原型,并且通过继承机制,子类可以使用父类所提供的方法,实现了代码的复用。可移植与平台无关的特性使Java程序可以方便地移植到网络上的不同机器。同时,Java的类库中也实现了与不同平台的接口,使这些类库可以移植。另外,Java编译器是由Java语言实现的,Java运行时系统由标准C语言实现,这使得Java系统本身也具有可移植性。动态性Java的设计使它适合于一个不断发展的环境。在类库中可以自由地加入新的方法和实例变量而不会影响用户程序的执行。并且Java通过接口来支持多重继承,使之比严格的类继承具有更灵活的方式和扩展性。1.4.4SpringBoot技术1.SpringBoot的概念:SpringBoot是一种基于Spring4的条件注册的快速开发整合包,它完成了自动配置,是项目搭建时的难度变低。2.SpringBoot实现流程(同SpringMVC):浏览器发送请求,请求发到DispatcherServletDispatcherServlet根据请求信息调用HandlerMapping,解析请求对应的Handler解析到对应的Handler后,开始由HandlerAdapter适配器处理HandlerAdapter会根据Handler来调用真正的处理器开处理请求,并处理相应的业务逻辑处理器处理完业务后,会返回一个ModelAndView对象,Model是返回的数据对象,View是个逻辑上的ViewViewResolver会根据逻辑View查找实际的ViewDispaterServlet把返回的Model传给View通过View返回给请求者(浏览器)1.4.5B/S模式B/S模式即为浏览器/\t"/item/B/S%E7%BB%93%E6%9E%84/_blank"服务器模式,这种结构是在WEB流行后出现的一类网络结构模式,WEB浏览器也是使用者最为常用的一类应用软件。B/S模式集中了客户端,把整个系统的功能的中心位置放在了服务器上,使整个系统的开发、日常维护和使用变得更为简便。使用者的电脑上仅仅只需要下载一个浏览器例如\t"/item/B/S%E7%BB%93%E6%9E%84/_blank"NetscapeNavigator和\t"/item/B/S%E7%BB%93%E6%9E%84/_blank"InternetExplorer,如\t"/item/B/S%E7%BB%93%E6%9E%84/_blank"服务器安装\t"/item/B/S%E7%BB%93%E6%9E%84/_blank"SQLServer、\t"/item/B/S%E7%BB%93%E6%9E%84/_blank"Oracle、MYSQL等数据库。浏览器则使用WebServer和数据库来信息交换。1.4.6FreeMarkerFreeMarker是一种使用Java语言编辑出来的模板引擎,这类引擎根据样板来进行文本输出。FreeMarker和Web容器并无关系,就是当Web工作中,其并不能检测到Servlet或HTTP。FreeMarker也可以用来表现层的实现技术和生成XML,JSP或Java等。现在公司用到FreeMarker一般是用来做静态页面。样板编辑为FreeMarkerTemplateLanguage(FTL)。它是简单的,专用的语言,不是像PHP那样成熟的编程语言。也就是说要提供真实的数据在编程语言中来显示,例如数据库的查询以及业务的运算等,在然后模板就会显示已经准备好的信息。在模板中,要重点关注怎么展现数据,在模板外就要重点关注要展示什么样的数据。1.4.7JS+JqueryjQuery是一种JavaScript框架它的优点是快速和简便,是一个很好的JavaScript代码库。jQuery它的设计理念是“writeLess,DoMore”,也就是用少量的代码来实现更多的功能。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计以及Ajax交互。1.4.8Intellij工具IntelliJ其实就是一种综合的Java
编程环境,这种编程环境被很多的研究开发人员及行业内的专家评为市面上最突出的IDE。此工具提供了如下最实用的工具组合:智能编码辅助和自动控制支持J2EE、Ant、Junit、CVS集成非平行的编码检查和创新的GUI设计器Java开发人员因为IDEA的存在大大提高了工作的效率,节省了很多时间。其优点如下1.运行的速度极快。2.生成的代码较好。3.十分简易。4.性价比很高。1.4.9Navicat工具Navicat就是一种数据库管理工具,它的优点是速度快、安全可靠而且价格亲民,它就是为了使数据库管理简单化并且节省系统管理成本而设计的。这种工具的设计完美的贴合了数据库管理员、公司以及开发人员的需求。Navicat是以直觉化的图形用户界面而建的,让你可以以安全并且简单的方式创建、组织、访问并共用信息。1.4.10MySQL工具MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,目前属于
Oracle
旗下产品。MySQL目前属于十分流行的关系型数据库管理系统,在WEB应用方面,MySQL是最为突出的
RDBMS即关系数据库管理系统的一类应用软件。MySQL使一类关系数据库管理系统,它将信息存储在不一样的表中,并不是把所有的信息都存储在大的仓库内,从而使速度加快并且更为灵活。MySQL采用的语言是访问数据库最为广泛应用的标准化语言即为SQL语言,MySQL软件使用了双授权政策,其中分为两个半块即为社区版和商业版,MySQL它的占地小、反应速度灵敏、价格低并且开放码源,因为这些优点使大部分的中小型的网站开发都使用其作为数据库。因为他的社区版的功能十分强大,所以采用PHP
和
Apache
能够构成一个很好的开发环境。1.4.11MongoDB工具MongoDB是一个基于分布式文件存储的数据库。使用C++语言编写。主要是为了给WEB应用供给能够扩展的高性强大的数据存储的解决办法。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,所以他能够存储相对较为复杂的数据类型。它有着一个很大的优点就是可支持的查询语言十分巨大,MongoDB的语法和面向对象的查询语言有些相似,基本上可以实现类似关系数据库单表查询的很大一部分功能并且可以支持对数据建立索引。1.5方案论述及其可能性1.5.1使用C语言编写项目采用C语言编写的程序需要代码量小,运行速度也比较快。但是C语言危险性较高,开发周期长,可移植性差。因为C语言危险性较高,所以编写公司管理系统时,会遇到很多bug,因为开发周期长,所以会浪费很多人力资源和财力资源。可移植性差指,C语言不能跨平台,所以编写好的程序可能不适用所有员工,因为不同的员工可能使用不同的系统。所以综上所述,使用C语言编写消防设备监控管理系统可行性不高。1.5.2使用C++编写项目C++语言是面向对象的语言,但是C++是基于C语言,所以C++语言面对对象不够完全,还会有面向过程的影子。而且C++的指针操作麻烦,而且C++没有网页插件编程能力。综上所述,使用C++语言编写消防设备监控管理系统可行性不高。1.5.3使用Java语言编写项目Java语言提供了对web应用开发的支持。比如说Applet、servlet以及jsp能够用来开发web应用程序;socket、rmi能够用来开发分布式应用程序的类库;因为本系统不仅包含了后台逻辑的编写,还包含了前端页面效果的展示,所以使用Java语言对本设计最为合适。第2章需求分析第2章需求分析2.1梗概这节使用了软件工程的方式对本设计的系统实行了去求分析,其中包含了系统需实现的目标、功能及非功能性的需求以及数据需求。2.2本系统目标2.2.1整体系统目标管理方(平台端web、巡检安装app):实现管理设备、客户方信息,以及检修之类相关工作;客户方(管理端web、查看端web、客户查看app):可实现对设备组的管理,包括设备、资源、系统和园区的管理;以及查看巡检列表、告警列表和数据统计,还有对应急预案和平台基础数据的管理,对实时数据的监控,包括设备、资源和系统数量,对不同状态设备的统计和管理,对巡检列表和应急预案的查看操作。2.2.2具体目标1.人员管理:可以对客户、巡检安装人员和管理员进行新增、删除、编辑和查询等操作,用来以不同的身份登录相对应的app进行操作。2.设备管理:可以对设备类型和传感设备进行管理,其中“设备类型”是“传感设备”的必填字典项,用来区分不同类型的设备。3.巡检安装管理:可以查看巡检记录和安装记录。4.设备组管理:管理员可以对设备、资源、系统和园区进行管理,其中资源和系统是设备的必填字典项,园区和设备是一对多的关系。5.应急预案、告警列表管理:管理员可以对应急预案进行新增、编辑等操作,以及查看告警列表;6.数据统计:管理人员能够提取设备类型统计和不一样的问题类型的设备统计等。2.3业务流程图2-1时序图2.4功能需求2.4.1涉众分析角色职责或功能管理员登录系统后,可以管理设备组(包括设备、系统、资源和园区)、角色、应急预案和平台基础数据,查看告警列表、实时数据统计以及巡检安装列表。客户登录系统后,可以查看设备信息,或使用地图模式查看局部区域设备;还可以查看巡检列表、应急预案、告警列表和数据统计图。巡检员登录app后,可以完成对设备的巡检、查看和查询等操作。安装员登录app后,可以通过扫描二维码或手动输入设备号完成对设备的安装等操作。客户查看员登录系统后,可对实时数据的监控,包括设备、资源和系统数量,对不同状态设备的统计和管理,以及对巡检列表和应急预案的查看操作。客户管理员登录系统后,可实现对设备组的管理,包括设备、资源、系统和园区的管理;以及查看巡检列表、告警列表和数据统计,还有对应急预案和平台基础数据的管理。2.4.2用例分析图2-2用例图表2-1角色管理用例用例名1.角色管理用户管理员前置条件进入平台端web流程进入平台端web点击左侧“人员管理”,点击不同子导航栏后,表格显示不同角色的信息列表。点击操作中的按钮来操作角色信息,如新增一位客户。异常流备选流表2-2设备管理用例用例名2.设备管理用户管理员前置条件进入平台端web流程进入设备管理模块进入传感设备管理,新增传感设备进入设备类型管理,新增设备类型异常流备选流表2-3巡检安装管理用例用例名3.巡检安装管理用户管理员前置条件进入平台端web流程进入巡检记录模块,点击各项查看巡检信息进入安装记录模块,点击各项查看安装信息异常流备选流表2-4应急预案管理用例用例名4、应急预案管理用户客户管理员前置条件进入管理端web流程客户管理员进入管理端web系统进入应急预案管理模块管理应急预案信息,新增、删除或者修改应急预案异常流备选流表2-5告警设置用例用例名5、告警设置用户客户管理员前置条件进入管理端web流程客户管理员进入管理端web系统点击平台基础数据进入告警设置模块,添加新的告警设置异常流备选流2.5数据需求2.5.1需要处理的数据1.客户管理:客户Id,客户名称,企业码,服务地址,邮箱,手机,经营范围,行业类型,账号状态,备注2.角色管理:角色Id,角色名,描述,成员,状态,权限。3.设备管理:设备Id,客户名称,设备号,别名,设备类型,联网方式,设备接入协议,备注,设备类型名称,设备类型协议标识,资源名称,资源通知人,资源应用类别,资源设备,系统名称,系统通知人,系统应用类别,系统资源,园区名称,园区围栏4.应急预案管理:标题,内容,附件5.告警设置:安全等级,通知方式,设备别名,资源,系统,提醒内容。2.5.2数据的属性图2-3系统总体实体属性图图2-4客户实体属性图图2-5巡检安装人员实体属性图图2-6传感设备实体属性图图2-7告警设置实体属性图图2-8应急预案管理实体属性图2.6非功能性需求2.6.1可靠性可靠性就是指在一定的时间内和某种条件下系统软件能够实现的性能的一种属性。具体包括如下:易恢复性:这个系统在静置5分钟不使用后再次操作需要重新登录系统才能再次进入系统操作。这类非功能需求通常是全局的,他除了与系统运行环境、平台选择、代码质量相关之外,还会涉及部分技术性功能需求,他别是容错性、易恢复性的实现都需要一些具体的功能来支持。2.6.2易用性易用性就是指使用者在使用软件过程中的所做的努力以及对使用过程的评价的一种属性。具体包括如下:易理解性消防设备监控管理系统在投入使用之前会编写使用文档,而且系统本身含有导航栏,功能模块一目了然,和容易理解易学习性该系统只需要在Intellijidea上运行,之后在浏览器上进行操作,很好操作,极易学习易操作性该系统主要的操作就是输入信息,和跳页查看,很容易操作这类非功能需求是与UI设计、联机帮助系统有着直接关系的,易理解性和易学习性通常和界面导航、联机帮助有关,可以归纳为界面友好性;易操作性则会和界面元素设计有关。也就是说这类属性会关联到具体的技术性功能需求。2.6.3维护性维护性就是需要特定的修改是所做的努力的一种属性。具体包括如下:稳定性系统很稳定,因为数据量不是很大,内存足够,所以不会崩坏易测试性因为公司管理系统流程完整,所以极易测试这部分通常是开发团队最容易投入时间和成本的地方,诸如动态属性支持、UI界面生成、流程引擎等都是为了提高系统的可维护性,因此它显然是会引申出相关的技术性功能需求的。2.6.4可移植性可移植性就是说软件能够在某一个环境中转移至其他一个环境中的一种属性。具体包括如下:适应性因为该系统使用java语言进行编写,而java程序可以跨平台易安装性该系统在打包之后,可以在任意电脑上运行这种特性不仅要挑选对的开发工具和平台,而且也会有一些技巧性的功能需求,如全球语言支持等。2.7社会、健康、安全、法律、文化及环境等因素需求社会:经济效益上,用了管理系统后,节省了许多时间,也就节省了效率成本,节省成本,提高效率,经济自然也随之上升。社会效益来讲,单位效益提升后,社会效益自然也随之提升。健康:健康方面,整体页面清晰简洁,页面格式化,易理解,使用的颜色搭配是蓝绿色,看起来清新健康。安全:安全方面,比较隐秘的账号密码信息,数据都做MD5加密处理,并且代码内部使用shrio权限拦截,很好了保障了系统的安全性。法律:该系统符合法律规定。运行环境:该系统是在tomcat部署下的系统,目前运行在Windows系统下,默认浏览器使用Google。第3章系统概要设计第3章系统概要设计3.1系统概述本课题所说的系统全名叫消防设备监控管理系统,系统目的是用于辅助单位管理消防设备体系的工作情况,及时把控风险,维护正常的设备工作状态,以应对突发状况。该系统是在Tomcat下部署的javaWeb项目,目前得系统是Windows系统。这类系统采用java语言编写,数据库则采用mysql和mongoDB数据库。该系统主要包括:人员管理,设备管理、巡检安装管理、应急预案管理、平台基础数据(包括告警设置等)这几个主要的模块。主要内容及流程是,进入管理端web中平台基础数据的角色管理,添加新用户,用户可以是管理员或查看员。然后到管理员管理设置角色。管理员有权限管理设备组(包括编辑和查看设备的信息和阈值,以及资源、系统和园区管理),应急预案和告警设置,以及查看告警列表、巡检列表和数据统计等;进入平台端web中的管理员管理中添加新用户,然后可以新增客户或巡检安装人员,客户可以登录查看端app或是查看端web来查看设备实时数据等信息,巡检安装人员能够巡逻检查以及安装设备等。3.2系统设计遵循的原则及方法系统设计的第一原则就是必须实现系统设计的目标,并且使资源利用率尽可能提高。在系统设计时,就应该遵循如下的原则。系统性原则在系统设计中,要从整个系统的角度进行考虑,使系统有统一的信息代码、统一的数据组织方法、统一的设计规范和标准,以提高系统的设计质量经济性原则经济性原则是指在满足系统要求的前提下,尽可能减少系统的费用支出。一方面,在系统硬件投资上不能盲目追求技术上的先进,而应以满足系统应用需要为前提。另一方面,系统设计应避免不必要的复杂化,各模块应尽可能简洁,以便缩短处理流程,减少处理时间可靠性原则可靠性既是评价系统设计质量的一个重要指标,又是系统设计的一个基本出发点。只有设计出的系统是安全可靠的,才能在实际中发挥它应有的作用。一个成功的管理信息系统必须具有较高的可靠性,如安全保密性、检错及纠错能力、抗病毒能力、系统恢复能力等简单性原则在系统达到预定目标、完成规定功能的前提下,应该尽量简单。具体来说,在设计过程中,要设法减少数据输入的次数和数量,提高系统中数据的共享性;要使操作简单化,使用户容易理解操作的步骤和要求,确保用户的主动地位;系统结构清晰合理,易于理解和维护灵活性原则系统对外界环境的变化要有很强的适应能力,系统容易修改和维护。因此系统设计人员要有一定的预见性,要从通用的角度考虑系统设计3.3面向对象的结构设计(系统架构图或功能框图)3.3.1系统架构图图3-1系统架构图图3-2功能架构图3.3.2功能结构设计图3-3功能结构图 3.4功能模块设计表3-1功能模块表逻辑类名包含方法客户管理控制类ClientController页面显示getClientList()新增客户addClient()获取客户信息getClient()更新客户信息updateClient()删除客户deleteClient()更新客户密码updatePassword()角色管理控制类RoleController页面显示getRoleListPage()添加新角色addRole()删除角色deleteRole()得到角色信息getRole()更新角色信息updateRole()设备管理控制类EquipmentController页面显示getEquipmentListPage()添加设备addEquipment()查看设备详细信息viewEquipment()根据设备名查找getEquipmentByName()新增设备信息addEquipmentInfo()修改设备信息updateEquipmentInfo()安装管理控制类InstallController显示页面getEquipmentCategoryListPage()通过id查找getIdByNo()通过别名查找getIdByAlias()新增设备关联客户insertEqClientData()新增安装信息insertInstall()个人信息管理控制类AppMineController页面显示getStaffById()获取查看员信息getViewPeopleStaff()修改手机号updatePhone()修改密码updatePassword()获取巡检记录getInspectionByStaffId()获取待巡检getWaitInspectionByStaffId()巡检管理控制类InspectionController显示页面getInspectinList()获取设备巡检页面getEqInspectionList()获取详细设备巡检信getEqInspection()告警管理控制类AlmAlarmController显示页面getAlarmList()显示设备告警信息getAlarmListByEquipmentId()3.5数据库设计(概念模型、逻辑模型与物理模型)设计原则:设计该系统时,严格遵守以下原则:统一性原则按照国家的法律政策,兼顾业务处理的特殊性适用性原则系统提供灵活的设置,最大限度的适应未来业务的发展易用性原则不同的人员都可以操作该系统可靠性原则系统的恢复性强,一时的系统故障,系统可以进行恢复安全性原则系统具有不同的安全级别及操作权限,系统要充分发挥操作系统、数据库、应用软件三层安全保证措施,以保证数据的安全性健壮性原则指系统接受大量的外部数据,系统应对错误的数据和结构不合理的数据进行识别,拒绝接受错误数据和结构不合理数据易二次开发指代码可维护在未来业务变更时可扩充修改3.5.1逻辑模型以下分别是系统逻辑模型和业务逻辑模型:图3-4系统逻辑模型图3-5业务逻辑模型3.5.2物理模型表3-2商业分析表名称类型空默认值其他备注idint(11)否<auto_increment>
namevarchar(50)是<空>
类型:例如:学校,工厂,商场,市场summaryvarchar(50)是<空>
概述:例如:不合理表3-3商业分析细节表名称类型空默认值其他备注idint(11)否<auto_increment>
business_analysis_idint(11)是<空>
typevarchar(50)是<空>
类型:例如:节省人力,提高效率detailvarchar(50)是<空>
详述:例如:12%,11%表3-4告警列表名称类型空默认值其他备注idint(11)否<auto_increment>
equipment_idint(11)是<空>
safety_levelint(11)是<空>
告警安全等级:dictionary字典项:1:正常;2:临界;3:告警;4:协议错误;5:离线;datalongtext是
告警时的数据happen_timedatetime是<空>
告警产生时间recover_timedatetime是<空>
告警恢复时间表3-5设备状态表名称类型空默认值其他备注idbigint(20)否<auto_increment>
equipment_idint(11)否
timedatetime是<空>
safety_levelint(11)是<空>
安全等级:dictionary字典项:1:正常;2:临界;3:告警;4:协议错误;5:离线;alarm_idint(11)是<空>
表3-6设备状态数据表名称类型空默认值其他备注idbigint(20)否<auto_increment>
equipment_idint(11)否
timedatetime是<空>
safety_levelint(11)是<空>
安全等级:dictionary字典项:1:正常;2:临界;3:告警;4:协议错误;5:离线;alarm_idint(11)是<空>
表3-7应用类别表名称类型空默认值其他备注idbigint(20)否<auto_increment>
equipment_idint(11)否
timedatetime是<空>
safety_levelint(11)是<空>
安全等级:dictionary字典项:1:正常;2:临界;3:告警;4:协议错误;5:离线;alarm_idint(11)是<空>
表3-8资源表名称类型空默认值其他备注idint(11)否<auto_increment>
namevarchar(30)是<空>
资源名称stateint(11)是1
状态:0:删除;1:正常;create_timedatetime是<空>
update_timedatetime是<空>
operator_idint(11)是<空>
operate_timedatetime是<空>
表3-9资源设备关系表名称类型空默认值其他备注asset_idint(11)否
equipment_idint(11)否
表3-10园区表名称类型空默认值其他备注idint(11)否<auto_increment>
namevarchar(30)是<空>
名称create_timedatetime是<空>
operator_idint(11)是<空>
operate_timedatetime是<空>
stateint(11)是1
状态:0:删除;1:正常表3-11园区设备表名称类型空默认值其他备注district_idint(11)是<空>
equipment_idint(11)是<空>
表3-12围栏详细表名称类型空默认值其他备注idint(11)否<auto_increment>
district_idint(11)是<空>
longitudenumeric(20,6)是<空>
经度latitudenumeric(20,6)是<空>
纬度operator_idint(11)是<空>
operate_timedatetime是<空>
stateint(11)是1
状态:0:删除;1:正常表3-13设备表名称类型空默认值其他备注idint(11)否<auto_increment>
equipment_novarchar(30)是<空>utf8mb4_bin设备号aliasvarchar(50)是<空>
别名remarkvarchar(100)是<空>
备注stateint(11)是<空>
设备状态:0:已删除;1:未安装;2:已安装;versionint(11)是<空>
版本:记录修改的版本号,用于信息同步(平台端eq_equipment_client_data表),每次更新需要通过更新此字段;create_timedatetime是<空>
update_timedatetime是<空>
operator_idint(11)是<空>
operate_timedatetime是<空>
表3-14设备组类型表名称类型空默认值其他备注idint(11)否<auto_increment>
categoryint(11)是<空>
类别:1:系统;2:资源;3:设备;business_idint(11)是<空>
类别对应的业务id:当category=1时,该字段存储system_id;当category=2时,该字段存储asset_id;当category=3时,该字段存储equipment_id;category_idint(11)是<空>
表3-15设备信息表名称类型空默认值其他备注idint(11)否<auto_increment>
equipment_idint(11)是<空>
dictionary_idint(11)是<空>
字典项属性:联网方式,设备接入协议dictionary_value_idint(11)是<空>
字典项属性值表3-16系统表名称类型空默认值其他备注idint(11)否<auto_increment>
namevarchar(30)是<空>
系统名称stateint(11)是<空>
状态:0:删除;1:正常;create_timedatetime是<空>
update_timedatetime是<空>
operator_idint(11)是<空>
operate_timedatetime是<空>
表3-17系统资源关系表名称类型空默认值其他备注system_idint(11)否
asset_idint(11)否
表3-18阈值表名称类型空默认值其他备注idint(11)否<auto_increment>
threshold_group_idint(11)是<空>
typevarchar(50)是<空>
标识:例如:voltagenamevarchar(50)是<空>
阈值名:温度,湿度等等compareint(11)是<空>
比较类型:1:小于等于;2:大于等于;first_thresholdvarchar(100)是<空>
第一个阈值second_thresholdvarchar(100)是<空>
第二个阈值unitvarchar(50)是<空>
create_timedatetime是<空>
operator_idint(11)是<空>
operate_timedatetime是<空>
表3-19阈值组表名称类型空默认值其他备注idint(11)否<auto_increment>
equipment_idint(11)是<空>
equipment_category_idint(11)是<空>
表3-20告警通知记录表名称类型空默认值其他备注idbigint(20)否<auto_increment>
notice_idint(11)是<空>
user_idint(11)是<空>
通知人alarm_idint(11)是<空>
safety_levelint(11)是<空>
告警通知类型:dictionary字典项:1:正常;2:临界;3:告警;4:协议错误;5:离线;notice_modeint(11)是<空>
通知方式:1:平台,2:短信;3:邮件;contentlongtext是
通知内容notice_timedatetime是<空>
通知时间表3-20告警设置表名称类型空默认值其他备注idint(11)否<auto_increment>
remindvarchar(1000)是<空>
提醒内容:自定义标识站位符:{state}:设备状态;{system}:系统名称;{asset}:资源名称;{equipmentAlias}:设备别名;{equipmentData}:设备值;create_timedatetime是<空>
operator_idint(11)是<空>
operate_timedatetime是<空>
表3-21告警详情表名称类型空默认值其他备注idint(11)否<auto_increment>
alarm_settings_idint(11)是<空>
categoryint(11)是<空>
类别:1:系统;2:资源;3:设备;business_idint(11)是<空>
类别对应的业务id:当category=1时,该字段存储system_id;当category=2时,该字段存储asset_id;当category=3时,该字段存储equipment_id;表3-22告警设置信息表名称类型空默认值其他备注idint(11)否<auto_increment>
alarm_settings_idint(11)是<空>
info_typeint(11)是<空>
信息类别:1:安全等级;2:通知方式;info_valueint(11)是<空>
信息值:当info_type=1时:告警通知类型:2:临界;3:告警;4:协议错误;5:离线;当info_type=2时:通知方式:1:平台,2:短信;3:邮件;表3-23通知表名称类型空默认值其他备注idint(11)否<auto_increment>
user_idint(11)是<空>
要通知的人categoryint(11)是<空>
类别:1:系统;2:资源;3:设备;business_idint(11)是<空>
类别对应的业务id:当category=1时,该字段存储system_id;当category=2时,该字段存储asset_id;当category=3时,该字段存储equipment_id;create_timedatetime是<空>
operator_idint(11)是<空>
operate_timedatetime是<空>
stateint(11)是1
状态:0:删除;1:正常;表3-24设备类型表名称类型空默认值其他备注idint(11)否<auto_increment>
protocol_identificationvarchar(1000)是<空>
协议标识is_reverse_controlint(11)是<空>
反向控制:0:否;1:是;namevarchar(15)是<空>
名称remarkvarchar(100)是<空>
备注stateint(11)是1
状态:0:删除;1:正常versionint(11)是<空>
版本:从平台端那里同步数据时的版本号;synchronize_timedatetime是<空>
同步时间表3-25数据字典表名称类型空默认值其他备注idint(11)否<auto_increment>
namevarchar(50)是<空>
字典名versionint(11)是<空>
版本:从平台端那里同步数据时的版本号;synchronize_timedatetime是<空>
同步时间表3-26数据字典值表名称类型空默认值其他备注idint(11)否<auto_increment>
dictionary_idint(11)是<空>
valuevarchar(50)是<空>
字典值stateint(11)是1
状态:0:删除;1:正常versionint(11)是<空>
版本:从平台端那里同步数据时的版本号;synchronize_timedatetime是<空>
同步时间;表3-27应急预案表名称类型空默认值其他备注idint(11)否<auto_increment>
titlevarchar(30)是<空>
标题contentlongtext是
内容:富文本publish_user_idint(11)是<空>
发布人upload_timedatetime是<空>
上传时间operator_idint(11)是<空>
operate_timedatetime是<空>
表3-28设备巡检表名称类型空默认值其他备注idint(11)否<auto_increment>
equipment_idint(11)是<空>
platform_staff_idint(11)是<空>
巡检员:属于平台端数据platform_inspection_personvarchar(50)是<空>
巡检人员姓名:属于平台端数据platform_inspection_phonevarchar(50)是<空>
巡检人员手机号:属于平台端数据fault_typevarchar(100)是<空>
故障类型:dictionary字典项,使用逗号分割remarkvarchar(100)是<空>
巡检备注inspection_statusint(11)是<空>
巡检状态:2:已确认;3:已巡检;inspection_timedatetime是<空>
巡检时间表3-29设备安装表名称类型空默认值其他备注idint(11)否<auto_increment>
equipment_idint(11)是<空>
platform_staff_idint(11)是<空>
安装人职员id:属于平台端数据platfrom_install_personvarchar(50)是<空>
安装人员姓名:属于平台端数据platform_install_phonevarchar(50)是<空>
安装人员手机号:属于平台端数据;longitudenumeric(20,6)是<空>
经度latitudenumeric(20,6)是<空>
纬度remarkvarchar(100)是<空>
安装备注install_timedatetime是<空>
安装时间3-30视频监控表名称类型空默认值其他备注idint(11)否<auto_increment>
namevarchar(50)是<空>
视频名urlvarchar(1000)是<空>
视频地址thumbnailvarchar(1000)是<空>
缩略图表3-31统计缓存表:设备类型具体数值合计名称类型空默认值其他备注index_idbigint(20)否
daydate是<空>
typevarchar(50)是<空>
标识:例如:voltagesumnumeric(20,5)是<空>
和avgnumeric(20,5)是<空>
这一天的平均值表3-32统计缓存表:设备数量名称类型空默认值其他备注index_idbigint(20)否
daydate是<空>
equipment_countint(11)是<空>
设备数量表3-33统计缓存表:短信数量名称类型空默认值其他备注index_idbigint(20)否
daydate是<空>
sms_countint(11)是<空>
短信数量表3-34统计查询索引表名称类型空默认值其他备注idbigint(20)否<auto_increment>
daydate是<空>
日期application_typeint(11)是<空>
应用类别:dictionary字典项category_idint(11)是<空>
设备类型system_idint(11)是<空>
系统asset_idint(11)是<空>
资源safety_levelint(11)是<空>
异常类型/状态/安全等级:dictionary字典项:1:正常;2:临界;3:告警;4:协议错误;5:离线;表3-35附件表名称类型空默认值其他备注idint(11)否<auto_increment>
b_idvarchar(11)是
业务单号table_namevarchar(50)否
业务表名attachment_typetinyint(2)否1
附件类型,为了区分一个业务表多个附件的情况pathvarchar(500)否
附件存储地址store_namevarchar(50)否
以uuid命名的实际文件名urlvarchar(500)是
附件访问urlfile_namevarchar(200)是
附件名extensionvarchar(50)否
扩展名sizevarchar(50)是
附件大小,以字节单位存储delete_statustinyint(1)是0
目前是否标记为删除0未删除1删除statustinyint(1)否0
状态:0业务单未保存,临时附件,1业务单已保存creator_idvarchar(11)是
创建人idcreate_timedatetime是<空>
创建时间表3-36数据备份表名称类型空默认值其他备注backup_idint(11)否<auto_increment>
备份idbackup_timedatetime是<空>
备份生成时间sql_pathvarchar(200)是<空>
备份sql文件存放位置backup_typeint(1)是<空>
备份类型,1为系统自动,2为手动operator_namevarchar(20)是<空>
备份人姓名statusint(1)是<空>
备份状态backup_memovarchar(500)是<空>
备份原因operator_idint(11)是<空>
备份人id,系统自动备份为0,其他按用户id存3.6界面原型设计1.管理端web登录图3-6管理端web登录图2.设备组管理页面图3-7设备组管理页面图3.巡检列表页面图3-8巡检列表页面图4.应急预案管理页图3-9应急预案管理页面图5.告警列表页图3-10告警列表页面图6.数据统计页图3-11数据统计页面图7.平台端web客户管理页3-12平台端web客户管理页面图8.查看端web首页图3-13查看端web首页9.巡检安装app登录页图3-14巡检安装app登录页面图10.巡检安装app首页图3-15巡检安装app首页11.巡检安装app设备详细页面图3-16巡检安装app设备详细页面12.客户查看app首页图3-17客户查看app首页13.客户查看app巡检详细页图3-18客户查看app巡检详细页3.7典型算法设计图3-19告警及恢复流程图图3-20巡检安装app扫一扫逻辑流程图第4章系统详细设计与实现第4章系统详细设计与实现4.1系统的工程结构图4-1系统工程结构图图4-2系统工程结构图图4-3系统工程结构图4.2面向对象的程序实现(关键技术问题的解决方法、伪代码或代码)巡检安装app扫码及回调://扩展API加载完毕后调用onPlusReady回调函数
document.addEventListener("plusready",onPlusReady,false);
//扩展API加载完毕,现在可以正常调用扩展API
functiononPlusReady(){
vare=document.getElementById("scan");
}
/*adapter.backToIndex(true).ready(function(){*/
$(function(){
varcurrentHeight=document.body.offsetHeight;
$("#bcid").css("height",currentHeight);
startRecognize();
/*createView();*/
});
/*});*/
varscan=null;
functiononmarked(type,result){
ajax({
type:'post',
url:"/platform/install/getInstallStatus",
data:{equipmentNo:result},
success:function(res){
if(res.code==="OK"){
varstatus=res.data.installStatus;
if(status==="1"){
/*未安装*/
if(localStorage.getItem("type")==="1"||localStorage.getItem("type")==="3"){
/*用户身份为“安装员”,跳到安装页面*/
localStorage.setItem("equipmentNo",result.toString());
/*closeView();*/
adapter.closeWebview();
adapter.openWebview({
url:"/widget/html/install/deviceNumber.html",
back:true,
title:{
text:"安装",
backBtn:true
}
});
}else{
/*用户身份为“巡检员”,弹出提示*/
plus.nativeUI.alert("设备未安装");
/*closeView();*/
adapter.closeWebview();
}
}
}
},error:function(res){
varstatus=res.data.installStatus;
varid=res.data.equipmentId;
if(status==="2"){
/*已安装*/
ajax({
type:'get',
url:"/platform/equipment/detail",
data:{
id:id
},
success:function(eq){
if(eq.code==="OK"){
vardata=eq.data;
if(localStorage.getItem("type")==="2"||localStorage.getItem("type")==="3"){
/*用户身份为“巡检员”,自动确认巡检并跳到填写巡检信息页面*/
varconfirm=data.confirmStatus;
if(confirm==="1"){
/*待确认*/
varequipmentId=eq.data.id;
ajax({
url:'/platform/equipment/confirmInspection',
type:"post",
dataType:'json',
data:{
id:equipmentId,
},
success:function(ins){
/*确认设备*/
if(ins.code==="OK"){
/*设备已安装*/
/*alert(ins.msg);*/
/*closeView();*/
adapter.closeWebview();
adapter.openWebview({
url:'/widget/html/inspection/inspection.html',
data:{id:equipmentId},
back:true,
title:{
text:"巡检",
backBtn:true
}
});
}else{
plus.nativeUI.alert(ins.msg);
/*closeView();*/
adapter.closeWebview();
}
},error:function(ins){
/*确认失败,设备已被其他用户确认*/
plus.nativeUI.alert("确认失败,设备已被其他用户确认");
/*closeView();*/
adapter.closeWebview();
}
})
}else{
/*closeView();*/
adapter.closeWebview();
adapter.openWebview({
url:'/widget/html/equipment/detailedEquipment.html',
data:{id:id},
back:true,
title:{
text:"设备详细",
backBtn:true
}
});
}
}else{
/*用户为“安装员”*/
/*closeView();*/
adapter.closeWebview();
adapter.openWebview({
url:'/widget/html/equipment/detailedEquipment.html',
data:{id:id},
back:true,
title:{
text:"设备详细",
backBtn:true
}
});
}
}
}
});
}else{
/*设备号未找到,提示并返回首页*/
plus.nativeUI.alert(res.msg);
/*closeView();*/
adapter.closeWebview();
}
}
});
}
/*document.addEventListener('HeaderBarClick',function(e){
if(e.detail.target==='backConfirm'){
adapter.closeWebview({from:'back'},function(){
closeView();
});
}
},false);*/
functioncreateView(){
varview=newplus.nativeObj.View('text',{top:'72%',left:'0px',height:'44px',width:'100%'});
//绘制文本
view.drawText('将二维码放入框内,即可自动扫描',{top:'0',left:'0px',width:'100%',height:'100%'},{color:'#B8B8B8'});
view.show();
}
functioncloseView(){
varview=plus.nativeObj.View.getViewById('text');
if(view){
view.close();
}
}
functionstartRecognize(){
scan=newplus.barcode.Barcode('bcid');
scan.onmarked=onmarked;
startScan();
}
functionstartScan(){
scan.start();
}4.3数据库的选择分析选用mysql和mongoDB:MySQL是一类关系型的数据库。此类数据库在不一样的的引擎上有不一样的存储方式。其中采用了较为完善的传统的sql语句来作为查询语句。开源数据库的比重一直在增大,mysql的比重同样一直在增大。但是有一个不足就是在处理极大量的数据的时候效率会显著变慢。所以在存储告警记录信息时,会有非常大的数据量存储到数据库中,此时我选用了mongoDB用来储存初始的数据,此类数据库作为一种非关系型数据库(nosql),它是一种文档型数据库。什么是文档类数据库,也就是能够存储xml、json以及bson类型系的数据。这些数据具备自述性(self-describing),呈现分层的树状数据结构。数据结构由键值(key=>value)对组成。mongo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度房地产股权置换与项目合作开发协议3篇
- 2025年度网络营销推广与效果监测合同3篇
- 专业高炮广告牌制作施工协议样本版B版
- 2024黄豆购销详细条款合同版B版
- 个人贷款协议规范样本(2024年)版B版
- 老人与海读后感以及收获
- 专业钢筋施工承揽合同书2024版样本一
- 心理健康教育与学习环境优化策略
- 2024离婚赡养费用的确定合同
- 二零二五年度防火涂料施工、技术支持及培训合同3篇
- 人教版九年级数学上册全册同步练习
- 2024年中国社会科学院外国文学研究所专业技术人员招聘3人历年高频难、易错点500题模拟试题附带答案详解
- DFMEA-第五版标准表格
- 2024年软件资格考试信息系统运行管理员(初级)(基础知识、应用技术)合卷试卷及解答参考
- 第8课《列夫-托尔斯泰》公开课一等奖创新教学设计
- 职业咖啡比赛方案策划书
- 人教版2024-2025学年七年级数学上册计算题专项训专题09运用运算律简便运算(计算题专项训练)(学生版+解析)
- 2023年二轮复习解答题专题十七:二次函数的应用(销售利润问题)(原卷版+解析)
- 《ISO56001-2024创新管理体系 - 要求》之26:“9绩效评价-9.3管理评审”解读和应用指导材料(雷泽佳编制-2024)
- GB 26134-2024乘用车顶部抗压强度
- 2024年高中生物新教材同步必修第二册学习笔记第3章 本章知识网络
评论
0/150
提交评论