From fe18b289a3bffc72807301a75114684f77fa87d7 Mon Sep 17 00:00:00 2001 From: ialbert Date: Fri, 26 May 2023 14:15:07 +0300 Subject: [PATCH] fixed 'section' field for strades uploading into clearing --- .../services/TradeImporterService.java | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) 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 8fe3292ed..2dd2a0bc9 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 @@ -8,6 +8,7 @@ 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.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.platform.messaging.domain.cud.utilities.STradesImportedRequest; @@ -16,6 +17,7 @@ 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.sql.Date; @@ -26,6 +28,7 @@ import java.time.Instant; import java.time.LocalDate; import java.util.Collection; import java.util.Map; +import java.util.function.Consumer; import java.util.function.Supplier; import static ru.spcex.clearing.platform.messaging.domain.Consts.S_TRADES_IMPORTED; @@ -36,6 +39,7 @@ import static ru.spcex.clearing.trade.importer.error.TradeImporterError.sTradesN public class TradeImporterService { private final Logger log = LoggerFactory.getLogger(getClass()); private final Imdg sTradesImdg; + private final Imdg marketImdg; private final JdbcTemplate jdbcTemplate; private final Supplier kafka; private final IMessageResolver messageResolver; @@ -47,6 +51,7 @@ public class TradeImporterService { public TradeImporterService(ImdgProvider imdgProvider, JdbcTemplate jdbcTemplate, Supplier kafka, IMessageResolver messageResolver) { imdgProvider.waitAvailable(); this.sTradesImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_STrades, STrades.class); + this.marketImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Market, Market.class); this.jdbcTemplate = jdbcTemplate; this.kafka = kafka; this.messageResolver = messageResolver; @@ -66,7 +71,7 @@ public class TradeImporterService { int created = 0; int updated = 0; for (STrades tradesDb : tradesFromDB) { - if (isValidTrades(tradesDb)) { + if (isValidTrades(tradesDb) && fillNessessaryFields(tradesDb)) { STrades sTrades = getSTradesFromImdg(tradesDb, sTradesImdg); if (sTrades != null) { // Обновление всех полей объекта из БД @@ -97,6 +102,25 @@ public class TradeImporterService { kafka.get().sendRequestToQueue(S_TRADES_IMPORTED, sTradesImportedRequest); } + /** + * returns OK - everything is kk + */ + private boolean fillNessessaryFields(STrades tradesDb) { + Consumer logErr = (st) -> log.error("strades {} {} {}", tradesDb.getTradeDate(), tradesDb.getTradeNum(), st); + try { + Market market = marketImdg.getSingleObjectBySQL("code = '%s'".formatted(tradesDb.getClassCode())); + if (market == null) { + logErr.accept("couldn't find market.section for classCode " + tradesDb.getClassCode()); + return false; + } + tradesDb.setSection(market.getSection()); + return true; + } catch (Exception e) { + logErr.accept(ExceptionUtils.getStackTrace(e)); + return false; + } + } + public STrades getSTradesFromImdg(STrades tradesDb, Imdg sTradesImdg) { return sTradesImdg.getSingleObjectByFieldValues(Map.of("tradeDate", tradesDb.getTradeDate(), "tradeNum", tradesDb.getTradeNum(),