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 final MarketType[] marketType2;
private final MarketType[] marketTypes;
private volatile List<String> codes;
private final Object lock = new Object();
private final ImdgProvider imdgProvider;
@ -85,7 +85,7 @@ public class MarketCodesBySessionConfig {
public MarketCodesProviderV2(ImdgProvider imdgProvider, Section section, MarketType... marketType) {
this.imdgProvider = imdgProvider;
this.section = section;
this.marketType2 = marketType;
this.marketTypes = marketType;
}
@Override
@ -96,13 +96,15 @@ public class MarketCodesBySessionConfig {
imdgProvider.waitAvailable();
Imdg<Market> marketImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Market, Market.class);
ImdgPredicateBuilder pb = marketImdg.predicateBuilder();
ImdgPredicate[] prd = new ImdgPredicate[marketType2.length + 1];
prd[0] = pb.equals("section", section.getKey());
for (int i = 0; i < marketType2.length; i++) {
prd[i + 1] = pb.equals("marketType", marketType2[i].getKey());
ImdgPredicate[] marketTypePredicates = new ImdgPredicate[marketTypes.length];
for (int i = 0; i < marketTypes.length; i++) {
marketTypePredicates[i] = pb.equals("marketType", marketTypes[i].getKey());
}
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());
}