From afc6983537768894fc1cf59b034d3c1ab87aa816 Mon Sep 17 00:00:00 2001 From: ialbert Date: Tue, 27 Feb 2024 12:49:00 +0300 Subject: [PATCH] http://jira.mfd.msk:8088/browse/CLS-652 --- .../clearing/config/ValidationConfig.java | 53 ++++++++++++++++--- .../validation/Sdf21ValidationRule.java | 16 ++++++ 2 files changed, 61 insertions(+), 8 deletions(-) diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/ValidationConfig.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/ValidationConfig.java index ad1b60132..9a44dd2f5 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/ValidationConfig.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/ValidationConfig.java @@ -1,5 +1,8 @@ package ru.spcex.clearing.config; +import java.util.function.BiFunction; +import java.util.function.Function; +import java.util.function.Supplier; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import ru.clearing.classes.statics.data.account.Account; @@ -17,7 +20,15 @@ import ru.clearing.classes.statics.data.misc.Session; import ru.clearing.classes.statics.data.payment.PaymentInstruction; import ru.clearing.classes.statics.data.registry.Registry; import ru.clearing.classes.statics.data.registry.TradingClearingRegistry; -import ru.clearing.classes.statics.data.sdf.*; +import ru.clearing.classes.statics.data.sdf.SDf01; +import ru.clearing.classes.statics.data.sdf.SDf06; +import ru.clearing.classes.statics.data.sdf.SDf08; +import ru.clearing.classes.statics.data.sdf.SDf10; +import ru.clearing.classes.statics.data.sdf.SDf20; +import ru.clearing.classes.statics.data.sdf.SDf21; +import ru.clearing.classes.statics.data.sdf.SDf54; +import ru.clearing.classes.statics.data.sdf.SDf55; +import ru.clearing.classes.statics.data.sdf.SDf57; import ru.clearing.classes.statics.data.security.MoneyMarketSecurity; import ru.clearing.classes.statics.data.security.Security; import ru.clearing.classes.statics.data.statement.Statement; @@ -27,8 +38,34 @@ import ru.spcex.clearing.error.ClearingError; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.platform.messaging.domain.cud.balance.StatementRequest; import ru.spcex.clearing.platform.messaging.domain.cud.payment.PIClearingOutbondActionNewRequest; -import ru.spcex.clearing.platform.messaging.domain.cud.registry.*; -import ru.spcex.clearing.service.validation.*; +import ru.spcex.clearing.platform.messaging.domain.cud.registry.IdentificationFundsRequest; +import ru.spcex.clearing.platform.messaging.domain.cud.registry.RegistryChangeRefundDateRequest; +import ru.spcex.clearing.platform.messaging.domain.cud.registry.RegistryChangeStatusExtractRequest; +import ru.spcex.clearing.platform.messaging.domain.cud.registry.RegistryReturnDepositRequest; +import ru.spcex.clearing.platform.messaging.domain.cud.registry.RegistrySplitDepositActionRequest; +import ru.spcex.clearing.service.validation.ClrngValidationStored; +import ru.spcex.clearing.service.validation.CompanyByTradingCodeValidationRule; +import ru.spcex.clearing.service.validation.ExecutionDepositValidationRule; +import ru.spcex.clearing.service.validation.IdentificationFundsValidationRule; +import ru.spcex.clearing.service.validation.MarketIsUValidationRule; +import ru.spcex.clearing.service.validation.PaymentOutboundValidationRule; +import ru.spcex.clearing.service.validation.RefundDateValidationRule; +import ru.spcex.clearing.service.validation.RegistryStep3ValidationRule; +import ru.spcex.clearing.service.validation.ReturnDepositValidationRule; +import ru.spcex.clearing.service.validation.STradesValidationRule; +import ru.spcex.clearing.service.validation.Sdf01NewValidationRule; +import ru.spcex.clearing.service.validation.Sdf01ValidationRule; +import ru.spcex.clearing.service.validation.Sdf06NewValidationRule; +import ru.spcex.clearing.service.validation.Sdf08NewValidationRule; +import ru.spcex.clearing.service.validation.Sdf10ValidationRule; +import ru.spcex.clearing.service.validation.Sdf20ValidationRule; +import ru.spcex.clearing.service.validation.Sdf21ValidationRule; +import ru.spcex.clearing.service.validation.Sdf55ValidationRule; +import ru.spcex.clearing.service.validation.Sdf57ValidationRule; +import ru.spcex.clearing.service.validation.SecurityBySecurityCodeValidationRule; +import ru.spcex.clearing.service.validation.SessionTerminationValidationRule; +import ru.spcex.clearing.service.validation.SplitDepositRequestValidationRule; +import ru.spcex.clearing.service.validation.StatusExtractValidationRule; import ru.spcex.clearing.util.security.UserRoleVerification; import ru.spcex.clearing.validation.common.rules.DictionaryPresentRule; import ru.spcex.clearing.validation.common.rules.FieldRequiredRule; @@ -44,10 +81,6 @@ import ru.spcex.platform.utils.enumeration.IMessageResolver; import ru.spcex.platform.utils.validation.IValidator; import ru.spcex.platform.utils.validation.ValidatorImpl; -import java.util.function.BiFunction; -import java.util.function.Function; -import java.util.function.Supplier; - @Configuration public class ValidationConfig { @@ -58,6 +91,7 @@ public class ValidationConfig { Imdg imdgCompanySymbols; Imdg imdgRegistry; + Imdg imdgSdf20; Imdg imdgAccount; Imdg imdgDepoAccount; Imdg imdgAccountBalance; @@ -79,6 +113,7 @@ public class ValidationConfig { this.imdgCompany = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); this.imdgCompanySymbols = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); this.imdgRegistry = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class); + this.imdgSdf20 = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf20, SDf20.class); this.imdgAccount = imdgProvider.getImdg(IMDGDistributedNames.Map_Account, Account.class); this.imdgAccountBalance = imdgProvider.getImdg(IMDGDistributedNames.Map_AccountBalance, AccountBalance.class); this.imdgSecurity = imdgProvider.getImdg(IMDGDistributedNames.Map_Security, Security.class); @@ -227,12 +262,14 @@ public class ValidationConfig { context.addImdg(IMDGDistributedNames.Map_FixedIncomeSecurity, fixedIncomeSecurityImdg); context.addImdg(IMDGDistributedNames.Map_EquitySecurity, equitySecurityImdg); context.addImdg(IMDGDistributedNames.Map_Registry, imdgRegistry); + context.addImdg(IMDGDistributedNames.Map_SDf20, imdgSdf20); context.setLogPrefix(LogPrefixId.INSTANCE); return new ValidatorImpl<>(context, CompanyByTradingCodeValidationRule.instance(SDf21::getDepoCodeCl), Sdf21ValidationRule.AccountPresent, SecurityBySecurityCodeValidationRule.instance(SDf21::getSecurityCode), - Sdf21ValidationRule.TransactionNumberProcessed + Sdf21ValidationRule.TransactionNumberProcessed, + Sdf21ValidationRule.TransactionNumberForSdf20 ); }; } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/Sdf21ValidationRule.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/Sdf21ValidationRule.java index 6b4011750..a4335c2f3 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/Sdf21ValidationRule.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/Sdf21ValidationRule.java @@ -7,6 +7,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ru.clearing.classes.statics.data.account.Account; import ru.clearing.classes.statics.data.registry.Registry; +import ru.clearing.classes.statics.data.sdf.SDf20; import ru.clearing.classes.statics.data.sdf.SDf21; import ru.spcex.clearing.error.ClearingError; import ru.spcex.clearing.imdg.IMDGDistributedNames; @@ -64,6 +65,21 @@ public enum Sdf21ValidationRule implements IValidationRule validate(ImdgValidationContext context) { + SDf21 validatedObject = context.getValidatedObject(); + Imdg sDf20Imdg = context.obtainMap(IMDGDistributedNames.Map_SDf20, SDf20.class); + SDf20 sdf20 = sDf20Imdg.getFirstObjectByPredicate(sDf20Imdg + .predicateBuilder() + .equals("transactionNumber", validatedObject.getTransactionNumber()) + ); + if (sdf20 != null) { + return of(ClearingError.SuchRecordAlreadyExists); + } + return empty(); + } }; private final static Logger log = LoggerFactory.getLogger(Sdf21ValidationRule.class); @Override