From acd14d0390f783b10ec176208e18ae432fd9acfc Mon Sep 17 00:00:00 2001 From: ialbert Date: Sat, 27 May 2023 13:58:51 +0300 Subject: [PATCH] marketCodesForT0 list --- .../config/MarketCodesBySessionConfig.java | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/MarketCodesBySessionConfig.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/MarketCodesBySessionConfig.java index bffcb2729..4d7dc85d6 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/MarketCodesBySessionConfig.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/MarketCodesBySessionConfig.java @@ -2,9 +2,18 @@ package ru.spcex.clearing.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import ru.clearing.classes.statics.data.misc.Market; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.platform.enumeration.MarketType; +import ru.spcex.platform.enumeration.Section; +import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; +import java.util.Collection; import java.util.List; +import java.util.Map; +import java.util.function.Supplier; +import java.util.stream.Collectors; @Configuration public class MarketCodesBySessionConfig { @@ -20,4 +29,28 @@ public class MarketCodesBySessionConfig { "AESC", "ABFC", "KBIC", "WBMC", "BMMC", "ABEC", "SMIC", "ABMC", "SMVC", "KBFC", "SKVC", "ABVC", "WEPC", "KBMC", "SMFC", "BKVC", "WBVC", "BMIC", "WESC"); } + + @Bean(name = "marketCodesForT0") + public Supplier> marketCodesForT0(ImdgProvider imdgProvider) { + final Object lock = new Object(); + return new Supplier<>() { + private volatile List codes; + @Override + public List get() { + if (codes == null) { + synchronized (lock) { + if (codes == null) { + imdgProvider.waitAvailable(); + Imdg marketImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Market, Market.class); + Collection markets = marketImdg.getCollectionObjectsByFieldValues(Map.of( + "section", Section.FOND.getKey(), + "marketType", MarketType.SCND.getKey())); + codes = markets.stream().map(Market::getCode).distinct().collect(Collectors.toList()); + } + } + } + return codes; + } + }; + } }