123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- package com.xxl.job.admin.controller;
- import com.xxl.job.admin.core.model.XxlJobGroup;
- import com.xxl.job.admin.core.model.XxlJobInfo;
- import com.xxl.job.admin.core.model.XxlJobLog;
- 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.core.biz.ExecutorBiz;
- import com.xxl.job.core.biz.model.LogResult;
- import com.xxl.job.core.biz.model.ReturnT;
- import com.xxl.job.core.rpc.netcom.NetComClientProxy;
- import org.apache.commons.lang.StringUtils;
- import org.apache.commons.lang.time.DateUtils;
- import org.springframework.stereotype.Controller;
- import org.springframework.ui.Model;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestParam;
- import org.springframework.web.bind.annotation.ResponseBody;
- import javax.annotation.Resource;
- import java.text.ParseException;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- /**
- * index controller
- * @author xuxueli 2015-12-19 16:13:16
- */
- @Controller
- @RequestMapping("/joblog")
- public class JobLogController {
- @Resource
- private IXxlJobGroupDao xxlJobGroupDao;
- @Resource
- public IXxlJobInfoDao xxlJobInfoDao;
- @Resource
- public IXxlJobLogDao xxlJobLogDao;
- @RequestMapping
- public String index(Model model, @RequestParam(required = false, defaultValue = "0") Integer jobId) {
- // 执行器列表
- List<XxlJobGroup> jobGroupList = xxlJobGroupDao.findAll();
- model.addAttribute("JobGroupList", jobGroupList);
- // 任务
- if (jobId > 0) {
- XxlJobInfo jobInfo = xxlJobInfoDao.loadById(jobId);
- model.addAttribute("jobInfo", jobInfo);
- }
- return "joblog/joblog.index";
- }
- @RequestMapping("/getJobsByGroup")
- @ResponseBody
- public ReturnT<List<XxlJobInfo>> listJobByGroup(String jobGroup){
- List<XxlJobInfo> list = xxlJobInfoDao.getJobsByGroup(jobGroup);
- return new ReturnT<List<XxlJobInfo>>(list);
- }
-
- @RequestMapping("/pageList")
- @ResponseBody
- public Map<String, Object> pageList(@RequestParam(required = false, defaultValue = "0") int start,
- @RequestParam(required = false, defaultValue = "10") int length,
- int jobGroup, int jobId, String filterTime) {
-
- // parse param
- Date triggerTimeStart = null;
- Date triggerTimeEnd = null;
- if (StringUtils.isNotBlank(filterTime)) {
- String[] temp = filterTime.split(" - ");
- if (temp!=null && temp.length == 2) {
- try {
- triggerTimeStart = DateUtils.parseDate(temp[0], new String[]{"yyyy-MM-dd HH:mm:ss"});
- triggerTimeEnd = DateUtils.parseDate(temp[1], new String[]{"yyyy-MM-dd HH:mm:ss"});
- } catch (ParseException e) { }
- }
- }
-
- // page query
- List<XxlJobLog> list = xxlJobLogDao.pageList(start, length, jobGroup, jobId, triggerTimeStart, triggerTimeEnd);
- int list_count = xxlJobLogDao.pageListCount(start, length, jobGroup, jobId, triggerTimeStart, triggerTimeEnd);
-
- // package result
- Map<String, Object> maps = new HashMap<String, Object>();
- maps.put("recordsTotal", list_count); // 总记录数
- maps.put("recordsFiltered", list_count); // 过滤后的总记录数
- maps.put("data", list); // 分页列表
- return maps;
- }
- @RequestMapping("/logDetailPage")
- public String logDetailPage(int id, Model model){
- // base check
- ReturnT<String> logStatue = ReturnT.SUCCESS;
- XxlJobLog jobLog = xxlJobLogDao.load(id);
- if (jobLog == null) {
- logStatue = new ReturnT<String>(ReturnT.FAIL_CODE, "查看执行日志失败: 日志ID非法");
- } else {
- if (ReturnT.SUCCESS_CODE != jobLog.getTriggerCode()) {
- logStatue = new ReturnT<String>(ReturnT.FAIL_CODE, "查看执行日志失败: 任务发起调度失败,无法查看执行日志");
- }
- model.addAttribute("executorAddress", jobLog.getExecutorAddress());
- model.addAttribute("triggerTime", jobLog.getTriggerTime().getTime());
- model.addAttribute("logId", jobLog.getId());
- }
- model.addAttribute("logStatue", logStatue);
- return "joblog/logdetail";
- }
- @RequestMapping("/logDetailCat")
- @ResponseBody
- public ReturnT<LogResult> logDetailCat(String executorAddress, long triggerTime, int logId, int fromLineNum){
- try {
- ExecutorBiz executorBiz = (ExecutorBiz) new NetComClientProxy(ExecutorBiz.class, executorAddress).getObject();
- ReturnT<LogResult> logResult = executorBiz.log(triggerTime, logId, fromLineNum);
- return logResult;
- } catch (Exception e) {
- e.printStackTrace();
- return new ReturnT<LogResult>(ReturnT.FAIL_CODE, e.getMessage());
- }
- }
- @RequestMapping("/logKill")
- @ResponseBody
- public ReturnT<String> logKill(int id){
- // base check
- XxlJobLog log = xxlJobLogDao.load(id);
- XxlJobInfo jobInfo = xxlJobInfoDao.loadById(log.getJobId());
- if (jobInfo==null) {
- return new ReturnT<String>(500, "参数异常");
- }
- if (ReturnT.SUCCESS_CODE != log.getTriggerCode()) {
- return new ReturnT<String>(500, "调度失败,无法终止日志");
- }
- // request of kill
- ExecutorBiz executorBiz = null;
- try {
- executorBiz = (ExecutorBiz) new NetComClientProxy(ExecutorBiz.class, log.getExecutorAddress()).getObject();
- } catch (Exception e) {
- e.printStackTrace();
- return new ReturnT<String>(500, e.getMessage());
- }
- ReturnT<String> runResult = executorBiz.kill(jobInfo.getId());
- if (ReturnT.SUCCESS_CODE == runResult.getCode()) {
- log.setHandleCode(ReturnT.FAIL_CODE);
- log.setHandleMsg("人为操作主动终止:" + (runResult.getMsg()!=null?runResult.getMsg():""));
- log.setHandleTime(new Date());
- xxlJobLogDao.updateHandleInfo(log);
- return new ReturnT<String>(runResult.getMsg());
- } else {
- return new ReturnT<String>(500, runResult.getMsg());
- }
- }
- }
|