-- 支付信息和附加费用同步定时任务配置SQL -- 在sys_job表中添加定时任务 -- 1. 支付信息同步(新系统 -> 旧系统) INSERT INTO sys_job (job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by, create_time, remark) VALUES ('支付信息同步到旧系统', 'DEFAULT', 'legacySystemSyncTask.syncPaymentToLegacy', '0 0/10 * * * ?', '3', '1', '0', 'admin', sysdate(), '每10分钟自动同步新系统未同步的支付成功记录到旧系统PaidMoney表。同步条件:pay_status=PAID且sync_status=0或3。'); -- 2. 支付信息反向同步(旧系统 -> 新系统) INSERT INTO sys_job (job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by, create_time, remark) VALUES ('支付信息从旧系统同步', 'DEFAULT', 'legacySystemSyncTask.syncPaymentFromLegacy', '0 0/15 * * * ?', '3', '1', '0', 'admin', sysdate(), '每15分钟自动同步旧系统PaidMoney表最近7天的支付记录到新系统。只同步在新系统中存在对应转运任务(ServiceOrdID和DispatchOrdID匹配)的记录。'); -- 3. 附加费用同步(新系统 -> 旧系统) INSERT INTO sys_job (job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by, create_time, remark) VALUES ('附加费用同步到旧系统', 'DEFAULT', 'legacySystemSyncTask.syncAdditionalFeeToLegacy', '0 0/10 * * * ?', '3', '1', '0', 'admin', sysdate(), '每10分钟自动同步新系统未同步的附加费用记录到旧系统PaidMoney_Add表。同步条件:sync_status=0或3。'); -- 4. 附加费用反向同步(旧系统 -> 新系统) INSERT INTO sys_job (job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by, create_time, remark) VALUES ('附加费用从旧系统同步', 'DEFAULT', 'legacySystemSyncTask.syncAdditionalFeeFromLegacy', '0 0/15 * * * ?', '3', '1', '0', 'admin', sysdate(), '每15分钟自动同步旧系统PaidMoney_Add表最近24小时的附加费用记录到新系统。只同步在新系统中存在对应转运任务(ServiceOrdID和DispatchOrdID匹配)的记录。'); -- 说明: -- job_name: 任务名称 -- job_group: 任务组名(DEFAULT为默认组) -- invoke_target: 调用目标字符串(Bean名称.方法名) -- 支付同步方法: -- - legacySystemSyncTask.syncPaymentToLegacy() 新系统 -> 旧系统 -- - legacySystemSyncTask.syncPaymentFromLegacy() 旧系统 -> 新系统 -- 附加费用同步方法: -- - legacySystemSyncTask.syncAdditionalFeeToLegacy() 新系统 -> 旧系统 -- - legacySystemSyncTask.syncAdditionalFeeFromLegacy() 旧系统 -> 新系统 -- -- cron_expression: cron表达式 -- - '0 0/10 * * * ?' = 每10分钟执行一次(推荐用于新系统到旧系统的同步) -- - '0 0/15 * * * ?' = 每15分钟执行一次(推荐用于旧系统到新系统的同步) -- - '0 0/5 * * * ?' = 每5分钟执行一次(仅在同步要求高时使用) -- - '0 0/30 * * * ?' = 每30分钟执行一次 -- -- misfire_policy: 错过执行策略 -- - 1=立即执行 -- - 2=执行一次 -- - 3=放弃执行(推荐) -- -- concurrent: 是否并发 -- - 0=允许并发 -- - 1=禁止并发(推荐,避免重复同步和数据冲突) -- -- status: 状态 -- - 0=正常(启用) -- - 1=暂停(停用) -- 使用建议: -- 1. 新系统到旧系统同步(10分钟): -- - 用户操作后需快速同步到旧系统供其他业务使用 -- - 未同步记录会自动重试 -- -- 2. 旧系统到新系统同步(15分钟): -- - 仅同步存在对应转运任务的记录(验证ServiceOrdID和DispatchOrdID) -- - 支付记录查询最近7天 -- - 附加费用查询最近24小时 -- - 避免同步无效的孤立数据 -- -- 3. 性能优化: -- - 每批次限制100条记录 -- - 每条记录间隔1秒 -- - 禁止并发执行 -- -- 4. 监控建议: -- - 定期检查sync_status=3的失败记录 -- - 查看定时任务执行日志 -- - 监控同步耗时和成功率 -- 监控查询示例: -- 查看支付记录同步状态: -- SELECT -- sync_status, -- CASE sync_status -- WHEN 0 THEN '未同步' -- WHEN 1 THEN '同步中' -- WHEN 2 THEN '同步成功' -- WHEN 3 THEN '同步失败' -- END AS status_name, -- COUNT(*) AS count -- FROM sys_task_payment -- WHERE pay_status = 'PAID' -- GROUP BY sync_status; -- 查看附加费用同步状态: -- SELECT -- sync_status, -- CASE sync_status -- WHEN 0 THEN '未同步' -- WHEN 1 THEN '同步中' -- WHEN 2 THEN '同步成功' -- WHEN 3 THEN '同步失败' -- END AS status_name, -- COUNT(*) AS count -- FROM sys_task_additional_fee -- GROUP BY sync_status; -- 查看今日同步失败的记录: -- SELECT * FROM sys_task_payment -- WHERE sync_status = 3 AND DATE(sync_time) = CURDATE(); -- SELECT * FROM sys_task_additional_fee -- WHERE sync_status = 3 AND DATE(sync_time) = CURDATE();