SDF21 проверка на существование инструмента, убрал дубликат sql в поиске

This commit is contained in:
ialbert 2023-08-09 13:13:52 +03:00
parent f39991a559
commit 817166005f
3 changed files with 28 additions and 3 deletions

View file

@ -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
);
};
}

View file

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

View file

@ -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();
}
}
;