从SQL Server数据库同步分公司和部门数据到若依系统。
数据格式转换:
- SQL Server: 湛江--护士
- 转换后:
- 分公司: 湛江分公司 (parent_id=100)
- 部门: 护士 (parent_id=分公司ID)
# 添加department_id字段
mysql -u root -p ry-vue < sql/add_department_id_to_sys_dept.sql
# 添加菜单权限(可选)
mysql -u root -p ry-vue < sql/dept_sync_menu.sql
mvn clean package -DskipTests
cd ruoyi-admin
java -jar target/ruoyi-admin.jar
POST http://localhost:8080/system/dept/sync/branch
Headers:
Authorization: Bearer {你的token}
curl -X POST http://localhost:8080/system/dept/sync/branch \
-H "Authorization: Bearer {你的token}"
{
"code": 200,
"msg": "同步完成!创建分公司: 3, 更新分公司: 0, 创建部门: 12, 更新部门: 0",
"data": {
"createdBranch": 3,
"updatedBranch": 0,
"createdDept": 12,
"updatedDept": 0,
"totalProcessed": 12
}
}
-- 查看同步的分公司
SELECT * FROM sys_dept
WHERE parent_id = 100 AND dept_name LIKE '%分公司'
ORDER BY dept_name;
-- 查看同步的部门(含department_id)
SELECT d1.dept_name AS '分公司', d2.dept_name AS '部门', d2.department_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 '%分公司'
ORDER BY d1.dept_name, d2.dept_name;
DepartmentSyncDTO.java - 同步数据传输对象DepartmentSyncMapper.java - 数据访问接口DepartmentSyncMapper.xml - SQL映射文件IDepartmentSyncService.java - 服务接口DepartmentSyncServiceImpl.java - 服务实现(核心逻辑)DepartmentSyncController.java - 控制器SysDept.java - 修改(添加departmentId字段)SysDeptMapper.java - 修改(添加查询方法)SysDeptMapper.xml - 修改(添加SQL语句)sql/add_department_id_to_sys_dept.sql - 添加字段sql/dept_sync_menu.sql - 添加菜单prd/部门同步功能说明.md - 详细说明部门同步测试指南.md - 测试指南✅ 支持重复执行 - 不会创建重复数据
✅ 事务保护 - 失败自动回滚
✅ 日志记录 - 详细记录同步过程
⚠️ 权限要求 - 需要 system:dept:sync 权限
application-dev.yml)tail -f ruoyi-admin/logs/sys-error.log在部门管理页面添加:javascript // 调用同步接口 syncDepartments() { this.$confirm('确认同步分公司数据吗?', '提示', { type: 'warning' }).then(() => { this.$http.post('/system/dept/sync/branch').then(res => { this.$message.success(res.msg); this.getList(); // 刷新列表 }); }); }
在系统管理->定时任务中添加:
- 任务名称: 分公司同步
- 调用目标: departmentSyncTask.execute
- cron表达式: 0 0 2 * * ? (每天凌晨2点)
如有问题,请查看:
- 详细文档: prd/部门同步功能说明.md
- 测试指南: 部门同步测试指南.md