проверка sdf21 на наличие DS*T transactionNumber
This commit is contained in:
parent
5c4b7adf31
commit
dd272858f8
1 changed files with 12 additions and 5 deletions
|
|
@ -6,8 +6,10 @@ import ru.clearing.classes.statics.data.sdf.SDf21;
|
|||
import ru.spcex.clearing.error.ClearingError;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.platform.enumeration.AccountType;
|
||||
import ru.spcex.platform.enumeration.OperationCode;
|
||||
import ru.spcex.platform.enumeration.RegistryTradingParams;
|
||||
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.validation.ImdgValidationContext;
|
||||
|
|
@ -15,6 +17,7 @@ import ru.spcex.platform.utils.enumeration.EnumMessage;
|
|||
import ru.spcex.platform.utils.text.TextUtil;
|
||||
import ru.spcex.platform.utils.validation.IValidationRule;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Collection;
|
||||
import java.util.Optional;
|
||||
|
||||
|
|
@ -44,12 +47,16 @@ public enum Sdf21ValidationRule implements IValidationRule<ImdgValidationContext
|
|||
SDf21 sdf21 = context.getValidatedObject();
|
||||
Imdg<Registry> rgsImdg = context.obtainMap(IMDGDistributedNames.Map_Registry, Registry.class);
|
||||
ImdgPredicateBuilder pb = rgsImdg.predicateBuilder();
|
||||
Registry ds_t = rgsImdg.getFirstObjectByPredicate(
|
||||
pb.and(
|
||||
pb.sql(RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.DS_T).build()),
|
||||
pb.equals("comment", sdf21.getTransactionNumber())
|
||||
)
|
||||
ImdgPredicate prdct = pb.and(
|
||||
pb.sql(RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.DS_T).build()),
|
||||
pb.equals("comment", sdf21.getTransactionNumber())
|
||||
);
|
||||
if (OperationCode.DELFREE.equalsByKey(sdf21.getOperationCode())) {
|
||||
prdct = pb.and(prdct, pb.lessEqual("balance", BigDecimal.ZERO));
|
||||
} else if (OperationCode.RECFREE.equalsByKey(sdf21.getOperationCode())) {
|
||||
prdct = pb.and(prdct, pb.greatEqual("balance", BigDecimal.ZERO));
|
||||
}
|
||||
Registry ds_t = rgsImdg.getFirstObjectByPredicate(prdct);
|
||||
if (ds_t != null) {
|
||||
return of(ClearingError.SuchRecordAlreadyExists);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue