Compare commits
2 Commits
c32385e87d
...
1a7ecafc7d
| Author | SHA1 | Date | |
|---|---|---|---|
| 1a7ecafc7d | |||
| 735704d585 |
@@ -24,9 +24,10 @@ import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
* 内部巡检任务调度器(不依赖若依Quartz)
|
||||
* - 周期性轮询 v_inspection_task 中启用(status='0')的任务
|
||||
* - 周期性轮询 v_inspection_task 中任务,按状态 0=启用、1=停用 控制是否触发
|
||||
* - 使用 Spring CronExpression 计算下一次执行
|
||||
* - 到点调用 InspectionTaskService.executeInspectionTask(taskId)
|
||||
* - 不修改任务的状态字段(状态仅由外部手动启停控制)
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@@ -119,21 +120,6 @@ public class InspectionCronScheduler {
|
||||
} catch (Exception e) {
|
||||
log.debug("更新nextExecuteTime失败: taskId={}, err={}", taskId, e.getMessage());
|
||||
}
|
||||
|
||||
// 若发现状态为“2”(服务执行完成后置状态),将其规范化回“0”以维持启用
|
||||
if ("2".equals(status)) {
|
||||
try {
|
||||
InspectionTask patch = new InspectionTask();
|
||||
patch.setTaskId(taskId);
|
||||
patch.setStatus("0");
|
||||
patch.setUpdateTime(DateUtils.getNowDate());
|
||||
inspectionTaskMapper.updateInspectionTask(patch);
|
||||
task.setStatus("0");
|
||||
} catch (Exception e) {
|
||||
log.debug("规范化任务状态失败: taskId={}, err={}", taskId, e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
// 到点触发判定:如果 next <= now + 10s 窗口内,就触发一次
|
||||
long nowMs = System.currentTimeMillis();
|
||||
long nextMs = nextDate.getTime();
|
||||
@@ -164,19 +150,6 @@ public class InspectionCronScheduler {
|
||||
} catch (Exception e) {
|
||||
log.error("执行巡检任务触发失败: taskId={}, err={}", taskId, e.getMessage(), e);
|
||||
}
|
||||
|
||||
// 延迟规范化状态为启用(服务执行期间可能将其改为1或2)
|
||||
try {
|
||||
poller.schedule(() -> {
|
||||
try {
|
||||
InspectionTask patch2 = new InspectionTask();
|
||||
patch2.setTaskId(taskId);
|
||||
patch2.setStatus("0");
|
||||
patch2.setUpdateTime(DateUtils.getNowDate());
|
||||
inspectionTaskMapper.updateInspectionTask(patch2);
|
||||
} catch (Exception ignored) {}
|
||||
}, 3, TimeUnit.SECONDS);
|
||||
} catch (Exception ignore) {}
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
|
||||
@@ -64,7 +64,7 @@ public class InspectionTaskServiceImpl implements InspectionTaskService {
|
||||
private IVMinioObjectService vMinioObjectService;
|
||||
|
||||
// 运行状态缓存(避免重复执行)
|
||||
private final Map<Long, Boolean> runningTasks = new ConcurrentHashMap<>();
|
||||
// private final Map<Long, Boolean> runningTasks = new ConcurrentHashMap<>();
|
||||
|
||||
private ModelManager modelManager;
|
||||
// 延迟初始化,避免启动时的依赖问题
|
||||
@@ -117,14 +117,14 @@ public class InspectionTaskServiceImpl implements InspectionTaskService {
|
||||
if (task == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
// 启用任务,使用新版实体类的方法
|
||||
task.setStatus("0"); // 0表示启用
|
||||
task.setUpdateTime(DateUtils.getNowDate());
|
||||
inspectionTaskMapper.updateInspectionTask(task);
|
||||
|
||||
runningTasks.put(taskId, true);
|
||||
|
||||
|
||||
// runningTasks.put(taskId, true);
|
||||
|
||||
// 这里应该集成到Quartz定时任务中
|
||||
log.info("启动巡检任务: {}", taskId);
|
||||
return true;
|
||||
@@ -142,7 +142,7 @@ public class InspectionTaskServiceImpl implements InspectionTaskService {
|
||||
task.setUpdateTime(DateUtils.getNowDate());
|
||||
inspectionTaskMapper.updateInspectionTask(task);
|
||||
|
||||
runningTasks.remove(taskId);
|
||||
// runningTasks.remove(taskId);
|
||||
|
||||
log.info("停止巡检任务: {}", taskId);
|
||||
return true;
|
||||
@@ -170,8 +170,8 @@ public class InspectionTaskServiceImpl implements InspectionTaskService {
|
||||
|
||||
try {
|
||||
// 更新任务状态为执行中
|
||||
task.setStatus("1");
|
||||
inspectionTaskMapper.updateInspectionTask(task);
|
||||
// task.setStatus("1");
|
||||
// inspectionTaskMapper.updateInspectionTask(task);
|
||||
|
||||
// 获取设备信息
|
||||
Device device = deviceService.selectDeviceByDeviceId(task.getDeviceId());
|
||||
@@ -191,16 +191,16 @@ public class InspectionTaskServiceImpl implements InspectionTaskService {
|
||||
inspectionTaskRecordMapper.updateInspectionTaskRecord(record);
|
||||
|
||||
// 更新任务状态为已完成
|
||||
task.setStatus("2");
|
||||
inspectionTaskMapper.updateInspectionTask(task);
|
||||
// task.setStatus("0");
|
||||
// inspectionTaskMapper.updateInspectionTask(task);
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("巡检任务执行失败: taskId={}", taskId, e);
|
||||
updateRecordFailed(record, e.getMessage());
|
||||
|
||||
// 更新任务状态为已完成(虽然失败)
|
||||
task.setStatus("2");
|
||||
inspectionTaskMapper.updateInspectionTask(task);
|
||||
// task.setStatus("0");
|
||||
// inspectionTaskMapper.updateInspectionTask(task);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -208,7 +208,7 @@ public class InspectionTaskServiceImpl implements InspectionTaskService {
|
||||
* 更新记录为失败状态
|
||||
*/
|
||||
private void updateRecordFailed(InspectionTaskRecord record, String errorMsg) {
|
||||
record.setStatus(1); // 失败
|
||||
record.setStatus(2); // 失败
|
||||
record.setResult("执行失败: " + errorMsg);
|
||||
inspectionTaskRecordMapper.updateInspectionTaskRecord(record);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user