ialbert 2026-04-24 14:43:06 +03:00
parent b9c90d7c28
commit b7c73ec64a

View file

@ -76,7 +76,7 @@ public class MarketCodesBySessionConfig {
} }
private static class MarketCodesProviderV2 implements Supplier<List<String>> { private static class MarketCodesProviderV2 implements Supplier<List<String>> {
private final MarketType[] marketType2; private final MarketType[] marketTypes;
private volatile List<String> codes; private volatile List<String> codes;
private final Object lock = new Object(); private final Object lock = new Object();
private final ImdgProvider imdgProvider; private final ImdgProvider imdgProvider;
@ -85,7 +85,7 @@ public class MarketCodesBySessionConfig {
public MarketCodesProviderV2(ImdgProvider imdgProvider, Section section, MarketType... marketType) { public MarketCodesProviderV2(ImdgProvider imdgProvider, Section section, MarketType... marketType) {
this.imdgProvider = imdgProvider; this.imdgProvider = imdgProvider;
this.section = section; this.section = section;
this.marketType2 = marketType; this.marketTypes = marketType;
} }
@Override @Override
@ -96,13 +96,15 @@ public class MarketCodesBySessionConfig {
imdgProvider.waitAvailable(); imdgProvider.waitAvailable();
Imdg<Market> marketImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Market, Market.class); Imdg<Market> marketImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Market, Market.class);
ImdgPredicateBuilder pb = marketImdg.predicateBuilder(); ImdgPredicateBuilder pb = marketImdg.predicateBuilder();
ImdgPredicate[] prd = new ImdgPredicate[marketType2.length + 1]; ImdgPredicate[] marketTypePredicates = new ImdgPredicate[marketTypes.length];
prd[0] = pb.equals("section", section.getKey()); for (int i = 0; i < marketTypes.length; i++) {
for (int i = 0; i < marketType2.length; i++) { marketTypePredicates[i] = pb.equals("marketType", marketTypes[i].getKey());
prd[i + 1] = pb.equals("marketType", marketType2[i].getKey());
} }
Collection<Market> markets = marketImdg.getCollectionObjectsByPredicate( Collection<Market> markets = marketImdg.getCollectionObjectsByPredicate(
pb.and(prd) pb.and(
pb.equals("section", section.getKey()),
pb.or(marketTypePredicates)
)
); );
codes = markets.stream().map(Market::getCode).distinct().collect(Collectors.toList()); codes = markets.stream().map(Market::getCode).distinct().collect(Collectors.toList());
} }