-- 支付信息和附加费用同步定时任务配置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();
|