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