| | |
| | | import java.time.LocalDateTime; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.List; |
| | | import java.util.concurrent.LinkedBlockingQueue; |
| | | import java.util.concurrent.ThreadPoolExecutor; |
| | | import java.util.concurrent.TimeUnit; |
| | | |
| | | /** |
| | | * @author zhibing.pu |
| | |
| | | */ |
| | | @Override |
| | | public void addPatrolTask(PatrolTaskVo vo, String userId) { |
| | | if(vo.getStartTime().isAfter(vo.getEndTime())){ |
| | | if(vo.getType() == 1 && vo.getStartTime().isAfter(vo.getEndTime())){ |
| | | throw new RuntimeException("结束时间不能小于开始时间"); |
| | | } |
| | | ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()); |
| | | threadPoolExecutor.execute(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | //构建主数据 |
| | | PatrolTask patrolTask = new PatrolTask(); |
| | | BeanUtils.copyProperties(vo, patrolTask); |
| | | patrolTask.setCreateTime(LocalDateTime.now()); |
| | | patrolTask.setCreateUserId(Integer.valueOf(userId)); |
| | | this.insert(patrolTask); |
| | | PatrolTaskServiceImpl.this.insert(patrolTask); |
| | | if(vo.getType() == 2){ |
| | | //实时任务,手动添加后续逻辑中需要的数据 |
| | | LocalDateTime now = LocalDateTime.now(); |
| | | vo.setWeeks("[" + now.getDayOfWeek().getValue() + "]"); |
| | | vo.setStartTime(now); |
| | | vo.setExecutionTime(now.plusSeconds(5).format(DateTimeFormatter.ofPattern("HH:mm:ss"))); |
| | | vo.setExecutionTime(now.plusSeconds(5).format(DateTimeFormatter.ofPattern("HH:mm"))); |
| | | vo.setEndTime(now.plusSeconds(10)); |
| | | } |
| | | String weeks = vo.getWeeks(); |
| | |
| | | taskDetail.setPatrolTaskId(patrolTask.getId()); |
| | | taskDetail.setStatus(1); |
| | | String executionTime = startTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + " " + vo.getExecutionTime(); |
| | | taskDetail.setExecutionTime(LocalDateTime.parse(executionTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); |
| | | taskDetail.setExecutionTime(LocalDateTime.parse(executionTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"))); |
| | | taskDetail.setDelFlag(0); |
| | | taskDetailService.insert(taskDetail); |
| | | |
| | |
| | | //添加定时任务 |
| | | JobDataMap jobDataMap = new JobDataMap(); |
| | | jobDataMap.put("id", taskDetail.getId()); |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); |
| | | try { |
| | | quartzUtil.addSimpleQuartzTask(PatrolTaskJob.class,patrolTask.getName() + "_" + taskDetail.getId(), QuartzEnum.DEFAULT_GROUP.getValue(), jobDataMap |
| | | , sdf.parse(executionTime), 0, 0); |
| | |
| | | //添加一天 |
| | | startTime = startTime.plusDays(1); |
| | | } |
| | | |
| | | |
| | | } |
| | | }); |
| | | } |
| | | |
| | | |