# 项目代码合并方案 文件名:项目代码合并方案_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 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. 清理临时文件和备份 ## 风险控制措施 - 每个阶段完成后进行功能验证 - 保留原项目备份直到合并完全稳定 - 优先处理核心功能,次要功能可后续迭代 - 建立回滚计划,确保可以快速恢复原状态