wlzboy
2 天以前 8cb5d3440208a3be3e772e65f1bd0ec63031ba62
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
-- 旧系统转运单同步定时任务配置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. 可通过定时任务日志查看详细错误:
--    系统监控 -> 定时任务 -> 调度日志