package com.app.mvc.schedule; import com.app.mvc.acl.convert.BaseConvert; import com.app.mvc.beans.JsonData; import com.app.mvc.beans.PageQuery; import com.app.mvc.util.DateTimeUtil; import com.google.common.base.Function; import com.google.common.collect.Lists; import org.quartz.TriggerUtils; import org.quartz.impl.triggers.CronTriggerImpl; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import javax.annotation.Nullable; import javax.annotation.Resource; import java.text.ParseException; import java.util.Date; import java.util.List; /** * Created by jimin on 16/5/8. */ @Controller @RequestMapping("/admin/schedule") public class ScheduleController { @Resource private ScheduleService scheduleService; @ResponseBody @RequestMapping("/page.do") public ModelAndView page() { return new ModelAndView("schedule"); } @ResponseBody @RequestMapping("/executePage.do") public ModelAndView executePage(@RequestParam("scheduleId") String scheduleId) { ModelAndView modelAndView = new ModelAndView("schedule_execute"); modelAndView.addObject("scheduleId", scheduleId); return modelAndView; } @RequestMapping("/update.json") @ResponseBody public JsonData update(ScheduleJobSettingParam param) throws Exception { BaseConvert.checkPara(param); ScheduledJobSetting setting = scheduleService.findJobSetting(param.getId()); if (setting == null) { return JsonData.error("not found setting"); } setting.setCron(param.getCron()); setting.setStatus(param.getStatus()); scheduleService.updateJobSetting(setting); return JsonData.success(); } @RequestMapping("/all.json") @ResponseBody public JsonData getAll() { return JsonData.success(scheduleService.getAll()); } @RequestMapping("/getListByGroupId.json") @ResponseBody public JsonData getListByGroupId(@RequestParam("groupId") String groupId) { return JsonData.success(scheduleService.getListByGroupId(groupId)); } @RequestMapping("/cron.json") @ResponseBody public JsonData cronTest(@RequestParam("cron") String cron, @RequestParam(value = "fireTimes", defaultValue = "5") int fireTimes) { CronTriggerImpl cronTriggerImpl = new CronTriggerImpl(); try { cronTriggerImpl.setCronExpression(cron); } catch (ParseException e) { return JsonData.error("cron parse error"); } final List<Date> dates = TriggerUtils.computeFireTimes(cronTriggerImpl, null, fireTimes); return JsonData.success(Lists.transform(dates, new Function<Date, String>() { @Nullable @Override public String apply(@Nullable Date input) { return DateTimeUtil.dateTimeFrom(input); } })); } @RequestMapping("/results.json") @ResponseBody public JsonData resultSearch(@RequestParam("scheduleId") String scheduleId, PageQuery page) { return JsonData.success(scheduleService.getPageByScheduleId(scheduleId, page)); } }