Vue.js+SpringBoot开发森林火灾预警系统


目录

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

java 复制代码
@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 模拟传感器数据变化

java 复制代码
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 搭建

java 复制代码
@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. 必须了解使用本软件的风险,博主不承诺提供一对一的技术支持、使用担保,也不承担任何因本软件而产生的难以预料的问题的相关责任。
相关推荐
GISer_Jing几秒前
React核心功能详解(一)
前端·react.js·前端框架
捂月4 分钟前
Spring Boot 深度解析:快速构建高效、现代化的 Web 应用程序
前端·spring boot·后端
深度混淆11 分钟前
实用功能,觊觎(Edge)浏览器的内置截(长)图功能
前端·edge
Smartdaili China12 分钟前
如何在 Microsoft Edge 中设置代理: 快速而简单的方法
前端·爬虫·安全·microsoft·edge·社交·动态住宅代理
秦老师Q13 分钟前
「Chromeg谷歌浏览器/Edge浏览器」篡改猴Tempermongkey插件的安装与使用
前端·chrome·edge
滴水可藏海14 分钟前
Chrome离线安装包下载
前端·chrome
endingCode17 分钟前
45.坑王驾到第九期:Mac安装typescript后tsc命令无效的问题
javascript·macos·typescript
m512724 分钟前
LinuxC语言
java·服务器·前端
打鱼又晒网35 分钟前
【MySQL】数据库精细化讲解:内置函数知识穿透与深度学习解析
数据库·mysql
运维-大白同学1 小时前
将django+vue项目发布部署到服务器
服务器·vue.js·django