package com.lote.wms.task.controller; import com.lote.wms.common.core.web.model.Result; import com.lote.wms.common.core.web.model.ResultCodeEnum; import com.lote.wms.task.entity.ScheduleJob; import com.lote.wms.task.job.instock.SendInOrderStatusJob; import com.lote.wms.task.service.IJobService; import com.lote.wms.task.support.SpringUtils; import org.apache.commons.lang.StringUtils; import org.quartz.CronScheduleBuilder; import org.quartz.SchedulerException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.lang.reflect.Method; import java.util.List; /** * * @ClassName: TaskController * @author yechao * @date 2017年7月6日 下午2:06:20 * @Description: TODO */ @Controller @RequestMapping("/job") public class JobController { private static final Logger logger = LoggerFactory.getLogger(JobController.class); @Autowired private SendInOrderStatusJob sendOutOrderStatusJob ; @RequestMapping("/sendInOrder") public void sendInOrder(){ sendOutOrderStatusJob.run(null); } @Resource private IJobService jobService; @RequestMapping("/list") @ResponseBody public Result list() { List list = jobService.getAllJob(); return Result.success(list); } /** * 添加定时任务 * * @param request * @param scheduleJob * @return */ @RequestMapping("add") @ResponseBody public Result add(HttpServletRequest request, ScheduleJob scheduleJob) { Result result = new Result(); result.setCode(ResultCodeEnum.FAILURE.getCode()); try { @SuppressWarnings("unused") CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(scheduleJob.getCronExpression()); } catch (Exception e) { result.setMsg("cron表达式有误,不能被解析!"); return result; } Object obj = null; try { if (StringUtils.isNotBlank(scheduleJob.getSpringId())) { // obj = SpringContextUtil.getBean(scheduleJob.getSpringId()); obj = SpringUtils.getBean(scheduleJob.getSpringId()); } else { Class clazz = Class.forName(scheduleJob.getBeanClass()); obj = clazz.newInstance(); } } catch (Exception e) { // do nothing......... e.printStackTrace(); } if (obj == null) { result.setMsg("未找到目标类!请检查SpringId , BeanClass"); return result; } else { Class clazz = obj.getClass(); Method method = null; try { method = clazz.getMethod(scheduleJob.getMethodName(), Object.class); } catch (Exception e) { // do nothing..... } if (method == null) { result.setMsg("未找到目标方法!"); return result; } } try { jobService.addJob(scheduleJob); } catch (Exception e) { e.printStackTrace(); result.setMsg("保存失败,检查 name group 组合是否有重复!"); return result; } result.setCode(ResultCodeEnum.SUCCESS.getCode()); return result; } @RequestMapping("changeJobStatus") @ResponseBody public Result changeJobStatus(HttpServletRequest request, Long jobId, String cmd) { Result result = new Result(); result.setCode(ResultCodeEnum.FAILURE.getCode()); try { jobService.changeStatus(jobId, cmd); } catch (SchedulerException e) { logger.error("任务状态改变失败:" + e.getMessage()); e.printStackTrace(); result.setMsg("任务状态改变失败!"); return result; } result.setMsg("任务状态改变成功!"); result.setCode(ResultCodeEnum.SUCCESS.getCode()); return result; } @RequestMapping("updateCron") @ResponseBody public Result updateCron(HttpServletRequest request, Long jobId, String cron) { Result result = new Result(); result.setCode(ResultCodeEnum.FAILURE.getCode()); try { @SuppressWarnings("unused") CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(cron); } catch (Exception e) { result.setMsg("cron表达式有误,不能被解析!"); return result; } try { jobService.updateCron(jobId, cron); } catch (SchedulerException e) { result.setMsg("cron更新失败!"); return result; } result.setMsg("cron更新成功!"); result.setCode(ResultCodeEnum.SUCCESS.getCode()); return result; } @RequestMapping("del") @ResponseBody public Result del(HttpServletRequest request, Long jobId) { Result result = new Result(); result.setCode(ResultCodeEnum.FAILURE.getCode()); try { jobService.delJob(jobId); } catch (Exception e) { result.setMsg("删除失败"); return result; } result.setMsg("删除成功"); result.setCode(ResultCodeEnum.SUCCESS.getCode()); return result; } }