SDF20 поиск DS*T
This commit is contained in:
parent
adc20ee46b
commit
8b54b86ae9
2 changed files with 19 additions and 5 deletions
|
|
@ -122,6 +122,9 @@ public class Sdf20Executor {
|
|||
ds_t.setRegistryDesignation(RegistryDesignation.D.getKey());
|
||||
ds_t.setRegistryCode(RegistryUtil.clearingCode(ds_t));
|
||||
rgsImdg.insert(ds_t);
|
||||
} else {
|
||||
log.debug("DS*T.id={} found for sdf20.id={}", ds_t.getId(), sDf20.getId());
|
||||
return;
|
||||
}
|
||||
Registry as_t = assets.a__t();
|
||||
|
||||
|
|
|
|||
|
|
@ -15,6 +15,9 @@ import ru.spcex.clearing.service.registry.RegistryManager;
|
|||
import ru.spcex.platform.enumeration.AccountType;
|
||||
import ru.spcex.platform.enumeration.OperationCode;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
|
||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
||||
import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder;
|
||||
import ru.spcex.platform.imdg.api.predicate.specific.SecuritySelector;
|
||||
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
|
||||
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
||||
|
|
@ -128,16 +131,24 @@ public enum Sdf20ValidationRule implements IValidationRule<ImdgValidationContext
|
|||
@Override
|
||||
public Optional<EnumMessage> validate(ImdgValidationContext<SDf20> context) {
|
||||
SDf20 sDf20 = context.getValidatedObject();
|
||||
String inDocument = sDf20.getInDocument();
|
||||
String transactionNumber = sDf20.getTransactionNumber();
|
||||
String security = sDf20.getSecurity();
|
||||
Account acc = context.getStoredObject(ValidationStored.Sdf20Account);
|
||||
if (TextUtil.isEmpty(inDocument) || TextUtil.isEmpty(security) || acc == null) {
|
||||
if (TextUtil.isEmpty(transactionNumber) || TextUtil.isEmpty(security) || acc == null) {
|
||||
return of(ClearingError.RecordNotFound, "DS*T");
|
||||
}
|
||||
Imdg<Registry> rgsImdg = context.obtainMap(IMDGDistributedNames.Map_Registry, Registry.class);
|
||||
RegistryManager rgsMng = new RegistryManager(rgsImdg);
|
||||
Optional<Registry> ds_t = rgsMng.searchByAccSecContract(acc.getId(), security, inDocument, DS_T);
|
||||
ds_t.ifPresent(registry -> context.storeObject(ValidationStored.Sdf20Dst, registry));
|
||||
ImdgPredicateBuilder pb = rgsImdg.predicateBuilder();
|
||||
ImdgPredicate dstPrdct = pb.and(
|
||||
pb.sql(RegistryCodeSqlBuilder.getInstance(DS_T).build()),
|
||||
pb.equals("accountId", acc.getId()),
|
||||
pb.equals("securitySymbol", security),
|
||||
pb.equals("comment", transactionNumber)
|
||||
);
|
||||
Registry ds_t = rgsImdg.getFirstObjectByPredicate(dstPrdct);
|
||||
if (ds_t != null) {
|
||||
context.storeObject(ValidationStored.Sdf20Dst, ds_t);
|
||||
}
|
||||
return empty();
|
||||
}
|
||||
},
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue