# 安澜应急指挥系统 [![Java](https://img.shields.io/badge/Java-1.8-orange.svg)](https://www.oracle.com/java/) [![Spring Boot](https://img.shields.io/badge/Spring%20Boot-2.5.15-brightgreen.svg)](https://spring.io/projects/spring-boot) [![Vue](https://img.shields.io/badge/Vue-2.6-green.svg)](https://vuejs.org/) **安澜应急指挥**是一套面向**政府与企事业单位**的应急业务软件:在统一门户下支撑**日常值守、事件接报、调度与处置、资源与预案、数据报送、案例与知识、视频与系统集成**等能力。 ![主控制台](images/index.png) --- ## 一、产品定位与适用场景 | 维度 | 说明 | | --- | --- | | **谁在用** | 应急指挥中心值班员、调度员、业务科室与系统管理员;可按角色授权访问不同菜单与数据范围。 | | **解决什么** | 将事件与任务、资源与位置、预案与流程、上报与留痕放在同一套系统里,减少多系统切换与信息断层。 | | **典型场景** | 值守排班与缺班提醒;接警/调度/处置三类工作台与地图协同;资源(队伍/车辆/专家/物资等)全生命周期与看板;上级单位要求的数据报送;案例沉淀与知识检索;摄像头等设备的统一登记与能力扩展。 | --- ## 二、能力概览(按业务域) 下表帮助你在“菜单很多”时建立心理模型;具体以你环境中的**菜单与权限**为准。 | 业务域 | 能力要点 | | --- | --- | | **应急调度** | 排班、接警工作台、调度工作台、处置工作台;与地图、任务状态、参与方等联动。 | | **数据报送** | 面向规定的报送链路(如上级报送、模板配置等),支持查询与留痕。 | | **预案管理** | 预案维表、状态与发布/审批流(以实际配置为准)。 | | **资源管理** | 资源看板、队伍/车辆/专家/装备/仓库/物资,以及供应、采购、征用等扩展能力。 | | **案例与知识** | 案例库、知识库分类与内容管理。 | | **系统集成** | 摄像头等设备接入与维护(可配合 ZLMediaKit 等流媒体能力,按部署启用)。 | | **系统管理 / 监控** | 用户、角色、菜单、部门、字典、参数、通知公告、日志与系统监控等。 | | **首页看板** | KPI、趋势与分布类图表、最新事件/调度/待办/公告等;支持演示/联调环境变量(见下节与产品说明)。 | **地图**:业务页中的地图能力依赖**高德 Web 端**;需在系统**参数配置**中维护 `amap.api.key` 等(前端从后端拉取,未配置时会有明确提示) --- ## 三、技术架构(简图) ```mermaid flowchart LR subgraph client [浏览器] UI[Vue 2.6 前端 aegis-ui] end subgraph server [应用层] API[Spring Boot 单体 aegis-admin] end subgraph data [数据与缓存] MySQL[(MySQL)] Redis[(Redis)] end subgraph ext [按部署选装] ZLM[ZLMediaKit] JIT[Jitsi / Nginx 等] end UI -->|/dev-api 或 /prod-api 等同源前缀| API API --> MySQL API --> Redis API -.-> ZLM API -.-> JIT ``` - **形态**:当前为主应用 `aegis-admin` 聚合一组 `aegis-*` 业务模块的 **Java 服务 + 独立前端工程**,开发时通过 **同域 API 前缀** 访问后端(见下「本地联调」)。 - **可选能力**:视频、会议、容器编排等以 `deployment` 与业务开关为准,并非单机开发必需。 --- ## 四、界面预览 以下为 `images/` 目录中截图,展示浅色主区 + 深色侧栏、多标签页、地图与列表等典型布局。 | 说明 | 预览 | | --- | --- | | 主控制台 / 态势总览 | ![主控制台](images/index.png) | | 登录(双栏布局与产品要点) | ![登录页](images/4292f298-7e1d-4f32-969d-28f75010076f.png) | | 应急调度 · 排班管理 | ![排班管理](images/ae5dd8a4-25e7-43a5-89b6-3eb364e86298.png) | | 应急调度 · 接警工作台(含地图) | ![接警工作台](images/09d481a6-fc21-4d8c-aff3-d70af9f4ef9a.png) | | 应急调度 · 调度工作台(统一调度地图与资源层) | ![调度工作台](images/5c1dde0c-6efa-4568-a6eb-b29f82075fcf.png) | | 应急调度 · 处置工作台(任务详情、事件位置等) | ![处置工作台](images/1fa1fb61-1dcf-4ed8-8e49-393aa8190dcd.png) | | 数据报送 · 上级报送 | ![上级报送](images/f19be828-6d9d-43ef-ad31-f25fcd64c476.png) | | 预案管理 | ![预案管理](images/90c11be2-f778-44e4-9aa8-15094ab875d2.png) | | 资源管理 · 资源看板 | ![资源看板](images/bb0112fe-611f-4998-8cf9-83213ff92794.png) | | 资源管理 · 队伍管理 | ![队伍管理](images/3cd08cfb-ebd0-4488-ac7d-163f5425b4f9.png) | | 资源管理 · 车辆管理(列表) | ![车辆管理-列表](images/a92d0227-0aff-47ff-b58b-f00592f1bda4.png) | | 资源管理 · 车辆管理(位置弹窗、深色顶栏) | ![车辆管理-位置](images/84404068-3376-453e-bca9-0806ac981228.png) | | 资源管理 · 专家管理 | ![专家管理](images/3490e00f-6d6e-47aa-ba13-983799b32835.png) | | 资源管理 · 物资台账 | ![物资台账](images/b6afab04-bd28-49bc-83d3-9d2830949e05.png) | | 系统集成 · 摄像头管理 | ![摄像头管理](images/200f30ec-0b21-4e23-9f82-2f5226471906.png) | | 案例库管理 | ![案例库](images/fa8c939c-592a-4368-8eb3-aca88fa2dfeb.png) | | 系统管理 · 菜单管理 | ![菜单管理](images/5c45e041-ba0d-4c1a-a9ac-60daeca097b4.png) | --- ## 五、功能特性(摘要) - **应急调度闭环**:从排班、接报、统一调度到处置工位的分工界面,配合地图与任务详情。 - **资源全视图**:看板 + 分资源类型的台账与能力标签、位置能力(依赖地图与设备侧数据质量)。 - **预案与报送**:预案全生命周期与报送口径可配置。 - **视频与集成**:摄像头等设备的登记与能力扩展。 - **系统治理能力**:多租户/多机构常规模型下的用户、角色、菜单、部门、参数与日志。 - **可扩展看板与智能助手**:看板可纯真实数据、可演示;顶栏智能助手为独立配置(Key 存浏览器、不经业务后端落库)——见产品说明。 --- ## 六、仓库与模块 ```text project-aegis-command/ ├── aegis-admin/ # 可运行主应用,聚合各业务模块 ├── aegis-framework/ # 安全、通用 Web 等框架能力 ├── aegis-system/ # 系统管理 ├── aegis-common/ # 公共类库 ├── aegis-emergency/ # 应急管理 ├── aegis-resource/ # 资源管理 ├── aegis-camera/ # 摄像头 / 视频相关 ├── aegis-case/ # 案例 ├── aegis-knowledge/ # 知识库 ├── aegis-notification/ # 通知 ├── aegis-file/ # 文件 ├── aegis-quartz/ # 定时任务 ├── aegis-ui/ # 前端:Vue 2.6、Element UI、ECharts ├── deployment/ # MySQL 脚本、Docker Compose、Nginx 示例、本地起停脚本 └── docs/ # 产品/联调类文档 ``` --- ## 七、技术栈 | 层 | 技术 | | --- | --- | | 后端 | Spring Boot 2.5.15、Spring Security、MyBatis-Plus 3.5.1、Swagger 3.0、Quartz | | 数据 | MySQL 8+、Redis 6+ | | 前端 | Vue 2.6、Vue Router、Vuex、Element UI 2.15、ECharts、Vue CLI / webpack | | 构建 | Maven 3.x、Node.js 14+(用于前端) | | 部署(可选) | Docker / Compose、Nginx、ZLMediaKit、Jitsi 等 | --- ## 八、环境要求 - **JDK** 1.8+ - **Maven** 3.6+ - **Node.js** 14+(仅开发/构建 `aegis-ui` 时) - **MySQL** 8+、**Redis** 6+(与 `application-druid.yml` 等配置一致) - **Docker** 20.10+(仅在使用 Compose 时) --- ## 九、快速开始 ### 9.1 使用 Docker Compose 1. 克隆本仓库。 2. 打开并修改 `deployment/docker-compose.yml` 中的**数据库密码、端口、卷**等。 3. 在 `deployment` 目录执行: ```bash docker compose up -d ``` 4. 访问地址与 API、Swagger 路径以 **Compose 中端口与路由** 为准,一般为 `http://<主机>:<端口>/swagger-ui/index.html`。 **Windows 本地一键**(在 `deployment` 目录): ```powershell .\up-local.ps1 ``` 或双击 `deployment\up-local.bat`。**停止**: ```powershell .\down-local.ps1 ``` 若 `.bat` 在极少环境下对中文路径不友好,请直接用 PowerShell 执行上述 `ps1`。 ### 9.2 手动部署:数据库脚本顺序 在 `deployment/mysql/` 下按**文件名顺序**(建议与下列一致)在 MySQL 中执行,并保证连接账号、库名与后端配置一致: 1. `01-ruoyi.sql` — 基础库表与预置管理数据 2. `02-quartz.sql` — 定时任务相关表 3. `03-aegis.sql` — 业务表结构 4. `04-aegis-seed-data.sql`(可选)— **演示/联调**用种子数据,**生产环境**请评估后再执行,并在上线后**修改预置密码与敏感参数**。 数据库名在脚本中默认为 **`aegis`**,若你改名,请同步 `application-druid.yml`。 ### 9.3 手动部署:启动后端 1. 编辑 `aegis-admin/src/main/resources/application-druid.yml` 与 `application.yml`:数据源、Redis、文件路径 `ruoyi.profile` 等。 2. 在项目根目录: ```bash mvn clean install -DskipTests cd aegis-admin mvn spring-boot:run ``` 3. 默认服务端口在 `application.yml` 中为 **8080**(可按需修改)。 ### 9.4 本地联调:前端 ```bash cd aegis-ui npm install --registry=https://registry.npmmirror.com npm run dev ``` **前后端如何接上:** - 开发环境 `aegis-ui/.env.development` 中 `VUE_APP_BASE_API` 为 **`/dev-api`**。 - `aegis-ui/vue.config.js` 中 `devServer.proxy` 将 `/dev-api` 代理到 `baseUrl` 指向的后端,默认 **`http://localhost:8080`**,并去掉路径前缀。 - 因此:**先启动本机 8080 上的后端,再开前端**;若后端不是 8080,请改 `vue.config.js` 里的 `baseUrl`。 - 开发服务默认 **端口 80**(`vue.config.js` 中 `port` 可由环境变量或 npm 覆盖);若 80 被占用,可设置 `port` 环境变量或使用 `npm run dev -- --port 端口号`(以 Vue CLI 行为为准)。 **生产构建与部署**: ```bash npm run build:prod ``` 将 `dist` 由 Nginx 等托管;生产环境 API 前缀在 `.env.production` 中一般为 **`/prod-api`**,需在网关或 Nginx 中反向代理到 Java 服务,并与后端 `context-path`、各 `server` 块中的 `location` 一致。示例可参考 `deployment/nginx/`(若存在)。 ### 9.5 与部署相关的子数据 / 服务 - **预置用户**:主初始化脚本中常包含 `admin`、`ry` 等账号,**默认密码需以库内与首次登录要求为准**(常见为 `123456`,**上线后必须改密**)。 - **地图**:业务地图使用前请在系统参数中配置 `amap.api.key` 等。 - **智能助手**:`VUE_APP_GITCC_API`、同源 `/gitcc-api` 反代、基址与 `/v1` 约定、405 排障等 --- ## 十、配置项速查 | 位置 | 作用 | | --- | --- | | `aegis-admin/.../application.yml` | 服务端口、上传限制、`spring.profiles`、Token 等全局项 | | `aegis-admin/.../application-druid.yml` | 数据源、连接池、MyBatis 等 | | `aegis-ui/.env.development` 等 | `VUE_APP_TITLE`、`VUE_APP_BASE_API`、`VUE_APP_GITCC_API` 等 | | `aegis-ui/vue.config.js` | 开发代理到后端的 `baseUrl`、端口、GitCC 代理等 | | 系统管理 - 参数设置 | 如高德 `amap.api.key` 等运行期业务参数 | | `deployment/docker-compose.yml` | 容器化时的服务、环境变量与卷 | --- ## 十一、安全与合规模块(必读) - **预置账号与密码**仅用于开发/验收;在公网或生产环境**必须**改密、启用强策略,并收拢管理后台访问来源。 - **智能助手 API Key** 仅存用户浏览器,**不**经本系统业务接口持久化,请勿在自研代码中回传、记录或落库用户 Key。 - **媒体与地图密钥**:流媒体和地图厂商 key 应放在安全配置与权限可控的位置,并定期轮换。 --- ## 十二、常见问题(FAQ) 1. **前端能打开但接口全红 / 登不进** 检查后端是否监听 `vue.config.js` 中 `baseUrl` 的地址与端口;若跨域,开发环境应走**代理**而非在浏览器里硬写全路径(除非 CORS 已配好)。 2. **地图空白或报「未配置」** 在**参数设置**中配置 `amap.api.key`,并检查浏览器控制台与网络请求。 3. **智能助手 401 / 405** 基址、路径 `/v1` 与**同源反代**是否按文档配置;见产品说明 **§5、§6**。 4. **表不存在或缺少菜单** 确认 `deployment/mysql` 已按序导入且**库名**与 `application-druid` 中一致。 --- ## 十三、参与贡献 欢迎通过 Issue 描述问题、通过合并请求(Pull Request)提交改进。建议单次提交**聚焦单一主题**并写清复现/验证方式,便于审阅。 ---