|
|
@@ -794,31 +794,39 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
|
|
|
@Override
|
|
|
public void taskChangeForTimeWorkChange(WorkTimeChangeEvent event) {
|
|
|
String date = LocalDate.now().format(DateTimeFormatter.ofPattern(Constants.DAILY_FORMAT));
|
|
|
+ final List<SysWorkTime> dataList = event.getDataList();
|
|
|
+ final List<Date> collect = dataList.stream().map(SysWorkTime::getYmdDate).distinct().collect(Collectors.toList());
|
|
|
Date now = new Date();
|
|
|
for (EduTrainingPlanCycleEnum value : EduTrainingPlanCycleEnum.values()) {
|
|
|
switch (value) {
|
|
|
case DAILY:
|
|
|
- List<SysWorkTime> dailyFutureWorkTime = selectWorkTimeList(now, CycleCommonEnum.DAILY, event);
|
|
|
+ final Optional<SysWorkTime> any = dataList.stream()
|
|
|
+ .filter(time -> DateUtils.isSameDay(time.getYmdDate(), new Date()))
|
|
|
+ .findAny();
|
|
|
+ if (!any.isPresent()) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ List<SysWorkTime> dailyFutureWorkTime = selectWorkTimeList(now, EduTrainingPlanCycleEnum.DAILY, event);
|
|
|
dealTimeWorkChangeForDaily(event, date, dailyFutureWorkTime);
|
|
|
break;
|
|
|
case WEEKLY:
|
|
|
- List<SysWorkTime> weeklyFutureWorkTime = selectWorkTimeList(now, CycleCommonEnum.WEEKLY, event);
|
|
|
+ List<SysWorkTime> weeklyFutureWorkTime = selectWorkTimeList(now, EduTrainingPlanCycleEnum.WEEKLY, event);
|
|
|
dealTimeWorkChangeForWeekly(event, date, weeklyFutureWorkTime);
|
|
|
break;
|
|
|
case MONTHLY:
|
|
|
- List<SysWorkTime> monthlyFutureWorkTime = selectWorkTimeList(now, CycleCommonEnum.MONTHLY, event);
|
|
|
+ List<SysWorkTime> monthlyFutureWorkTime = selectWorkTimeList(now, EduTrainingPlanCycleEnum.MONTHLY, event);
|
|
|
dealTimeWorkChangeForMonthly(event, date, monthlyFutureWorkTime);
|
|
|
break;
|
|
|
case QUARTERLY:
|
|
|
- List<SysWorkTime> quarterlyFutureWorkTime = selectWorkTimeList(now, CycleCommonEnum.QUARTERLY, event);
|
|
|
+ List<SysWorkTime> quarterlyFutureWorkTime = selectWorkTimeList(now, EduTrainingPlanCycleEnum.QUARTERLY, event);
|
|
|
dealTimeWorkChangeForQuarterly(event, date, quarterlyFutureWorkTime);
|
|
|
break;
|
|
|
case HALF_YEARLY:
|
|
|
- List<SysWorkTime> halfYearlyFutureWorkTime = selectWorkTimeList(now, CycleCommonEnum.HALF_YEARLY, event);
|
|
|
+ List<SysWorkTime> halfYearlyFutureWorkTime = selectWorkTimeList(now, EduTrainingPlanCycleEnum.HALF_YEARLY, event);
|
|
|
dealTimeWorkChangeForHalfYearly(event, date, halfYearlyFutureWorkTime);
|
|
|
break;
|
|
|
case YEARLY:
|
|
|
- List<SysWorkTime> yearlyFutureWorkTime = selectWorkTimeList(now, CycleCommonEnum.YEARLY, event);
|
|
|
+ List<SysWorkTime> yearlyFutureWorkTime = selectWorkTimeList(now, EduTrainingPlanCycleEnum.YEARLY, event);
|
|
|
dealTimeWorkChangeForYearly(event, date, yearlyFutureWorkTime);
|
|
|
break;
|
|
|
default:
|
|
|
@@ -836,7 +844,7 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
|
|
|
//查询机构当天是否存在任务
|
|
|
//因为是每日,每日的任务都是在当天凌晨生成,所以这里只考虑今天的任务情况就行
|
|
|
List<CoreEduTrainingTask> taskList = lambdaQuery()
|
|
|
- .eq(CoreEduTrainingTask::getPlanCycle, EduTrainingPlanCycleEnum.DAILY.getCode())
|
|
|
+ .in(CoreEduTrainingTask::getPlanCycle, EduTrainingPlanCycleEnum.DAILY.getCode(), EduTrainingPlanCycleEnum.NONE.getCode())
|
|
|
.like(CoreEduTrainingTask::getStartDate, todayStr)
|
|
|
.in(CoreEduTrainingTask::getOrgId, orgIds)
|
|
|
.select(CoreEduTrainingTask::getId, CoreEduTrainingTask::getOrgId,
|
|
|
@@ -846,33 +854,39 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
|
|
|
Map<Long, List<SysWorkTime>> listMap = futureWorkTime.stream().collect(Collectors.groupingBy(SysWorkTime::getIsEnable));
|
|
|
//歇业的数据
|
|
|
List<SysWorkTime> unWorkTimeList = listMap.get(UN_WORK);
|
|
|
- //获取歇业的机构信息
|
|
|
- List<Long> unWorkOrgIdList = unWorkTimeList.stream().map(SysWorkTime::getOrgId).collect(Collectors.toList());
|
|
|
- //删除已经歇业且未执行的任务
|
|
|
- List<Long> delTaskIdList = taskList.stream()
|
|
|
- .filter(task -> unWorkOrgIdList.contains(task.getOrgId()))
|
|
|
- .filter(task -> task.getStatus().equals(EduTrainingDoStatus.WAIT_RECORDED.getCode()))
|
|
|
- .map(CoreEduTrainingTask::getId).collect(Collectors.toList());
|
|
|
- //删除任务
|
|
|
- delTaskByIdList(delTaskIdList);
|
|
|
+ if (ObjectUtil.isNotEmpty(unWorkTimeList)) {
|
|
|
+ //获取歇业的机构信息
|
|
|
+ List<Long> unWorkOrgIdList = unWorkTimeList.stream().map(SysWorkTime::getOrgId).collect(Collectors.toList());
|
|
|
+ //删除已经歇业且未执行的任务
|
|
|
+ List<Long> delTaskIdList = taskList.stream()
|
|
|
+ .filter(task -> unWorkOrgIdList.contains(task.getOrgId()))
|
|
|
+ .filter(task -> task.getStatus().equals(EduTrainingDoStatus.WAIT_RECORDED.getCode()))
|
|
|
+ .map(CoreEduTrainingTask::getId).collect(Collectors.toList());
|
|
|
+ //删除任务
|
|
|
+ delTaskByIdList(delTaskIdList);
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
|
|
|
//营业的数据
|
|
|
List<SysWorkTime> workTimeList = listMap.get(WORK);
|
|
|
- //营业的机构id
|
|
|
- List<Long> workOrgIdList = workTimeList.stream().map(SysWorkTime::getOrgId).collect(Collectors.toList());
|
|
|
- //查询需要生成任务的机构的计划
|
|
|
- //每日的情况需要考虑到特殊日子,比如每月一号 一月一号等多周期重合的情况
|
|
|
- //List<Integer> cycleList = DateUtils.checkDate(today);
|
|
|
- List<CoreEduTrainingPlan> planList = coreEduTrainingPlanMapper.selectList(new LambdaQueryWrapper<CoreEduTrainingPlan>()
|
|
|
- .eq(CoreEduTrainingPlan::getStandard, 0)
|
|
|
- .eq(CoreEduTrainingPlan::getPlanStatus, EduTrainingPlanStatus.USING.getCode())
|
|
|
- .eq(CoreEduTrainingPlan::getPlanCycle, EduTrainingPlanCycleEnum.DAILY.getCode())
|
|
|
- .eq(CoreEduTrainingPlan::getDeleted, 0)
|
|
|
- .in(CoreEduTrainingPlan::getBelongOrgId, workOrgIdList)
|
|
|
- .select(CoreEduTrainingPlan::getId, CoreEduTrainingPlan::getPlanCycle));
|
|
|
- //此list中Plan对象仅id与planCycle字段有值,
|
|
|
- buildTaskByPlan(planList, today);
|
|
|
+ if (ObjectUtil.isNotEmpty(workTimeList)) {
|
|
|
+ //营业的机构id
|
|
|
+ List<Long> workOrgIdList = workTimeList.stream().map(SysWorkTime::getOrgId).collect(Collectors.toList());
|
|
|
+ //查询需要生成任务的机构的计划
|
|
|
+ //每日的情况需要考虑到特殊日子,比如每月一号 一月一号等多周期重合的情况
|
|
|
+ //List<Integer> cycleList = DateUtils.checkDate(today);
|
|
|
+ List<CoreEduTrainingPlan> planList = coreEduTrainingPlanMapper.selectList(new LambdaQueryWrapper<CoreEduTrainingPlan>()
|
|
|
+ .eq(CoreEduTrainingPlan::getStandard, 0)
|
|
|
+ .eq(CoreEduTrainingPlan::getPlanStatus, EduTrainingPlanStatus.USING.getCode())
|
|
|
+ .in(CoreEduTrainingPlan::getPlanCycle, EduTrainingPlanCycleEnum.DAILY.getCode(),EduTrainingPlanCycleEnum.NONE.getCode())
|
|
|
+ .eq(CoreEduTrainingPlan::getDeleted, 0)
|
|
|
+ .in(CoreEduTrainingPlan::getBelongOrgId, workOrgIdList)
|
|
|
+ .select(CoreEduTrainingPlan::getId, CoreEduTrainingPlan::getPlanCycle));
|
|
|
+ //此list中Plan对象仅id与planCycle字段有值,
|
|
|
+ buildTaskByPlan(planList, today);
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -910,13 +924,15 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
|
|
|
//删除任务
|
|
|
delTaskByIdList(delTaskIdList);
|
|
|
|
|
|
+ List<SysOrg> orgList = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectParentHs(workOrgIdList, SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
|
|
|
+ final List<Long> collect = orgList.stream().map(SysOrg::getId).collect(Collectors.toList());
|
|
|
//查询需要生成任务的机构的计划
|
|
|
List<CoreEduTrainingPlan> planList = coreEduTrainingPlanMapper.selectList(new LambdaQueryWrapper<CoreEduTrainingPlan>()
|
|
|
.eq(CoreEduTrainingPlan::getStandard, 0)
|
|
|
.eq(CoreEduTrainingPlan::getPlanStatus, EduTrainingPlanStatus.USING.getCode())
|
|
|
.eq(CoreEduTrainingPlan::getPlanCycle, EduTrainingPlanCycleEnum.WEEKLY.getCode())
|
|
|
.eq(CoreEduTrainingPlan::getDeleted, 0)
|
|
|
- .in(CoreEduTrainingPlan::getBelongOrgId, workOrgIdList)
|
|
|
+ .in(CoreEduTrainingPlan::getBelongOrgId, collect)
|
|
|
.select(CoreEduTrainingPlan::getId, CoreEduTrainingPlan::getPlanCycle));
|
|
|
//此list中Plan对象仅id与planCycle字段有值,
|
|
|
buildTaskByPlan(planList, today);
|
|
|
@@ -1108,8 +1124,8 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
|
|
|
}
|
|
|
|
|
|
|
|
|
- private List<SysWorkTime> selectWorkTimeList(Date now, CycleCommonEnum cycle, WorkTimeChangeEvent event) {
|
|
|
- DateRange range = DateUtils.getStartAndEnd(now, cycle);
|
|
|
+ private List<SysWorkTime> selectWorkTimeList(Date now, EduTrainingPlanCycleEnum cycle, WorkTimeChangeEvent event) {
|
|
|
+ DateRange range = DateUtils.getStartAndEnd(now, cycle.getCode());
|
|
|
String startTime = DateUtil.format(range.getStartTime(), Constants.DAILY_FORMAT);
|
|
|
String endTime = DateUtil.format(range.getEndTime(), Constants.DAILY_FORMAT);
|
|
|
WorkTimeDto workTimeDto = new WorkTimeDto();
|