Vue.js+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 {

    @Autowired
    private StompChannelInterceptor myChannelInterceptor;

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        // 1.定义客户端连接地址/stomp-ws
        // 2.使用sockJS,stomp协议
        // 3.配置跨域
        registry.addEndpoint("/stomp-ws").setAllowedOriginPatterns("*").withSockJS();
    }

    @Override
    public void configureMessageBroker(MessageBrokerRegistry registry) {
        // 1.设置服务端推送数据的主题节点
        registry.enableSimpleBroker("/topic", "/queue");
        // 2.设置客户端向服务端推送消息的前缀
//        registry.setApplicationDestinationPrefixes("app");
    }

    @Override
    public void configureClientInboundChannel(ChannelRegistration registration) {
        // 注册拦截器中间件
        registration.interceptors(myChannelInterceptor);
    }
}


六、免责说明

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

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

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

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[PyQt5]PyQt5连接MYSQL时显示Driver not loaded解决方案

在第一次用PyQt5的 QSqlDatabase.addDatabase 连接mysql的时候&#xff0c;可能会出现Driver not loaded的情况&#xff0c;如下&#xff1a; from PyQt5.QtSql import QSqlQuery, QSqlDatabase from PyQt5.QtWidgets import QApplication import sysapp QApplication(sys.ar…

2024.3.6

#include<myhead.h>int do_add(sqlite3* ppDb) {int numb;char name[10];int salary;printf("请输入员工的信息&#xff1a;");scanf("%d %s %d",&numb, name, &salary);//将员工的信息存储到数组char sql_add[128] "";sprintf(s…

【K哥爬虫普法】二十五岁 人大本硕 腾讯在职 爬虫被捕!

我国目前并未出台专门针对网络爬虫技术的法律规范&#xff0c;但在司法实践中&#xff0c;相关判决已屡见不鲜&#xff0c;K 哥特设了“K哥爬虫普法”专栏&#xff0c;本栏目通过对真实案例的分析&#xff0c;旨在提高广大爬虫工程师的法律意识&#xff0c;知晓如何合法合规利用…

你知道katalon studio 如何完成 get/post 请求发送吗?

katalon studio作为目前最火的自动化测试工具之一&#xff0c;不仅仅只能完成webUI自动化&#xff0c;更是能完成api、app以及桌面应用程序的自动化测试。 本文将讲解一下katalon studio是如果完成接口测试的。 请求发送 get请求 1、先在object repository里new一个请求 2、…

CSS盒子模型笔记

尚硅谷学习视频链接&#xff1a;117_CSS_盒子模型的组成部分_哔哩哔哩_bilibili 1、盒子组成 盒子组成 content内容 padding border &#xff08;margin不包含在盒子内&#xff09; 2、div样式width、height 当css3属性box-sizingcontent-box&#xff08;默认&#xff0…

64位Office API声明语句第116讲

跟我学VBA&#xff0c;我这里专注VBA, 授人以渔。我98年开始&#xff0c;从源码接触VBA已经20余年了&#xff0c;随着年龄的增长&#xff0c;越来越觉得有必要把这项技能传递给需要这项技术的职场人员。希望职场和数据打交道的朋友&#xff0c;都来学习VBA,利用VBA,起码可以提高…

逻辑代数基础(二)(卡诺图)

目录 逻辑图表示 卡诺图表示 卡诺图的标准格式 二变量卡诺图 三变量卡诺图 四变量卡诺图 卡诺图表示逻辑函数 从逻辑表达式到卡诺图 逻辑代数的三个规则 代入规则 反演规则 对偶规则 逻辑函数的化简方式 化简逻辑函数的意义 逻辑函数最简表示式的判别标准 公式化简法 并…

【Software Platform Bundle】

https://www.ni.com/zh-cn/support/downloads/software-products/download.software-platform-bundle.html

【python】六个常见爬虫案例【附源码】

大家好&#xff0c;我是博主英杰&#xff0c;整理了几个常见的爬虫案例&#xff0c;分享给大家&#xff0c;适合小白学习 一、爬取豆瓣电影排行榜Top250存储到Excel文件 近年来&#xff0c;Python在数据爬取和处理方面的应用越来越广泛。本文将介绍一个基于Python的爬虫程序&a…

linux系统的进程管理

