# 项目代码合并方案
文件名：项目代码合并方案_20250115.md
创建于：2025-01-15
创建者：AI

# 任务描述
将CollisionAvoidanceSystem项目的代码合并到QAUP-Management项目中，采用独立模块集成方案，通过适配器模式共享数据访问层，避免重复开发DAO组件。

# 项目概述
- **QAUP-Management**：基于若依框架的车辆管理系统（Spring Boot 2.5.15 + Java 8 + MyBatis）
- **CollisionAvoidanceSystem**：机场碰撞避免系统（Spring Boot 3.4.3 + Java 17 + JPA）
- **目标**：将两个项目合并为统一的Maven多模块项目，保持业务逻辑独立性

---
*以下部分由 AI 在协议执行过程中维护*
---

# 分析 (由 RESEARCH 模式填充)

## 技术架构分析
**QAUP-Management技术栈：**
- Spring Boot 2.5.15 + Java 8
- MyBatis + PostgreSQL
- 用户权限、菜单管理等）
- Maven多模块结构（qaup-admin、qaup-system、qaup-framework等）

**CollisionAvoidanceSystem技术栈：**
- Spring Boot 3.4.3 + Java 17
- JPA + PostgreSQL + PostGIS
- Redis + Kafka + WebSocket
- 空间计算（JTS、GeoTools）

## 兼容性挑战
1. **Spring Boot版本差异**：3.4.3 vs 2.5.15
2. **Java版本差异**：17 vs 8
3. **数据访问方式**：JPA vs MyBatis
4. **依赖版本冲突**：多个依赖存在版本不兼容

## 数据共享需求
- sys_vehicle_info（车辆基础信息）
- vehicle_locations（实时位置数据）
- sys_driver_info（驾驶员信息）
- 其他业务表的交叉查询需求

# 提议的解决方案 (由 INNOVATE 模式填充)

## 方案选择：独立模块集成 + 适配器模式
**核心策略：**
1. **技术栈降级**：将CollisionAvoidanceSystem降级到与QAUP-Management兼容的版本
2. **模块化集成**：作为qaup-collision模块加入Maven项目结构
3. **数据访问适配**：通过适配器模式复用QAUP-Management的Service层
4. **配置统一**：共享数据库配置，保持独立的业务配置

**技术优势：**
- 避免重复编写DAO组件
- 保持业务逻辑完整性
- 技术风险可控
- 开发工作量最小化

**实施策略：**
- CollisionAvoidanceSystem → qaup-collision模块
- 创建QuapDataAdapter适配器类
- 统一Maven依赖管理
- 保持前端界面独立，后期可集成

# 当前执行步骤 (由 EXECUTE 模式在开始执行某步骤时更新)
> 正在执行: "6. 迁移CollisionAvoidanceSystem的核心业务代码到qaup-collision模块"

# 任务进度 (由 EXECUTE 模式在每步完成后追加)
*   [2025-01-15 15:14:27]
    *   步骤：[检查清单项目1] 备份CollisionAvoidanceSystem项目到安全位置
    *   修改：成功创建项目备份：CollisionAvoidanceSystem_backup_20250707_151427
    *   更改摘要：确保后续操作安全性
    *   原因：执行计划步骤 [1]
    *   阻碍：无
    *   用户确认状态：成功
*   [2025-01-15 15:28:42]  
    *   步骤：[检查清单项目2] 在QAUP-Management根目录创建qaup-collision模块目录结构
    *   修改：创建完整的Maven标准目录结构，包含adapter、service、controller等包
    *   更改摘要：建立项目基础架构
    *   原因：执行计划步骤 [2]
    *   阻碍：无
    *   用户确认状态：成功
*   [2025-01-15 15:35:15]
    *   步骤：[检查清单项目3] 修改QAUP-Management根pom.xml，添加qaup-collision模块声明
    *   修改：在modules和dependencyManagement部分添加qaup-collision配置
    *   更改摘要：配置Maven多模块项目结构
    *   原因：执行计划步骤 [3]
    *   阻碍：无
    *   用户确认状态：成功
*   [2025-01-15 15:42:08]
    *   步骤：[检查清单项目4] 创建qaup-collision模块的pom.xml，降级Spring Boot到2.5.15
    *   修改：配置Java 8兼容的空间计算库版本（GeoTools 28.5、JTS 1.19.0等）
    *   更改摘要：建立Spring Boot 2.5.15兼容的依赖管理
    *   原因：执行计划步骤 [4]
    *   阻碍：无
    *   用户确认状态：成功
*   [2025-01-15 15:48:33]
    *   步骤：[检查清单项目5] 解决JTS、GeoTools等空间计算库的版本兼容性问题
    *   修改：在根pom.xml中统一管理空间计算库版本，移除子模块重复声明
    *   更改摘要：确保Maven依赖管理最佳实践，无版本冲突
    *   原因：执行计划步骤 [5]
    *   阻碍：无
    *   用户确认状态：成功
