wlzboy
1 天以前 08f95b2f159b56fa3bd4f4b348855989de8aa456
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
89
90
91
92
93
94
95
96
-- 车辆和人员变更重新同步定时任务配置SQL
-- 在sys_job表中添加定时任务
-- 调用旧系统 admin_save_25.asp 接口更新调度单
-- 
-- 需要重新同步的变更类型:
--   1. 车辆变更:修改了分配的车辆
--   2. 执行人员变更:修改了执行人员(司机、医生、护士)
--   3. 地址变更:修改了转出医院地址或转入医院地址
--   4. 成交价变更:修改了转运费用(transfer_price)
 
-- 重新同步车辆和人员变更的任务到旧系统
INSERT INTO sys_job (job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by, create_time, remark)
VALUES 
('同步服务调度到旧系统变更', 'DEFAULT', 'legacySystemSyncTask.resyncVehicleAndPersonnel', '0 0/5 * * * ?', '3', '1', '0', 'admin', sysdate(), 
'每5分钟自动重新同步车辆、人员、地址、成交价发生变更的任务到旧系统。当任务的车辆、人员、地址或费用被修改后,会标记need_resync=1,定时任务会将这些变更同步到旧系统调度单表。');
 
-- 说明:
-- job_name: 任务名称
-- job_group: 任务组名(DEFAULT为默认组)
-- invoke_target: 调用目标字符串(Bean名称.方法名)
--   - legacySystemSyncTask.resyncVehicleAndPersonnel() 重新同步车辆和人员变更
--
-- cron_expression: cron表达式
--   - '0 0/5 * * * ?' = 每5分钟执行一次(推荐)
--   - '0 0/10 * * * ?' = 每10分钟执行一次
--   - '0 0/3 * * * ?' = 每3分钟执行一次(仅在变更频繁时使用)
--
-- misfire_policy: 错过执行策略
--   - 1=立即执行
--   - 2=执行一次
--   - 3=放弃执行(推荐)
--
-- concurrent: 是否并发
--   - 0=允许并发
--   - 1=禁止并发(推荐,避免重复同步)
--
-- status: 状态
--   - 0=正常(启用)
--   - 1=暂停(停用)
 
-- 使用场景:
-- 1. 车辆信息变更:
--    - 任务分配的车辆被更换
--    - 车辆信息(车牌号等)被修改
--
-- 2. 人员信息变更:
--    - 执行人员(司机、医生、护士等)被重新分配
--    - 人员信息被修改
--
-- 3. 地址信息变更:
--    - 转出医院地址被修改
--    - 转入医院地址被修改
--
-- 4. 成交价变更:
--    - 转运费用(transfer_price)被修改
--
-- 3. 同步流程:
--    - 在修改车辆、人员、地址或成交价时,设置 need_resync = 1
--    - 定时任务查询 need_resync = 1 且 dispatch_sync_status = 2 的任务
--    - 调用旧系统 admin_save_25.asp 接口重新同步调度单信息(而非 admin_save_24.gds)
--    - 同步成功后设置 need_resync = 0
--
-- 4. 性能优化:
--    - 每批次限制100条记录
--    - 每条记录间隔1秒
--    - 禁止并发执行
--    - 只同步未完成和未取消的任务
 
-- 监控查询示例:
 
-- 查看需要重新同步的任务数量:
-- SELECT COUNT(*) FROM sys_task_emergency
-- WHERE need_resync = 1
--   AND dispatch_sync_status = 2
--   AND legacy_dispatch_ord_id IS NOT NULL;
 
-- 查看重新同步状态统计:
-- SELECT 
--     need_resync,
--     CASE need_resync
--         WHEN 0 THEN '无需重新同步'
--         WHEN 1 THEN '需要重新同步'
--     END AS resync_status,
--     COUNT(*) AS count
-- FROM sys_task_emergency
-- WHERE dispatch_sync_status = 2
-- GROUP BY need_resync;
 
-- 查看今日重新同步失败的记录:
-- SELECT te.*, t.task_code, t.task_status
-- FROM sys_task_emergency te
-- JOIN sys_task t ON te.task_id = t.task_id
-- WHERE te.need_resync = 1
--   AND te.dispatch_sync_status = 2
--   AND DATE(te.dispatch_sync_time) = CURDATE()
--   AND te.dispatch_sync_error_msg IS NOT NULL;