|
@@ -1,20 +1,20 @@
|
|
|
package com.gyee.frame.common.quartz;
|
|
|
|
|
|
+import com.gyee.frame.common.spring.SpringUtils;
|
|
|
+import com.gyee.frame.model.auto.SysQuartzJob;
|
|
|
+import com.gyee.frame.model.auto.SysQuartzJobExample;
|
|
|
+import com.gyee.frame.service.SysQuartzJobService;
|
|
|
+import com.gyee.frame.util.StringUtils;
|
|
|
import org.quartz.*;
|
|
|
import org.quartz.impl.JobDetailImpl;
|
|
|
import org.quartz.impl.matchers.GroupMatcher;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.context.annotation.Configuration;
|
|
|
-import com.gyee.frame.model.auto.SysQuartzJob;
|
|
|
-import com.gyee.frame.model.auto.SysQuartzJobExample;
|
|
|
-import com.gyee.frame.service.SysQuartzJobService;
|
|
|
-import com.gyee.frame.util.StringUtils;
|
|
|
|
|
|
+import javax.annotation.PostConstruct;
|
|
|
import java.util.List;
|
|
|
import java.util.Set;
|
|
|
|
|
|
-import javax.annotation.PostConstruct;
|
|
|
-
|
|
|
/**
|
|
|
* @CLASSNAME QuartzConfig
|
|
|
* @Description Quartz配置类
|
|
@@ -295,4 +295,116 @@ public class QuartzSchedulerUtil {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @purpose 根据socket 对一些job任务进行管制
|
|
|
+ */
|
|
|
+ @Configuration
|
|
|
+ public static class SocketTaskUtil {
|
|
|
+ private QuartzSchedulerUtil quartzSchedulerUtil = SpringUtils.getBean(QuartzSchedulerUtil.class);
|
|
|
+ private SysQuartzJobService sysQuartzJobService = SpringUtils.getBean(SysQuartzJobService.class);
|
|
|
+
|
|
|
+ String template="*";
|
|
|
+
|
|
|
+ public void pauseJob(SysQuartzJob sysQuartzJob){
|
|
|
+ quartzSchedulerUtil.pauseJob(sysQuartzJob);
|
|
|
+ }
|
|
|
+ public void startJob(SysQuartzJob sysQuartzJob){
|
|
|
+
|
|
|
+ try {
|
|
|
+ quartzSchedulerUtil.run(sysQuartzJob);
|
|
|
+ } catch (SchedulerException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ public void deleteJob(SysQuartzJob sysQuartzJob){
|
|
|
+ quartzSchedulerUtil.deleteJob(sysQuartzJob);
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ *
|
|
|
+ *@description: 该方法通过计算jobid来找到job,通过job的对象来进一步控制job任务,用来重启某一具体的任务
|
|
|
+ *
|
|
|
+ *@param:[jobid] job的编码
|
|
|
+ *
|
|
|
+ *@return:void
|
|
|
+ *
|
|
|
+ *@createTime:2020/1/9
|
|
|
+ *
|
|
|
+ */
|
|
|
+ public void restartJob(String jobid){
|
|
|
+
|
|
|
+ List<SysQuartzJob> quartzJobs=sysQuartzJobService.selectByExample(new SysQuartzJobExample());
|
|
|
+ SysQuartzJob sysQuartzJob1 = null;
|
|
|
+ //找到具体的任务
|
|
|
+ for(SysQuartzJob sysQuartzJob:quartzJobs){
|
|
|
+ if(sysQuartzJob.getId().equalsIgnoreCase(jobid)){
|
|
|
+ sysQuartzJob1=sysQuartzJob;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.deleteJob(sysQuartzJob1);//符合标准步骤删除-创建-启动流程
|
|
|
+ try {
|
|
|
+ // //System.out.println(sysQuartzJob1.getJobName());
|
|
|
+
|
|
|
+ sysQuartzJob1.setStatus(0);//开启任务
|
|
|
+
|
|
|
+ quartzSchedulerUtil.createSchedule(sysQuartzJob1);
|
|
|
+
|
|
|
+ //startJob(sysQuartzJob1);
|
|
|
+ } catch (SchedulerException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ //this.startJob(sysQuartzJob1);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public void restartJob(String jobid,String params){
|
|
|
+
|
|
|
+ List<SysQuartzJob> quartzJobs=sysQuartzJobService.selectByExample(new SysQuartzJobExample());
|
|
|
+ SysQuartzJob sysQuartzJob1 = null;
|
|
|
+ //找到具体的任务
|
|
|
+ for(SysQuartzJob sysQuartzJob:quartzJobs){
|
|
|
+ if(sysQuartzJob.getId().equalsIgnoreCase(jobid)){
|
|
|
+ sysQuartzJob1=sysQuartzJob;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.deleteJob(sysQuartzJob1);//符合标准步骤删除-创建-启动流程
|
|
|
+ try {
|
|
|
+ // //System.out.println(sysQuartzJob1.getJobName());
|
|
|
+
|
|
|
+ sysQuartzJob1.setStatus(0);//开启任务
|
|
|
+
|
|
|
+ if(StringUtils.notEmp(params))
|
|
|
+ {
|
|
|
+ String temp=sysQuartzJob1.getInvokeTarget().replace(template,params);
|
|
|
+ sysQuartzJob1.setInvokeTarget(temp);
|
|
|
+ }
|
|
|
+
|
|
|
+ quartzSchedulerUtil.createSchedule(sysQuartzJob1);
|
|
|
+
|
|
|
+ //startJob(sysQuartzJob1);
|
|
|
+ } catch (SchedulerException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ //this.startJob(sysQuartzJob1);
|
|
|
+ }
|
|
|
+ public void deleteJob(String jobid){
|
|
|
+
|
|
|
+ List<SysQuartzJob> quartzJobs=sysQuartzJobService.selectByExample(new SysQuartzJobExample());
|
|
|
+ SysQuartzJob sysQuartzJob1 = null;
|
|
|
+ //找到具体的任务
|
|
|
+ for(SysQuartzJob sysQuartzJob:quartzJobs){
|
|
|
+ if(sysQuartzJob.getId().equalsIgnoreCase(jobid)){
|
|
|
+ sysQuartzJob1=sysQuartzJob;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(sysQuartzJob1!=null)
|
|
|
+ {
|
|
|
+ this.deleteJob(sysQuartzJob1);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|