JAVA实战开源项目:森林火灾预警系统(Vue+SpringBoot)

在这里插入图片描述


目录

  • 一、摘要
    • 1.1 项目介绍
    • 1.2 项目录屏
  • 二、功能模块
    • 2.1 数据中心模块
    • 2.2 系统基础模块
    • 2.3 烟雾传感器模块
    • 2.4 温度传感器模块
    • 2.5 历史记录模块
    • 2.6 园区数据模块
  • 三、系统设计
    • 3.1 用例设计
      • 3.1.1 森林园区基础系统用例设计
      • 3.1.2 森林预警数据用例设计
    • 3.2 数据库设计
      • 3.2.1 烟雾传感器
    • 3.2.2 温度传感器
      • 3.2.3 历史记录
      • 3.2.4 园区数据
  • 四、系统展示
  • 五、核心代码
    • 5.1 一键创建传感器
    • 5.2 模拟传感器数据变化
    • 5.3 WebSocket 搭建
  • 六、免责说明


一、摘要

1.1 项目介绍

基于websocket+Vue+SpringBoot+MySQL的森林火灾预警系统,包含园区数据模块、温度传感器模块、烟雾传感器模块、园区监控模块、园区报警历史模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,森林火灾预警系统基于角色的访问控制,给园区管理员、普通用户使用。

1.2 项目录屏


二、功能模块

本文设计的森林火灾预警系统的包括了系统数据中心模块,用来存放管理系统通用的模块,另外分别设计了系统基础、烟雾传感器、温度传感器、历史记录、园区数据这五大模块,用于存放系统的核心业务逻辑。

2.1 数据中心模块

数据中心模块包含了对产森林火灾预警系统的基础模块,比如管理谁可以登录这套系统,记录这些人登录系统做了什么,不同的人拥有不同权限的管理。

2.2 系统基础模块

系统基础模块是对园区信息进行管理,其中包括用户管理,部门管理,云盘,角色支持,菜单支持,日志管理,数据字典,前端表格等,可以通过此模块对园区进行添加、编辑更新、删除、查询操作。

2.3 烟雾传感器模块

烟雾传感器模块是对导致森林火灾发生的重要因素——烟雾浓度进行记录,设置了烟雾浓度的阈值,达到这个阈值就会引起报警。烟雾浓度数据的精准捕捉将有效的对防止森林火灾起到作用,森林管理员可以对阈值进行更改,应对不同季节的森林情况。

2.4 温度传感器模块

温度传感器模块是对导致森林火灾发生的重要因素——森林温度进行记录,设置了森林温度的阈值,达到这个阈值就会引起报警。森林温度数据的精准捕捉将有效的对防止森林火灾起到作用,森林的温度越高,森林火灾发生的概率就会越大,所以应该及时关注森林温度的变化,这样才可以及时预警。

2.5 历史记录模块

历史记录模块的设计,是为了通过对森林火灾预警次数的观测,可以看出哪片园区的森林火灾发生概率比较高,可以安排相应的人员以及物质对高危险区域进行更多的部署,将有效缓解救援人员以及物资短缺的问题,将防火的重心放在极易发生火灾的区域,如果发生了森林火灾可以及时进行相应的措施。

2.6 园区数据模块

园区数据模块的设计,是为了整合各个园区之间的关系,将各个园区的数据统计在一个模块上,管理员可以通过园区数据模块及时的发现森林的情况,如果发生了森林火灾,或者监测到数据快达到临界值,可以达到更快的反应速度。


三、系统设计

3.1 用例设计

3.1.1 森林园区基础系统用例设计

在这里插入图片描述

3.1.2 森林预警数据用例设计

在这里插入图片描述

3.2 数据库设计

3.2.1 烟雾传感器

烟雾传感器模块是对导致森林火灾发生的重要因素——烟雾浓度进行记录,设置了烟雾浓度的阈值,达到这个阈值就会引起报警。烟雾浓度数据的精准捕捉将有效的对防止森林火灾起到作用,森林管理员可以对阈值进行更改,应对不同季节的森林情况。

在这里插入图片描述

3.2.2 温度传感器

温度传感器模块是对导致森林火灾发生的重要因素——森林温度进行记录,设置了森林温度的阈值,达到这个阈值就会引起报警。森林温度数据的精准捕捉将有效的对防止森林火灾起到作用,森林的温度越高,森林火灾发生的概率就会越大,所以应该及时关注森林温度的变化,这样才可以及时预警。

在这里插入图片描述

3.2.3 历史记录

