This commit is contained in:
parent
d593fefc80
commit
64382b4e89
2 changed files with 46 additions and 1 deletions
|
|
@ -0,0 +1,40 @@
|
||||||
|
package ru.spcex.clearing.dflt.management.component.validation;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.Optional;
|
||||||
|
import ru.clearing.classes.statics.data.misc.OrderCurrency;
|
||||||
|
import ru.spcex.clearing.dflt.management.error.DefaultManagementErrors;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.cud.order.OrderCompanyUpdateRequest;
|
||||||
|
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
|
||||||
|
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
||||||
|
import ru.spcex.platform.utils.validation.IValidationRule;
|
||||||
|
|
||||||
|
public class OrderCurrencyCompanyNotChanged
|
||||||
|
implements IValidationRule<ImdgValidationContext<OrderCompanyUpdateRequest>> {
|
||||||
|
public static final OrderCurrencyCompanyNotChanged INSTANCE = new OrderCurrencyCompanyNotChanged();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Optional<EnumMessage> validate(ImdgValidationContext<OrderCompanyUpdateRequest> ctx) {
|
||||||
|
OrderCompanyUpdateRequest validatedObject = ctx.getValidatedObject();
|
||||||
|
OrderCurrency oc = ctx.getStoredObject(OrderCurrencyValidationStored.OrderCurrency);
|
||||||
|
|
||||||
|
BigDecimal reqQuantityLog = Optional.ofNullable(validatedObject.getQuantityLot())
|
||||||
|
.map(BigDecimal::new)
|
||||||
|
.orElse(BigDecimal.ZERO);
|
||||||
|
BigDecimal entityQuantityLog = Optional.ofNullable(oc.getQuantityLot())
|
||||||
|
.orElse(BigDecimal.ZERO);
|
||||||
|
|
||||||
|
if (Objects.equals(validatedObject.getCompanyId(), oc.getCompanyId())
|
||||||
|
&& Objects.equals(validatedObject.getTradingClearingRegistryId(), oc.getTradingClearingRegistryId())
|
||||||
|
&& Objects.equals(reqQuantityLog, entityQuantityLog)) {
|
||||||
|
return of(DefaultManagementErrors.RecordAlreadyPresent);
|
||||||
|
}
|
||||||
|
return empty();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String ruleName() {
|
||||||
|
return "OrderCurrencyCompanyNotChanged";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -17,6 +17,7 @@ import ru.clearing.platform.dictionary.OrderStatusDictionary;
|
||||||
import ru.clearing.platform.dictionary.OvernightTypeDictionary;
|
import ru.clearing.platform.dictionary.OvernightTypeDictionary;
|
||||||
import ru.clearing.platform.dictionary.SideDictionary;
|
import ru.clearing.platform.dictionary.SideDictionary;
|
||||||
import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyByCompanyAndTcrAlreadyPresent;
|
import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyByCompanyAndTcrAlreadyPresent;
|
||||||
|
import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyCompanyNotChanged;
|
||||||
import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyPLBLCheck;
|
import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyPLBLCheck;
|
||||||
import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyValidationStored;
|
import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyValidationStored;
|
||||||
import ru.spcex.clearing.dflt.management.component.validation.OvernightSettingAlreadyPresent;
|
import ru.spcex.clearing.dflt.management.component.validation.OvernightSettingAlreadyPresent;
|
||||||
|
|
@ -355,7 +356,10 @@ public class ValidationConfig {
|
||||||
.builder(r -> {
|
.builder(r -> {
|
||||||
OrderCurrency oc = ctx.getStoredObject(OrderCurrencyValidationStored.OrderCurrency);
|
OrderCurrency oc = ctx.getStoredObject(OrderCurrencyValidationStored.OrderCurrency);
|
||||||
ImdgPredicateBuilder pb = tcrImdg.predicateBuilder();
|
ImdgPredicateBuilder pb = tcrImdg.predicateBuilder();
|
||||||
return pb.equals("companyId", oc.getCounterPartyId());
|
return pb.and(
|
||||||
|
pb.equals("companyId", oc.getCounterPartyId()),
|
||||||
|
pb.equals("code", oc.getCounterTradingCode())
|
||||||
|
);
|
||||||
})
|
})
|
||||||
.mapName(IMDGDistributedNames.Map_TradingClearingRegistry)
|
.mapName(IMDGDistributedNames.Map_TradingClearingRegistry)
|
||||||
.errorProvider(r -> recordNotFound("counter (CK) TradingClearingRegistry"))
|
.errorProvider(r -> recordNotFound("counter (CK) TradingClearingRegistry"))
|
||||||
|
|
@ -434,6 +438,7 @@ public class ValidationConfig {
|
||||||
companyPresentRule,
|
companyPresentRule,
|
||||||
tcrPresent,
|
tcrPresent,
|
||||||
QuantityLotGreaterThanZero.INSTANCE,
|
QuantityLotGreaterThanZero.INSTANCE,
|
||||||
|
OrderCurrencyCompanyNotChanged.INSTANCE,
|
||||||
//OrderCurrencyByCompanyAndTcrAlreadyPresent.getInstance(OrderCompanyUpdateRequest.class),
|
//OrderCurrencyByCompanyAndTcrAlreadyPresent.getInstance(OrderCompanyUpdateRequest.class),
|
||||||
OrderCurrencyPLBLCheck.INSTANCE,
|
OrderCurrencyPLBLCheck.INSTANCE,
|
||||||
counterOrderPresent);
|
counterOrderPresent);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue