diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FinishingSession.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FinishingSession.java index b5a04a1d2..7a44aa357 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FinishingSession.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FinishingSession.java @@ -24,6 +24,7 @@ import ru.clearing.classes.statics.data.execution.ExecutionFond; import ru.clearing.classes.statics.data.misc.Session; import ru.clearing.classes.statics.data.registry.Registry; import ru.clearing.classes.statics.data.sdf.SDf05; +import ru.spcex.clearing.component.GroupRgsKey; import static ru.spcex.clearing.error.ClearingErrorInternal.SessionGeneralError; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.platform.messaging.domain.Consts; @@ -135,12 +136,13 @@ public class FinishingSession implements ISessionStage { log.error("Session id={} not found. Can not update Execution's.", sessionId); } else { Collection oRegs = findORegistryBySessionId(allLiabilitiesAndOKClaims); - Map obligationStatusByGroupId; + Map obligationStatusByGroupId; obligationStatusByGroupId = oRegs.stream() - .map(rgs -> new Pair<>(rgs.getGroupId(), getEnumByKey(RegistryStatus.class, rgs.getRegistryStatus()))) + .map(rgs -> new Pair<>(new GroupRgsKey(rgs.getGroupId(), rgs.getMarket()), + getEnumByKey(RegistryStatus.class, rgs.getRegistryStatus()))) .filter(pair -> pair.getSecond() != null) .collect(Collectors.toMap(Pair::getFirst, Pair::getSecond, (o1, o2) -> o1)); - Function statusByExchangeId = id-> { + Function statusByExchangeId = id-> { RegistryStatus obligationStatus = obligationStatusByGroupId.get(id); if (obligationStatus == null) return null; return switch (obligationStatus) { @@ -164,7 +166,8 @@ public class FinishingSession implements ISessionStage { Collection executions = findExecutionDepositBySessionId(sessionId); log.trace("loaded {} ExecutionDeposits for sessionId {}", executions.size(), sessionId); for (ExecutionDeposit execution : executions) { - CoverageStatus toStatus = statusByExchangeId.apply(execution.getExchangeExecutionId()); + CoverageStatus toStatus = statusByExchangeId.apply( + new GroupRgsKey(execution.getExchangeExecutionId(), execution.getMarket())); if (toStatus == null) { log.trace("CoverageStatus not defined for execution.id={}", execution.getId()); continue; @@ -194,7 +197,8 @@ public class FinishingSession implements ISessionStage { Map execFond = new HashMap<>(); log.trace("loaded {} Executions for sessionId {}", executions.size(), sessionId); for (ExecutionCommon execution : executions) { - CoverageStatus toStatus = statusByExchangeId.apply(execution.getExchangeExecutionId()); + CoverageStatus toStatus = statusByExchangeId.apply( + new GroupRgsKey(execution.getExchangeExecutionId(), execution.getMarket())); if (toStatus == null) { log.trace("CoverageStatus not defined for execution.id={}", execution.getId()); continue;