wlzboy
2025-11-22 d4fe921568bc29d72644a55fd194adf7f9277cb5
ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/LegacySystemSyncTask.java
@@ -1,17 +1,27 @@
package com.ruoyi.quartz.task;
import com.ruoyi.system.service.ITaskAttachmentSyncService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.ruoyi.system.service.ILegacySystemSyncService;
import com.ruoyi.system.service.ITaskStatusSyncService;
import com.ruoyi.system.service.ITaskStatusPushService;
/**
 * 旧系统同步定时任务
 * 
 * @author ruoyi
 * @date 2024-01-20
 *
 * 相关任务:
 * 1. LegacySystemSyncTask - 旧系统任务同步(急救转运任务和服务单)
 * 2. LegacyTransferSyncTask - 旧系统转运单同步(从SQL Server到新系统)
 * 3. TaskStatusSyncService - 任务状态同步(从旧系统到新系统)
 * 4. TaskStatusPushService - 任务状态推送(从新系统到旧系统)
 * 5. TaskAttachmentSyncService - 任务附件同步(从新系统到旧系统)
 */
@Component("legacySystemSyncTask")
public class LegacySystemSyncTask {
@@ -20,6 +30,17 @@
    
    @Autowired
    private ILegacySystemSyncService legacySystemSyncService;
    @Autowired
    private ITaskStatusSyncService taskStatusSyncService;
    @Autowired
    private ITaskStatusPushService taskStatusPushService;
    @Autowired
    private ITaskAttachmentSyncService taskAttachmentSyncService;
    
    /**
     * 批量同步未同步的急救转运任务到旧系统
@@ -80,4 +101,69 @@
            log.error("旧系统调度单同步异常", e);
        }
    }
    /**
     * 批量同步任务状态(从旧系统到新系统)
     *
     * 使用示例:
     * 在系统管理 -> 定时任务中添加:
     * 任务名称: 任务状态同步
     * 任务组名: DEFAULT
     * 调用目标字符串: legacySystemSyncTask.syncTaskStatusFromLegacy()
     * cron表达式: 0 0/5 * * * ? (每5分钟执行一次)
     */
    public void syncTaskStatusFromLegacy() {
        log.info("开始执行任务状态同步定时任务(从旧系统到新系统)");
        try {
            int successCount = taskStatusSyncService.batchSyncTaskStatusFromLegacy();
            log.info("任务状态同步完成,成功同步: {} 个任务", successCount);
        } catch (Exception e) {
            log.error("任务状态同步异常", e);
        }
    }
    /**
     * 批量推送任务状态(从新系统到旧系统)
     *
     * 使用示例:
     * 在系统管理 -> 定时任务中添加:
     * 任务名称: 任务状态推送
     * 任务组名: DEFAULT
     * 调用目标字符串: legacySystemSyncTask.pushTaskStatusToLegacy()
     * cron表达式: 0 0/3 * * * ? (每3分钟执行一次)
     */
    public void pushTaskStatusToLegacy() {
        log.info("开始执行任务状态推送定时任务(从新系统到旧系统)");
        try {
            int successCount = taskStatusPushService.batchPushTaskStatusToLegacy();
            log.info("任务状态推送完成,成功推送: {} 个任务", successCount);
        } catch (Exception e) {
            log.error("任务状态推送异常", e);
        }
    }
    /**
     * 批量同步任务附件到旧系统ImageData表
     *
     * 使用示例:
     * 在系统管理 -> 定时任务中添加:
     * 任务名称: 任务附件同步
     * 任务组名: DEFAULT
     * 调用目标字符串: legacySystemSyncTask.syncPendingAttachments()
     * cron表达式: 0 0/5 * * * ? (每5分钟执行一次)
     *
     * 同步条件:
     * 1. 所属任务的调度单已同步成功 (dispatch_sync_status = 2)
     * 2. 附件未同步 (synced_to_image_data = 0 或 null)
     * 3. 有调度单ID和服务单ID
     */
    public void syncPendingAttachments() {
        log.info("开始执行任务附件同步定时任务");
        try {
            int successCount = taskAttachmentSyncService.batchSyncPendingAttachments();
            log.info("任务附件同步完成,成功同步: {} 个附件", successCount);
        } catch (Exception e) {
            log.error("任务附件同步异常", e);
        }
    }
}