-- 旧系统转运任务同步定时任务配置SQL
-- 在sys_job表中添加定时任务

-- 急救转运任务自动同步到旧系统
INSERT INTO sys_job (job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by, create_time, remark)
VALUES 
('旧系统转运任务同步', 'DEFAULT', 'legacySystemSyncTask.syncPendingTasks', '0 0/10 * * * ?', '3', '1', '0', 'admin', sysdate(), 
'每10分钟自动同步未同步成功的急救转运任务到旧系统。默认启用，同步失败的任务会自动重试。');

-- 说明：
-- job_name: 任务名称
-- job_group: 任务组名（DEFAULT为默认组）
-- invoke_target: 调用目标字符串（Bean名称.方法名）
--   - legacySystemSyncTask.syncPendingTasks() 批量同步未同步的任务
--   - legacySystemSyncTask.syncTask('123') 同步指定ID的任务
-- cron_expression: cron表达式
--   - '0 0/10 * * * ?' = 每10分钟执行一次
--   - '0 0/5 * * * ?' = 每5分钟执行一次
--   - '0 0/30 * * * ?' = 每30分钟执行一次
--   - '0 0 * * * ?' = 每小时执行一次
-- misfire_policy: 错过执行策略
--   - 1=立即执行
--   - 2=执行一次
--   - 3=放弃执行（推荐）
-- concurrent: 是否并发
--   - 0=允许并发
--   - 1=禁止并发（推荐，避免重复同步）
-- status: 状态
--   - 0=正常（启用）
--   - 1=暂停（停用）
-- create_by: 创建者
-- create_time: 创建时间
-- remark: 备注说明

-- 使用建议：
-- 1. 生产环境建议每10-30分钟执行一次，避免频繁请求旧系统
-- 2. 如果旧系统性能较好，可缩短至5分钟
-- 3. 如果同步失败率高，可延长至1小时，并人工介入处理
-- 4. 可通过修改 legacy.system.enabled=false 临时禁用同步功能

-- 定时任务执行逻辑：
-- 1. 查询 sync_status = 0（未同步）或 3（同步失败）的任务
-- 2. 逐个调用旧系统接口 admin_save_19.gds
-- 3. 每个任务间隔1秒，避免并发过高
-- 4. 更新同步状态和 legacy_service_ord_id
-- 5. 记录错误信息到 sync_error_msg 字段

-- 监控查询：
-- 查看待同步任务数：
-- SELECT COUNT(*) FROM sys_task_emergency WHERE sync_status IN (0, 3);

-- 查看今日同步统计：
-- SELECT 
--     sync_status,
--     CASE sync_status
--         WHEN 0 THEN '未同步'
--         WHEN 1 THEN '同步中'
--         WHEN 2 THEN '同步成功'
--         WHEN 3 THEN '同步失败'
--     END AS status_name,
--     COUNT(*) AS count
-- FROM sys_task_emergency
-- WHERE DATE(create_time) = CURDATE()
-- GROUP BY sync_status;