历史记录模块的设计,是为了通过对森林火灾预警次数的观测,可以看出哪片园区的森林火灾发生概率比较高,可以安排相应的人员以及物质对高危险区域进行更多的部署,将有效缓解救援人员以及物资短缺的问题,将防火的重心放在极易发生火灾的区域,如果发生了森林火灾可以及时进行相应的措施。

在这里插入图片描述

3.2.4 园区数据

园区数据模块的设计,是为了整合各个园区之间的关系,将各个园区的数据统计在一个模块上,管理员可以通过园区数据模块及时的发现森林的情况,如果发生了森林火灾,或者监测到数据快达到临界值,可以达到更快的反应速度。

在这里插入图片描述


四、系统展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


五、核心代码

5.1 一键创建传感器

@RequestMapping(value = "/createSensor", method = RequestMethod.GET)
@ApiOperation(value = "一键创建传感器")
public Result<ForestPark> createSensor(@RequestParam String id){ForestPark park = iForestParkService.getById(id);if(park == null) {return ResultUtil.error("园区不存在");}// 删除原烟雾传感器QueryWrapper<SmokeSensor> ssOldQw = new QueryWrapper<>();ssOldQw.eq("park_id",park.getId());iSmokeSensorService.remove(ssOldQw);// 删除原温度传感器QueryWrapper<TemperatureSensor> tsOldQw = new QueryWrapper<>();tsOldQw.eq("park_id",park.getId());iTemperatureSensorService.remove(tsOldQw);// 创建传感器SmokeSensor ss = new SmokeSensor();ss.setParkId(park.getId());ss.setParkName(park.getTitle());ss.setValue(0);ss.setLastTime("");iSmokeSensorService.saveOrUpdate(ss);TemperatureSensor ts = new TemperatureSensor();ts.setParkId(park.getId());ts.setParkName(park.getTitle());ts.setValue(0);ts.setLastTime("");iTemperatureSensorService.saveOrUpdate(ts);return ResultUtil.success();
}

5.2 模拟传感器数据变化

private void changeValue1Fx() {List<SmokeSensor> sensorList = iSmokeSensorService.list();Random r = new Random();for (SmokeSensor ss : sensorList) {int tempValue = r.nextInt(100);ss.setValue(tempValue);ss.setLastTime(DateUtil.now());iSmokeSensorService.saveOrUpdate(ss);try {parkTask.updatePartAlertTime(ss.getParkId());} catch (InterruptedException e) {}BaseWebSocketService.sendInfo("Smoke@@" + ss.getParkId() + "@@" + tempValue);}
}

5.3 WebSocket 搭建

@Configuration
@EnableWebSocketMessageBroker
public class StompWebSocketConfig implements WebSocketMessageBrokerConfigurer {@Autowiredprivate StompChannelInterceptor myChannelInterceptor;@Overridepublic void registerStompEndpoints(StompEndpointRegistry registry) {// 1.定义客户端连接地址/stomp-ws// 2.使用sockJS,stomp协议// 3.配置跨域registry.addEndpoint("/stomp-ws").setAllowedOriginPatterns("*").withSockJS();}@Overridepublic void configureMessageBroker(MessageBrokerRegistry registry) {// 1.设置服务端推送数据的主题节点registry.enableSimpleBroker("/topic", "/queue");// 2.设置客户端向服务端推送消息的前缀
//        registry.setApplicationDestinationPrefixes("app");}@Overridepublic void configureClientInboundChannel(ChannelRegistration registration) {// 注册拦截器中间件registration.interceptors(myChannelInterceptor);}
}

六、免责说明

  • 本项目仅供个人学习使用,商用授权请联系博主,否则后果自负。
  • 博主拥有本软件构建后的应用系统全部内容所有权及独立的知识产权,拥有最终解释权。
  • 如有问题,欢迎在仓库 Issue 留言,看到后会第一时间回复,相关意见会酌情考虑,但没有一定被采纳的承诺或保证。

下载本系统代码或使用本系统的用户,必须同意以下内容,否则请勿下载!

