# 旧系统车辆同步功能 ## 快速链接 - 📖 [详细功能说明](prd/旧系统车辆同步功能说明.md) - 🚀 [快速开始指南](prd/旧系统车辆同步-快速开始.md) - 📝 [开发总结](旧系统车辆同步功能开发总结.md) - 💾 [SQL脚本](sql/legacy_vehicle_sync.sql) ## 功能概述 从SQL Server旧系统的CarData表自动同步车辆数据到MySQL的tb_vehicle_info表。 ### 核心功能 ✅ 同步车辆CarID和车牌号 ✅ 智能匹配车牌(支持模糊匹配) ✅ 自动关联部门(通过CarOrdClass) ✅ 定时任务自动执行 ✅ 支持手动触发同步 ## 快速开始 ### 1. 执行SQL脚本 ```bash mysql -u root -p < sql/legacy_vehicle_sync.sql ``` ### 2. 重启应用 ```bash # Linux ./ry.sh restart # Windows .\ry.bat ``` ### 3. 验证 访问:系统监控 → 定时任务 → 旧系统车辆同步 → 执行一次 ## 数据映射 | SQL Server (CarData) | MySQL (tb_vehicle_info) | |---------------------|------------------------| | CarId | car_id | | CarLicense | vehicle_no | | CarOrdClass | dept_id(通过dispatch_order_class匹配) | ## 技术架构 ``` SQL Server (CarData) ↓ VehicleSyncDataService (@DataSource SQLSERVER) ↓ VehicleSyncService (业务逻辑) ↓ MySQL (tb_vehicle_info) ``` ## 执行方式 ### 定时任务 - 默认:每天凌晨2点自动执行 - 可在后台管理调整执行时间 ### 手动触发 - **方式1**:系统监控 → 定时任务 → 执行一次 - **方式2**:调用API `POST /system/vehicle/sync/legacy` ## 核心算法 ### 车牌匹配 1. 精确匹配:`浙A12345` ↔ `浙A12345` 2. 提取匹配:`浙A12345(奔驰)` → `浙A12345` 3. 模糊匹配:包含关系判断 ### 部门匹配 1. 解析CarOrdClass:`HB.TI` → `['HB', 'TI']` 2. 在sys_dept中匹配dispatch_order_class 3. 返回第一个匹配的部门ID ## 文件清单 ### 新增文件(11个) **Java类** - VehicleSyncDTO.java - VehicleSyncMapper.java - VehicleSyncDataServiceImpl.java - IVehicleSyncDataService.java - VehicleSyncServiceImpl.java - IVehicleSyncService.java - LegacyVehicleSyncTask.java - VehicleSyncController.java **配置文件** - VehicleSyncMapper.xml - legacy_vehicle_sync.sql **文档** - 旧系统车辆同步功能说明.md - 旧系统车辆同步-快速开始.md - 旧系统车辆同步功能开发总结.md ### 修改文件(2个) - VehicleInfo.java(新增car_id字段) - VehicleInfoMapper.xml(新增car_id映射) ## 验证同步结果 ```sql -- 查询已同步的车辆 SELECT v.vehicle_no, v.car_id, d.dept_name, d.dispatch_order_class FROM tb_vehicle_info v LEFT JOIN sys_dept d ON v.dept_id = d.dept_id WHERE v.platform_code = 'LEGACY' ORDER BY v.create_time DESC; ``` ## 常见问题 ### Q: 部门未关联(dept_id为NULL)? A: 检查sys_dept表中是否配置了对应的dispatch_order_class ### Q: 如何修改执行时间? A: 系统监控 → 定时任务 → 编辑 → 修改cron表达式 ### Q: 如何查看同步日志? A: 系统监控 → 定时任务 → 日志 ## 监控SQL ```sql -- 统计同步情况 SELECT COUNT(*) as total, COUNT(dept_id) as with_dept, COUNT(*) - COUNT(dept_id) as without_dept FROM tb_vehicle_info WHERE platform_code = 'LEGACY'; ``` ## 版本信息 - **版本**: v1.0 - **日期**: 2025-10-20 - **状态**: ✅ 已完成,编译通过 ## 技术支持 如有问题,请查看: 1. 详细文档:[旧系统车辆同步功能说明.md](prd/旧系统车辆同步功能说明.md) 2. 系统日志:`logs/sys-info.log` 3. 定时任务日志:系统监控 → 定时任务 → 日志