package com.ruoyi.quartz.task;
|
|
import com.ruoyi.system.service.ITaskAttachmentSyncService;
|
import com.ruoyi.system.service.IPaymentSyncService;
|
import com.ruoyi.system.service.IAdditionalFeeSyncService;
|
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 - 任务附件同步(从新系统到旧系统)
|
* 6. PaymentSyncService - 支付信息同步(双向同步)
|
* 7. AdditionalFeeSyncService - 附加费用同步(双向同步)
|
*/
|
@Component("legacySystemSyncTask")
|
public class LegacySystemSyncTask {
|
|
private static final Logger log = LoggerFactory.getLogger(LegacySystemSyncTask.class);
|
|
@Autowired
|
private ILegacySystemSyncService legacySystemSyncService;
|
|
@Autowired
|
private ITaskStatusSyncService taskStatusSyncService;
|
|
@Autowired
|
private ITaskStatusPushService taskStatusPushService;
|
|
@Autowired
|
private ITaskAttachmentSyncService taskAttachmentSyncService;
|
|
@Autowired
|
private IPaymentSyncService paymentSyncService;
|
|
@Autowired
|
private IAdditionalFeeSyncService additionalFeeSyncService;
|
|
|
|
/**
|
* 批量同步未同步的急救转运任务到旧系统
|
*
|
* 使用示例:
|
* 在系统管理 -> 定时任务中添加:
|
* 任务名称: 旧系统任务同步
|
* 任务组名: DEFAULT
|
* 调用目标字符串: legacySystemSyncTask.syncPendingTasks()
|
* cron表达式: 0 0/10 * * * ? (每10分钟执行一次)
|
*/
|
public void syncPendingTasks() {
|
log.info("开始执行旧系统任务同步定时任务");
|
try {
|
int successCount = legacySystemSyncService.batchSyncPendingTasks();
|
log.info("旧系统任务同步完成,成功同步: {} 个任务", successCount);
|
} catch (Exception e) {
|
log.error("旧系统任务同步异常", e);
|
}
|
}
|
|
/**
|
* 同步指定任务到旧系统
|
*
|
* @param taskId 任务ID
|
*/
|
public void syncTask(String taskId) {
|
log.info("开始同步单个任务到旧系统,任务ID: {}", taskId);
|
try {
|
Long id = Long.parseLong(taskId);
|
Long serviceOrdId = legacySystemSyncService.syncEmergencyTaskToLegacy(id);
|
if (serviceOrdId != null && serviceOrdId > 0) {
|
log.info("任务同步成功,任务ID: {}, ServiceOrdID: {}", taskId, serviceOrdId);
|
} else {
|
log.error("任务同步失败,任务ID: {}", taskId);
|
}
|
} catch (Exception e) {
|
log.error("同步任务异常,任务ID: {}", taskId, e);
|
}
|
}
|
|
/**
|
* 批量同步未同步的调度单到旧系统
|
*
|
* 使用示例:
|
* 在系统管理 -> 定时任务中添加:
|
* 任务名称: 旧系统调度单同步
|
* 任务组名: DEFAULT
|
* 调用目标字符串: legacySystemSyncTask.syncPendingDispatchOrders()
|
* cron表达式: 0 0/10 * * * ? (每10分钟执行一次)
|
*/
|
public void syncPendingDispatchOrders() {
|
log.info("开始执行旧系统调度单同步定时任务");
|
try {
|
int successCount = legacySystemSyncService.batchSyncPendingDispatchOrders();
|
log.info("旧系统调度单同步完成,成功同步: {} 个任务", successCount);
|
} catch (Exception e) {
|
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);
|
}
|
}
|
|
/**
|
* 批量同步支付信息到旧系统PaidMoney表
|
*
|
* 使用示例:
|
* 在系统管理 -> 定时任务中添加:
|
* 任务名称: 支付信息同步
|
* 任务组名: DEFAULT
|
* 调用目标字符串: legacySystemSyncTask.syncPaymentToLegacy()
|
* cron表达式: 0 0/10 * * * ? (每10分钟执行一次)
|
*/
|
public void syncPaymentToLegacy() {
|
log.info("开始执行支付信息同步定时任务(新系统 -> 旧系统)");
|
try {
|
int successCount = paymentSyncService.batchSyncPaymentToLegacy();
|
log.info("支付信息同步完成,成功同步: {} 条记录", successCount);
|
} catch (Exception e) {
|
log.error("支付信息同步异常", e);
|
}
|
}
|
|
/**
|
* 批量同步支付信息从旧系统到新系统
|
*
|
* 使用示例:
|
* 在系统管理 -> 定时任务中添加:
|
* 任务名称: 支付信息反向同步
|
* 任务组名: DEFAULT
|
* 调用目标字符串: legacySystemSyncTask.syncPaymentFromLegacy()
|
* cron表达式: 0 0/15 * * * ? (每15分钟执行一次)
|
*/
|
public void syncPaymentFromLegacy() {
|
log.info("开始执行支付信息同步定时任务(旧系统 -> 新系统)");
|
try {
|
int successCount = paymentSyncService.batchSyncPaymentFromLegacy();
|
log.info("支付信息同步完成,成功同步: {} 条记录", successCount);
|
} catch (Exception e) {
|
log.error("支付信息同步异常", e);
|
}
|
}
|
|
/**
|
* 批量同步附加费用到旧系统PaidMoney_Add表
|
*
|
* 使用示例:
|
* 在系统管理 -> 定时任务中添加:
|
* 任务名称: 附加费用同步
|
* 任务组名: DEFAULT
|
* 调用目标字符串: legacySystemSyncTask.syncAdditionalFeeToLegacy()
|
* cron表达式: 0 0/10 * * * ? (每10分钟执行一次)
|
*/
|
public void syncAdditionalFeeToLegacy() {
|
log.info("开始执行新系统附加费用同步定时任务(新系统 -> 旧系统)");
|
try {
|
int successCount = additionalFeeSyncService.batchSyncAdditionalFeeToLegacy();
|
log.info("附加费用同步完成,成功同步: {} 条记录", successCount);
|
} catch (Exception e) {
|
log.error("附加费用同步异常", e);
|
}
|
}
|
|
/**
|
* 批量同步附加费用从旧系统到新系统
|
*
|
* 使用示例:
|
* 在系统管理 -> 定时任务中添加:
|
* 任务名称: 附加费用反向同步
|
* 任务组名: DEFAULT
|
* 调用目标字符串: legacySystemSyncTask.syncAdditionalFeeFromLegacy()
|
* cron表达式: 0 0/15 * * * ? (每15分钟执行一次)
|
*/
|
public void syncAdditionalFeeFromLegacy() {
|
log.info("开始执行旧系统附加费用同步定时任务(旧系统 -> 新系统)");
|
try {
|
// 同步最近24小时内的记录
|
int successCount = additionalFeeSyncService.batchSyncAdditionalFeeFromLegacy(72);
|
log.info("旧系统附加费用同步完成,成功同步: {} 条记录", successCount);
|
} catch (Exception e) {
|
log.error("附加费用同步异常", e);
|
}
|
}
|
|
/**
|
* 批量重新同步车辆和人员变更的任务
|
*
|
* 使用示例:
|
* 在系统管理 -> 定时任务中添加:
|
* 任务名称: 重新同步车辆人员变更
|
* 任务组名: DEFAULT
|
* 调用目标字符串: legacySystemSyncTask.resyncVehicleAndPersonnel()
|
* cron表达式: 0 0/5 * * * ? (每5分钟执行一次)
|
*/
|
public void resyncVehicleAndPersonnel() {
|
log.info("开始执行重新同步车辆和人员变更的任务定时任务");
|
try {
|
int successCount = legacySystemSyncService.batchResyncPendingDispatchOrders();
|
log.info("重新同步车辆和人员变更完成,成功同步: {} 个任务", successCount);
|
} catch (Exception e) {
|
log.error("重新同步车辆和人员变更异常", e);
|
}
|
}
|
}
|