| New file |
| | |
| | | package com.ruoyi.quartz.task; |
| | | |
| | | import com.ruoyi.system.domain.DepartmentSyncDTO; |
| | | import com.ruoyi.system.domain.OrderClassDTO; |
| | | import com.ruoyi.system.domain.UserSyncDTO; |
| | | import com.ruoyi.system.service.*; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Component; |
| | | import com.ruoyi.common.core.domain.AjaxResult; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * OA数据同步定时任务(组合任务) |
| | | * 先同步部门,再同步用户 |
| | | * |
| | | * @author ruoyi |
| | | * @date 2025-10-18 |
| | | */ |
| | | @Component("oaSyncTask") |
| | | public class OaSyncTask |
| | | { |
| | | private static final Logger log = LoggerFactory.getLogger(OaSyncTask.class); |
| | | |
| | | @Autowired |
| | | private IDepartmentSyncService departmentSyncService; |
| | | |
| | | @Autowired |
| | | private IUserSyncService userSyncService; |
| | | |
| | | @Autowired |
| | | private IDepartmentSyncDataService departmentSyncDataService; |
| | | |
| | | @Autowired |
| | | private IUserSyncDataService userSyncDataService; |
| | | |
| | | private List<DepartmentSyncDTO> getDept(){ |
| | | return departmentSyncDataService.getBranchDepartments(); |
| | | } |
| | | |
| | | |
| | | private List<UserSyncDTO> getUserData(){ |
| | | return userSyncDataService.getOaUsers(); |
| | | } |
| | | |
| | | @Autowired |
| | | private IOrderClassDataService orderClassDataService; |
| | | private List<OrderClassDTO> getServiceOrdCode() { |
| | | return orderClassDataService.getServiceOrderClass(); |
| | | } |
| | | private List<OrderClassDTO> getDispatchOrdCode() { |
| | | return orderClassDataService.getDispatchOrderClass(); |
| | | } |
| | | /** |
| | | * 同步OA数据(部门+用户) |
| | | * 按顺序执行:1. 部门同步 2. 用户同步 |
| | | * |
| | | * 使用示例: |
| | | * - 任务名称:OA数据同步 |
| | | * - 调用目标:oaSyncTask.syncOaData |
| | | * - cron表达式:0 0 2 * * ?(每天凌晨2点执行) |
| | | */ |
| | | public void syncOaData() |
| | | { |
| | | try |
| | | { |
| | | log.info("##########开始执行OA数据同步定时任务##########"); |
| | | |
| | | // 第一步:同步部门 |
| | | log.info("【步骤1/2】开始同步部门数据..."); |
| | | AjaxResult deptResult = departmentSyncService.syncBranchDepartments(this.getDept(),this.getServiceOrdCode(),this.getDispatchOrdCode()); |
| | | |
| | | if (deptResult.get("code").equals(200)) |
| | | { |
| | | log.info("【步骤1/2】部门同步成功: {}", deptResult.get("msg")); |
| | | |
| | | // 第二步:同步用户(只有部门同步成功才执行) |
| | | log.info("【步骤2/2】开始同步用户数据..."); |
| | | AjaxResult userResult = userSyncService.syncOaUsers(this.getUserData()); |
| | | |
| | | if (userResult.get("code").equals(200)) |
| | | { |
| | | log.info("【步骤2/2】用户同步成功: {}", userResult.get("msg")); |
| | | log.info("##########OA数据同步定时任务执行完成##########"); |
| | | log.info("总结:部门同步成功,用户同步成功"); |
| | | } |
| | | else |
| | | { |
| | | log.error("【步骤2/2】用户同步失败: {}", userResult.get("msg")); |
| | | log.warn("##########OA数据同步定时任务部分完成##########"); |
| | | log.warn("总结:部门同步成功,用户同步失败"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | log.error("【步骤1/2】部门同步失败: {}", deptResult.get("msg")); |
| | | log.error("由于部门同步失败,跳过用户同步"); |
| | | log.error("##########OA数据同步定时任务执行失败##########"); |
| | | } |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | log.error("OA数据同步定时任务执行异常", e); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 同步OA数据(带参数) |
| | | * |
| | | * @param params 参数(预留,暂未使用) |
| | | */ |
| | | public void syncOaData(String params) |
| | | { |
| | | log.info("OA数据同步任务参数: {}", params); |
| | | syncOaData(); |
| | | } |
| | | |
| | | /** |
| | | * 仅同步部门(独立任务) |
| | | */ |
| | | public void syncDepartmentsOnly() |
| | | { |
| | | try |
| | | { |
| | | log.info("==========开始执行部门同步任务=========="); |
| | | AjaxResult result = departmentSyncService.syncBranchDepartments(this.getDept(),this.getServiceOrdCode(),this.getDispatchOrdCode()); |
| | | |
| | | if (result.get("code").equals(200)) |
| | | { |
| | | log.info("部门同步成功: {}", result.get("msg")); |
| | | } |
| | | else |
| | | { |
| | | log.error("部门同步失败: {}", result.get("msg")); |
| | | } |
| | | log.info("==========部门同步任务执行完成=========="); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | log.error("部门同步任务执行异常", e); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 仅同步用户(独立任务) |
| | | */ |
| | | public void syncUsersOnly() |
| | | { |
| | | try |
| | | { |
| | | log.info("==========开始执行用户同步任务=========="); |
| | | AjaxResult result = userSyncService.syncOaUsers(this.getUserData()); |
| | | |
| | | if (result.get("code").equals(200)) |
| | | { |
| | | log.info("用户同步成功: {}", result.get("msg")); |
| | | } |
| | | else |
| | | { |
| | | log.error("用户同步失败: {}", result.get("msg")); |
| | | } |
| | | log.info("==========用户同步任务执行完成=========="); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | log.error("用户同步任务执行异常", e); |
| | | } |
| | | } |
| | | } |