147 lines
4.9 KiB
Markdown
147 lines
4.9 KiB
Markdown
# QAUP-Management - 机场无人车冲突管理平台
|
||
|
||
## 项目概述
|
||
|
||
QAUP-Management 是一个机场无人车冲突管理平台,集成了机场冲突避免系统,提供完整的车辆管理、空间分析、实时监控等功能。该项目基于 RuoYi 框架构建,采用 Spring Boot 3.x 技术栈,使用 PostgreSQL + PostGIS 进行空间数据处理,并通过 WebSocket 实现实时通信。
|
||
|
||
### 核心功能特性
|
||
|
||
1. **空间数据分析**:基于 PostGIS 的空间计算和几何分析
|
||
2. **实时车辆监控**:WebSocket 实时位置数据推送和展示
|
||
3. **机场区域管理**:跑道、滑行道、停机坪等区域配置和监控
|
||
4. **冲突检测算法**:实时检测车辆与飞机、车辆间的潜在冲突
|
||
5. **数据适配器**:QuapDataAdapter 统一数据访问,避免重复 DAO 开发
|
||
6. **Redis 缓存**:高性能数据缓存和会话管理
|
||
|
||
### 项目架构
|
||
|
||
这是一个采用 Maven 多模块架构的大型系统:
|
||
|
||
- **qaup-admin**: Web 服务入口,集成所有模块
|
||
- **qaup-framework**: 核心框架,提供通用功能
|
||
- **qaup-system**: 系统管理模块,用户、角色、权限等
|
||
- **qaup-collision**: 冲突避免系统模块,提供空间分析、车辆监控、WebSocket 实时通信等功能
|
||
- **qaup-common**: 公共工具类和基础组件
|
||
- **qaup-quartz**: 定时任务调度
|
||
- **qaup-generator**: 代码生成器
|
||
|
||
### 技术栈
|
||
|
||
- **后端**: Spring Boot 3.5.3 + Java 21 + MyBatis + JPA (Hibernate)
|
||
- **数据库**: PostgreSQL + PostGIS (空间数据扩展)
|
||
- **缓存**: Redis
|
||
- **实时通信**: WebSocket + STOMP
|
||
- **空间计算**: JTS + GeoTools + Hibernate Spatial
|
||
- **构建工具**: Maven 3.6+
|
||
- **前端**: Vue 2.6.12 + Element UI
|
||
|
||
## 构建和运行
|
||
|
||
### 开发环境准备
|
||
|
||
1. 安装 Java 21
|
||
2. 安装 Maven 3.6+
|
||
3. 安装 PostgreSQL 并启用 PostGIS 扩展
|
||
4. 安装 Redis
|
||
|
||
### 数据库配置
|
||
|
||
1. 创建 PostgreSQL 数据库并启用 PostGIS 扩展
|
||
2. 执行 SQL 初始化脚本:
|
||
- `sql/create_qaup_database.sql` - 创建数据库
|
||
- `sql/create_sys_vehicle_info_table.sql` - 车辆信息表
|
||
- `sql/create_sys_driver_info_table.sql` - 司机信息表
|
||
|
||
### 环境变量配置
|
||
|
||
创建 .env 文件或设置环境变量:
|
||
```
|
||
POSTGRES_HOST=localhost
|
||
POSTGRES_PORT=5432
|
||
POSTGRES_DB=qaup
|
||
POSTGRES_USER=your_username
|
||
POSTGRES_PASSWORD=your_password
|
||
REDIS_HOST=localhost
|
||
REDIS_PORT=6379
|
||
```
|
||
|
||
### 编译和启动
|
||
|
||
```bash
|
||
# 清理并编译整个项目
|
||
mvn clean install
|
||
|
||
# 启动应用
|
||
cd qaup-admin
|
||
mvn spring-boot:run
|
||
|
||
# 或者运行打包后的 jar
|
||
java -jar target/qaup-admin.jar
|
||
```
|
||
|
||
### 访问系统
|
||
|
||
- 管理后台: http://localhost:8080
|
||
- WebSocket 端点: ws://localhost:8080/collision
|
||
- API 文档: http://localhost:8080/swagger-ui/index.html
|
||
|
||
## 开发指南
|
||
|
||
### 核心组件说明
|
||
|
||
- **QuapDataAdapter**: 数据访问适配器,连接若依系统数据
|
||
- **WebSocketConfig**: WebSocket 配置,支持实时数据推送
|
||
- **VehicleLocationService**: 车辆位置管理服务
|
||
- **GeopositionController**: WebSocket 消息控制器
|
||
- **DataCollectorService**: 数据收集服务(采集频率 250ms)
|
||
- **DataProcessingService**: 数据处理服务(处理频率 1000ms)
|
||
|
||
### 服务间协作模式
|
||
|
||
QAUP-Management 采用服务完全分离的架构:
|
||
|
||
- **DataCollectorService** (250ms): 只负责从外部 API 获取数据并缓存,不进行任何计算
|
||
- **DataProcessingService** (1000ms): 专门负责数据处理、计算速度和方向、发送 WebSocket 消息、违规检测等
|
||
|
||
两个服务通过 `activeMovingObjectsCache` 共享数据,实现了采集与处理的频率分离。
|
||
|
||
### 空间数据处理
|
||
|
||
系统集成了完整的 PostGIS 支持:
|
||
|
||
- 使用 JTS (Java Topology Suite) 进行空间几何操作
|
||
- 使用 GeoTools 进行坐标转换和空间分析
|
||
- 机场区域管理支持复杂的空间查询和冲突检测
|
||
- 电子围栏功能支持区域准入控制和超速检测
|
||
|
||
### WebSocket 消息系统
|
||
|
||
- 位置更新消息:每秒推送车辆位置更新
|
||
- 冲突检测消息:实时推送车辆间潜在冲突
|
||
- 违规事件消息:推送违规行为通知
|
||
- 消息格式统一采用 `UniversalMessage` 结构
|
||
|
||
## 版本管理
|
||
|
||
- 当前版本: 1.0.1 (pom.xml)
|
||
- 版本文件: VERSION.md (0.8.0)
|
||
- 详细变更记录: CHANGELOG.md
|
||
|
||
## 测试和验证
|
||
|
||
- 运行单元测试: `mvn test`
|
||
- 运行集成测试: `mvn verify`
|
||
- 通过 Swagger UI 验证 API 功能
|
||
- 通过 WebSocket 客户端验证实时通信
|
||
|
||
## 部署配置
|
||
|
||
项目支持 Docker 部署,相关配置在 deploy/ 目录下,包含 Docker Compose 配置文件和部署脚本,支持生产环境的完全离线部署。
|
||
|
||
## 业务价值
|
||
|
||
- **实时监控**:提供机场车辆和航空器的实时位置监控
|
||
- **冲突预防**:通过智能算法提前检测和预警潜在冲突
|
||
- **安全管理**:电子围栏和违规检测保障机场运行安全
|
||
- **数据驱动**:提供丰富的数据支持运营决策
|
||
- **系统集成**:与机场现有系统无缝集成 |