From 95758276caea496bf9776c8f9c8cd0726c920117 Mon Sep 17 00:00:00 2001 From: ialbert Date: Tue, 23 Jun 2026 19:05:39 +0300 Subject: [PATCH] http://jira.mfd.msk:8088/browse/CLS-1053 --- .../ClientCodeValidationConfig.java | 1 + .../GatewayClientCodeValidationRule.java | 2 +- .../GatewayEksClientCodeValidationRule.java | 11 +++++- ...ewayUpdateEksClientCodeValidationRule.java | 37 ++++++++++++++++++- .../service/adapter/TkrAdapter.java | 1 + .../enumeration/MoneyAccountStatus.java | 18 +++++++++ .../domain/cud/account/TkrAccount.java | 8 ++++ 7 files changed, 75 insertions(+), 3 deletions(-) create mode 100644 platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/MoneyAccountStatus.java diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/ClientCodeValidationConfig.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/ClientCodeValidationConfig.java index cdfd11bd0..7ce2792ca 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/ClientCodeValidationConfig.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/ClientCodeValidationConfig.java @@ -180,6 +180,7 @@ public class ClientCodeValidationConfig { addImdg.accept(IMDGDistributedNames.Map_DepoAccount); addImdg.accept(IMDGDistributedNames.Map_ClientCode); return new ValidatorImpl<>(context, + GatewayUpdateEksClientCodeValidationRule.RequiredAndCorrectsFields, GatewayUpdateEksClientCodeValidationRule.CompanyPresent, GatewayUpdateEksClientCodeValidationRule.TkrIsPresent, GatewayUpdateEksClientCodeValidationRule.DepoAccountIsValid, diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/validation/GatewayClientCodeValidationRule.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/validation/GatewayClientCodeValidationRule.java index a87115f75..b6a28d260 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/validation/GatewayClientCodeValidationRule.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/validation/GatewayClientCodeValidationRule.java @@ -38,7 +38,7 @@ public enum GatewayClientCodeValidationRule implements IValidationRule validate(ImdgValidationContext context) { TkrAccount validatedObject = context.getValidatedObject(); + if (!StringUtils.hasText(validatedObject.getCompanyId())) { + return of(AccountError.RequiredFieldEmpty, "companyId"); + } + if (!StringUtils.hasText(validatedObject.getTypeOperationClient())) { + return of(AccountError.RequiredFieldEmpty, "typeOperationClient"); + } for (MoneyAccountMsgRequest msg : validatedObject.getMoneyAccounts()) { if (!StringUtils.hasText(msg.getAccount()) && !StringUtils.hasText(msg.getEks_account())) { return of(AccountError.RequiredFieldEmpty, "account+eks_account"); } + if (!StringUtils.hasText(msg.getStatus())) { + return of(AccountError.RequiredFieldEmpty, "status"); + } if (!msg.getStatus().equals("NEW")) { return of(AccountError.WrongFieldValue, "status"); } @@ -59,7 +68,7 @@ public enum GatewayEksClientCodeValidationRule implements IValidationRule> { @@ -43,7 +46,7 @@ public enum GatewayUpdateEksClientCodeValidationRule implements IValidationRule< Map.of("tradingCode", String.valueOf(tradingCode)) ); if (company == null) { - return of(AccountError.COMPANY_NOT_FOUND_GTW, "trading_code"); + return of(AccountError.COMPANY_NOT_FOUND_GTW, tradingCode); } context.storeObject(ClientCodeStoreObjects.COMPANY, company); @@ -51,6 +54,38 @@ public enum GatewayUpdateEksClientCodeValidationRule implements IValidationRule< } }, + RequiredAndCorrectsFields() { + @Override + public Optional validate(ImdgValidationContext context) { + TkrAccount validatedObject = context.getValidatedObject(); + + if (!StringUtils.hasText(validatedObject.getCompanyId())) { + return of(AccountError.RequiredFieldEmpty, "companyId"); + } + + if (!StringUtils.hasText(validatedObject.getTypeOperationClient())) { + return of(AccountError.RequiredFieldEmpty, "typeOperationClient"); + } + + List moneyAccounts = validatedObject.getMoneyAccounts(); + if (moneyAccounts == null) moneyAccounts = Collections.emptyList(); + for (MoneyAccountMsgRequest moneyAccount : moneyAccounts) { + if (!StringUtils.hasText(moneyAccount.getStatus())) { + return of(AccountError.RequiredFieldEmpty, "status"); + } + if (!IEnumKey.contains(moneyAccount.getStatus(), MoneyAccountStatus.NEW, MoneyAccountStatus.NOW)) { + return of(AccountError.WrongFieldValue, "status"); + } + if (!StringUtils.hasText(moneyAccount.getAccount()) + && !StringUtils.hasText(moneyAccount.getEks_account())) { + return of(AccountError.RequiredFieldEmpty, "account & eks_account"); + } + } + + return Optional.empty(); + } + }, + TkrIsPresent() { @Override public Optional validate(ImdgValidationContext context) { diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/adapter/TkrAdapter.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/adapter/TkrAdapter.java index adf1a2d37..da7c80515 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/adapter/TkrAdapter.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/adapter/TkrAdapter.java @@ -18,6 +18,7 @@ public class TkrAdapter { public TkrAccount toTkrResponse(InfoAccount infoAccount) { TkrAccount tkrResponse = new TkrAccount(); tkrResponse.setCompanyId(infoAccount.getCompanyId()); + tkrResponse.setTypeOperationClient(infoAccount.getTypeOperationClient()); tkrResponse.setTradingCode(infoAccount.getTradingCode()); tkrResponse.setClientCode(infoAccount.getClientCode()); tkrResponse.setEnabled(infoAccount.getEnabled()); diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/MoneyAccountStatus.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/MoneyAccountStatus.java new file mode 100644 index 000000000..1e5d45a8d --- /dev/null +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/MoneyAccountStatus.java @@ -0,0 +1,18 @@ +package ru.spcex.platform.enumeration; + +import ru.spcex.platform.utils.enumeration.IEnumKey; + +public enum MoneyAccountStatus implements IEnumKey { + NEW("NEW"), NOW("NOW"), ; + + private final String key; + + MoneyAccountStatus(String key) { + this.key = key; + } + + @Override + public String getKey() { + return key; + } +} diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/account/TkrAccount.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/account/TkrAccount.java index 61da8efe1..9fce33fe7 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/account/TkrAccount.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/account/TkrAccount.java @@ -22,6 +22,14 @@ public class TkrAccount { @JsonProperty private List moneyAccounts; + public String getTypeOperationClient() { + return typeOperationClient; + } + + public void setTypeOperationClient(String typeOperationClient) { + this.typeOperationClient = typeOperationClient; + } + public String getCompanyId() { return companyId; }