http://jira.mfd.msk:8088/browse/CLS-731 trade-importer trading day checker fixed
This commit is contained in:
parent
2183ff953a
commit
6dcba1dded
1 changed files with 58 additions and 34 deletions
|
|
@ -1,25 +1,7 @@
|
||||||
package ru.spcex.clearing.trade.importer.services;
|
package ru.spcex.clearing.trade.importer.services;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import static ru.spcex.clearing.platform.messaging.domain.Consts.S_TRADES_IMPORTED;
|
||||||
import org.slf4j.LoggerFactory;
|
import static ru.spcex.clearing.trade.importer.error.TradeImporterError.sTradesNotValid;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
|
||||||
import org.springframework.jdbc.core.JdbcTemplate;
|
|
||||||
import org.springframework.scheduling.annotation.EnableScheduling;
|
|
||||||
import org.springframework.scheduling.annotation.Scheduled;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import org.springframework.util.StringUtils;
|
|
||||||
import ru.clearing.classes.statics.data.misc.Market;
|
|
||||||
import ru.clearing.classes.statics.data.misc.STrades;
|
|
||||||
import ru.clearing.classes.statics.data.scheduler.ClearingCalendar;
|
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.utilities.STradesImportedRequest;
|
|
||||||
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
|
|
||||||
import ru.spcex.platform.enumeration.Side;
|
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
|
||||||
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
|
||||||
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
|
||||||
import ru.spcex.platform.utils.log.ExceptionUtils;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.sql.Date;
|
import java.sql.Date;
|
||||||
|
|
@ -35,10 +17,27 @@ import java.util.Map;
|
||||||
import java.util.concurrent.atomic.AtomicLong;
|
import java.util.concurrent.atomic.AtomicLong;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
import org.slf4j.Logger;
|
||||||
import static ru.spcex.clearing.platform.messaging.domain.Consts.S_TRADES_IMPORTED;
|
import org.slf4j.LoggerFactory;
|
||||||
import static ru.spcex.clearing.scheduler.ISchedulerChecker.isWorkDayByTradingCalendar;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import static ru.spcex.clearing.trade.importer.error.TradeImporterError.sTradesNotValid;
|
import org.springframework.jdbc.core.JdbcTemplate;
|
||||||
|
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||||
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.util.StringUtils;
|
||||||
|
import ru.clearing.classes.statics.data.misc.Market;
|
||||||
|
import ru.clearing.classes.statics.data.misc.STrades;
|
||||||
|
import ru.clearing.classes.statics.data.scheduler.ClearingCalendar;
|
||||||
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.cud.utilities.STradesImportedRequest;
|
||||||
|
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
|
||||||
|
import ru.spcex.platform.enumeration.DayStatus;
|
||||||
|
import ru.spcex.platform.enumeration.Side;
|
||||||
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
|
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
||||||
|
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
||||||
|
import ru.spcex.platform.utils.log.ExceptionUtils;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@EnableScheduling
|
@EnableScheduling
|
||||||
|
|
@ -71,16 +70,8 @@ public class TradeImporterService {
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized void process(boolean byCommand) {
|
public synchronized void process(boolean byCommand) {
|
||||||
if (!byCommand) {
|
if (!byCommand && !checkTradingDay()) {
|
||||||
LocalDate today = LocalDate.now();
|
return;
|
||||||
log.debug("Verify trading day {} by calendar", today);
|
|
||||||
ClearingCalendar calendar = clearingCalendarImdg.getFirstObjectByFieldValues(Map.of("clearingDate", today));
|
|
||||||
boolean isWeekend = Arrays.asList(DayOfWeek.SATURDAY, DayOfWeek.SUNDAY).contains(today.getDayOfWeek());
|
|
||||||
boolean isTradingDay = calendar == null ? !isWeekend : isWorkDayByTradingCalendar(calendar, isWeekend);
|
|
||||||
if (!isTradingDay) {
|
|
||||||
log.trace("Ignore by scheduler no trading day {}", today);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
log.info("Start process import STrades from DB. byCommand={}", byCommand);
|
log.info("Start process import STrades from DB. byCommand={}", byCommand);
|
||||||
if (log.isDebugEnabled()) {
|
if (log.isDebugEnabled()) {
|
||||||
|
|
@ -149,6 +140,39 @@ public class TradeImporterService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean checkTradingDay() {
|
||||||
|
LocalDate today = LocalDate.now();
|
||||||
|
log.debug("Verify trading day {} by calendar", today);
|
||||||
|
|
||||||
|
ClearingCalendar calendar = clearingCalendarImdg.getFirstObjectByFieldValues(Map.of("clearingDate", today));
|
||||||
|
|
||||||
|
boolean isTradingDate;
|
||||||
|
if (!Arrays.asList(DayOfWeek.SATURDAY, DayOfWeek.SUNDAY).contains(today.getDayOfWeek())) {
|
||||||
|
isTradingDate = true;
|
||||||
|
|
||||||
|
if (calendar != null && calendar.getClearingDate() == today) {
|
||||||
|
if (calendar.getDayStatus().equals(DayStatus.DayOff.toString())) {
|
||||||
|
isTradingDate = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
isTradingDate = false;
|
||||||
|
|
||||||
|
if (calendar != null && calendar.getClearingDate() == today) {
|
||||||
|
if (calendar.getDayStatus().equals(DayStatus.Workday.toString())) {
|
||||||
|
isTradingDate = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isTradingDate) {
|
||||||
|
log.trace("Ignore by scheduler no trading day {}", today);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* returns OK - everything is kk
|
* returns OK - everything is kk
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue