Quellcode durchsuchen

Merge pull request #1211 from qinnnyul/refactor-extract-common-method

许雪里 vor 5 Jahren
Ursprung
Commit
2247be23b1
Es ist kein Account mit dieser Commiter-Email verbunden

+ 16 - 27
xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobScheduleHelper.java Datei anzeigen

@@ -10,6 +10,7 @@ import org.slf4j.LoggerFactory;
10 10
 import java.sql.Connection;
11 11
 import java.sql.PreparedStatement;
12 12
 import java.sql.SQLException;
13
+import java.text.ParseException;
13 14
 import java.util.*;
14 15
 import java.util.concurrent.ConcurrentHashMap;
15 16
 import java.util.concurrent.TimeUnit;
@@ -82,15 +83,7 @@ public class JobScheduleHelper {
82 83
                                     // 2.1、trigger-expire > 5s:pass && make next-trigger-time
83 84
 
84 85
                                     // fresh next
85
-                                    Date nextValidTime = new CronExpression(jobInfo.getJobCron()).getNextValidTimeAfter(new Date());
86
-                                    if (nextValidTime != null) {
87
-                                        jobInfo.setTriggerLastTime(jobInfo.getTriggerNextTime());
88
-                                        jobInfo.setTriggerNextTime(nextValidTime.getTime());
89
-                                    } else {
90
-                                        jobInfo.setTriggerStatus(0);
91
-                                        jobInfo.setTriggerLastTime(0);
92
-                                        jobInfo.setTriggerNextTime(0);
93
-                                    }
86
+                                    refreshNextValidTime(jobInfo, new Date());
94 87
 
95 88
                                 } else if (nowTime > jobInfo.getTriggerNextTime()) {
96 89
                                     // 2.2、trigger-expire < 5s:direct-trigger && make next-trigger-time
@@ -117,15 +110,7 @@ public class JobScheduleHelper {
117 110
                                         pushTimeRing(ringSecond, jobInfo.getId());
118 111
 
119 112
                                         // 3、fresh next
120
-                                        Date nextValidTime = new CronExpression(jobInfo.getJobCron()).getNextValidTimeAfter(new Date(jobInfo.getTriggerNextTime()));
121
-                                        if (nextValidTime != null) {
122
-                                            jobInfo.setTriggerLastTime(jobInfo.getTriggerNextTime());
123
-                                            jobInfo.setTriggerNextTime(nextValidTime.getTime());
124
-                                        } else {
125
-                                            jobInfo.setTriggerStatus(0);
126
-                                            jobInfo.setTriggerLastTime(0);
127
-                                            jobInfo.setTriggerNextTime(0);
128
-                                        }
113
+                                        refreshNextValidTime(jobInfo, new Date(jobInfo.getTriggerNextTime()));
129 114
 
130 115
                                     }
131 116
 
@@ -139,15 +124,7 @@ public class JobScheduleHelper {
139 124
                                     pushTimeRing(ringSecond, jobInfo.getId());
140 125
 
141 126
                                     // 3、fresh next
142
-                                    Date nextValidTime = new CronExpression(jobInfo.getJobCron()).getNextValidTimeAfter(new Date(jobInfo.getTriggerNextTime()));
143
-                                    if (nextValidTime != null) {
144
-                                        jobInfo.setTriggerLastTime(jobInfo.getTriggerNextTime());
145
-                                        jobInfo.setTriggerNextTime(nextValidTime.getTime());
146
-                                    } else {
147
-                                        jobInfo.setTriggerStatus(0);
148
-                                        jobInfo.setTriggerLastTime(0);
149
-                                        jobInfo.setTriggerNextTime(0);
150
-                                    }
127
+                                    refreshNextValidTime(jobInfo, new Date(jobInfo.getTriggerNextTime()));
151 128
 
152 129
                                 }
153 130
 
@@ -293,6 +270,18 @@ public class JobScheduleHelper {
293 270
         ringThread.start();
294 271
     }
295 272
 
273
+    private void refreshNextValidTime(XxlJobInfo jobInfo, Date date) throws ParseException {
274
+        Date nextValidTime = new CronExpression(jobInfo.getJobCron()).getNextValidTimeAfter(date);
275
+        if (nextValidTime != null) {
276
+            jobInfo.setTriggerLastTime(jobInfo.getTriggerNextTime());
277
+            jobInfo.setTriggerNextTime(nextValidTime.getTime());
278
+        } else {
279
+            jobInfo.setTriggerStatus(0);
280
+            jobInfo.setTriggerLastTime(0);
281
+            jobInfo.setTriggerNextTime(0);
282
+        }
283
+    }
284
+
296 285
     private void pushTimeRing(int ringSecond, int jobId){
297 286
         // push async ring
298 287
         List<Integer> ringItemData = ringData.get(ringSecond);