From 6e3e24a909ee6b8fb29e9faa75483bf484e68d35 Mon Sep 17 00:00:00 2001 From: "xueli.xue" Date: Mon, 24 Apr 2017 21:57:46 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=B0=83=E5=BA=A6=EF=BC=8C?= =?UTF-8?q?=E4=BB=AA=E8=A1=A8=E7=9B=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 +- .../job/admin/controller/IndexController.java | 23 ++-- .../admin/controller/JobLogController.java | 10 +- .../com/xxl/job/admin/dao/IXxlJobInfoDao.java | 3 + .../com/xxl/job/admin/dao/IXxlJobLogDao.java | 4 +- .../job/admin/dao/impl/XxlJobInfoDaoImpl.java | 5 + .../job/admin/dao/impl/XxlJobLogDaoImpl.java | 7 +- .../xxl/job/admin/service/IXxlJobService.java | 3 +- .../admin/service/impl/XxlJobServiceImpl.java | 49 +++++++-- .../mybatis-mapper/XxlJobInfoMapper.xml | 7 +- .../mybatis-mapper/XxlJobLogMapper.xml | 10 ++ .../WEB-INF/template/common/common.macro.ftl | 6 +- .../main/webapp/WEB-INF/template/index.ftl | 100 ++++++++++++++++++ .../template/jobinfo/jobinfo.index.ftl | 2 +- .../main/webapp/static/js/joblog.detail.1.js | 2 +- 15 files changed, 205 insertions(+), 29 deletions(-) create mode 100644 xxl-job-admin/src/main/webapp/WEB-INF/template/index.ftl diff --git a/README.md b/README.md index dfd18297..24b6a15f 100644 --- a/README.md +++ b/README.md @@ -780,8 +780,7 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段 - 3、任务权限管理; - 4、执行器,server启动,注册逻辑调整; - 5、调度失败重试机制; - -- 7、JobHandler开启多线程时,支持记录执行日志; +- 6、JobHandler开启多线程时,支持记录执行日志; ## 七、其他 diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/IndexController.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/IndexController.java index 7c5350ef..f96189e1 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/IndexController.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/IndexController.java @@ -3,6 +3,7 @@ package com.xxl.job.admin.controller; import com.xxl.job.admin.controller.annotation.PermessionLimit; import com.xxl.job.admin.controller.interceptor.PermissionInterceptor; import com.xxl.job.admin.core.util.PropertiesUtil; +import com.xxl.job.admin.service.IXxlJobService; import com.xxl.job.core.biz.model.ReturnT; import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Controller; @@ -11,8 +12,10 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; +import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.util.Map; /** * index controller @@ -21,13 +24,16 @@ import javax.servlet.http.HttpServletResponse; @Controller public class IndexController { + @Resource + private IXxlJobService xxlJobService; + @RequestMapping("/") - @PermessionLimit(limit=false) - public String index(Model model, HttpServletRequest request) { - if (!PermissionInterceptor.ifLogin(request)) { - return "redirect:/toLogin"; - } - return "redirect:/jobinfo"; + public String index(Model model) { + + Map dashboardMap = xxlJobService.dashboardInfo(); + model.addAllAttributes(dashboardMap); + + return "index"; } @RequestMapping("/toLogin") @@ -71,6 +77,11 @@ public class IndexController { @RequestMapping("/help") public String help() { + + /*if (!PermissionInterceptor.ifLogin(request)) { + return "redirect:/toLogin"; + }*/ + return "help"; } diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java index 59ca770d..f4506a93 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java @@ -120,10 +120,12 @@ public class JobLogController { ReturnT logResult = executorBiz.log(triggerTime, logId, fromLineNum); // is end - /*XxlJobLog jobLog = xxlJobLogDao.load(logId); - if (jobLog.getHandleCode() > 0) { - logResult.getContent().setEnd(true); - }*/ + if (logResult.getContent()!=null && logResult.getContent().getFromLineNum() > logResult.getContent().getToLineNum()) { + XxlJobLog jobLog = xxlJobLogDao.load(logId); + if (jobLog.getHandleCode() > 0) { + logResult.getContent().setEnd(true); + } + } return logResult; } catch (Exception e) { diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/dao/IXxlJobInfoDao.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/dao/IXxlJobInfoDao.java index 38b4c2fc..75a672f9 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/dao/IXxlJobInfoDao.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/dao/IXxlJobInfoDao.java @@ -23,4 +23,7 @@ public interface IXxlJobInfoDao { public int delete(int id); public List getJobsByGroup(String jobGroup); + + public int findAllCount(); + } diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/dao/IXxlJobLogDao.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/dao/IXxlJobLogDao.java index e3c9f48e..302b1fa5 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/dao/IXxlJobLogDao.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/dao/IXxlJobLogDao.java @@ -23,5 +23,7 @@ public interface IXxlJobLogDao { public int updateHandleInfo(XxlJobLog xxlJobLog); public int delete(int jobId); - + + public int findByHandleCodeCount(int handleCode); + } diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/dao/impl/XxlJobInfoDaoImpl.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/dao/impl/XxlJobInfoDaoImpl.java index 94f288e5..6b211da2 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/dao/impl/XxlJobInfoDaoImpl.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/dao/impl/XxlJobInfoDaoImpl.java @@ -66,4 +66,9 @@ public class XxlJobInfoDaoImpl implements IXxlJobInfoDao { return sqlSessionTemplate.selectList("XxlJobInfoMapper.getJobsByGroup", jobGroup); } + @Override + public int findAllCount() { + return sqlSessionTemplate.selectOne("XxlJobInfoMapper.findAllCount"); + } + } diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/dao/impl/XxlJobLogDaoImpl.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/dao/impl/XxlJobLogDaoImpl.java index 510b5663..d78d6cab 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/dao/impl/XxlJobLogDaoImpl.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/dao/impl/XxlJobLogDaoImpl.java @@ -76,5 +76,10 @@ public class XxlJobLogDaoImpl implements IXxlJobLogDao { public int delete(int jobId) { return sqlSessionTemplate.delete("XxlJobLogMapper.delete", jobId); } - + + @Override + public int findByHandleCodeCount(int handleCode) { + return sqlSessionTemplate.selectOne("XxlJobLogMapper.findByHandleCodeCount", handleCode); + } + } diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/service/IXxlJobService.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/service/IXxlJobService.java index 8fc521bd..31829b92 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/service/IXxlJobService.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/service/IXxlJobService.java @@ -26,5 +26,6 @@ public interface IXxlJobService { public ReturnT resume(int id); public ReturnT triggerJob(int id); - + + Map dashboardInfo(); } diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java index f86a1329..04244cef 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java @@ -4,12 +4,12 @@ import com.xxl.job.admin.core.model.XxlJobGroup; import com.xxl.job.admin.core.model.XxlJobInfo; import com.xxl.job.admin.core.route.ExecutorRouteStrategyEnum; import com.xxl.job.admin.core.schedule.XxlJobDynamicScheduler; -import com.xxl.job.admin.dao.IXxlJobGroupDao; -import com.xxl.job.admin.dao.IXxlJobInfoDao; -import com.xxl.job.admin.dao.IXxlJobLogDao; -import com.xxl.job.admin.dao.IXxlJobLogGlueDao; +import com.xxl.job.admin.core.thread.JobRegistryHelper; +import com.xxl.job.admin.dao.*; import com.xxl.job.admin.service.IXxlJobService; import com.xxl.job.core.biz.model.ReturnT; +import com.xxl.job.core.registry.RegistHelper; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.quartz.CronExpression; import org.quartz.SchedulerException; @@ -19,9 +19,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.text.MessageFormat; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** * core job action for xxl-job @@ -257,5 +255,40 @@ public class XxlJobServiceImpl implements IXxlJobService { return ReturnT.FAIL; } } - + + @Override + public Map dashboardInfo() { + + int jobInfoCount = xxlJobInfoDao.findAllCount(); + int jobLogCount = xxlJobLogDao.findByHandleCodeCount(-1); + int jobLogSuccessCount = xxlJobLogDao.findByHandleCodeCount(ReturnT.SUCCESS_CODE); + + // executor count + Set executerAddressSet = new HashSet(); + List groupList = xxlJobGroupDao.findAll(); + if (CollectionUtils.isNotEmpty(groupList)) { + for (XxlJobGroup group: groupList) { + List registryList = null; + if (group.getAddressType() == 0) { + registryList = JobRegistryHelper.discover(RegistHelper.RegistType.EXECUTOR.name(), group.getAppName()); + } else { + if (StringUtils.isNotBlank(group.getAddressList())) { + registryList = Arrays.asList(group.getAddressList().split(",")); + } + } + if (CollectionUtils.isNotEmpty(registryList)) { + executerAddressSet.addAll(registryList); + } + } + } + int executorCount = executerAddressSet.size(); + + Map dashboardMap = new HashMap(); + dashboardMap.put("jobInfoCount", jobInfoCount); + dashboardMap.put("jobLogCount", jobLogCount); + dashboardMap.put("jobLogSuccessCount", jobLogSuccessCount); + dashboardMap.put("executorCount", executorCount); + return dashboardMap; + } + } diff --git a/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobInfoMapper.xml b/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobInfoMapper.xml index cfb5a877..2555de5c 100644 --- a/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobInfoMapper.xml +++ b/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobInfoMapper.xml @@ -151,5 +151,10 @@ FROM XXL_JOB_QRTZ_TRIGGER_INFO AS t WHERE t.job_group = #{jobGroup} - + + + \ No newline at end of file diff --git a/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml b/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml index 240ed274..6e800d12 100644 --- a/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml +++ b/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml @@ -123,5 +123,15 @@ delete from XXL_JOB_QRTZ_TRIGGER_LOG WHERE job_id = #{jobId} + + \ No newline at end of file diff --git a/xxl-job-admin/src/main/webapp/WEB-INF/template/common/common.macro.ftl b/xxl-job-admin/src/main/webapp/WEB-INF/template/common/common.macro.ftl index 1d55963f..f71d02c0 100644 --- a/xxl-job-admin/src/main/webapp/WEB-INF/template/common/common.macro.ftl +++ b/xxl-job-admin/src/main/webapp/WEB-INF/template/common/common.macro.ftl @@ -81,10 +81,10 @@ diff --git a/xxl-job-admin/src/main/webapp/WEB-INF/template/index.ftl b/xxl-job-admin/src/main/webapp/WEB-INF/template/index.ftl new file mode 100644 index 00000000..0a1d75ec --- /dev/null +++ b/xxl-job-admin/src/main/webapp/WEB-INF/template/index.ftl @@ -0,0 +1,100 @@ + + + + 任务调度中心 + <#import "/common/common.macro.ftl" as netCommon> + <@netCommon.commonStyle /> + +sidebar-collapse "> +
+ + <@netCommon.commonHeader /> + + <@netCommon.commonLeft "index" /> + + +
+ +
+

