From 27909e0be5029da734fd2d9b87b77faea444a3f0 Mon Sep 17 00:00:00 2001 From: ialbert Date: Tue, 22 Jul 2025 14:54:32 +0300 Subject: [PATCH] =?UTF-8?q?=D1=83=D0=B1=D1=80=D0=B0=D0=BB=20=D0=B4=D1=83?= =?UTF-8?q?=D0=B1=D0=BB=D0=B8=D0=BA=D0=B0=D1=82=D1=8B=20=D0=BE=D1=88=D0=B8?= =?UTF-8?q?=D0=B1=D0=BE=D0=BA=20=D0=B2=20=D0=BD=D0=BE=D1=82=D0=B8=D1=84?= =?UTF-8?q?=D0=B8=D0=BA=D0=B5=D0=B9=D1=88=D0=B5=D0=BD=D0=B5=20=D0=BD=D0=B0?= =?UTF-8?q?=203=D0=BC=20=D1=88=D0=B0=D0=B3=D0=B5=20=D1=81=D0=B5=D1=81?= =?UTF-8?q?=D1=81=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../state/action/ObligationAdmissionAction.java | 6 ++++-- .../clearing/session/state/model/RgsErr.java | 17 +++++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/action/ObligationAdmissionAction.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/action/ObligationAdmissionAction.java index fdf71e069..47cf70fe4 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/action/ObligationAdmissionAction.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/action/ObligationAdmissionAction.java @@ -4,9 +4,11 @@ import java.time.Instant; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.Set; import java.util.stream.Collectors; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -80,7 +82,7 @@ public class ObligationAdmissionAction extends AbstractSessionActionForOkErrorHa .collect(Collectors.groupingBy(registry -> new GroupRgsKey(registry.getGroupId(), registry.getMarket()))); log.info("found {} ({} groups) registries with sessionId {}", registries.size(), byGroups.size(), sessionId); Map rgsToUpdate = new HashMap<>(); - List errs = new ArrayList<>(); + Set errs = new HashSet<>(); List groupErrors = new ArrayList<>(); for (Map.Entry> grpEntry : byGroups.entrySet()) { List rgsGroup = grpEntry.getValue(); @@ -110,7 +112,7 @@ public class ObligationAdmissionAction extends AbstractSessionActionForOkErrorHa } ctx.getExtendedState().getVariables().put(DataEnum.obligationAdmissionStashedRgs, rgsToUpdate); - ctx.getExtendedState().getVariables().put(DataEnum.erroneousRegistries, errs); + ctx.getExtendedState().getVariables().put(DataEnum.erroneousRegistries, new ArrayList<>(errs)); // if (wasNack) { // } else { // registryImdg.putAll(rgsToUpdate); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/model/RgsErr.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/model/RgsErr.java index ecb83ebd9..719c2cea1 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/model/RgsErr.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/state/model/RgsErr.java @@ -1,5 +1,6 @@ package ru.spcex.clearing.session.state.model; +import java.util.Objects; import ru.clearing.classes.statics.data.registry.Registry; public class RgsErr { @@ -26,4 +27,20 @@ public class RgsErr { public void setErr(String err) { this.err = err; } + + /** + * будут коллизии при большом количестве ошибок на один ТКР + */ + @Override + public int hashCode() { + return Long.hashCode(rgs.getTradingClearingRegistryId()); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof RgsErr other)) return false; + return rgs.getTradingClearingRegistryId().equals(other.rgs.getTradingClearingRegistryId()) + && Objects.equals(err, other.err); + } }