  1. 出于自愿而使用/开发本软件,了解使用本软件的风险,且同意自己承担使用本软件的风险。
  2. 利用本软件构建的网站的任何信息内容以及导致的任何版权纠纷和法律争议及后果和博主无关,博主对此不承担任何责任。
  3. 在任何情况下,对于因使用或无法使用本软件而导致的任何难以合理预估的损失(包括但不仅限于商业利润损失、业务中断与业务信息丢失),博主概不承担任何责任。
  4. 必须了解使用本软件的风险,博主不承诺提供一对一的技术支持、使用担保,也不承担任何因本软件而产生的难以预料的问题的相关责任。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Halcon图像预处理、阈值分割

1、blob&#xff08;Binary Large Object&#xff09;是指二值图像中连通区域。 预处理通常包括一系列步骤&#xff0c;例如去噪、形态学操作、特征提取等。 read_image(Image,claudia) get_image_size(Image,Width,Height) dev_open_window_fit_size (0, 0, Width, Width, -1,…

java学习之路-程序逻辑控制

目录 1.分支结构 1.1 if语句 栗子 判断奇数还是偶数 判断一个年份是否为闰年 1.2switch语句 栗子 2. 循环结构 2.1while 循环 栗子 2.2break和continue break continue 2.3for循环 基本语法 栗子 2.4 do while 循环 3.输入输出 3.1输出 3.2从键盘输入 栗子…

Webapi(.net6) 批量服务注册

如果不考虑第三方库&#xff0c;如Autofac这种进行服务注入&#xff0c;通过本身的.Core Weabpi实现的&#xff0c;总结了两种实现方法&#xff0c; 1.一种是参考abp框架里面的形式; 1.1 新建个生命周期的文件夹: 三个接口分别为: public interface IScopedDependency { }pu…

因为manifest.json文件引起的 android-chrome-192x192.png 404 (Not Found)

H5项目打包之后&#xff0c;总是有这个报错&#xff0c;有时候还有别的icon也找不见 一通调查之后&#xff0c;发现是因为引入了一个vue插件 这个插件引入之后&#xff0c;webpack打包的时候就会自动在dist文件夹中产生一个manifest.json文件这个文件里面主要就是一些icon地址的…

最详细爬虫零基础教程02——http协议和请求头的介绍

文章目录 复习一、http和https协议二、网络请求的过程1.浏览器发送http请求的过程2.DNS服务器 三、Headers参数介绍总结 复习 在本节开始讲述的时候&#xff0c;我们先来复习一下爬虫的基本步骤&#xff1a; 一、http和https协议 HTTP协议&#xff08;Hypertext Transfer Pr…

【C++ RB树】

文章目录 红黑树红黑树的概念红黑树的性质红黑树节点的定义红黑树的插入代码实现总结 红黑树 AVL树是一颗绝对平衡的二叉搜索树&#xff0c;要求每个节点的左右高度差的绝对值不超过1&#xff0c;这样保证查询时的高效时间复杂度O( l o g 2 N ) log_2 N) log2​N)&#xff0c;…

【C++ 设计模式】策略模式与简单工厂模式的结合

文章目录 前言一、为什么需要策略模式简单工厂模式二、策略模式简单工厂模式实现原理三、UML图四、示例代码总结 前言 在软件设计中&#xff0c;常常会遇到需要根据不同情况选择不同算法或行为的情况。策略模式和简单工厂模式是两种常见的设计模式&#xff0c;它们分别解决了对…

机器学习-04-分类算法-02贝叶斯算法

总结 本系列是机器学习课程的系列课程&#xff0c;主要介绍机器学习中分类算法&#xff0c;本篇为分类算法与贝叶斯算法部分。 本门课程的目标 完成一个特定行业的算法应用全过程&#xff1a; 懂业务会选择合适的算法数据处理算法训练算法调优算法融合 算法评估持续调优工程…

如何使用Python进行数据可视化:Matplotlib和Seaborn指南【第123篇—Matplotlib和Seaborn指南】

如何使用Python进行数据可视化&#xff1a;Matplotlib和Seaborn指南 数据可视化是数据科学和分析中不可或缺的一部分&#xff0c;而Python中的Matplotlib和Seaborn库为用户提供了强大的工具来创建各种可视化图表。本文将介绍如何使用这两个库进行数据可视化&#xff0c;并提供…

数据结构与算法第八套试卷

1.建立一个长度为n的有序单链表的时间复杂度 0(n^2) 2.哈希算法 key%p&#xff1a;p最好为质数 如果两个关键字的值不等但哈希函数值相等&#xff0c;则称这两个关键字为同义词&#xff08;正确&#xff09;&#xff1b; 3.二分查找 注意&#xff1a; 二分查找是向下查询…

pytest生成allure的报告

首先要下载安装配置allure allure serve ./outputs/allure_report 可以生成html的文件自动在默认浏览器中打开

栈的应用——括号匹配

用栈实现 1、初始化一个栈&#xff0c;用来存左括号 2、遍历扫描括号字符串 如果遇到左括号&#xff0c;无脑入栈如果遇到右括号&#xff0c;此时栈空返回false&#xff0c;不空的话进行括号匹配。匹配不成功返回false&#xff0c;匹配成功将栈顶的那个左括号出栈。 遍历完之后…