From 817166005f7420522caf446f915a0f44d4b0f48f Mon Sep 17 00:00:00 2001 From: ialbert Date: Wed, 9 Aug 2023 13:13:52 +0300 Subject: [PATCH] =?UTF-8?q?SDF21=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=BD=D0=B0=20=D1=81=D1=83=D1=89=D0=B5=D1=81?= =?UTF-8?q?=D1=82=D0=B2=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=B8=D0=BD?= =?UTF-8?q?=D1=81=D1=82=D1=80=D1=83=D0=BC=D0=B5=D0=BD=D1=82=D0=B0,=20?= =?UTF-8?q?=D1=83=D0=B1=D1=80=D0=B0=D0=BB=20=D0=B4=D1=83=D0=B1=D0=BB=D0=B8?= =?UTF-8?q?=D0=BA=D0=B0=D1=82=20sql=20=D0=B2=20=D0=BF=D0=BE=D0=B8=D1=81?= =?UTF-8?q?=D0=BA=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../clearing/config/ValidationConfig.java | 6 +++++- .../service/executors/Sdf21Executor.java | 4 ++-- .../validation/Sdf21ValidationRule.java | 21 +++++++++++++++++++ 3 files changed, 28 insertions(+), 3 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 d9ab2845d..36b172692 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 @@ -194,10 +194,14 @@ public class ValidationConfig { context.setValidatedObject(sDf21); context.addImdg(IMDGDistributedNames.Map_Account, imdgAccount); context.addImdg(IMDGDistributedNames.Map_Company, imdgCompany); + context.addImdg(IMDGDistributedNames.Map_MoneyMarketSecurity, imdgMoneyMarketSecurity); + context.addImdg(IMDGDistributedNames.Map_FixedIncomeSecurity, fixedIncomeSecurityImdg); + context.addImdg(IMDGDistributedNames.Map_EquitySecurity, equitySecurityImdg); context.setLogPrefix(LogPrefixId.INSTANCE); return new ValidatorImpl<>(context, Sdf21ValidationRule.CompanyPresent, - Sdf21ValidationRule.AccountPresent + Sdf21ValidationRule.AccountPresent, + Sdf21ValidationRule.InstrumentPresent ); }; } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf21Executor.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf21Executor.java index 6fa3dd0b4..1b11de64f 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf21Executor.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf21Executor.java @@ -397,9 +397,9 @@ public class Sdf21Executor extends AbstractExecutor { String sql = RegistryCodeSqlBuilder.getInstance(p).build(); ImdgPredicateBuilder pb = registryImdg.predicateBuilder(); ImdgPredicate rgstrPredicate = pb.and(pb.sql(sql), - pb.sql(sql), pb.equals("companyId", companyId), - pb.equals("accountId", accountId) + pb.equals("accountId", accountId), + pb.equals("securitySymbol", registry.getSecuritySymbol()) ); if (RegistryDesignation.D.equalsByKey(registry.getRegistryDesignation()) && !TextUtil.isEmpty(contract)) { 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 135b18b16..a04d13ad6 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 @@ -3,10 +3,12 @@ package ru.spcex.clearing.service.validation; import ru.clearing.classes.statics.data.account.Account; import ru.clearing.classes.statics.data.company.Company; import ru.clearing.classes.statics.data.sdf.SDf21; +import ru.clearing.classes.statics.data.security.Security; import ru.spcex.clearing.error.ClearingError; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.platform.enumeration.AccountType; import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.api.predicate.specific.SecuritySelector; import ru.spcex.platform.imdg.validation.ImdgValidationContext; import ru.spcex.platform.utils.enumeration.EnumMessage; import ru.spcex.platform.utils.text.TextUtil; @@ -54,6 +56,25 @@ public enum Sdf21ValidationRule implements IValidationRule validate(ImdgValidationContext context) { + SDf21 sdf21 = context.getValidatedObject(); + if (TextUtil.isEmpty(sdf21.getSecurityCode())) { + return of(ClearingError.SecurityNotFound, sdf21.getSecurityCode()); + } + SecuritySelector secSel = new SecuritySelector<>( + context.obtainMap(IMDGDistributedNames.Map_FixedIncomeSecurity, Security.class), + context.obtainMap(IMDGDistributedNames.Map_MoneyMarketSecurity, Security.class), + context.obtainMap(IMDGDistributedNames.Map_EquitySecurity, Security.class) + ); + Security security = secSel.selectSecurityBySymbol(sdf21.getSecurityCode()); + if (security == null) { + return of(ClearingError.SecurityNotFound, sdf21.getSecurityCode()); + } + return empty(); + } } ;