瀏覽代碼

预案演练计划代码提交

jingyuanchao 2 年之前
父節點
當前提交
0f17e0ee0f

+ 1 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/controller/CoreDrillTaskController.java

@@ -138,6 +138,6 @@ public class CoreDrillTaskController extends BaseController {
     @ApiOperation(value = "未完成任务修改成已过期")
     @GetMapping("/updateDrillTaskStatus")
     public AjaxResult updateDrillTaskStatus() {
-        return success(coreDrillTaskService.updateDrillTaskStatus());
+        return toAjax(coreDrillTaskService.updateDrillTaskStatus());
     }
 }

+ 13 - 6
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillTaskServiceImpl.java

@@ -58,6 +58,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.time.LocalDateTime;
 import java.util.*;
 import java.util.concurrent.CompletableFuture;
 import java.util.stream.Collectors;
@@ -339,7 +340,7 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
         saveTaskAndRoleData(plan, start, end, execOrgList);
     }
 
-    private List<SysOrg> getExecOrgList(CoreDrillPlanDataVo plan, Date start, Date end){
+    private List<SysOrg> getExecOrgList(CoreDrillPlanDataVo plan, Date start, Date end) {
         List<CoreDrillPlanToExecOrg> planExecOrgList = plan.getPlanExecOrgList();
         List<SysOrg> orgList;
         if (ObjectUtil.isEmpty(planExecOrgList)) {
@@ -352,7 +353,7 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
         List<Long> orgIdList = orgList.stream().map(SysOrg::getId).collect(Collectors.toList());
         String startTime = DateUtil.format(start, Constants.DAILY_FORMAT);
         String endTime = DateUtil.format(end, Constants.DAILY_FORMAT);
-        WorkTimeDto workTimeDto= new WorkTimeDto();
+        WorkTimeDto workTimeDto = new WorkTimeDto();
         workTimeDto.setOrgIdList(orgIdList);
         workTimeDto.setStartTime(startTime);
         workTimeDto.setEndTime(endTime);
@@ -366,7 +367,7 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
         List<Long> workOrgIdList = workTimeList.stream().filter(time -> ObjectUtil.equal(time.getIsEnable(), WORK))
                 .map(SysWorkTime::getOrgId).collect(Collectors.toList());
         return orgList.stream().filter(org -> workOrgIdList.contains(org.getId())).collect(Collectors.toList());
-       // return orgList;
+        // return orgList;
 
     }
 
@@ -375,8 +376,15 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
         List<CoreDrillTask> taskList = new ArrayList<>();
         List<CoreDrillTaskToRole> taskRoleList = new ArrayList<>();
         Map<Integer, DateRange> dateRangeMap = DateUtils.splitDateRange(start, end, plan.getExecTimes());
+
         for (SysOrg org : orgList) {
             for (int i = 1; i <= plan.getExecTimes(); i++) {
+                final LocalDateTime time = DateUtils.toLocalDateTime(DateUtils.getPreciseTime(dateRangeMap.get(i).getEndTime()));
+                if (time.isBefore(LocalDateTime.now())) {
+                    //如果任务的结束时间 已经小于当前时间则没必要生成任务了,
+                    //用于处理周期中生成多次任务,周期初的任务一经生成就无法执行(预期)的问题,
+                    continue;
+                }
                 CoreDrillTask trainingTask = new CoreDrillTask();
                 trainingTask.setId(IdWorker.getId());
                 trainingTask.setPlanId(plan.getId());
@@ -410,9 +418,8 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
                     taskRoleList.add(coreDrillTaskToRole);
                 }
             }
-
-
         }
+        taskList.removeIf(task -> task.getEndDate().before(new Date()));
         if (ObjectUtil.isNotEmpty(taskList)) {
             this.saveBatch(taskList);
         }
@@ -635,7 +642,7 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
                 //此处因为planService会导致循环依赖
                 final CoreDrillPlanDataVo detailPlanData = coreDrillPlanMapper.getDetailPlanData(plan.getId());
                 detailPlanData.setFileList(ObjectUtil.isNotEmpty(detailPlanData.getFile()) ? JSON.parseArray(detailPlanData.getFile(), String.class) : null);
-                DateRange range = DateUtils.getStartAndEnd(finalDate, EduTrainingPlanCycleEnum.toCommmonEnum( plan.getPlanCycle()));
+                DateRange range = DateUtils.getStartAndEnd(finalDate, EduTrainingPlanCycleEnum.toCommmonEnum(plan.getPlanCycle()));
                 this.createTaskForNow(detailPlanData, range.getStartTime(), range.getEndTime());
             }, threadPoolTaskExecutor);
         }

+ 8 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/CoreEduTrainingTaskServiceImpl.java

@@ -70,6 +70,7 @@ import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.text.NumberFormat;
 import java.time.LocalDate;
+import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.concurrent.CompletableFuture;
@@ -436,11 +437,17 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
     private void saveTaskAndRoleData(CoreEduTrainingPlanDataVo plan, Date start, Date end, List<SysOrg> orgList) {
         //List<CoreEduTrainingPlanToRole> planRoleList = plan.getPlanRoleList();
         List<CoreEduTrainingTask> taskList = new ArrayList<>();
-        List<CoreEduTrainingTaskToRole> taskRoleList = new ArrayList<>();
+        //List<CoreEduTrainingTaskToRole> taskRoleList = new ArrayList<>();
         Map<Integer, DateRange> dateRangeMap = DateUtils.splitDateRange(start, end, plan.getExecTimes());
         Date date = new Date();
         for (SysOrg org : orgList) {
             for (int i = 1; i <= plan.getExecTimes(); i++) {
+                final LocalDateTime time = DateUtils.toLocalDateTime(DateUtils.getPreciseTime(dateRangeMap.get(i).getEndTime()));
+                if (time.isBefore(LocalDateTime.now())) {
+                    //如果任务的结束时间 已经小于当前时间则没必要生成任务了,
+                    //用于处理周期中生成多次任务,周期初的任务一经生成就无法执行(预期)的问题,
+                    continue;
+                }
                 DateRange dateRange = dateRangeMap.get(i);
                 CoreEduTrainingTask trainingTask = new CoreEduTrainingTask();
                 trainingTask.setId(IdWorker.getId());