JobLogController.java 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. package com.xxl.job.admin.controller;
  2. import java.text.ParseException;
  3. import java.util.Date;
  4. import java.util.HashMap;
  5. import java.util.List;
  6. import java.util.Map;
  7. import javax.annotation.Resource;
  8. import org.apache.commons.lang.StringUtils;
  9. import org.apache.commons.lang.time.DateUtils;
  10. import org.springframework.stereotype.Controller;
  11. import org.springframework.ui.Model;
  12. import org.springframework.web.bind.annotation.RequestMapping;
  13. import org.springframework.web.bind.annotation.RequestParam;
  14. import org.springframework.web.bind.annotation.ResponseBody;
  15. import com.xxl.job.admin.core.constant.Constants.JobGroupEnum;
  16. import com.xxl.job.admin.core.model.ReturnT;
  17. import com.xxl.job.admin.core.model.XxlJobLog;
  18. import com.xxl.job.admin.dao.IXxlJobLogDao;
  19. import com.xxl.job.core.handler.HandlerRepository;
  20. import com.xxl.job.core.util.HttpUtil;
  21. import com.xxl.job.core.util.HttpUtil.RemoteCallBack;
  22. import com.xxl.job.core.util.JacksonUtil;
  23. /**
  24. * index controller
  25. * @author xuxueli 2015-12-19 16:13:16
  26. */
  27. @Controller
  28. @RequestMapping("/joblog")
  29. public class JobLogController {
  30. @Resource
  31. public IXxlJobLogDao xxlJobLogDao;
  32. @RequestMapping
  33. public String index(Model model, String jobGroup, String jobName) {
  34. model.addAttribute("jobGroup", jobGroup);
  35. model.addAttribute("jobName", jobName);
  36. model.addAttribute("JobGroupList", JobGroupEnum.values());
  37. return "joblog/index";
  38. }
  39. @RequestMapping("/pageList")
  40. @ResponseBody
  41. public Map<String, Object> pageList(@RequestParam(required = false, defaultValue = "0") int start,
  42. @RequestParam(required = false, defaultValue = "10") int length,
  43. String jobGroup, String jobName, String filterTime) {
  44. // parse param
  45. Date triggerTimeStart = null;
  46. Date triggerTimeEnd = null;
  47. if (StringUtils.isNotBlank(filterTime)) {
  48. String[] temp = filterTime.split(" - ");
  49. if (temp!=null && temp.length == 2) {
  50. try {
  51. triggerTimeStart = DateUtils.parseDate(temp[0], new String[]{"yyyy-MM-dd HH:mm:ss"});
  52. triggerTimeEnd = DateUtils.parseDate(temp[1], new String[]{"yyyy-MM-dd HH:mm:ss"});
  53. } catch (ParseException e) { }
  54. }
  55. }
  56. // page query
  57. List<XxlJobLog> list = xxlJobLogDao.pageList(start, length, jobGroup, jobName, triggerTimeStart, triggerTimeEnd);
  58. int list_count = xxlJobLogDao.pageListCount(start, length, jobGroup, jobName, triggerTimeStart, triggerTimeEnd);
  59. // package result
  60. Map<String, Object> maps = new HashMap<String, Object>();
  61. maps.put("recordsTotal", list_count); // 总记录数
  62. maps.put("recordsFiltered", list_count); // 过滤后的总记录数
  63. maps.put("data", list); // 分页列表
  64. return maps;
  65. }
  66. /*@RequestMapping("/save")
  67. @ResponseBody
  68. @PermessionLimit(limit=false)
  69. public RemoteCallBack triggerLog(int trigger_log_id, String status, String msg) {
  70. RemoteCallBack callBack = new RemoteCallBack();
  71. callBack.setStatus(RemoteCallBack.FAIL);
  72. XxlJobLog log = xxlJobLogDao.load(trigger_log_id);
  73. if (log!=null) {
  74. log.setHandleTime(new Date());
  75. log.setHandleStatus(status);
  76. log.setHandleMsg(msg);
  77. xxlJobLogDao.updateHandleInfo(log);
  78. callBack.setStatus(RemoteCallBack.SUCCESS);
  79. return callBack;
  80. }
  81. return callBack;
  82. }*/
  83. @RequestMapping("/logDetail")
  84. @ResponseBody
  85. public ReturnT<String> logDetail(int id){
  86. // base check
  87. XxlJobLog log = xxlJobLogDao.load(id);
  88. if (log == null) {
  89. return new ReturnT<String>(500, "参数异常");
  90. }
  91. // server address
  92. @SuppressWarnings("unchecked")
  93. Map<String, String> jobDataMap = JacksonUtil.readValue(log.getJobData(), Map.class);
  94. String handler_address = jobDataMap.get(HandlerRepository.HANDLER_ADDRESS);
  95. if (!handler_address.startsWith("http")){
  96. handler_address = "http://" + handler_address + "/";
  97. }
  98. // trigger id, trigger time
  99. Map<String, String> reqMap = new HashMap<String, String>();
  100. reqMap.put(HandlerRepository.NAMESPACE, HandlerRepository.NameSpaceEnum.LOG.name());
  101. reqMap.put(HandlerRepository.TRIGGER_LOG_ID, String.valueOf(id));
  102. reqMap.put(HandlerRepository.TRIGGER_TIMESTAMP, String.valueOf(log.getTriggerTime().getTime()));
  103. RemoteCallBack callBack = HttpUtil.post(handler_address, reqMap);
  104. if (HttpUtil.RemoteCallBack.SUCCESS.equals(callBack.getStatus())) {
  105. return new ReturnT<String>(callBack.getMsg());
  106. } else {
  107. return new ReturnT<String>(500, callBack.getMsg());
  108. }
  109. }
  110. @RequestMapping("/logDetailPage")
  111. public String logDetailPage(int id, Model model){
  112. ReturnT<String> data = logDetail(id);
  113. model.addAttribute("result", data);
  114. return "joblog/logdetail";
  115. }
  116. @RequestMapping("/logKill")
  117. @ResponseBody
  118. public ReturnT<String> logKill(int id){
  119. // base check
  120. XxlJobLog log = xxlJobLogDao.load(id);
  121. if (log == null) {
  122. return new ReturnT<String>(500, "参数异常");
  123. }
  124. // server address
  125. @SuppressWarnings("unchecked")
  126. Map<String, String> jobDataMap = JacksonUtil.readValue(log.getJobData(), Map.class);
  127. String handler_address = jobDataMap.get(HandlerRepository.HANDLER_ADDRESS);
  128. if (!handler_address.startsWith("http")){
  129. handler_address = "http://" + handler_address + "/";
  130. }
  131. String handler_name = jobDataMap.get(HandlerRepository.HANDLER_NAME);
  132. // trigger id, trigger time
  133. Map<String, String> reqMap = new HashMap<String, String>();
  134. reqMap.put(HandlerRepository.NAMESPACE, HandlerRepository.NameSpaceEnum.KILL.name());
  135. reqMap.put(HandlerRepository.HANDLER_NAME, handler_name);
  136. reqMap.put(HandlerRepository.TRIGGER_TIMESTAMP, String.valueOf(System.currentTimeMillis()));
  137. RemoteCallBack callBack = HttpUtil.post(handler_address, reqMap);
  138. if (HttpUtil.RemoteCallBack.SUCCESS.equals(callBack.getStatus())) {
  139. log.setHandleStatus(HttpUtil.RemoteCallBack.FAIL);
  140. log.setHandleMsg("人为操作主动终止");
  141. log.setHandleTime(new Date());
  142. xxlJobLogDao.updateHandleInfo(log);
  143. return new ReturnT<String>(callBack.getMsg());
  144. } else {
  145. return new ReturnT<String>(500, callBack.getMsg());
  146. }
  147. }
  148. }