|
|
@@ -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);
|
|
|
}
|