From 86917e91fda39c7e6492a22c021ec2f362b9a450 Mon Sep 17 00:00:00 2001 From: etreschenkov Date: Mon, 23 Jun 2025 17:44:08 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B3=D1=80=D1=83=D0=BF=D0=BF=D0=B8=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=BA=D0=B0=20registry=20=D1=81=20=D1=83=D1=87?= =?UTF-8?q?=D0=B5=D1=82=D0=BE=D0=BC=20market=20=D0=B8=20groupId=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20=D1=88=D0=B0=D0=B3=D0=B0=205=20=D0=B0=D0=BA?= =?UTF-8?q?=D1=82=D0=B8=D0=B2=D0=BD=D0=BE=D0=B9=20=D1=81=D0=B5=D1=81=D1=81?= =?UTF-8?q?=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../stage/impl/InspectionObligationsV2.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InspectionObligationsV2.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InspectionObligationsV2.java index a7913fda8..34fc51e3b 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InspectionObligationsV2.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InspectionObligationsV2.java @@ -19,6 +19,7 @@ import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Service; import ru.clearing.classes.statics.data.registry.Registry; +import ru.spcex.clearing.component.GroupRgsKey; import ru.spcex.clearing.component.predicate.cash.registry.AssetByTcrCompanyAccountCashedPredicate; import ru.spcex.clearing.error.ClearingError; import ru.spcex.clearing.error.RgsError; @@ -128,8 +129,8 @@ public class InspectionObligationsV2 implements ISessionStage { Collection registriesToProcess = registryImdg.getCollectionObjectsBySQL(sqlCondition); Map rgssToStore = new HashMap<>(registriesToProcess.size()); //вторые ноги у сделок - нужна ли оптимизация? - List>> registriesByGroupSorted = registriesToProcess.stream() - .collect(Collectors.groupingBy(Registry::getGroupId)) + List>> registriesByGroupSorted = registriesToProcess.stream() + .collect(Collectors.groupingBy(registry -> new GroupRgsKey(registry.getGroupId(), registry.getMarket()))) .entrySet() .stream() .sorted((entry1, entry2) -> { @@ -150,15 +151,15 @@ public class InspectionObligationsV2 implements ISessionStage { log.info("found {} ({} groups) registries by sql: {}", registriesToProcess.size(), registriesByGroupSorted.size(), sqlCondition); ImdgPredicateBuilder rgsPb = registryImdg.predicateBuilder(); GROUP: - for (Map.Entry> entry : registriesByGroupSorted) { + for (Map.Entry> entry : registriesByGroupSorted) { List group = entry.getValue(); List obligationsInGroup = group.stream().filter(registry -> IEnumKey.getEnumByKey(RegistryDesignation.class, registry.getRegistryDesignation()) == RegistryDesignation.O).toList(); - log.debug("Find {} obligation with ids: {} in group: {}", obligationsInGroup.size(), + log.debug("Find {} obligation with ids: {} in group/market: {}/{}", obligationsInGroup.size(), obligationsInGroup.stream() .map(Registry::getId).collect(Collectors.toList()), - entry.getKey()); + entry.getKey().groupId(), entry.getKey().market()); boolean isUncovered = false; List checkResults = new ArrayList<>(); for (Registry obligation : obligationsInGroup) { @@ -191,7 +192,7 @@ public class InspectionObligationsV2 implements ISessionStage { }); RegistryInstrumentType mOrS = IEnumKey.getEnumByKey(RegistryInstrumentType.class, rgs.getRegistryInstrumentType()); if (mOrS == null) { - log.error("RegistryInstrumentType is null for groupId {} {}.id={}", entry.getKey(), + log.error("RegistryInstrumentType is null for groupId/market {}/{} {}.id={}", entry.getKey().groupId(), entry.getKey().market(), rgs.getRegistryCode(), rgs.getId()); failGroup.run(); continue; @@ -345,6 +346,7 @@ public class InspectionObligationsV2 implements ISessionStage { private Collection getRefundDateRgsIfPresent(List registries) { if (registries.stream().anyMatch(rgs -> rgs.getRefundDate() != null) && !SessionType.MEDM.equals(sessionType)) { + //доп группировка по market не нужна, лист registries уже сгруппирован Optional> groupIdAndSettleDate = registries.stream() .map(rgs -> new Pair<>(rgs.getGroupId(), rgs.getSettlementDate())) .filter(pair -> pair.getFirst() != null)