This commit is contained in:
parent
ccef5a7590
commit
cd783ebbbe
2 changed files with 29 additions and 1 deletions
|
|
@ -176,7 +176,8 @@ public class ClientCodeValidationConfig {
|
||||||
GatewayClientCodeValidationRule.CompanyPresent,
|
GatewayClientCodeValidationRule.CompanyPresent,
|
||||||
GatewayClientCodeValidationRule.AllAccountsPresent,
|
GatewayClientCodeValidationRule.AllAccountsPresent,
|
||||||
GatewayClientCodeValidationRule.DepoAccountsPresent,
|
GatewayClientCodeValidationRule.DepoAccountsPresent,
|
||||||
GatewayClientCodeValidationRule.TcrIsNotPresent
|
GatewayClientCodeValidationRule.TcrIsNotPresent,
|
||||||
|
GatewayClientCodeValidationRule.TcrListIsNotPresent
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package ru.spcex.clearing.account.validation;
|
package ru.spcex.clearing.account.validation;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
@ -8,6 +9,7 @@ import org.springframework.util.StringUtils;
|
||||||
import ru.clearing.classes.statics.data.account.Account;
|
import ru.clearing.classes.statics.data.account.Account;
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
import ru.clearing.classes.statics.data.company.Company;
|
||||||
import ru.clearing.classes.statics.data.registry.TradingClearingRegistry;
|
import ru.clearing.classes.statics.data.registry.TradingClearingRegistry;
|
||||||
|
import ru.clearing.classes.statics.data.registry.TradingClearingRegistryList;
|
||||||
import ru.spcex.clearing.account.errors.AccountError;
|
import ru.spcex.clearing.account.errors.AccountError;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.account.TkrAccount;
|
import ru.spcex.clearing.platform.messaging.domain.cud.account.TkrAccount;
|
||||||
|
|
@ -126,5 +128,30 @@ public enum GatewayClientCodeValidationRule implements IValidationRule<ImdgValid
|
||||||
}
|
}
|
||||||
return Optional.empty();
|
return Optional.empty();
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
TcrListIsNotPresent() {
|
||||||
|
@Override
|
||||||
|
public Optional<EnumMessage> validate(ImdgValidationContext<TkrAccount> context) {
|
||||||
|
Map<String, Account> accountByCurrency = context.getStoredObject(ClientCodeStoreObjects.MAPPED_TO_CURRENCY_ACCOUNTS);
|
||||||
|
List<Account> currencyAccounts = accountByCurrency.entrySet().stream()
|
||||||
|
.filter(stringAccountEntry -> !stringAccountEntry.getKey().equals(CurrencyCode.RUB.getKey()))
|
||||||
|
.map(Map.Entry::getValue).toList();
|
||||||
|
if (currencyAccounts.isEmpty()) {
|
||||||
|
return empty();
|
||||||
|
}
|
||||||
|
List<String> currencies = currencyAccounts.stream().map(Account::getCurrency).toList();
|
||||||
|
Imdg<TradingClearingRegistryList> imdg = context.obtainMap(IMDGDistributedNames.Map_TradingClearingRegistryList,
|
||||||
|
TradingClearingRegistryList.class);
|
||||||
|
ImdgPredicateBuilder predicateBuilder = imdg.predicateBuilder();
|
||||||
|
Collection<TradingClearingRegistryList> tcrList = imdg.getCollectionObjectsByPredicate(
|
||||||
|
predicateBuilder.and(
|
||||||
|
predicateBuilder.in("currency", currencies.toArray(new String[0])),
|
||||||
|
predicateBuilder.equals("status", Status.Active.getKey())
|
||||||
|
));
|
||||||
|
if (!tcrList.isEmpty()) {
|
||||||
|
return of(AccountError.TCR_ALREADY_EXIST_GTW, tcrList.iterator().next().getCurrency(), "currency");
|
||||||
|
}
|
||||||
|
return Optional.empty();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue