SDF21 проверка на существование инструмента, убрал дубликат sql в поиске
This commit is contained in:
parent
f39991a559
commit
817166005f
3 changed files with 28 additions and 3 deletions
|
|
@ -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
|
||||
);
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -397,9 +397,9 @@ public class Sdf21Executor extends AbstractExecutor<SDf21> {
|
|||
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)) {
|
||||
|
|
|
|||
|
|
@ -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<ImdgValidationContext
|
|||
context.storeObject(ValidationStored.Sdf21Account, account.iterator().next());
|
||||
return empty();
|
||||
}
|
||||
},
|
||||
InstrumentPresent() {
|
||||
@Override
|
||||
public Optional<EnumMessage> validate(ImdgValidationContext<SDf21> context) {
|
||||
SDf21 sdf21 = context.getValidatedObject();
|
||||
if (TextUtil.isEmpty(sdf21.getSecurityCode())) {
|
||||
return of(ClearingError.SecurityNotFound, sdf21.getSecurityCode());
|
||||
}
|
||||
SecuritySelector<Security> 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();
|
||||
}
|
||||
}
|
||||
|
||||
;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue