проверка sdf21 на наличие DS*T transactionNumber

This commit is contained in:
ialbert 2023-08-23 14:18:35 +03:00
parent 5c4b7adf31
commit dd272858f8

View file

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