убрал дубликаты ошибок в нотификейшене на 3м шаге сессий

This commit is contained in:
ialbert 2025-07-22 14:54:32 +03:00
parent dc8a07b143
commit 27909e0be5
2 changed files with 21 additions and 2 deletions

View file

@ -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<Long, Registry> rgsToUpdate = new HashMap<>();
List<RgsErr> errs = new ArrayList<>();
Set<RgsErr> errs = new HashSet<>();
List<EnumMessage> groupErrors = new ArrayList<>();
for (Map.Entry<GroupRgsKey, List<Registry>> grpEntry : byGroups.entrySet()) {
List<Registry> 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);

View file

@ -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);
}
}