feat: add maintenance scheduler for preventive maintenance

This commit is contained in:
chiguyong 2026-03-24 00:14:59 +08:00
parent ab777c748e
commit 8b5a002f3f
2 changed files with 61 additions and 0 deletions

View File

@ -0,0 +1,59 @@
package com.ether.pms.mdm.scheduler;
import com.ether.pms.mdm.entity.MaintenancePlan;
import com.ether.pms.mdm.service.MaintenancePlanService;
import com.ether.pms.mdm.service.MaintenanceTaskService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.List;
@Slf4j
@Component
@RequiredArgsConstructor
public class MaintenanceScheduler {
private final MaintenancePlanService maintenancePlanService;
private final MaintenanceTaskService maintenanceTaskService;
/**
* 检查时间触发的维保计划 - 每天凌晨1点执行
*/
@Scheduled(cron = "0 0 1 * * ?")
public void checkTimeBasedMaintenance() {
log.info("开始检查时间触发的维保计划...");
try {
List<MaintenancePlan> plans = maintenancePlanService.getPlansByTriggerType(MaintenancePlan.TriggerType.TIME_BASED);
for (MaintenancePlan plan : plans) {
try {
maintenanceTaskService.generateTasksFromPlan(plan);
log.info("为计划[{}]生成维保任务完成", plan.getPlanCode());
} catch (Exception e) {
log.error("为计划[{}]生成维保任务失败: {}", plan.getPlanCode(), e.getMessage());
}
}
log.info("时间触发维保计划检查完成,共处理 {} 个计划", plans.size());
} catch (Exception e) {
log.error("检查时间触发维保计划失败: {}", e.getMessage(), e);
}
}
/**
* 检查逾期任务 - 每小时执行
*/
@Scheduled(cron = "0 0 * * * ?")
public void checkOverdueTasks() {
log.info("开始检查逾期维保任务...");
try {
List<?> overdueTasks = maintenanceTaskService.getOverdueTasks();
if (!overdueTasks.isEmpty()) {
log.warn("发现 {} 个逾期维保任务", overdueTasks.size());
// 可以发送通知等后续处理
}
} catch (Exception e) {
log.error("检查逾期维保任务失败: {}", e.getMessage(), e);
}
}
}

View File

@ -3,9 +3,11 @@ package com.ether.pms;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication
@ComponentScan(basePackages = {"com.ether.pms"})
@EnableScheduling
public class PmsApplication {
public static void main(String[] args) {