diff --git a/src/main/java/com/pearadmin/common/context/BeanContext.java b/src/main/java/com/pearadmin/common/context/BeanContext.java
index c90b41e1383674ef39a58e784843b1a9cc595101..96df97b150982ceba873a65a722fcd4758714559 100644
--- a/src/main/java/com/pearadmin/common/context/BeanContext.java
+++ b/src/main/java/com/pearadmin/common/context/BeanContext.java
@@ -5,6 +5,8 @@ import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
+import java.util.Map;
+
/**
* Spring 上下文
*
@@ -82,4 +84,14 @@ public class BeanContext implements ApplicationContextAware {
return applicationContext.getType(name);
}
+ /**
+ * 获取实现了接口,抽象类的bean
+ * @param clazz 接口或抽象类
+ * @param 接口,抽象类
+ * @return 实现了接口,抽象类的bean
+ */
+ public static Map getBeansOfType(Class clazz){
+ return applicationContext.getBeansOfType(clazz);
+ }
+
}
diff --git a/src/main/java/com/pearadmin/modules/job/controller/ScheduleJobController.java b/src/main/java/com/pearadmin/modules/job/controller/ScheduleJobController.java
index 85535241afd408e52c2432d3fb3b9d506306d21e..a57701e7941aafc05a1bf4e119287aec5bbb7fae 100644
--- a/src/main/java/com/pearadmin/modules/job/controller/ScheduleJobController.java
+++ b/src/main/java/com/pearadmin/modules/job/controller/ScheduleJobController.java
@@ -16,6 +16,7 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import java.time.LocalDateTime;
+import java.util.Set;
/**
* Describe: 定时任务控制器
@@ -156,4 +157,11 @@ public class ScheduleJobController extends BaseController {
Boolean result = scheduleJobService.delete(jobId);
return decide(result, "删除成功", "删除失败");
}
+
+ @GetMapping("beans")
+ @PreAuthorize("hasPermission('/schdule/job/add','sch:job:add')")
+ public Result beans(){
+ Set beanNames = scheduleJobService.getBeanNames();
+ return success(beanNames);
+ }
}
diff --git a/src/main/java/com/pearadmin/modules/job/service/IScheduleJobService.java b/src/main/java/com/pearadmin/modules/job/service/IScheduleJobService.java
index 2b62d087ef2b697b84ee423b2789f0f32f48f467..496160320a0d17453e8f24666ea0a9e1c5fc8754 100644
--- a/src/main/java/com/pearadmin/modules/job/service/IScheduleJobService.java
+++ b/src/main/java/com/pearadmin/modules/job/service/IScheduleJobService.java
@@ -5,6 +5,7 @@ import com.pearadmin.common.web.domain.request.PageDomain;
import com.pearadmin.modules.job.domain.ScheduleJob;
import java.util.List;
+import java.util.Set;
/**
* Describe: 定时任务服务接口
@@ -75,4 +76,10 @@ public interface IScheduleJobService {
* Return: Schedule
*/
ScheduleJob getById(String jobId);
+
+ /**
+ * Describe: 获取定时任务可用的bean
+ * @return beanName List
+ */
+ Set getBeanNames();
}
diff --git a/src/main/java/com/pearadmin/modules/job/service/impl/ScheduleJobServiceImpl.java b/src/main/java/com/pearadmin/modules/job/service/impl/ScheduleJobServiceImpl.java
index 396118fa057f3c1430cf25077f35e086584734c5..f91d472646b6ce2121c829c90edd6c4fca24faec 100644
--- a/src/main/java/com/pearadmin/modules/job/service/impl/ScheduleJobServiceImpl.java
+++ b/src/main/java/com/pearadmin/modules/job/service/impl/ScheduleJobServiceImpl.java
@@ -2,6 +2,8 @@ package com.pearadmin.modules.job.service.impl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
+import com.pearadmin.common.context.BeanContext;
+import com.pearadmin.common.quartz.base.BaseQuartz;
import com.pearadmin.common.web.domain.request.PageDomain;
import com.pearadmin.modules.job.domain.ScheduleJob;
import com.pearadmin.common.quartz.QuartzService;
@@ -14,6 +16,8 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
+import java.util.Map;
+import java.util.Set;
/**
* Describe: 定时任务服务
@@ -164,4 +168,10 @@ public class ScheduleJobServiceImpl implements IScheduleJobService {
return false;
}
}
+
+ @Override
+ public Set getBeanNames() {
+ Map beans = BeanContext.getBeansOfType(BaseQuartz.class);
+ return beans.keySet();
+ }
}
diff --git a/src/main/resources/templates/schedule/job/add.html b/src/main/resources/templates/schedule/job/add.html
index 3ba09b492f959da75abf35e3387b131b6a68109d..741179c8792abbe74d6409c18a4513bd979693ab 100644
--- a/src/main/resources/templates/schedule/job/add.html
+++ b/src/main/resources/templates/schedule/job/add.html
@@ -18,8 +18,9 @@
@@ -93,6 +94,20 @@
});
return false;
});
+
+ $.ajax({
+ url: '/schedule/job/beans',
+ dataType: 'json',
+ contentType: 'application/json',
+ type: 'get',
+ success: function (response) {
+ let beanNames = response.data;
+ for (var i = 0; i < beanNames.length; i++) {
+ $('#beanName').append("");
+ }
+ form.render();
+ }
+ })
})