diff --git a/src/main/java/neatlogic/framework/scheduler/core/SchedulerManager.java b/src/main/java/neatlogic/framework/scheduler/core/SchedulerManager.java index 50e97a7f003380e196d394b3c89a46becd01bfd8..ddab2aeded27506f62e0bfa115aa4d75260c3f31 100644 --- a/src/main/java/neatlogic/framework/scheduler/core/SchedulerManager.java +++ b/src/main/java/neatlogic/framework/scheduler/core/SchedulerManager.java @@ -46,12 +46,13 @@ import java.util.stream.Collectors; @RootComponent public class SchedulerManager extends ModuleInitializedListenerBase { - private final Logger logger = LoggerFactory.getLogger(SchedulerManager.class); + private static final Logger logger = LoggerFactory.getLogger(SchedulerManager.class); private static final Map jobHandlerMap = new HashMap<>(); private static final Map jobClassMap = new HashMap<>(); private static final List publicJobClassList = new ArrayList<>(); private static final ReentrantLock GLOBAL_LOCK = new ReentrantLock(); + private static SchedulerFactoryBean staticSchedulerFactoryBean; @Resource private TenantMapper tenantMapper; @@ -64,6 +65,7 @@ public class SchedulerManager extends ModuleInitializedListenerBase { protected void myInit() { tenantList = tenantMapper.getAllActiveTenant(); + staticSchedulerFactoryBean = schedulerFactoryBean; } public static IJob getHandler(String className) { @@ -95,6 +97,19 @@ public class SchedulerManager extends ModuleInitializedListenerBase { return false; } + public static boolean checkJobIsLoad(String jobName, String jobGroup) { + JobKey jobKey = new JobKey(jobName, jobGroup); + Scheduler scheduler = staticSchedulerFactoryBean.getScheduler(); + try { + if (scheduler.getJobDetail(jobKey) != null) { + return true; + } + } catch (SchedulerException e) { + logger.error(e.getMessage(), e); + } + return false; + } + /** * 加载定时作业,同时设置定时作业状态和锁 * diff --git a/src/main/java/neatlogic/framework/scheduler/dto/JobStatusVo.java b/src/main/java/neatlogic/framework/scheduler/dto/JobStatusVo.java index 557402ced47848bdd7b927c04e3ad7a57ade2df8..3f23bb6e3f9eb049fd3400cd5a297cc0a6c3e538 100644 --- a/src/main/java/neatlogic/framework/scheduler/dto/JobStatusVo.java +++ b/src/main/java/neatlogic/framework/scheduler/dto/JobStatusVo.java @@ -4,6 +4,8 @@ import neatlogic.framework.common.constvalue.ApiParamType; import neatlogic.framework.common.dto.BaseEditorVo; import neatlogic.framework.restful.annotation.EntityField; import com.alibaba.fastjson.annotation.JSONField; +import neatlogic.framework.scheduler.core.SchedulerManager; +import org.apache.commons.lang3.StringUtils; import java.util.Date; @@ -30,6 +32,9 @@ public class JobStatusVo extends BaseEditorVo { @EntityField(name = "执行次数", type = ApiParamType.INTEGER) private Integer execCount = 0; + @EntityField(name = "是否已加载", + type = ApiParamType.INTEGER) + private Integer isLoad; @JSONField(serialize = false) private Integer needAudit; @@ -100,4 +105,21 @@ public class JobStatusVo extends BaseEditorVo { public void setHandler(String handler) { this.handler = handler; } + + public Integer getIsLoad() { + if (isLoad == null) { + if (StringUtils.isNotBlank(this.jobName) && StringUtils.isNotBlank(this.jobGroup)) { + if (SchedulerManager.checkJobIsLoad(this.jobName, this.jobGroup)) { + isLoad = 1; + } else { + isLoad = 0; + } + } + } + return isLoad; + } + + public void setIsLoad(Integer isLoad) { + this.isLoad = isLoad; + } } diff --git a/src/main/java/neatlogic/framework/scheduler/dto/JobVo.java b/src/main/java/neatlogic/framework/scheduler/dto/JobVo.java index 3be89ea1124916e3a5bc4ce65828d2f5cd91d436..d095009a6f1cc9e8032e3a12c74fc5f0799b7f31 100644 --- a/src/main/java/neatlogic/framework/scheduler/dto/JobVo.java +++ b/src/main/java/neatlogic/framework/scheduler/dto/JobVo.java @@ -56,9 +56,6 @@ public class JobVo extends BasePageVo { @EntityField(name = "结束时间", type = ApiParamType.LONG) private Date endTime; - @EntityField(name = "是否已加载", - type = ApiParamType.INTEGER) - private Integer isLoad; private JobStatusVo jobStatus; @@ -183,12 +180,4 @@ public class JobVo extends BasePageVo { } return 0; } - - public Integer getIsLoad() { - return isLoad; - } - - public void setIsLoad(Integer isLoad) { - this.isLoad = isLoad; - } }