# 部门同步功能 - 快速开始 ## 一、功能说明 从SQL Server数据库同步分公司和部门数据到若依系统。 **数据格式转换:** - SQL Server: `湛江--护士` - 转换后: - 分公司: `湛江分公司` (parent_id=100) - 部门: `护士` (parent_id=分公司ID) ## 二、安装步骤 ### 1️⃣ 执行数据库脚本 ```bash # 添加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 ``` ### 2️⃣ 编译项目 ```bash mvn clean package -DskipTests ``` ### 3️⃣ 启动服务 ```bash cd ruoyi-admin java -jar target/ruoyi-admin.jar ``` ## 三、使用方法 ### 方式1: Postman调用 ``` POST http://localhost:8080/system/dept/sync/branch Headers: Authorization: Bearer {你的token} ``` ### 方式2: curl命令 ```bash curl -X POST http://localhost:8080/system/dept/sync/branch \ -H "Authorization: Bearer {你的token}" ``` ## 四、返回示例 ```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 '%分公司' 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; ``` ## 六、核心文件清单 ### Java文件 - `DepartmentSyncDTO.java` - 同步数据传输对象 - `DepartmentSyncMapper.java` - 数据访问接口 - `DepartmentSyncMapper.xml` - SQL映射文件 - `IDepartmentSyncService.java` - 服务接口 - `DepartmentSyncServiceImpl.java` - 服务实现(核心逻辑) - `DepartmentSyncController.java` - 控制器 - `SysDept.java` - 修改(添加departmentId字段) - `SysDeptMapper.java` - 修改(添加查询方法) - `SysDeptMapper.xml` - 修改(添加SQL语句) ### SQL文件 - `sql/add_department_id_to_sys_dept.sql` - 添加字段 - `sql/dept_sync_menu.sql` - 添加菜单 ### 文档 - `prd/部门同步功能说明.md` - 详细说明 - `部门同步测试指南.md` - 测试指南 ## 七、注意事项 ✅ **支持重复执行** - 不会创建重复数据 ✅ **事务保护** - 失败自动回滚 ✅ **日志记录** - 详细记录同步过程 ⚠️ **权限要求** - 需要 `system:dept:sync` 权限 ## 八、问题排查 ### 接口返回500 1. 检查 SQL Server 连接配置 (`application-dev.yml`) 2. 确认数据库字段已添加 3. 查看日志: `tail -f ruoyi-admin/logs/sys-error.log` ### 没有数据同步 1. 确认 SQL Server 中有数据 2. 检查数据源配置 3. 查看同步日志 ## 九、后续扩展 ### 前端添加同步按钮 在部门管理页面添加: ```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`