diff --git a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/TaskManager.java b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/TaskManager.java index 9b332b54e..8f97181f8 100644 --- a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/TaskManager.java +++ b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/TaskManager.java @@ -10,6 +10,7 @@ import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.TaskScheduler; import org.springframework.stereotype.Service; +import ru.clearing.classes.statics.data.scheduler.ClearingCalendar; import ru.clearing.classes.statics.data.scheduler.PlannerAllToday; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.platform.messaging.domain.BaseRequest; @@ -18,6 +19,7 @@ import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteReques import ru.spcex.clearing.platform.messaging.domain.cud.schedule.*; import ru.spcex.clearing.platform.messaging.service.QueueConsumer; import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate; +import ru.spcex.platform.enumeration.DayStatus; import ru.spcex.platform.enumeration.Status; import ru.spcex.platform.enumeration.Task; import ru.spcex.platform.imdg.api.Imdg; @@ -52,6 +54,7 @@ public class TaskManager extends QueueConsumer implements InitializingBean { private final TaskScheduler taskScheduler; private final ImdgProvider imdgProvider; private Imdg plannerAllTodayMap; + private Imdg clearingCalendarMap; private ConcurrentHashMap scheduledJobs; private Producer kafkaProducer; @@ -70,6 +73,7 @@ public class TaskManager extends QueueConsumer implements InitializingBean { @Override public void afterPropertiesSet() throws Exception { plannerAllTodayMap = imdgProvider.getImdg(IMDGDistributedNames.Map_PlannerAllToday, PlannerAllToday.class); + clearingCalendarMap = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingCalendar.class); scheduledJobs = new ConcurrentHashMap<>(); updateScheduler(); callback(PlannerNewRequest.class) @@ -128,7 +132,7 @@ public class TaskManager extends QueueConsumer implements InitializingBean { plannerAllToday.setParent("PLNR"); plannerAllToday.setParentId(request.getParentId()); - processTask(plannerAllToday); + newEntry(plannerAllToday); return requestInfoUpdate; } @@ -146,24 +150,69 @@ public class TaskManager extends QueueConsumer implements InitializingBean { plannerAllToday.setSecurityId(request.getSecurityId()); plannerAllToday.setParent("PLNR"); plannerAllToday.setParentId(request.getParentId()); + + updateEntry(plannerAllToday); return requestInfoUpdate; } protected RequestInfoUpdate deletePlanner(BaseRequest userRequest) { RequestInfoUpdate requestInfoUpdate = new RequestInfoUpdate(); - return requestInfoUpdate; + //fixme + return requestInfoUpdate; } protected RequestInfoUpdate newPlannerTemplate(BaseRequest userRequest) { RequestInfoUpdate requestInfoUpdate = new RequestInfoUpdate(); - return requestInfoUpdate; + PlannerTemplateNewRequest request = userRequest.getRequestPayload(); + PlannerAllToday plannerAllToday = new PlannerAllToday(); + plannerAllToday.setTask(request.getTask()); + plannerAllToday.setTaskTime(request.getTaskTime()); + plannerAllToday.setTaskStatus(request.getTaskStatus()); + plannerAllToday.setCompanyId(request.getCompanyId()); + plannerAllToday.setSecurityId(request.getSecurityId()); + plannerAllToday.setParent("TMPL"); + plannerAllToday.setParentId(0L);//FIXME + Optional clearingCalendarOptional = clearingCalendarMap.getAllValues().stream() + .filter((calendar) -> calendar.getClearingDate().isEqual(LocalDate.now())) + .findFirst(); + if (clearingCalendarOptional.isPresent()) { + ClearingCalendar calendar = clearingCalendarOptional.get(); + if (calendar.getDayStatus().equalsIgnoreCase(DayStatus.Workday.getKey())) { + if (calendar.getCompanyId() != null && calendar.getCompanyId() != 0) { + newEntry(plannerAllToday); + } + } + } + return requestInfoUpdate; } protected RequestInfoUpdate updatePlannerTemplate(BaseRequest userRequest) { RequestInfoUpdate requestInfoUpdate = new RequestInfoUpdate(); + PlannerTemplateUpdateRequest request = userRequest.getRequestPayload(); + Optional clearingCalendarOptional = clearingCalendarMap.getAllValues().stream() + .filter((calendar) -> calendar.getClearingDate().isEqual(LocalDate.now())) + .findFirst(); + if (clearingCalendarOptional.isPresent()) { + ClearingCalendar calendar = clearingCalendarOptional.get(); + if (calendar.getDayStatus().equalsIgnoreCase(DayStatus.Workday.getKey())) { + if (calendar.getCompanyId() != null && calendar.getCompanyId() != 0) { + Optional plannerAllTodayOptional = plannerAllTodayMap.getAllValues().stream().filter((x) -> { + if (x.getTaskTime().equals(request.getTaskTime()) && x.getTask().equalsIgnoreCase(request.getTask())) { + return true; + } + return false; + }).findFirst(); + PlannerAllToday planner; + if (plannerAllTodayOptional.isPresent()) { + planner = plannerAllTodayOptional.get(); + updateEntry(planner); + } + } + } + } return requestInfoUpdate; } @@ -203,8 +252,10 @@ public class TaskManager extends QueueConsumer implements InitializingBean { log.warn("Task skipped, {} task type not recognized", task.getTask()); return; } - plannerAllTodayMap.insert(task); + processTask(task); + if (task.getTaskTime().equals(LocalTime.now())) + plannerAllTodayMap.insert(task); } private void updateEntry(PlannerAllToday plannerAllToday) { @@ -239,8 +290,8 @@ public class TaskManager extends QueueConsumer implements InitializingBean { } else { log.debug("task with type {}, time {} execution cancelled, adding altered task...", task.getTask(), oldTime.toString()); } - plannerAllTodayMap.update(task); processTask(task); + plannerAllTodayMap.update(task); } else if (Cancel.equalsByKey(oldTask.getTaskStatus())) { //&& TaskStatuses.CANCEL.equalsById(task.getTaskStatusId()) restorePreviouslyRemovedTask(oldTime, oldTask); plannerAllTodayMap.update(task); @@ -264,10 +315,6 @@ public class TaskManager extends QueueConsumer implements InitializingBean { } } - private void removePlannerAllToday(PlannerAllToday plannerAllToday) { - removePlannerAllToday(plannerAllToday.getTask(), plannerAllToday.getTaskTime()); - } - private void removePlannerAllToday(String task, LocalTime taskTime) { for (PlannerAllToday x : plannerAllTodayMap.getAllValues()) { if (x.getTaskTime().equals(taskTime) && x.getTask().equalsIgnoreCase(task)) {