仪表盘任务调度中心

+ +
+ + +
+ + +
+ + <#-- 任务信息 --> +
+
+ + +
+ 任务数量 + ${jobInfoCount} + +
+
+
+ 系统中配置的任务数量 +
+
+
+ + <#-- 调度信息 --> +
+
+ + +
+ 调度次数 + ${jobLogCount} + +
+
+
+ + 调度成功率:${(jobLogSuccessCount*100/jobLogCount)?string("0.00")}% + +
+
+
+ + <#-- 执行器 --> +
+
+ + +
+ 执行器数量 + ${executorCount} + +
+
+
+ 心跳检测成功的执行器机器数量 +
+
+
+ +
+ + +
+ +
+ + + + <@netCommon.commonFooter /> +
+<@netCommon.commonScript /> + + diff --git a/xxl-job-admin/src/main/webapp/WEB-INF/template/jobinfo/jobinfo.index.ftl b/xxl-job-admin/src/main/webapp/WEB-INF/template/jobinfo/jobinfo.index.ftl index f96c8a7c..85821381 100644 --- a/xxl-job-admin/src/main/webapp/WEB-INF/template/jobinfo/jobinfo.index.ftl +++ b/xxl-job-admin/src/main/webapp/WEB-INF/template/jobinfo/jobinfo.index.ftl @@ -25,7 +25,7 @@
-

调度管理任务调度中心

+

任务管理任务调度中心