Browse Source

Cron下次执行时间查询:支持通过界面在线查看后续连续5次执行时间

xuxueli 5 years ago
parent
commit
6641be1210

+ 1 - 1
doc/XXL-JOB官方文档.md

@@ -1548,7 +1548,7 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
 - 10、项目依赖升级至较新稳定版本,如spring、spring-boot、mybatis、slf4j、groovy等等;
 - 11、JobThread自销毁优化,避免并发触发导致triggerQueue中任务丢失问题;
 - 12、Cron在线生成工具:任务新增、编辑框通过组件在线生成Cron表达式;
-- 13、Cron执行时间查询:支持通过界面在线查看后续连续5次执行时间[ING,交互待完善]
+- 13、Cron下次执行时间查询:支持通过界面在线查看后续连续5次执行时间;
 - 14、[ING]xxl-rpc服务端线程优化,降低线程内存开销;
 - 15、[ING]调度日志优化:支持设置日志保留天数,过期日志天维度记录报表,并清理;调度报表汇总实时数据和报表;
 - 16、[ING]父子任务参数传递;流程任务等,透传动态参数;

+ 1 - 5
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobInfoController.java

@@ -158,13 +158,9 @@ public class JobInfoController {
 				}
 			}
 		} catch (ParseException e) {
-			//
-		}
-		if (result!=null && result.size()>0) {
-			return new ReturnT<List<String>>(result);
-		} else {
 			return new ReturnT<List<String>>(ReturnT.FAIL_CODE, I18nUtil.getString("jobinfo_field_cron_unvalid"));
 		}
+		return new ReturnT<List<String>>(result);
 	}
 	
 }

+ 1 - 0
xxl-job-admin/src/main/resources/i18n/message.properties

@@ -129,6 +129,7 @@ jobinfo_opt_start=启动
 jobinfo_opt_log=查询日志
 jobinfo_opt_run=执行一次
 jobinfo_opt_registryinfo=注册节点
+jobinfo_opt_next_time=下次执行时间
 jobinfo_glue_remark=源码备注
 jobinfo_glue_remark_limit=源码备注长度限制为4~100
 jobinfo_glue_rollback=版本回溯

+ 1 - 0
xxl-job-admin/src/main/resources/i18n/message_en.properties

@@ -129,6 +129,7 @@ jobinfo_opt_start=Start
 jobinfo_opt_log=Query Log
 jobinfo_opt_run=Run Once
 jobinfo_opt_registryinfo=Registry Info
+jobinfo_opt_next_time=Next trigger time
 jobinfo_glue_remark=Resource Remark
 jobinfo_glue_remark_limit=Resource Remark length is limited to 4~100
 jobinfo_glue_rollback=Version Backtrack

+ 42 - 0
xxl-job-admin/src/main/resources/static/js/jobinfo.index.1.js

@@ -135,6 +135,7 @@ $(function() {
                                     '       <li><a href="javascript:void(0);" class="job_trigger" >'+ I18n.jobinfo_opt_run +'</a></li>\n' +
                                     '       <li><a href="'+ logHref +'">'+ I18n.jobinfo_opt_log +'</a></li>\n' +
                                     '       <li><a href="javascript:void(0);" class="job_registryinfo" >' + I18n.jobinfo_opt_registryinfo + '</a></li>\n' +
+                                    '       <li><a href="javascript:void(0);" class="job_next_time" >' + I18n.jobinfo_opt_next_time + '</a></li>\n' +
                                     '       <li class="divider"></li>\n' +
                                     codeBtn +
                                     start_stop_div +
@@ -311,7 +312,48 @@ $(function() {
             }
         });
 
+    });
+
+    // job_next_time
+    $("#job_list").on('click', '.job_next_time',function() {
+        var id = $(this).parents('ul').attr("_id");
+        var row = tableData['key'+id];
+
+        var jobCron = row.jobCron;
+
+        $.ajax({
+            type : 'POST',
+            url : base_url + "/jobinfo/nextTriggerTime",
+            data : {
+                "cron" : jobCron
+            },
+            dataType : "json",
+            success : function(data){
+            	
+            	if (data.code != 200) {
+                    layer.open({
+                        title: I18n.jobinfo_opt_next_time ,
+                        btn: [ I18n.system_ok ],
+                        content: data.msg
+                    });
+				} else {
+                    var html = '<center>';
+                    if (data.code == 200 && data.content) {
+                        for (var index in data.content) {
+                            html += '<span>' + data.content[index] + '</span><br>';
+                        }
+                    }
+                    html += '</center>';
 
+                    layer.open({
+                        title: I18n.jobinfo_opt_next_time ,
+                        btn: [ I18n.system_ok ],
+                        content: html
+                    });
+				}
+
+            }
+        });
 
     });