# 进入项目sql目录
cd d:\project\急救转运\code\Api\RuoYi-Vue-master\sql
# 执行添加department_id字段的脚本
mysql -h localhost -u root -p ry-vue < add_department_id_to_sys_dept.sql
# 执行添加菜单权限的脚本(可选)
mysql -h localhost -u root -p ry-vue < dept_sync_menu.sql
检查文件:ruoyi-admin/src/main/resources/application-dev.yml
确保sqlserver数据源配置正确:
```yaml
spring:
datasource:
druid:
# 主数据源(MySQL)
master:
url: jdbc:mysql://localhost:3306/ry-vue?...
username: root
password: password
# 从数据源(SQL Server)
sqlserver:
enabled: true
url: jdbc:sqlserver://your-server:1433;DatabaseName=your-db
username: your-username
password: your-password
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
### 3. 编译项目
cd d:\project\急救转运\code\Api\RuoYi-Vue-master
mvn clean package -DskipTests
```
cd ruoyi-admin
java -jar target/ruoyi-admin.jar
POST http://localhost:8080/login
Content-Type: application/json
{
"username": "admin",
"password": "admin123"
}
返回示例:json { "code": 200, "msg": "操作成功", "token": "eyJhbGciOiJIUzUxMiJ9..." }
POST http://localhost:8080/system/dept/sync/branch
Authorization: Bearer eyJhbGciOiJIUzUxMiJ9...
预期返回:json { "code": 200, "msg": "同步完成!创建分公司: 3, 更新分公司: 0, 创建部门: 12, 更新部门: 0", "data": { "createdBranch": 3, "updatedBranch": 0, "createdDept": 12, "updatedDept": 0, "totalProcessed": 12 } }
查询数据库:
```sql
-- 查看新创建的分公司
SELECT * FROM sys_dept
WHERE parent_id = 100
AND dept_name LIKE '%分公司'
AND del_flag = '0'
ORDER BY create_time DESC;
-- 查看新创建的子部门
SELECT d1.dept_name AS '分公司', d2.dept_name AS '部门', d2.department_id AS 'SQL Server ID'
FROM sys_dept d1
INNER JOIN sys_dept d2 ON d1.dept_id = d2.parent_id
WHERE d1.parent_id = 100
AND d1.dept_name LIKE '%分公司'
AND d2.del_flag = '0'
ORDER BY d1.dept_name, d2.dept_name;
```
第一次同步:
- 创建分公司: 3
- 创建部门: 12
POST http://localhost:8080/system/dept/sync/branch
Authorization: Bearer {token}
预期返回:json { "code": 200, "msg": "同步完成!创建分公司: 0, 更新分公司: 0, 创建部门: 0, 更新部门: 12", "data": { "createdBranch": 0, "updatedBranch": 0, "createdDept": 0, "updatedDept": 12, "totalProcessed": 12 } }
验证:
- 数据库中部门数量不变
- update_time字段已更新
- 没有重复数据
查看同步日志:bash tail -f ruoyi-admin/logs/sys-info.log | grep -i "department"
关键日志示例: 2025-10-18 14:30:00 INFO DepartmentSyncServiceImpl - 从SQL Server获取到 12 条分公司数据 2025-10-18 14:30:01 INFO DepartmentSyncServiceImpl - 创建新分公司: 湛江分公司, ID: 200 2025-10-18 14:30:01 INFO DepartmentSyncServiceImpl - 创建新部门: 湛江分公司 -> 护士, departmentId: 1001 2025-10-18 14:30:01 INFO DepartmentSyncServiceImpl - 创建新部门: 湛江分公司 -> 车队, departmentId: 1002 ... 2025-10-18 14:30:02 INFO DepartmentSyncServiceImpl - 同步完成!创建分公司: 3, 更新分公司: 0, 创建部门: 12, 更新部门: 0
排查步骤:
1. 查看后台日志:tail -f ruoyi-admin/logs/sys-error.log
2. 检查SQL Server连接配置
3. 检查数据库字段是否已添加
4. 检查Mapper XML文件是否正确
排查步骤:
1. 确认SQL Server中有数据:
sql SELECT b.departmentID, b.departmentName FROM uv_department a INNER JOIN uv_department b ON a.departmentID = b.parentID WHERE a.departmentName = '合作单位'
2. 确认数据源配置正确
3. 查看同步日志
排查步骤:
1. 检查ancestors字段格式
2. 确认parent_id正确
3. 查看同步日志中的分公司ID
如果SQL Server中有大量数据,测试同步性能:
# 记录开始时间
date
# 调用同步接口
curl -X POST http://localhost:8080/system/dept/sync/branch \
-H "Authorization: Bearer {token}"
# 记录结束时间
date
预期性能指标:
- 100条数据:< 5秒
- 500条数据:< 20秒
- 1000条数据:< 40秒
所有以下条件满足即测试通过:
1. ✅ 能够成功从SQL Server获取数据
2. ✅ 能够正确解析部门名称
3. ✅ 能够创建分公司和子部门
4. ✅ department_id字段正确
5. ✅ 重复同步不会创建重复数据
6. ✅ 异常情况有友好提示
7. ✅ 日志记录完整
8. ✅ 数据库数据正确
测试通过后,可以:
1. 在前端部门管理页面添加"同步"按钮
2. 配置定时任务自动同步
3. 添加同步历史记录功能
4. 添加同步失败通知功能