diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/TradingClearingRegistryValidationConfig.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/TradingClearingRegistryValidationConfig.java index 2f0cb7d39..4c992c3e6 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/TradingClearingRegistryValidationConfig.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/TradingClearingRegistryValidationConfig.java @@ -1,5 +1,11 @@ package ru.spcex.clearing.account.config.validation; +import java.util.Collection; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import java.util.function.Consumer; +import java.util.function.Function; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import ru.clearing.classes.statics.data.account.Account; @@ -30,13 +36,6 @@ import ru.spcex.platform.utils.validation.IValidationRule; import ru.spcex.platform.utils.validation.IValidator; import ru.spcex.platform.utils.validation.ValidatorImpl; -import java.util.Collection; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; -import java.util.function.Consumer; -import java.util.function.Function; - @Configuration public class TradingClearingRegistryValidationConfig { @@ -162,9 +161,20 @@ public class TradingClearingRegistryValidationConfig { return empty(); } else { Imdg accountImdg = context.obtainMap(IMDGDistributedNames.Map_Account, Account.class); - Account account = accountImdg.getSingleObjectByID(validatedObject.getMoneyAccountId()); - if (account == null && validatedObject.getDepoAccountId() != null) account = accountImdg.getSingleObjectByID(validatedObject.getDepoAccountId()); - return of(AccountError.AccountForTradingClearingRegistryAlreadyUsed, account.getAccount()); + Account dubAcc = null; + for (TradingClearingRegistry duplicate : existTCR) { + if (Objects.equals(duplicate.getMoneyAccountId(), validatedObject.getMoneyAccountId())) { + dubAcc = accountImdg.getSingleObjectByID(validatedObject.getMoneyAccountId()); + } + if (Objects.equals(duplicate.getDepoAccountId(), validatedObject.getDepoAccountId())) { + dubAcc = accountImdg.getSingleObjectByID(validatedObject.getDepoAccountId()); + } + if (dubAcc != null) { + break; + } + } + return of(AccountError.AccountForTradingClearingRegistryAlreadyUsed, + dubAcc != null ? dubAcc.getAccount() : "null"); } } }