-- ========================================== -- 旧系统任务状态同步定时任务配置脚本 -- ========================================== -- -- 功能说明: -- 从旧系统同步任务状态到新系统,实现状态的实时更新 -- -- 使用场景: -- 1. 旧系统操作人员更新了调度单状态 -- 2. 新系统需要反映旧系统的状态变更 -- 3. 保持新旧系统状态的一致性 -- -- 同步条件: -- 1. 调度单已同步成功(dispatch_sync_status = 2) -- 2. 有DispatchOrdID(legacy_dispatch_ord_id IS NOT NULL) -- 3. 任务状态未完成(task_status NOT IN ('COMPLETED', 'CANCELLED')) -- -- 执行频率建议: -- - 生产环境: 每5分钟执行一次 (0 0/5 * * * ?) -- - 测试环境: 每2分钟执行一次 (0 0/2 * * * ?) -- -- 注意事项: -- 1. 依赖调度单同步完成 -- 2. 仅同步未完成状态的任务 -- 3. 状态映射规则见TaskStatusConverter类 -- ========================================== -- 插入定时任务配置 INSERT INTO `sys_job` ( `job_name`, `job_group`, `invoke_target`, `cron_expression`, `misfire_policy`, `concurrent`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark` ) VALUES ( '任务状态旧到新同步', 'DEFAULT', 'legacySystemSyncTask.syncTaskStatusFromLegacy()', '0 0/5 * * * ?', '2', '1', '0', 'admin', NOW(), 'admin', NOW(), '从旧系统同步任务状态到新系统,每5分钟执行一次。同步已同步调度单且状态未完成的任务。' ); -- ========================================== -- 验证查询 -- ========================================== -- 1. 查看定时任务是否添加成功 SELECT job_id, job_name, job_group, invoke_target, cron_expression, CASE status WHEN '0' THEN '正常' WHEN '1' THEN '暂停' END AS job_status, remark FROM sys_job WHERE job_name = '任务状态同步'; -- 2. 查看需要同步状态的任务数量 SELECT COUNT(*) AS total_tasks, SUM(CASE WHEN t.task_status = 'PENDING' THEN 1 ELSE 0 END) AS pending, SUM(CASE WHEN t.task_status = 'DEPARTING' THEN 1 ELSE 0 END) AS departing, SUM(CASE WHEN t.task_status = 'ARRIVED' THEN 1 ELSE 0 END) AS arrived, SUM(CASE WHEN t.task_status = 'IN_PROGRESS' THEN 1 ELSE 0 END) AS in_progress, SUM(CASE WHEN t.task_status = 'RETURNING' THEN 1 ELSE 0 END) AS returning FROM sys_task_emergency e INNER JOIN sys_task t ON e.task_id = t.task_id WHERE e.dispatch_sync_status = 2 AND e.legacy_dispatch_ord_id IS NOT NULL AND t.task_status NOT IN ('COMPLETED', 'CANCELLED') AND t.del_flag = '0'; -- 3. 查看任务状态分布详情 SELECT t.task_id, t.task_code, t.task_status, e.legacy_service_ord_id, e.legacy_dispatch_ord_id, t.create_time, t.update_time FROM sys_task_emergency e INNER JOIN sys_task t ON e.task_id = t.task_id WHERE e.dispatch_sync_status = 2 AND e.legacy_dispatch_ord_id IS NOT NULL AND t.task_status NOT IN ('COMPLETED', 'CANCELLED') AND t.del_flag = '0' ORDER BY t.update_time DESC LIMIT 10; -- ========================================== -- 状态映射规则参考 -- ========================================== /* 旧系统状态码 -> 新系统状态: 0,1,2,3,11,12 -> PENDING (待处理) 4 -> DEPARTING (出发中) 5,14 -> ARRIVED (已到达) 6 -> IN_PROGRESS (任务中) 7 -> RETURNING (返程中) 8,9 -> COMPLETED (已完成) 10,13 -> CANCELLED (已取消) 详细说明见: com.ruoyi.system.utils.TaskStatusConverter */ -- ========================================== -- 手动触发测试 -- ========================================== /* -- 在定时任务管理页面手动执行一次任务,或者在代码中调用: -- legacySystemSyncTask.syncTaskStatusFromLegacy() -- 查看同步日志(需要查看应用日志文件) */