-- 车辆和人员变更重新同步定时任务配置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;
|