8.9 KiB
8.9 KiB
项目代码合并方案
文件名:项目代码合并方案_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)
兼容性挑战
- Spring Boot版本差异:3.4.3 vs 2.5.15
- Java版本差异:17 vs 8
- 数据访问方式:JPA vs MyBatis
- 依赖版本冲突:多个依赖存在版本不兼容
数据共享需求
- sys_vehicle_info(车辆基础信息)
- vehicle_locations(实时位置数据)
- sys_driver_info(驾驶员信息)
- 其他业务表的交叉查询需求
提议的解决方案 (由 INNOVATE 模式填充)
方案选择:独立模块集成 + 适配器模式
核心策略:
- 技术栈降级:将CollisionAvoidanceSystem降级到与QAUP-Management兼容的版本
- 模块化集成:作为qaup-collision模块加入Maven项目结构
- 数据访问适配:通过适配器模式复用QAUP-Management的Service层
- 配置统一:共享数据库配置,保持独立的业务配置
技术优势:
- 避免重复编写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. 数据适配器设计
@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:环境准备和依赖调整
- 备份CollisionAvoidanceSystem项目
- 创建qaup-collision模块目录结构
- 调整pom.xml配置,降级Spring Boot版本到2.5.15
- 调整Java版本到8,修改相关语法兼容性
- 解决依赖版本冲突,统一版本管理
阶段2:代码迁移和适配
- 迁移CollisionAvoidanceSystem核心代码到qaup-collision模块
- 创建QuapDataAdapter适配器类
- 修改CollisionAvoidanceSystem的数据访问代码,使用适配器
- 调整包名从com.dongni.collisionavoidance到com.qaup.collision
- 更新Spring Boot配置文件,移除冲突配置
阶段3:配置整合和测试
- 整合application.yml配置文件
- 配置qaup-admin模块依赖qaup-collision
- 创建CollisionAvoidanceSystem的管理界面入口(可选)
- 编写集成测试,验证数据访问适配器功能
- 测试WebSocket、Redis等独立功能
阶段4:文档和部署
- 更新项目README和文档
- 创建合并后的启动指南
- 更新VERSION.md和change_log.md
- 验证完整的项目构建和启动流程
- 清理临时文件和备份
风险控制措施
- 每个阶段完成后进行功能验证
- 保留原项目备份直到合并完全稳定
- 优先处理核心功能,次要功能可后续迭代
- 建立回滚计划,确保可以快速恢复原状态