-- 旧系统转运单同步定时任务配置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', 'legacyTransferSyncTask.syncTransferOrders7Days', '0 0 2 * * ?', '3', '1', '0', 'admin', sysdate(), 
'每天凌晨2点自动同步7天前的旧系统转运单数据。');

-- 说明：
-- job_name: 任务名称 - 旧系统转运单同步
-- job_group: 任务组名（DEFAULT为默认组）
-- invoke_target: 调用目标字符串（Bean名称.方法名）
--   - legacyTransferSyncTask.syncTransferOrders7Days() 同步7天前的转运单数据
--   - legacyTransferSyncTask.syncTransferOrders('7') 也可以使用带参数的方法
-- cron_expression: cron表达式
--   - '0 0 2 * * ?' = 每天凌晨2点执行
--   - '0 0 2 * * ?' = 每天凌晨2点执行
--   - '0 0 3 * * ?' = 每天凌晨3点执行
--   - '0 0 2 1 * ?' = 每月1日凌晨2点执行
-- misfire_policy: 错过执行策略
--   - 1=立即执行
--   - 2=执行一次
--   - 3=放弃执行（推荐）
-- concurrent: 是否并发
--   - 0=允许并发
--   - 1=禁止并发（推荐，避免重复同步）
-- status: 状态
--   - 0=正常（启用）
--   - 1=暂停（停用）
-- create_by: 创建者
-- create_time: 创建时间
-- remark: 备注说明

-- 同步逻辑：
-- 1. 每天凌晨自动执行同步任务
-- 2. 查询7天前的转运单数据
-- 3. 检查是否已同步过
-- 4. 未同步的转运单数据创建新任务
-- 5. 记录同步日志

-- 监控查询：
-- 查看今日转运单同步统计：
SELECT 
    COUNT(*) AS total_sync_count,
    SUM(CASE WHEN task_type = 'EMERGENCY_TRANSFER' THEN 1 ELSE 0 END) AS emergency_transfer_count
FROM sys_task
WHERE DATE(create_time) = CURDATE()
  AND task_description LIKE '%从旧系统同步的转运单%';

-- 查看同步失败的任务：
SELECT 
    task_id,
    task_code,
    task_description,
    create_time
FROM sys_task
WHERE task_description LIKE '%从旧系统同步的转运单%'
  AND task_status = 'ERROR'
ORDER BY create_time DESC;

-- 查看最近同步的任务：
SELECT 
    t.task_id,
    t.task_code,
    t.task_description,
    t.create_time,
    e.legacy_service_ord_id,
    e.legacy_dispatch_ord_id
FROM sys_task t
LEFT JOIN sys_task_emergency e ON t.task_id = e.task_id
WHERE t.task_description LIKE '%从旧系统同步的转运单%'
ORDER BY t.create_time DESC
LIMIT 20;

-- 使用建议：
-- 1. 建议在业务低峰期执行同步任务（如凌晨2点）
-- 2. 可根据实际需求调整同步天数（如改为3天或14天）
-- 3. 定期检查同步失败的任务并处理
-- 4. 可通过修改 status=1 临时禁用同步任务

-- 错误处理：
-- 1. 如果同步失败，检查：
--    - SQL Server连接是否正常
--    - 数据格式是否正确
--    - 新系统字段是否匹配
-- 2. 可通过定时任务日志查看详细错误：
--    系统监控 -> 定时任务 -> 调度日志