文章目录 前言一、系统的进程的运转方式1、系统时间&#xff1a;&#xff08;jiffies 系统滴答&#xff09;2、task_struct 二、如何创建一个新的进程&#xff08;重要&#xff09;三、进程调度①、主要函数②、辅助函数 四、进程的退出内核的销毁 前言 本文讲解系统的进程管理…

LeetCode142题:环形链表II(python3)

代码思路&#xff1a; 双指针的第一次相遇&#xff1a; 设两指针 fast&#xff0c;slow 指向链表头部 head 。 令 fast 每轮走 2 步&#xff0c;slow 每轮走 1 步。 fast 指针走过链表末端&#xff0c;说明链表无环&#xff0c;此时直接返回 null。 如果链表存在环&#xff0c;…

学习Java的第二天

如何使用文本文档在cmd里打印出HelloWorld 1、创建一个文本文档&#xff0c;并命名为HelloWorld&#xff0c;将后缀改为java&#xff08;需要自己去把后缀打开显示出来&#xff09; 2、打开编辑 也可以双击打开 3、在里面写出以下代码 上面红框里为你要打印的语句&#xff0c;…

Mybatis-Plus——05,乐观锁(新注解)

乐观锁&#xff08;新注解&#xff09; 一、数据库添加一个字段二、实体类添加version注解三、注册乐观锁插件四、测试一下4.1成功的乐观锁4.2失败的乐观锁————————创作不易&#xff0c;笔记不易&#xff0c;如觉不错&#xff0c;请三连&#xff0c;谢谢~~ 乐观锁实现方…

zabbix监控中间件服务

zabbix监控Nginx 自定义nginx访问量的监控项&#xff0c;首先要通过脚本将各种状态的值取出来&#xff0c;然后通过zabbix监控。找到自定义脚本上传到指定目录/etc/zabbix/script/ 在zbx-client客户端主机操作 #创建目录&#xff0c;然后将脚本上传到该目录mkdir /etc/zabbix/…

信息安全与阿里云等保三级方案实践总结

信息安全在当今数字化时代变得至关重要&#xff0c;企业和组织需要采取有效措施来保护其数据和信息资产。阿里云作为中国领先的云服务提供商&#xff0c;提供了等保三级方案&#xff0c;帮助用户满足国家信息安全等级保护的要求。本文将探讨信息安全和阿里云等保三级方案的重要…

使用vite创建一个vue3项目

创建一个vue3项目 1.使用命令npm create vuelatest来创建一个vue3项目&#xff0c;注意&#xff1a;官网说明了必须node版本是18及以上的&#xff0c;这边需要注意下 2.然后根据提示进入项目目录 先npm install安装依赖&#xff0c;然后npm run dev启动项目 大家可以看到&am…

TCP与UDP基础

思维导图&#xff1a; TCP&#xff1a; 服务器 #include<myhead.h> #define SER_IP "192.168.252.163" #define SER_PORT 6666 int main(int argc, const char *argv[]) {//&#xff11;、创建用于监听的套接字int sfd-1;sfdsocket(AF_INET,SOCK_STREAM,0);/…

2023 电脑PC FetchV网页视频下载器 浏览器插件

FetchV&#xff0c;它可以下载网页视频&#xff0c;下载速度快到离谱&#xff0c;非常好用&#xff01; FetchV:网页视频下载器(HLS|m3u8|mp4|blob) 下载和录制各种格式的在线网页视频&#xff0c;包括HLS、m3u8、blob、mp4、webm等各种类型的视频。 这是一个通用的网页视频…

保留数据的重装系统教程!(win11系统)

上车警告&#xff01;&#xff01;&#xff01; 本教程无需思考&#xff0c;跟着操作一步一步来就能完成系统的重装。原理是将C盘系统重装&#xff0c;其他盘符数据保存。适用于系统盘重装数据或更改系统版本。 重要提示&#xff01;&#xff01;&#xff01; C盘有重要学习资…

视频产品介绍:国标28181网关(GB/T28118网关)

目 录 一、概述 二、产品功能 &#xff08;一&#xff09;功能描述 &#xff08;二&#xff09;功能展示 1、国标接入 2、资源绑定 三、产品能力 &#xff08;一&#xff09;接入能力 &#xff08;二&#xff09;多级架构 四、特点优势 &#xff08;一&am…