проверка 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.error.ClearingError;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
import ru.spcex.platform.enumeration.AccountType;
|
import ru.spcex.platform.enumeration.AccountType;
|
||||||
|
import ru.spcex.platform.enumeration.OperationCode;
|
||||||
import ru.spcex.platform.enumeration.RegistryTradingParams;
|
import ru.spcex.platform.enumeration.RegistryTradingParams;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
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.ImdgPredicateBuilder;
|
||||||
import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder;
|
import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder;
|
||||||
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
|
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.text.TextUtil;
|
||||||
import ru.spcex.platform.utils.validation.IValidationRule;
|
import ru.spcex.platform.utils.validation.IValidationRule;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
|
|
@ -44,12 +47,16 @@ public enum Sdf21ValidationRule implements IValidationRule<ImdgValidationContext
|
||||||
SDf21 sdf21 = context.getValidatedObject();
|
SDf21 sdf21 = context.getValidatedObject();
|
||||||
Imdg<Registry> rgsImdg = context.obtainMap(IMDGDistributedNames.Map_Registry, Registry.class);
|
Imdg<Registry> rgsImdg = context.obtainMap(IMDGDistributedNames.Map_Registry, Registry.class);
|
||||||
ImdgPredicateBuilder pb = rgsImdg.predicateBuilder();
|
ImdgPredicateBuilder pb = rgsImdg.predicateBuilder();
|
||||||
Registry ds_t = rgsImdg.getFirstObjectByPredicate(
|
ImdgPredicate prdct = pb.and(
|
||||||
pb.and(
|
pb.sql(RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.DS_T).build()),
|
||||||
pb.sql(RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.DS_T).build()),
|
pb.equals("comment", sdf21.getTransactionNumber())
|
||||||
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) {
|
if (ds_t != null) {
|
||||||
return of(ClearingError.SuchRecordAlreadyExists);
|
return of(ClearingError.SuchRecordAlreadyExists);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue