1
0

JobController.java 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. package com.lote.wms.task.controller;
  2. import com.lote.wms.common.core.web.model.Result;
  3. import com.lote.wms.common.core.web.model.ResultCodeEnum;
  4. import com.lote.wms.task.entity.ScheduleJob;
  5. import com.lote.wms.task.job.instock.SendInOrderStatusJob;
  6. import com.lote.wms.task.service.IJobService;
  7. import com.lote.wms.task.support.SpringUtils;
  8. import org.apache.commons.lang.StringUtils;
  9. import org.quartz.CronScheduleBuilder;
  10. import org.quartz.SchedulerException;
  11. import org.slf4j.Logger;
  12. import org.slf4j.LoggerFactory;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.stereotype.Controller;
  15. import org.springframework.web.bind.annotation.RequestMapping;
  16. import org.springframework.web.bind.annotation.ResponseBody;
  17. import javax.annotation.Resource;
  18. import javax.servlet.http.HttpServletRequest;
  19. import java.lang.reflect.Method;
  20. import java.util.List;
  21. /**
  22. *
  23. * @ClassName: TaskController
  24. * @author yechao
  25. * @date 2017年7月6日 下午2:06:20
  26. * @Description: TODO
  27. */
  28. @Controller
  29. @RequestMapping("/job")
  30. public class JobController {
  31. private static final Logger logger = LoggerFactory.getLogger(JobController.class);
  32. @Autowired
  33. private SendInOrderStatusJob sendOutOrderStatusJob ;
  34. @RequestMapping("/sendInOrder")
  35. public void sendInOrder(){
  36. sendOutOrderStatusJob.run(null);
  37. }
  38. @Resource
  39. private IJobService jobService;
  40. @RequestMapping("/list")
  41. @ResponseBody
  42. public Result list() {
  43. List<ScheduleJob> list = jobService.getAllJob();
  44. return Result.success(list);
  45. }
  46. /**
  47. * 添加定时任务
  48. *
  49. * @param request
  50. * @param scheduleJob
  51. * @return
  52. */
  53. @RequestMapping("add")
  54. @ResponseBody
  55. public Result add(HttpServletRequest request, ScheduleJob scheduleJob) {
  56. Result result = new Result();
  57. result.setCode(ResultCodeEnum.FAILURE.getCode());
  58. try {
  59. @SuppressWarnings("unused")
  60. CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(scheduleJob.getCronExpression());
  61. } catch (Exception e) {
  62. result.setMsg("cron表达式有误,不能被解析!");
  63. return result;
  64. }
  65. Object obj = null;
  66. try {
  67. if (StringUtils.isNotBlank(scheduleJob.getSpringId())) {
  68. // obj = SpringContextUtil.getBean(scheduleJob.getSpringId());
  69. obj = SpringUtils.getBean(scheduleJob.getSpringId());
  70. } else {
  71. Class<?> clazz = Class.forName(scheduleJob.getBeanClass());
  72. obj = clazz.newInstance();
  73. }
  74. } catch (Exception e) {
  75. // do nothing.........
  76. e.printStackTrace();
  77. }
  78. if (obj == null) {
  79. result.setMsg("未找到目标类!请检查SpringId , BeanClass");
  80. return result;
  81. } else {
  82. Class<? extends Object> clazz = obj.getClass();
  83. Method method = null;
  84. try {
  85. method = clazz.getMethod(scheduleJob.getMethodName(), Object.class);
  86. } catch (Exception e) {
  87. // do nothing.....
  88. }
  89. if (method == null) {
  90. result.setMsg("未找到目标方法!");
  91. return result;
  92. }
  93. }
  94. try {
  95. jobService.addJob(scheduleJob);
  96. } catch (Exception e) {
  97. e.printStackTrace();
  98. result.setMsg("保存失败,检查 name group 组合是否有重复!");
  99. return result;
  100. }
  101. result.setCode(ResultCodeEnum.SUCCESS.getCode());
  102. return result;
  103. }
  104. @RequestMapping("changeJobStatus")
  105. @ResponseBody
  106. public Result changeJobStatus(HttpServletRequest request, Long jobId, String cmd) {
  107. Result result = new Result();
  108. result.setCode(ResultCodeEnum.FAILURE.getCode());
  109. try {
  110. jobService.changeStatus(jobId, cmd);
  111. } catch (SchedulerException e) {
  112. logger.error("任务状态改变失败:" + e.getMessage());
  113. e.printStackTrace();
  114. result.setMsg("任务状态改变失败!");
  115. return result;
  116. }
  117. result.setMsg("任务状态改变成功!");
  118. result.setCode(ResultCodeEnum.SUCCESS.getCode());
  119. return result;
  120. }
  121. @RequestMapping("updateCron")
  122. @ResponseBody
  123. public Result updateCron(HttpServletRequest request, Long jobId, String cron) {
  124. Result result = new Result();
  125. result.setCode(ResultCodeEnum.FAILURE.getCode());
  126. try {
  127. @SuppressWarnings("unused")
  128. CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(cron);
  129. } catch (Exception e) {
  130. result.setMsg("cron表达式有误,不能被解析!");
  131. return result;
  132. }
  133. try {
  134. jobService.updateCron(jobId, cron);
  135. } catch (SchedulerException e) {
  136. result.setMsg("cron更新失败!");
  137. return result;
  138. }
  139. result.setMsg("cron更新成功!");
  140. result.setCode(ResultCodeEnum.SUCCESS.getCode());
  141. return result;
  142. }
  143. @RequestMapping("del")
  144. @ResponseBody
  145. public Result del(HttpServletRequest request, Long jobId) {
  146. Result result = new Result();
  147. result.setCode(ResultCodeEnum.FAILURE.getCode());
  148. try {
  149. jobService.delJob(jobId);
  150. } catch (Exception e) {
  151. result.setMsg("删除失败");
  152. return result;
  153. }
  154. result.setMsg("删除成功");
  155. result.setCode(ResultCodeEnum.SUCCESS.getCode());
  156. return result;
  157. }
  158. }