xueli.xue 9 years ago
parent
commit
51259d8c8e

+ 4 - 4
xxl-job-admin/src/main/java/com/xxl/controller/IndexController.java

@@ -1,8 +1,8 @@
 package com.xxl.controller;
 
-import java.util.Set;
+import java.util.List;
+import java.util.Map;
 
-import org.quartz.JobKey;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -16,8 +16,8 @@ public class IndexController {
 	
 	@RequestMapping("index")
 	public String index(Model model) {
-		Set<JobKey> list = DynamicSchedulerUtil.getJobKeys();
-		model.addAttribute("jobList", list);
+		List<Map<String, Object>> jobList = DynamicSchedulerUtil.getJobList();
+		model.addAttribute("jobList", jobList);
 		return "job/index";
 	}
 	

+ 21 - 9
xxl-job-admin/src/main/java/com/xxl/quartz/DynamicSchedulerUtil.java

@@ -1,6 +1,9 @@
 package com.xxl.quartz;
 
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
@@ -38,21 +41,30 @@ public final class DynamicSchedulerUtil implements InitializingBean {
     }
 	
 	// getJobKeys
-	public static Set<JobKey> getJobKeys(){
+	public static List<Map<String, Object>> getJobList(){
+		List<Map<String, Object>> jobList = new ArrayList<Map<String,Object>>();
+		
 		try {
 			String groupName = scheduler.getJobGroupNames().get(0);
-			return scheduler.getJobKeys(GroupMatcher.jobGroupEquals(groupName));
+			Set<JobKey> jobKeys = scheduler.getJobKeys(GroupMatcher.jobGroupEquals(groupName));
+			if (jobKeys!=null && jobKeys.size()>0) {
+				for (JobKey jobKey : jobKeys) {
+			        TriggerKey triggerKey = TriggerKey.triggerKey(jobKey.getName(), Scheduler.DEFAULT_GROUP);
+			        Trigger trigger = scheduler.getTrigger(triggerKey);
+			        JobDetail jobDetail = scheduler.getJobDetail(jobKey);
+			        Map<String, Object> jobMap = new HashMap<String, Object>();
+			        jobMap.put("TriggerKey", triggerKey);
+			        jobMap.put("Trigger", trigger);
+			        jobMap.put("JobDetail", jobDetail);
+			        jobList.add(jobMap);
+				}
+			}
+			
 		} catch (SchedulerException e) {
 			e.printStackTrace();
 			return null;
 		}
-	}
-	
-	public static void getJobDetail(String triggerKeyName){
-		// TriggerKey : name + group
-    	String group = Scheduler.DEFAULT_GROUP;
-        TriggerKey triggerKey = TriggerKey.triggerKey(triggerKeyName, group);
-        
+		return jobList;
 	}
 
 	// addJob 新增

+ 57 - 14
xxl-job-admin/src/main/webapp/WEB-INF/template/job/index.ftl

@@ -4,6 +4,9 @@
   	<title>调度中心</title>
   	<#import "/common/common.macro.ftl" as netCommon>
 	<@netCommon.commonStyle />
+	<!-- DataTables -->
+  	<link rel="stylesheet" href="${request.contextPath}/static/adminlte/plugins/datatables/dataTables.bootstrap.css">
+  
 </head>
 <body class="hold-transition skin-blue sidebar-mini">
 <div class="wrapper">
@@ -22,22 +25,53 @@
 				<li class="active">使用教程</li>
 			</ol>
 		</section>
-
+		
 		<!-- Main content -->
-		<section class="content">
-            <div class="callout callout-info">
-				<h4>在线任务:</h4>
-				<#if jobList?exists && jobList?size gt 0>
-				<#list jobList as item>
-				<p>${item}</p>
-				</#list>
-				</#if>
-            </div>
-            
-		</section>
-		<!-- /.content -->
+	    <section class="content">
+			<div class="row">
+				<div class="col-xs-12">
+					<div class="box">
+			            <div class="box-header"><h3 class="box-title">任务列表</h3></div>
+			            <div class="box-body">
+			              	<table id="example1" class="table table-bordered table-striped">
+				                <thead>
+					            	<tr>
+					                	<th>任务ID</th>
+					                  	<th>cron</th>
+					                  	<th>Job类路径</th>
+					                  	<th>简介</th>
+					                  	<th>操作</th>
+					                </tr>
+				                </thead>
+				                <tbody>
+			                		<#if jobList?exists && jobList?size gt 0>
+									<#list jobList as item>
+									<tr>
+					            		<td>${item['TriggerKey'].name}</td>
+					                  	<td>${item['Trigger'].cronExpression}</td>
+					                  	<td>${item['JobDetail'].jobClass}</td>
+					                  	<td>-</td>
+					                  	<td>X</td>
+					                </tr>
+									</#list>
+									</#if>
+				                </tbody>
+				                <tfoot>
+					            	<tr>
+					                  	<th>任务ID</th>
+					                  	<th>cron</th>
+					                  	<th>Job类路径</th>
+					                  	<th>简介</th>
+					                  	<th>操作</th>
+					                </tr>
+				                </tfoot>
+							</table>
+						</div>
+					</div>
+				</div>
+			</div>
+	    </section>
 	</div>
-	<!-- /.content-wrapper -->
 	
 	<!-- footer -->
 	<@netCommon.commonFooter />
@@ -45,5 +79,14 @@
 	<@netCommon.commonControl />
 </div>
 <@netCommon.commonScript />
+<!-- DataTables -->
+<script src="${request.contextPath}/static/adminlte/plugins/datatables/jquery.dataTables.min.js"></script>
+<script src="${request.contextPath}/static/adminlte/plugins/datatables/dataTables.bootstrap.min.js"></script>
+<!-- page script -->
+<script>
+  $(function () {
+		$("#example1").DataTable();
+  });
+</script>
 </body>
 </html>