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(); + } + }) })