From a0f99a2dc6bfdf34aaacd1ad8b02b7fa1869d25b Mon Sep 17 00:00:00 2001 From: AKurakin Date: Tue, 20 Aug 2024 19:15:35 +0300 Subject: [PATCH] trade-importer http://jira.mfd.msk:8088/browse/CLS-731 --- .../importer/services/TradeImporterService.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/clearing-parent/trade-importer/src/main/java/ru/spcex/clearing/trade/importer/services/TradeImporterService.java b/clearing-parent/trade-importer/src/main/java/ru/spcex/clearing/trade/importer/services/TradeImporterService.java index cd8eaa510..54c3ac0e9 100644 --- a/clearing-parent/trade-importer/src/main/java/ru/spcex/clearing/trade/importer/services/TradeImporterService.java +++ b/clearing-parent/trade-importer/src/main/java/ru/spcex/clearing/trade/importer/services/TradeImporterService.java @@ -10,6 +10,7 @@ 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; @@ -25,8 +26,10 @@ import java.sql.Date; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Timestamp; +import java.time.DayOfWeek; import java.time.Instant; import java.time.LocalDate; +import java.util.Arrays; import java.util.Collection; import java.util.Map; import java.util.concurrent.atomic.AtomicLong; @@ -34,6 +37,7 @@ import java.util.function.Consumer; import java.util.function.Supplier; import static ru.spcex.clearing.platform.messaging.domain.Consts.S_TRADES_IMPORTED; +import static ru.spcex.clearing.scheduler.ISchedulerChecker.isWorkDayByTradingCalendar; import static ru.spcex.clearing.trade.importer.error.TradeImporterError.sTradesNotValid; @Service @@ -42,6 +46,7 @@ public class TradeImporterService { private final Logger log = LoggerFactory.getLogger(getClass()); private final Imdg sTradesImdg; private final Imdg marketImdg; + private final Imdg clearingCalendarImdg; private final JdbcTemplate jdbcTemplate; private final Supplier kafka; private final IMessageResolver messageResolver; @@ -54,6 +59,7 @@ public class TradeImporterService { imdgProvider.waitAvailable(); this.sTradesImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_STrades, STrades.class); this.marketImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Market, Market.class); + this.clearingCalendarImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingCalendar, ClearingCalendar.class); this.jdbcTemplate = jdbcTemplate; this.kafka = kafka; this.messageResolver = messageResolver; @@ -65,6 +71,17 @@ public class TradeImporterService { } public synchronized void process(boolean byCommand) { + if (!byCommand) { + LocalDate today = LocalDate.now(); + 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); if (log.isDebugEnabled()) { String countQuery = String.format("SELECT count(*) FROM %s.Trades", schema);