276 lines
7.7 KiB
Markdown
276 lines
7.7 KiB
Markdown
# QAUP-Management 平台管理系统
|
||
|
||
机场无人车冲突管理平台,集成了机场冲突避免系统,提供完整的车辆管理、空间分析、实时监控等功能。
|
||
|
||
## 项目架构
|
||
|
||
本项目采用Maven多模块架构:
|
||
|
||
- **qaup-admin**: Web服务入口,集成所有模块
|
||
- **qaup-framework**: 核心框架,提供通用功能
|
||
- **qaup-system**: 系统管理模块,用户、角色、权限等
|
||
- **qaup-collision**: **冲突避免系统模块**,提供空间分析、车辆监控、WebSocket实时通信等功能
|
||
- **qaup-common**: 公共工具类和基础组件
|
||
- **qaup-quartz**: 定时任务调度
|
||
- **qaup-generator**: 代码生成器
|
||
|
||
## 核心特性
|
||
|
||
### 🚗 冲突避免系统 (collision模块)
|
||
|
||
- **空间数据分析**: 基于PostGIS的空间计算和几何分析
|
||
- **实时车辆监控**: WebSocket实时位置数据推送和展示
|
||
- **机场区域管理**: 跑道、滑行道、停机坪等区域配置和监控
|
||
- **冲突检测算法**: 实时检测车辆与飞机、车辆间的潜在冲突
|
||
- **数据适配器**: QuapDataAdapter统一数据访问,避免重复DAO开发
|
||
- **Redis缓存**: 高性能数据缓存和会话管理
|
||
|
||
### 🛠️ 系统管理功能
|
||
|
||
1. 用户管理:用户是系统操作者,该功能主要完成系统用户配置。
|
||
2. 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。
|
||
3. 岗位管理:配置系统用户所属担任职务。
|
||
4. 菜单管理:配置系统菜单,操作权限,按钮权限标识等。
|
||
5. 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。
|
||
6. 字典管理:对系统中经常使用的一些较为固定的数据进行维护。
|
||
7. 参数管理:对系统动态配置常用参数。
|
||
8. 通知公告:系统通知公告信息发布维护。
|
||
9. 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
|
||
10. 登录日志:系统登录日志记录查询包含登录异常。
|
||
11. 在线用户:当前系统中活跃用户状态监控。
|
||
12. 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。
|
||
13. 代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。
|
||
14. 系统接口:根据业务代码自动生成相关的api接口文档。
|
||
15. 服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。
|
||
16. 缓存监控:对系统的缓存信息查询,命令统计等。
|
||
17. 在线构建器:拖动表单元素生成相应的HTML代码。
|
||
18. 连接池监视:监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。
|
||
|
||
## 技术栈
|
||
|
||
- **后端**: Spring Boot 2.5.15 + MyBatis + JPA (Hibernate)
|
||
- **数据库**: PostgreSQL + PostGIS (空间数据扩展)
|
||
- **缓存**: Redis
|
||
- **实时通信**: WebSocket + STOMP
|
||
- **空间计算**: JTS + GeoTools
|
||
- **构建工具**: Maven 3.6+
|
||
- **Java版本**: JDK 8
|
||
|
||
## 部署指南
|
||
|
||
### 方式一:自动部署(推荐)
|
||
|
||
使用提供的自动化部署脚本:
|
||
|
||
```bash
|
||
# 1. 进入部署目录
|
||
cd deploy/
|
||
|
||
# 2. 赋予执行权限
|
||
chmod +x deploy-all.sh
|
||
|
||
# 3. 执行自动部署
|
||
./deploy-all.sh
|
||
```
|
||
|
||
自动化部署脚本将自动完成:
|
||
|
||
- ✅ 环境检查和依赖验证
|
||
- ✅ Docker及Docker Compose安装检查
|
||
- ✅ 磁盘空间检查(至少3GB)
|
||
- ✅ 端口占用检测
|
||
- ✅ Docker镜像处理(本地载入或在线拉取)
|
||
- ✅ 冲突容器清理
|
||
- ✅ 数据目录创建和权限设置
|
||
- ✅ 配置文件验证
|
||
- ✅ 基础设施服务启动(PostgreSQL + PostGIS、Redis)
|
||
- ✅ 应用服务启动和数据库迁移
|
||
- ✅ 健康状态检查和验证
|
||
|
||
### 方式二:手动部署
|
||
|
||
#### 1. 环境准备
|
||
|
||
**必需组件:**
|
||
|
||
```bash
|
||
# Java 8+
|
||
java -version
|
||
|
||
# Maven 3.6+
|
||
mvn -version
|
||
|
||
# Docker & Docker Compose
|
||
docker --version
|
||
docker-compose --version
|
||
```
|
||
|
||
**可选组件(用于本地开发):**
|
||
|
||
```bash
|
||
# PostgreSQL + PostGIS(用于本地开发)
|
||
psql --version
|
||
|
||
# Redis(用于本地开发)
|
||
redis-server --version
|
||
```
|
||
|
||
#### 2. 数据库配置
|
||
|
||
**Docker启动数据库:**
|
||
|
||
```bash
|
||
# 启动PostgreSQL + PostGIS
|
||
docker run -d \
|
||
--name qaup-postgres \
|
||
-e POSTGRES_DB=qaup \
|
||
-e POSTGRES_USER=qaup \
|
||
-e POSTGRES_PASSWORD=qaup123 \
|
||
-e POSTGRES_INITDB_ARGS="--encoding=UTF-8 --lc-collate=C --lc-ctype=C" \
|
||
-p 5432:5432 \
|
||
m.daocloud.io/docker.io/postgis/postgis:17-3.5-alpine
|
||
|
||
# 启动Redis
|
||
docker run -d \
|
||
--name qaup-redis \
|
||
-e REDIS_PASSWORD=qaup123 \
|
||
-p 6379:6379 \
|
||
m.daocloud.io/docker.io/library/redis:8.0-alpine redis-server --requirepass qaup123
|
||
```
|
||
|
||
**本地数据库初始化:**
|
||
|
||
1. 执行SQL初始化脚本:
|
||
|
||
```bash
|
||
# 创建数据库和基础表
|
||
psql -U qaup -d qaup -f sql/create_qaup_database.sql
|
||
psql -U qaup -d qaup -f sql/create_sys_vehicle_info_table.sql
|
||
psql -U qaup -d qaup -f sql/create_sys_driver_info_table.sql
|
||
```
|
||
|
||
#### 3. 环境配置
|
||
|
||
**更新应用配置:**
|
||
修改 `qaup-admin/src/main/resources/application.yml`:
|
||
|
||
```yaml
|
||
spring:
|
||
datasource:
|
||
url: jdbc:postgresql://localhost:5432/qaup
|
||
username: qaup
|
||
password: qaup123
|
||
driver-class-name: org.postgresql.Driver
|
||
redis:
|
||
host: localhost
|
||
port: 6379
|
||
password: qaup123
|
||
database: 0
|
||
```
|
||
|
||
**环境变量配置:**
|
||
确保各模块 `.env` 文件配置正确:
|
||
|
||
- `adxp-adapter/.env.example` - ADXP数据中台适配器配置
|
||
- `qaup-admin/.env.example` - 主应用配置
|
||
|
||
#### 4. 编译和启动
|
||
|
||
```bash
|
||
# 1. 清理并编译整个项目
|
||
mvn clean install
|
||
|
||
# 2. 进入管理模块
|
||
cd qaup-admin
|
||
|
||
# 3. 启动应用(开发模式)
|
||
mvn spring-boot:run
|
||
|
||
# 或打包启动(生产模式)
|
||
mvn clean package -DskipTests
|
||
java -jar target/qaup-admin.jar
|
||
```
|
||
|
||
#### 5. 验证部署
|
||
|
||
**服务状态检查:**
|
||
|
||
```bash
|
||
# 检查应用健康状态
|
||
curl http://localhost:8080/actuator/health
|
||
|
||
# 检查数据库连接
|
||
docker exec qaup-postgres pg_isready -U qaup
|
||
|
||
# 检查Redis连接
|
||
docker exec qaup-redis redis-cli -a qaup123 ping
|
||
```
|
||
|
||
### 6. 系统访问
|
||
|
||
- **管理后台**: <http://localhost:8080>
|
||
- **初始登录**:
|
||
- 用户名: `admin`
|
||
- 密码: `admin123`
|
||
- **WebSocket端点**: ws://localhost:8080/ws
|
||
- **API文档**: <http://localhost:8080/swagger-ui/>
|
||
- **健康检查**: <http://localhost:8080/actuator/health>
|
||
|
||
### 7. 管理命令
|
||
|
||
```bash
|
||
# 查看服务状态
|
||
docker compose ps
|
||
|
||
# 查看应用日志
|
||
docker compose logs -f qaup-app
|
||
|
||
# 查看数据库日志
|
||
docker compose logs -f qaup-postgres
|
||
|
||
# 查看Redis日志
|
||
docker compose logs -f qaup-redis
|
||
|
||
# 重启应用
|
||
docker compose restart qaup-app
|
||
|
||
# 停止所有服务
|
||
docker compose down
|
||
|
||
# 查看数据库迁移状态
|
||
docker exec qaup-postgres psql -U qaup -d qaup -c \
|
||
"SELECT version,description FROM flyway_schema_history ORDER BY installed_rank DESC LIMIT 5;"
|
||
|
||
# 清理Docker资源
|
||
docker system prune -a
|
||
```
|
||
|
||
## 项目合并说明
|
||
|
||
本项目已将独立的CollisionAvoidanceSystem项目合并到若依框架中,通过以下方式实现:
|
||
|
||
1. **模块化集成**: 创建`qaup-collision`模块,保持功能独立性
|
||
2. **数据适配器**: `QuapDataAdapter`提供统一数据访问,连接若依Service层
|
||
3. **配置整合**: 将PostGIS、JPA、WebSocket等配置整合到若依配置体系
|
||
4. **版本兼容**: 降级Spring Boot版本,确保Java 8兼容性
|
||
|
||
## 开发指南
|
||
|
||
### collision模块核心组件
|
||
|
||
- `QuapDataAdapter`: 数据访问适配器,连接若依系统数据
|
||
- `WebSocketConfig`: WebSocket配置,支持实时数据推送
|
||
- `VehicleLocationService`: 车辆位置管理服务
|
||
- `GeopositionController`: WebSocket消息控制器
|
||
|
||
### 扩展开发
|
||
|
||
1. 新增spatial实体时,继承spatial基类并配置PostGIS映射
|
||
2. WebSocket消息通过`/topic`前缀向客户端广播
|
||
3. 使用`QuapDataAdapter`获取车辆和司机数据,避免直接访问DAO
|
||
|
||
## 版本信息
|
||
|
||
- 当前版本: 1.0.1
|
||
- 更新日志: 详见 `change_log.md`
|