diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/execution/ExecutionCurrencyComponent.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/execution/ExecutionCurrencyComponent.java index a01a31127..03c63b5f8 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/execution/ExecutionCurrencyComponent.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/execution/ExecutionCurrencyComponent.java @@ -449,12 +449,7 @@ public class ExecutionCurrencyComponent extends ExecutionAbstractComponent { valCash.eqtySecCash, valCash.currPairSecCash, valCash.digitCertSecCash), - new CompanyByTradingCodeCashingValidationRule<>( - STrades::getFirmId, valCash.cmpCash, ValidationStored.STradesCompany - ), - new CompanyByTradingCodeCashingValidationRule<>( - STrades::getCpFirmId, valCash.cmpCash, ValidationStored.STradesCounterCompany - ), + CompanyByTradingCodeCashingValidationRule.stradeCmp(valCash.cmpCash), new TcrByCodeAndCmpIsActiveCashingValidationRuleV2(valCash.tcrCash, ImdgValidationContext::getValidatedObject, ValidationStored.STradesCompany, @@ -464,6 +459,7 @@ public class ExecutionCurrencyComponent extends ExecutionAbstractComponent { STrades::getClassCode, ClearingError.RequiredFieldEmpty, true), new CounterStradePresentValidationRule(sTrades), + CompanyByTradingCodeCashingValidationRule.counterStradeCmp(valCash.cmpCash), new TcrByCodeAndCmpIsActiveCashingValidationRuleV2(valCash.tcrCash, ctx -> ctx.getStoredObject(ValidationStored.STradesCounterTrade), ValidationStored.STradesCounterCompany, diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/execution/ExecutionDepositComponent.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/execution/ExecutionDepositComponent.java index f7859fc8c..227c70ee5 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/execution/ExecutionDepositComponent.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/execution/ExecutionDepositComponent.java @@ -382,17 +382,13 @@ public class ExecutionDepositComponent extends ExecutionAbstractComponent { context.setLogPrefix(LogPrefixId.INSTANCE); return new ValidatorImpl<>(context, new STradesSecurityPresentDepositValidationRule(valCash.mmsCash), - new CompanyByTradingCodeCashingValidationRule<>( - STrades::getFirmId, valCash.cmpCash, ValidationStored.STradesCompany - ), - new CompanyByTradingCodeCashingValidationRule<>( - STrades::getCpFirmId, valCash.cmpCash, ValidationStored.STradesCounterCompany - ), + CompanyByTradingCodeCashingValidationRule.stradeCmp(valCash.cmpCash), new TcrByCodeAndCmpIsActiveCashingValidationRuleV2(valCash.tcrCash, ImdgValidationContext::getValidatedObject, ValidationStored.STradesCompany, ValidationStored.STradesTradingClearingRegistry), new CounterStradePresentValidationRule(sTrades), + CompanyByTradingCodeCashingValidationRule.counterStradeCmp(valCash.cmpCash), new TcrByCodeAndCmpIsActiveCashingValidationRuleV2(valCash.tcrCash, ctx -> ctx.getStoredObject(ValidationStored.STradesCounterTrade), ValidationStored.STradesCounterCompany, diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/execution/ExecutionFondComponent.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/execution/ExecutionFondComponent.java index fa6eb488a..2ca797213 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/execution/ExecutionFondComponent.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/execution/ExecutionFondComponent.java @@ -468,18 +468,15 @@ public class ExecutionFondComponent extends ExecutionAbstractComponent { valCash.eqtySecCash, valCash.currPairSecCash, valCash.digitCertSecCash), - new CompanyByTradingCodeCashingValidationRule<>( - STrades::getFirmId, valCash.cmpCash, ValidationStored.STradesCompany - ), - new CompanyByTradingCodeCashingValidationRule<>( - STrades::getCpFirmId, valCash.cmpCash, ValidationStored.STradesCounterCompany - ), + CompanyByTradingCodeCashingValidationRule.stradeCmp(valCash.cmpCash), new TcrByCodeAndCmpIsActiveCashingValidationRuleV2(valCash.tcrCash, ImdgValidationContext::getValidatedObject, ValidationStored.STradesCompany, ValidationStored.STradesTradingClearingRegistry), new STradesSecurityDGCTValidationRule(valCash.udrCash), - new CounterStradePresentValidationRule(sTrades)); + new CounterStradePresentValidationRule(sTrades), + CompanyByTradingCodeCashingValidationRule.counterStradeCmp(valCash.cmpCash) + ); } private static class ExecFondCompCash extends CashCloser { diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/strades/CompanyByTradingCodeCashingValidationRule.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/strades/CompanyByTradingCodeCashingValidationRule.java index 492add30f..258ff9be1 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/strades/CompanyByTradingCodeCashingValidationRule.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/strades/CompanyByTradingCodeCashingValidationRule.java @@ -3,8 +3,10 @@ package ru.spcex.clearing.service.validation.strades; import java.util.Optional; import java.util.function.Function; import ru.clearing.classes.statics.data.company.Company; +import ru.clearing.classes.statics.data.misc.STrades; import ru.spcex.clearing.error.ClearingError; import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.service.validation.ValidationStored; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.predicate.ImdgPredicate; import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; @@ -18,11 +20,28 @@ public class CompanyByTradingCodeCashingValidationRule implements IValidationRule> { private final CashV2ByString cmpCash; - private final Function extractor; + private final Function, String> extractor; private final Enum storedKey; + public static CompanyByTradingCodeCashingValidationRule + stradeCmp(CashV2ByString cmpCash) { + return new CompanyByTradingCodeCashingValidationRule<>( + ctx -> ctx.getValidatedObject().getFirmId(), cmpCash, ValidationStored.STradesCompany + ); + } - public CompanyByTradingCodeCashingValidationRule(Function extractor, + public static CompanyByTradingCodeCashingValidationRule + counterStradeCmp(CashV2ByString cmpCash) { + return new CompanyByTradingCodeCashingValidationRule<>( + ctx -> { + STrades counterTrade = ctx.getStoredObject(ValidationStored.STradesCounterTrade); + return counterTrade.getFirmId(); + }, cmpCash, ValidationStored.STradesCounterCompany + ); + } + + + public CompanyByTradingCodeCashingValidationRule(Function, String> extractor, CashV2ByString cmpCash, Enum storedKey) { this.cmpCash = cmpCash; @@ -30,13 +49,6 @@ public class CompanyByTradingCodeCashingValidationRule this.storedKey = storedKey; } - public CompanyByTradingCodeCashingValidationRule(Function extractor, - CashV2ByString cmpCash) { - this.cmpCash = cmpCash; - this.extractor = extractor; - this.storedKey = null; - } - @Override public String ruleName() { return "CompanyByTradingCodeCashingValidationRule"; @@ -44,8 +56,7 @@ public class CompanyByTradingCodeCashingValidationRule @Override public Optional validate(ImdgValidationContext context) { - T validatedObject = context.getValidatedObject(); - String tradingCode = extractor.apply(validatedObject); + String tradingCode = extractor.apply(context); if (TextUtil.isEmpty(tradingCode)) { return of(ClearingError.CompanyNotFound, tradingCode); }