Scheduling update

This commit is contained in:
aalehin 2023-02-02 00:13:01 +03:00
parent 7383662c61
commit 0156a498a7

View file

@ -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<PlannerAllToday> plannerAllTodayMap;
private Imdg<ClearingCalendar> clearingCalendarMap;
private ConcurrentHashMap<LocalTime, ScheduledFuture> scheduledJobs;
private Producer<String, Object> 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<CommonDeleteRequest> userRequest) {
RequestInfoUpdate requestInfoUpdate = new RequestInfoUpdate();
return requestInfoUpdate;
//fixme
return requestInfoUpdate;
}
protected RequestInfoUpdate newPlannerTemplate(BaseRequest<PlannerTemplateNewRequest> 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<ClearingCalendar> 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<PlannerTemplateUpdateRequest> userRequest) {
RequestInfoUpdate requestInfoUpdate = new RequestInfoUpdate();
PlannerTemplateUpdateRequest request = userRequest.getRequestPayload();
Optional<ClearingCalendar> 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<PlannerAllToday> 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)) {