clearing-service http://jira.mfd.msk:8088/browse/CLS-307 SPLT улучшил валидацию

This commit is contained in:
AKurakin 2023-08-30 15:18:05 +03:00
parent a448a78415
commit 38916cdeb1
2 changed files with 15 additions and 1 deletions

View file

@ -359,6 +359,7 @@ public class ValidationConfig {
DictionaryPresentRule.instance("direction", RegistrySplitDepositActionRequest::getDirection,
IMDGDistributedNames.Map_InOutDirectionDictionary, InOutDirectionDictionary.class,
ClearingError.RequiredFieldEmpty, ClearingError.DictionaryNotFound, false),
SplitDepositRequestValidationRule.PositiveAmount,
SplitDepositRequestValidationRule.CrossvalidateByRegistry
);
};

View file

@ -22,6 +22,19 @@ import java.util.Optional;
import java.util.stream.Collectors;
public enum SplitDepositRequestValidationRule implements IValidationRule<ImdgValidationContext<RegistrySplitDepositActionRequest>> {
PositiveAmount() {
@Override
public Optional<EnumMessage> validate(ImdgValidationContext<RegistrySplitDepositActionRequest> context) {
RegistrySplitDepositActionRequest request = context.getValidatedObject();
if (request.getOutboundAmount() == null) {
return of(ClearingError.RequiredFieldEmpty, "outboundAmount");
}
if (request.getOutboundAmount().compareTo(BigDecimal.ZERO) <= 0) {
return of(ClearingError.WrongFieldValue, "outboundAmount");
}
return empty();
}
},
CrossvalidateByRegistry() {
@Override
public Optional<EnumMessage> validate(ImdgValidationContext<RegistrySplitDepositActionRequest> context) {
@ -39,7 +52,7 @@ public enum SplitDepositRequestValidationRule implements IValidationRule<ImdgVal
);
Collection<Registry> registrys = registryImdg.getCollectionObjectsByPredicate(query);
registrys = registrys.stream()
.filter(r->r.getValueDate()!=null && r.getSettlementDate()!=null && r.getValueDate().isBefore(r.getSettlementDate()))
.filter(r -> r.getValueDate() != null && r.getSettlementDate() != null && r.getValueDate().isBefore(r.getSettlementDate()))
.collect(Collectors.toList());
Registry registryO = registrys.stream()
.filter(r -> RegistryDesignation.O.equalsByKey(r.getRegistryDesignation()))