*   [2025-01-15 15:56:42]
    *   步骤：[检查清单项目6] 迁移CollisionAvoidanceSystem的核心业务代码到qaup-collision模块
    *   修改：批量拷贝134个Java文件，修改包名为com.qaup.collision
    *   更改摘要：完成代码迁移和包名统一
    *   原因：执行计划步骤 [6]
    *   阻碍：无
    *   用户确认状态：成功
*   [2025-01-15 16:05:18]
    *   步骤：[检查清单项目7] 将包名从com.dongni.collisionavoidance改为com.qaup.collision
    *   修改：已在步骤6中完成包名批量修改
    *   更改摘要：包名修改验证完成，无残留旧包名
    *   原因：执行计划步骤 [7]（与步骤6合并执行）
    *   阻碍：无
    *   用户确认状态：成功
*   [2025-01-15 16:12:45]
    *   步骤：[检查清单项目8] 修改Java 17语法为Java 8兼容语法
    *   修改：修复javax/jakarta命名空间、GenerationType、@JdbcTypeCode注解、var关键字等兼容性问题
    *   更改摘要：完成Java 8兼容性修复，核心编译错误解决
    *   原因：执行计划步骤 [8]
    *   阻碍：无
    *   用户确认状态：成功
*   [2025-01-15 16:18:30]
    *   步骤：[检查清单项目9] 创建QuapDataAdapter适配器类，连接若依Service层
    *   修改：创建QuapDataAdapter.java，提供车辆信息查询、数据类型转换等功能
    *   更改摘要：建立CollisionAvoidanceSystem与若依系统的数据访问桥梁
    *   原因：执行计划步骤 [9]
    *   阻碍：无
    *   用户确认状态：待确认

# 实施计划 (由 PLAN 模式生成)

## 详细技术规范

### 1. 模块结构设计
```
QAUP-Management/
├── qaup-admin/              # 管理后台入口
├── qaup-framework/          # 框架核心
├── qaup-system/             # 系统模块
├── qaup-common/             # 通用工具
├── qaup-collision/          # 新增：碰撞避免模块
│   ├── src/main/java/com/qaup/collision/
│   │   ├── adapter/          # 数据适配器
│   │   ├── service/          # 业务服务（原CollisionAvoidanceSystem）
│   │   ├── controller/       # REST控制器
│   │   ├── config/           # 配置类
│   │   └── model/            # 数据模型
│   └── pom.xml
├── qaup-quartz/             # 定时任务
├── qaup-generator/          # 代码生成
└── pom.xml                   # 根配置
```

### 2. 依赖版本规范
- Spring Boot: 2.5.15
- Java: 8
- PostgreSQL Driver: 42.7.1
- PostGIS: 支持空间数据的版本
- JTS: 1.19.0（空间计算库）
- GeoTools: 28.x（兼容Java 8的版本）

### 3. 数据适配器设计
```java
@Component
public class QuapDataAdapter {
    @Autowired private ISysVehicleInfoService vehicleService;
    @Autowired private ISysDriverInfoService driverService;
    
    // 车辆数据适配方法
    public List<SpecialVehicle> getActiveVehiclesForCollision();
    public MovingObject getVehicleById(String vehicleId);
    public void updateVehicleLocation(String vehicleId, GeoPosition position);
}
```

### 4. 配置整合策略
- 数据库配置：使用QAUP-Management的配置
- Redis配置：保持CollisionAvoidanceSystem的配置
- 新增collision专用配置项
- WebSocket配置独立管理

## 实施检查清单

### 阶段1：环境准备和依赖调整
1. 备份CollisionAvoidanceSystem项目
2. 创建qaup-collision模块目录结构
3. 调整pom.xml配置，降级Spring Boot版本到2.5.15
4. 调整Java版本到8，修改相关语法兼容性
5. 解决依赖版本冲突，统一版本管理

### 阶段2：代码迁移和适配
6. 迁移CollisionAvoidanceSystem核心代码到qaup-collision模块
7. 创建QuapDataAdapter适配器类
8. 修改CollisionAvoidanceSystem的数据访问代码，使用适配器
9. 调整包名从com.dongni.collisionavoidance到com.qaup.collision
10. 更新Spring Boot配置文件，移除冲突配置

### 阶段3：配置整合和测试
11. 整合application.yml配置文件
12. 配置qaup-admin模块依赖qaup-collision
13. 创建CollisionAvoidanceSystem的管理界面入口（可选）
14. 编写集成测试，验证数据访问适配器功能
15. 测试WebSocket、Redis等独立功能

### 阶段4：文档和部署
16. 更新项目README和文档
17. 创建合并后的启动指南
18. 更新VERSION.md和change_log.md
19. 验证完整的项目构建和启动流程
20. 清理临时文件和备份

## 风险控制措施
- 每个阶段完成后进行功能验证
- 保留原项目备份直到合并完全稳定
- 优先处理核心功能，次要功能可后续迭代
- 建立回滚计划，确保可以快速恢复原状态 