account-service http://jira.mfd.msk:8088/browse/CLS-631 правки валидации TradingClearingRegistryList

This commit is contained in:
AKurakin 2024-04-27 15:23:06 +03:00
parent 9bd0ad49ec
commit 0e5f2ed054
2 changed files with 16 additions and 8 deletions

View file

@ -1,5 +1,6 @@
package ru.spcex.clearing.account.config.validation; package ru.spcex.clearing.account.config.validation;
import org.apache.commons.lang3.StringUtils;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import ru.clearing.classes.statics.data.account.Account; import ru.clearing.classes.statics.data.account.Account;
@ -14,6 +15,7 @@ import ru.spcex.clearing.validation.common.rules.DictionaryPresentRule;
import ru.spcex.clearing.validation.common.rules.IdPresentRule; import ru.spcex.clearing.validation.common.rules.IdPresentRule;
import ru.spcex.platform.classes.base.SpcexObjectBase; import ru.spcex.platform.classes.base.SpcexObjectBase;
import ru.spcex.platform.enumeration.AccountType; import ru.spcex.platform.enumeration.AccountType;
import ru.spcex.platform.enumeration.CurrencyCode;
import ru.spcex.platform.enumeration.ServiceStatus; import ru.spcex.platform.enumeration.ServiceStatus;
import ru.spcex.platform.enumeration.WorkflowStatus; import ru.spcex.platform.enumeration.WorkflowStatus;
import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.Imdg;
@ -52,7 +54,7 @@ public class TradingClearingRegistryListValidationConfig {
AccountError.RequiredFieldEmpty, AccountError.RequiredFieldEmpty,
AccountError.TradingClearingRegistryNotFound, AccountError.TradingClearingRegistryNotFound,
false), false),
new ExistAllCurrencyAccountId<>("accountId", new ExistAllAccountId<>("accountId",
TradingClearingRegistryListNewRequest::getAccountId, TradingClearingRegistryListNewRequest::getAccountId,
false, false,
null), null),
@ -120,13 +122,13 @@ public class TradingClearingRegistryListValidationConfig {
} }
public static class ExistAllCurrencyAccountId<R> implements IValidationRule<ImdgValidationContext<R>> { public static class ExistAllAccountId<R> implements IValidationRule<ImdgValidationContext<R>> {
String fieldName; String fieldName;
Function<R, Long> accountIdGetter; Function<R, Long> accountIdGetter;
boolean required; boolean required;
Function<R, Long> idGetter; Function<R, Long> idGetter;
public ExistAllCurrencyAccountId(String fieldName, Function<R, Long> accountIdGetter, boolean required, Function<R, Long> idGetter) { public ExistAllAccountId(String fieldName, Function<R, Long> accountIdGetter, boolean required, Function<R, Long> idGetter) {
this.fieldName = fieldName; this.fieldName = fieldName;
this.accountIdGetter = accountIdGetter; this.accountIdGetter = accountIdGetter;
this.required = required; this.required = required;
@ -149,7 +151,11 @@ public class TradingClearingRegistryListValidationConfig {
Account byIdObject = accountImdg.getSingleObjectByID(accountId); Account byIdObject = accountImdg.getSingleObjectByID(accountId);
if (byIdObject == null) if (byIdObject == null)
return of(AccountError.AccountNotFound, accountId, fieldName); return of(AccountError.AccountNotFound, accountId, fieldName);
if (!AccountType.Curr.equalsByKey(byIdObject.getAccountType())) { if (!IEnumKey.contains(byIdObject.getAccountType(), AccountType.Clrn, AccountType.Info)) {
return of(AccountError.AccountIsNotACurrency, accountId,
fieldName, "expected: CLRN/INFO but is " + byIdObject.getAccountType()); // Счет %S не
}
if (CurrencyCode.isRub(byIdObject.getCurrency()) || StringUtils.isEmpty(byIdObject.getCurrency())) {
return of(AccountError.AccountIsNotACurrency, accountId, fieldName); // Счет %S не валютный return of(AccountError.AccountIsNotACurrency, accountId, fieldName); // Счет %S не валютный
} }
} }

View file

@ -167,7 +167,8 @@ class TradingClearingRegistryListServiceTest {
c2Account.setAccount("AAAX-44654-CURR"); c2Account.setAccount("AAAX-44654-CURR");
c2Account.setStatus("ACTV"); c2Account.setStatus("ACTV");
c2Account.setCompanyId(COMPANY_ID); // для валидации принадлежности счёта c2Account.setCompanyId(COMPANY_ID); // для валидации принадлежности счёта
c2Account.setAccountType(AccountType.Curr.getKey()); c2Account.setAccountType(AccountType.Info.getKey());
c2Account.setCurrency("USD");
accounts.insert(c2Account); accounts.insert(c2Account);
Account c3Account = new Account(); Account c3Account = new Account();
@ -175,7 +176,8 @@ class TradingClearingRegistryListServiceTest {
c3Account.setAccount("AAAX-12654-CURR"); c3Account.setAccount("AAAX-12654-CURR");
c3Account.setStatus("ACTV"); c3Account.setStatus("ACTV");
c3Account.setCompanyId(COMPANY_ID); // для валидации принадлежности счёта c3Account.setCompanyId(COMPANY_ID); // для валидации принадлежности счёта
c3Account.setAccountType(AccountType.Curr.getKey()); c3Account.setAccountType(AccountType.Info.getKey());
c3Account.setCurrency("USD");
accounts.insert(c3Account); accounts.insert(c3Account);
new TestObjectCreator(hazelcastServiceTest).createUserAdmin(1000L); new TestObjectCreator(hazelcastServiceTest).createUserAdmin(1000L);
@ -201,7 +203,7 @@ class TradingClearingRegistryListServiceTest {
final String ccCode = null; final String ccCode = null;
TradingClearingRegistryListNewRequest tcrlNewRequest = new TradingClearingRegistryListNewRequest(); TradingClearingRegistryListNewRequest tcrlNewRequest = new TradingClearingRegistryListNewRequest();
tcrlNewRequest.setTradingClearingRegistryId(TCR_ID); tcrlNewRequest.setTradingClearingRegistryId(TCR_ID);
tcrlNewRequest.setCurrencyAccountList(Arrays.asList(134L)); tcrlNewRequest.setAccountId(134L);
tcrlNewRequest.setStatus("ACTV"); tcrlNewRequest.setStatus("ACTV");
ClientCode predictableClientCode = new ClientCode(); ClientCode predictableClientCode = new ClientCode();
@ -212,7 +214,7 @@ class TradingClearingRegistryListServiceTest {
TradingClearingRegistryList predictableTradingClearingRegistryList = new TradingClearingRegistryList(); TradingClearingRegistryList predictableTradingClearingRegistryList = new TradingClearingRegistryList();
predictableTradingClearingRegistryList.setAccountId(134L); predictableTradingClearingRegistryList.setAccountId(134L);
predictableTradingClearingRegistryList.setStatus("ACTV"); predictableTradingClearingRegistryList.setStatus("ACTV");
predictableTradingClearingRegistryList.setCurrency("RUB"); predictableTradingClearingRegistryList.setCurrency("USD");
//ACT //ACT
String jsonString = TestUtils.getJsonStringForNew(tcrlNewRequest, ID); String jsonString = TestUtils.getJsonStringForNew(tcrlNewRequest, ID);