Pu Zhibing
2024-12-24 5c2176867b9fe0ff4b70e352c5f643f2ae5c1bc3
guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/PatrolTaskServiceImpl.java
@@ -36,6 +36,9 @@
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
@@ -65,21 +68,25 @@
    */
   @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();
@@ -98,7 +105,7 @@
            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);
            
@@ -135,7 +142,7 @@
            //添加定时任务
            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);
@@ -148,8 +155,8 @@
         //添加一天
         startTime = startTime.plusDays(1);
      }
         }
      });
   }