This commit is contained in:
ialbert 2026-07-14 13:12:36 +03:00
parent eb1ac07a8f
commit ad34dcea75
4 changed files with 30 additions and 30 deletions

View file

@ -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,

View file

@ -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,

View file

@ -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 {

View file

@ -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<T>
implements IValidationRule<ImdgValidationContext<T>> {
private final CashV2ByString<Company> cmpCash;
private final Function<T, String> extractor;
private final Function<ImdgValidationContext<T>, String> extractor;
private final Enum<?> storedKey;
public static CompanyByTradingCodeCashingValidationRule<STrades>
stradeCmp(CashV2ByString<Company> cmpCash) {
return new CompanyByTradingCodeCashingValidationRule<>(
ctx -> ctx.getValidatedObject().getFirmId(), cmpCash, ValidationStored.STradesCompany
);
}
public CompanyByTradingCodeCashingValidationRule(Function<T, String> extractor,
public static CompanyByTradingCodeCashingValidationRule<STrades>
counterStradeCmp(CashV2ByString<Company> cmpCash) {
return new CompanyByTradingCodeCashingValidationRule<>(
ctx -> {
STrades counterTrade = ctx.getStoredObject(ValidationStored.STradesCounterTrade);
return counterTrade.getFirmId();
}, cmpCash, ValidationStored.STradesCounterCompany
);
}
public CompanyByTradingCodeCashingValidationRule(Function<ImdgValidationContext<T>, String> extractor,
CashV2ByString<Company> cmpCash,
Enum<?> storedKey) {
this.cmpCash = cmpCash;
@ -30,13 +49,6 @@ public class CompanyByTradingCodeCashingValidationRule<T>
this.storedKey = storedKey;
}
public CompanyByTradingCodeCashingValidationRule(Function<T, String> extractor,
CashV2ByString<Company> cmpCash) {
this.cmpCash = cmpCash;
this.extractor = extractor;
this.storedKey = null;
}
@Override
public String ruleName() {
return "CompanyByTradingCodeCashingValidationRule";
@ -44,8 +56,7 @@ public class CompanyByTradingCodeCashingValidationRule<T>
@Override
public Optional<EnumMessage> validate(ImdgValidationContext<T> context) {
T validatedObject = context.getValidatedObject();
String tradingCode = extractor.apply(validatedObject);
String tradingCode = extractor.apply(context);
if (TextUtil.isEmpty(tradingCode)) {
return of(ClearingError.CompanyNotFound, tradingCode);
}