This commit is contained in:
parent
01aaf031b0
commit
edd9c7c08d
4 changed files with 49 additions and 7 deletions
|
|
@ -25,6 +25,7 @@ import ru.clearing.classes.statics.data.misc.Listing;
|
|||
import ru.clearing.classes.statics.data.misc.STrades;
|
||||
import ru.clearing.classes.statics.data.registry.TradingClearingRegistry;
|
||||
import ru.clearing.classes.statics.data.security.CurrencyPairSecurity;
|
||||
import ru.clearing.classes.statics.data.security.DigitalCertificateSecurity;
|
||||
import ru.clearing.classes.statics.data.security.MoneyMarketSecurity;
|
||||
import ru.clearing.classes.statics.data.security.Security;
|
||||
import ru.spcex.clearing.error.ClearingError;
|
||||
|
|
@ -73,6 +74,7 @@ public class ExecutionCurrencyComponent implements IExecutionUploadComponent {
|
|||
private final Imdg<CurrencyPairSecurity> currencyPairSecurityImdg;
|
||||
private final Imdg<MoneyMarketSecurity> imdgMoneyMarketSecurity;
|
||||
private final Imdg<FixedIncomeSecurity> fixedIncomeSecurityImdg;
|
||||
private final Imdg<DigitalCertificateSecurity> imdgDigitCertSecurity;
|
||||
private final Imdg<EquitySecurity> equitySecurityImdg;
|
||||
private final Imdg<Company> cmpImdg;
|
||||
private final Imdg<TradingClearingRegistry> tcrImdg;
|
||||
|
|
@ -102,6 +104,7 @@ public class ExecutionCurrencyComponent implements IExecutionUploadComponent {
|
|||
this.imdgMoneyMarketSecurity = imdgProvider.getCashingImdg(IMDGDistributedNames.Map_MoneyMarketSecurity, MoneyMarketSecurity.class, null);
|
||||
this.fixedIncomeSecurityImdg = imdgProvider.getCashingImdg(IMDGDistributedNames.Map_FixedIncomeSecurity, FixedIncomeSecurity.class, null);
|
||||
this.equitySecurityImdg = imdgProvider.getCashingImdg(IMDGDistributedNames.Map_EquitySecurity, EquitySecurity.class, null);
|
||||
this.imdgDigitCertSecurity = imdgProvider.getCashingImdg(IMDGDistributedNames.Map_DigitalCertificateSecurity, DigitalCertificateSecurity.class, null);
|
||||
this.cmpImdg = imdgProvider.getCashingImdg(IMDGDistributedNames.Map_Company, Company.class, null);
|
||||
this.tcrImdg = imdgProvider.getCashingImdg(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class, null);
|
||||
|
||||
|
|
@ -367,12 +370,14 @@ public class ExecutionCurrencyComponent implements IExecutionUploadComponent {
|
|||
context.addImdg(IMDGDistributedNames.Map_EquitySecurity, equitySecurityImdg);
|
||||
context.addImdg(IMDGDistributedNames.Map_Company, cmpImdg);
|
||||
context.addImdg(IMDGDistributedNames.Map_TradingClearingRegistry, tcrImdg);
|
||||
context.addImdg(IMDGDistributedNames.Map_DigitalCertificateSecurity, imdgDigitCertSecurity);
|
||||
context.setLogPrefix(LogPrefixId.INSTANCE);
|
||||
return new ValidatorImpl<>(context,
|
||||
new STradesSecurityPresentValidationRule(valCash.fixIncSecCash,
|
||||
valCash.mmsCash,
|
||||
valCash.eqtySecCash,
|
||||
valCash.currPairSecCash),
|
||||
valCash.currPairSecCash,
|
||||
valCash.digitCertSecCash),
|
||||
new CompanyByTradingCodeCashingValidationRule<>(
|
||||
STrades::getFirmId, valCash.cmpCash, ValidationStored.STradesCompany
|
||||
),
|
||||
|
|
@ -389,6 +394,7 @@ public class ExecutionCurrencyComponent implements IExecutionUploadComponent {
|
|||
private final CashV2ByString<Security> mmsCash;
|
||||
private final CashV2ByString<Security> eqtySecCash;
|
||||
private final CashV2ByString<Security> currPairSecCash;
|
||||
private final CashV2ByString<Security> digitCertSecCash;
|
||||
private final CashV2ByString<Company> cmpCash;
|
||||
private final CashV2ByIdAndString<TradingClearingRegistry> tcrCash;
|
||||
|
||||
|
|
@ -400,6 +406,7 @@ public class ExecutionCurrencyComponent implements IExecutionUploadComponent {
|
|||
this.currPairSecCash = add(new CashV2ByString<>("currPairSecCash", Security::getSecuritySymbol));
|
||||
this.cmpCash = add(new CashV2ByString<>("cmpCash", Company::getTradingCode));
|
||||
this.tcrCash = add(new CashV2ByIdAndString<>("tcrCash", tcr -> new CashV2ByIdAndString.CustomKey(tcr.getCompanyId(), tcr.getCode())));
|
||||
this.digitCertSecCash = add(new CashV2ByString<>("digitCertSecCash", Security::getSecuritySymbol));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ import ru.clearing.classes.statics.data.misc.SCrossRate;
|
|||
import ru.clearing.classes.statics.data.misc.STrades;
|
||||
import ru.clearing.classes.statics.data.registry.TradingClearingRegistry;
|
||||
import ru.clearing.classes.statics.data.security.CurrencyPairSecurity;
|
||||
import ru.clearing.classes.statics.data.security.DigitalCertificateSecurity;
|
||||
import ru.clearing.classes.statics.data.security.MoneyMarketSecurity;
|
||||
import ru.clearing.classes.statics.data.security.Security;
|
||||
import ru.spcex.clearing.config.element.ClearingServiceSettings;
|
||||
|
|
@ -89,6 +90,7 @@ public class ExecutionFondComponent implements IExecutionUploadComponent {
|
|||
private final Imdg<EquitySecurity> equitySecurityImdg;
|
||||
private final Imdg<Company> imdgCompany;
|
||||
private final Imdg<TradingClearingRegistry> imdgTradingClearingRegistry;
|
||||
private final Imdg<DigitalCertificateSecurity> imdgDigitCertSecurity;
|
||||
private final ImdgId idGen;
|
||||
|
||||
//fixme ждать ТЗ
|
||||
|
|
@ -115,6 +117,7 @@ public class ExecutionFondComponent implements IExecutionUploadComponent {
|
|||
this.crossRateImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SCrossRate, SCrossRate.class);
|
||||
|
||||
this.currencyPairSecurityImdg = imdgProvider.getCashingImdg(IMDGDistributedNames.Map_CurrencyPairSecurity, CurrencyPairSecurity.class, null);
|
||||
this.imdgDigitCertSecurity = imdgProvider.getCashingImdg(IMDGDistributedNames.Map_DigitalCertificateSecurity, DigitalCertificateSecurity.class, null);
|
||||
this.imdgMoneyMarketSecurity = imdgProvider.getCashingImdg(IMDGDistributedNames.Map_MoneyMarketSecurity, MoneyMarketSecurity.class, null);
|
||||
this.fixedIncomeSecurityImdg = imdgProvider.getCashingImdg(IMDGDistributedNames.Map_FixedIncomeSecurity, FixedIncomeSecurity.class, null);
|
||||
this.equitySecurityImdg = imdgProvider.getCashingImdg(IMDGDistributedNames.Map_EquitySecurity, EquitySecurity.class, null);
|
||||
|
|
@ -349,7 +352,7 @@ public class ExecutionFondComponent implements IExecutionUploadComponent {
|
|||
.divide(new BigDecimal(100), RoundingMode.HALF_UP)
|
||||
.setScale(2, RoundingMode.HALF_UP);
|
||||
}
|
||||
} else if (InstrumentType.EQTY.equalsByKey(security.getInstrumentType())) {
|
||||
} else if (InstrumentType.EQTY.equalsByKey(security.getInstrumentType()) || InstrumentType.DGCT.equalsByKey(security.getInstrumentType())) {
|
||||
BigDecimal lotsEqty = safeBD(eFond.getQuantity());
|
||||
settlementAmount = lotsEqty.multiply(price).setScale(2, RoundingMode.HALF_UP);
|
||||
}
|
||||
|
|
@ -408,12 +411,14 @@ public class ExecutionFondComponent implements IExecutionUploadComponent {
|
|||
context.addImdg(IMDGDistributedNames.Map_EquitySecurity, equitySecurityImdg);
|
||||
context.addImdg(IMDGDistributedNames.Map_Company, imdgCompany);
|
||||
context.addImdg(IMDGDistributedNames.Map_TradingClearingRegistry, imdgTradingClearingRegistry);
|
||||
context.addImdg(IMDGDistributedNames.Map_DigitalCertificateSecurity, imdgDigitCertSecurity);
|
||||
context.setLogPrefix(LogPrefixId.INSTANCE);
|
||||
return new ValidatorImpl<>(context,
|
||||
new STradesSecurityPresentValidationRule(valCash.fixIncSecCash,
|
||||
valCash.mmsCash,
|
||||
valCash.eqtySecCash,
|
||||
valCash.currPairSecCash),
|
||||
valCash.currPairSecCash,
|
||||
valCash.digitCertSecCash),
|
||||
new CompanyByTradingCodeCashingValidationRule<>(
|
||||
STrades::getFirmId, valCash.cmpCash, ValidationStored.STradesCompany
|
||||
),
|
||||
|
|
@ -429,6 +434,7 @@ public class ExecutionFondComponent implements IExecutionUploadComponent {
|
|||
private final CashV2ByString<Security> mmsCash;
|
||||
private final CashV2ByString<Security> eqtySecCash;
|
||||
private final CashV2ByString<Security> currPairSecCash;
|
||||
private final CashV2ByString<Security> digitCertSecCash;
|
||||
private final CashV2ByString<Company> cmpCash;
|
||||
private final CashV2ByIdAndString<TradingClearingRegistry> tcrCash;
|
||||
|
||||
|
|
@ -440,6 +446,7 @@ public class ExecutionFondComponent implements IExecutionUploadComponent {
|
|||
this.currPairSecCash = add(new CashV2ByString<>("currPairSecCash", Security::getSecuritySymbol));
|
||||
this.cmpCash = add(new CashV2ByString<>("cmpCash", Company::getTradingCode));
|
||||
this.tcrCash = add(new CashV2ByIdAndString<>("tcrCash", tcr -> new CashV2ByIdAndString.CustomKey(tcr.getCompanyId(), tcr.getCode())));
|
||||
this.digitCertSecCash = add(new CashV2ByString<>("digitCertSecCash", Security::getSecuritySymbol));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,12 +19,18 @@ public class STradesSecurityPresentValidationRule implements IValidationRule<Imd
|
|||
private final CashV2ByString<Security> moneyMarketSecurityCash;
|
||||
private final CashV2ByString<Security> equitySecurityCash;
|
||||
private final CashV2ByString<Security> currencyPairSecurityCash;
|
||||
private final CashV2ByString<Security> digitCertSecCash;
|
||||
|
||||
public STradesSecurityPresentValidationRule(CashV2ByString<Security> fixedIncomeSecurityCash, CashV2ByString<Security> moneyMarketSecurityCash, CashV2ByString<Security> equitySecurityCash, CashV2ByString<Security> currencyPairSecurityCash) {
|
||||
public STradesSecurityPresentValidationRule(CashV2ByString<Security> fixedIncomeSecurityCash,
|
||||
CashV2ByString<Security> moneyMarketSecurityCash,
|
||||
CashV2ByString<Security> equitySecurityCash,
|
||||
CashV2ByString<Security> currencyPairSecurityCash,
|
||||
CashV2ByString<Security> digitCertSecCash) {
|
||||
this.fixedIncomeSecurityCash = fixedIncomeSecurityCash;
|
||||
this.moneyMarketSecurityCash = moneyMarketSecurityCash;
|
||||
this.equitySecurityCash = equitySecurityCash;
|
||||
this.currencyPairSecurityCash = currencyPairSecurityCash;
|
||||
this.digitCertSecCash = digitCertSecCash;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -43,9 +49,14 @@ public class STradesSecurityPresentValidationRule implements IValidationRule<Imd
|
|||
context.obtainMap(IMDGDistributedNames.Map_FixedIncomeSecurity, Security.class),
|
||||
context.obtainMap(IMDGDistributedNames.Map_MoneyMarketSecurity, Security.class),
|
||||
context.obtainMap(IMDGDistributedNames.Map_EquitySecurity, Security.class),
|
||||
context.obtainMap(IMDGDistributedNames.Map_CurrencyPairSecurity, Security.class)
|
||||
context.obtainMap(IMDGDistributedNames.Map_CurrencyPairSecurity, Security.class),
|
||||
context.obtainMap(IMDGDistributedNames.Map_DigitalCertificateSecurity, Security.class)
|
||||
);
|
||||
slctr.setCash(fixedIncomeSecurityCash, moneyMarketSecurityCash, equitySecurityCash, currencyPairSecurityCash);
|
||||
slctr.setCash(fixedIncomeSecurityCash,
|
||||
moneyMarketSecurityCash,
|
||||
equitySecurityCash,
|
||||
currencyPairSecurityCash,
|
||||
digitCertSecCash);
|
||||
String secCode = validatedObject.getSecCode().trim();
|
||||
Security security = slctr.selectSecurityBySymbolCashed(secCode);
|
||||
if (security == null) {
|
||||
|
|
|
|||
|
|
@ -21,12 +21,15 @@ public class SecuritySelector<T extends SpcexObjectBase> {
|
|||
private CashV2ByString<T> equitySecurityCash = null;
|
||||
private final Imdg<T> currencyPairSecurity;
|
||||
private CashV2ByString<T> currencyPairSecurityCash = null;
|
||||
private Imdg<T> digitCertSecurity;
|
||||
private CashV2ByString<T> digitCertSecCash = null;
|
||||
|
||||
public SecuritySelector(ImdgProvider imdgProvider, Class<T> clazz) {
|
||||
this.fixedIncomeSecurityImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_FixedIncomeSecurity, clazz);
|
||||
this.moneyMarketSecurityImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_MoneyMarketSecurity, clazz);
|
||||
this.equitySecurity = imdgProvider.getImdg(IMDGDistributedNames.Map_EquitySecurity, clazz);
|
||||
this.currencyPairSecurity = imdgProvider.getImdg(IMDGDistributedNames.Map_CurrencyPairSecurity, clazz);
|
||||
this.digitCertSecurity = imdgProvider.getImdg(IMDGDistributedNames.Map_DigitalCertificateSecurity, clazz);
|
||||
}
|
||||
|
||||
public SecuritySelector(Imdg<T> fixedIncomeSecurityImdg,
|
||||
|
|
@ -37,16 +40,28 @@ public class SecuritySelector<T extends SpcexObjectBase> {
|
|||
this.moneyMarketSecurityImdg = moneyMarketSecurityImdg;
|
||||
this.equitySecurity = equitySecurity;
|
||||
this.currencyPairSecurity = currencyPairSecurity;
|
||||
this.digitCertSecurity = null;
|
||||
}
|
||||
|
||||
public SecuritySelector(Imdg<T> fixedIncomeSecurityImdg,
|
||||
Imdg<T> moneyMarketSecurityImdg,
|
||||
Imdg<T> equitySecurity,
|
||||
Imdg<T> currencyPairSecurity,
|
||||
Imdg<T> digitCertSecurity) {
|
||||
this(fixedIncomeSecurityImdg, moneyMarketSecurityImdg, equitySecurity, currencyPairSecurity);
|
||||
this.digitCertSecurity = digitCertSecurity;
|
||||
}
|
||||
|
||||
public void setCash(CashV2ByString<T> fixedIncomeSecurityCash,
|
||||
CashV2ByString<T> moneyMarketSecurityCash,
|
||||
CashV2ByString<T> equitySecuCash,
|
||||
CashV2ByString<T> currencyPairSecuCash) {
|
||||
CashV2ByString<T> currencyPairSecuCash,
|
||||
CashV2ByString<T> digitCertSecCash) {
|
||||
this.fixedIncomeSecurityCash = fixedIncomeSecurityCash;
|
||||
this.moneyMarketSecurityCash = moneyMarketSecurityCash;
|
||||
this.equitySecurityCash = equitySecuCash;
|
||||
this.currencyPairSecurityCash = currencyPairSecuCash;
|
||||
this.digitCertSecCash = digitCertSecCash;
|
||||
}
|
||||
|
||||
public T selectSecurityById(Long securityId) {
|
||||
|
|
@ -85,6 +100,8 @@ public class SecuritySelector<T extends SpcexObjectBase> {
|
|||
security = retriever.apply(equitySecurity, equitySecurityCash);
|
||||
if (security != null) return security;
|
||||
security = retriever.apply(currencyPairSecurity, currencyPairSecurityCash);
|
||||
if (security != null) return security;
|
||||
security = retriever.apply(digitCertSecurity, digitCertSecCash);
|
||||
return security;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue