etreschenkov 2025-09-15 18:59:11 +03:00
parent f0881dd4b8
commit 7240066fe6
2 changed files with 6 additions and 15 deletions

View file

@ -1,5 +1,6 @@
package ru.spcex.clearing.service.execution; package ru.spcex.clearing.service.execution;
import static java.lang.String.format;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.time.Instant; import java.time.Instant;
@ -9,7 +10,6 @@ import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Optional; import java.util.Optional;
import static java.lang.String.format;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.slf4j.event.Level; import org.slf4j.event.Level;
@ -50,7 +50,6 @@ import ru.spcex.clearing.service.validation.strades.STradesSecurityPresentValida
import ru.spcex.clearing.service.validation.strades.TcrByCodeAndCmpIsActiveCashingValidationRule; import ru.spcex.clearing.service.validation.strades.TcrByCodeAndCmpIsActiveCashingValidationRule;
import ru.spcex.platform.enumeration.CurrencyCode; import ru.spcex.platform.enumeration.CurrencyCode;
import ru.spcex.platform.enumeration.InstrumentType; import ru.spcex.platform.enumeration.InstrumentType;
import ru.spcex.platform.enumeration.NominalTypeCode;
import ru.spcex.platform.enumeration.ObjectType; import ru.spcex.platform.enumeration.ObjectType;
import ru.spcex.platform.enumeration.Priority; import ru.spcex.platform.enumeration.Priority;
import ru.spcex.platform.enumeration.Section; import ru.spcex.platform.enumeration.Section;
@ -71,7 +70,6 @@ import ru.spcex.platform.utils.enumeration.IEnumId;
import ru.spcex.platform.utils.enumeration.IEnumKey; import ru.spcex.platform.utils.enumeration.IEnumKey;
import ru.spcex.platform.utils.enumeration.IMessageResolver; import ru.spcex.platform.utils.enumeration.IMessageResolver;
import ru.spcex.platform.utils.log.ExceptionUtils; import ru.spcex.platform.utils.log.ExceptionUtils;
import static ru.spcex.platform.utils.number.BigDecimalUtil.parse;
import static ru.spcex.platform.utils.number.BigDecimalUtil.safeBD; import static ru.spcex.platform.utils.number.BigDecimalUtil.safeBD;
import ru.spcex.platform.utils.text.TextUtil; import ru.spcex.platform.utils.text.TextUtil;
import ru.spcex.platform.utils.time.TimeUtil; import ru.spcex.platform.utils.time.TimeUtil;
@ -305,15 +303,9 @@ public class ExecutionFondComponent implements IExecutionUploadComponent {
if (udr != null) { if (udr != null) {
DigitalCertificateSecurity dcs = (DigitalCertificateSecurity) security; DigitalCertificateSecurity dcs = (DigitalCertificateSecurity) security;
BigDecimal baseUnitSize = BigDecimal.valueOf(Optional.ofNullable(dcs.getBaseUnitSize()).orElse(0L)); BigDecimal baseUnitSize = BigDecimal.valueOf(Optional.ofNullable(dcs.getBaseUnitSize()).orElse(0L));
if (NominalTypeCode.INDX.equalsByKey(dcs.getNominalTypeCode())) { price = safeBD(sTrades.getPrice())
price = safeBD(sTrades.getPrice()) .multiply(safeBD(dcs.getNominalValue()))
.multiply(safeBD(dcs.getNominalValue())) .multiply(baseUnitSize);
.multiply(baseUnitSize);
} else if (NominalTypeCode.FIXD.equalsByKey(dcs.getNominalTypeCode())) {
price = safeBD(sTrades.getPrice())
.multiply(safeBD(parse(udr.getRightUnit())))
.multiply(baseUnitSize);
}
} }
eFond.setPrice(price); eFond.setPrice(price);
eFond.setLots(sTrades.getQty()); eFond.setLots(sTrades.getQty());

View file

@ -18,7 +18,6 @@ import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
import ru.spcex.platform.imdg.iml.hazelcast.adapter.CashV2; import ru.spcex.platform.imdg.iml.hazelcast.adapter.CashV2;
import ru.spcex.platform.imdg.validation.ImdgValidationContext; import ru.spcex.platform.imdg.validation.ImdgValidationContext;
import ru.spcex.platform.utils.enumeration.EnumMessage; import ru.spcex.platform.utils.enumeration.EnumMessage;
import ru.spcex.platform.utils.text.TextUtil;
import ru.spcex.platform.utils.validation.IValidationRule; import ru.spcex.platform.utils.validation.IValidationRule;
public class STradesSecurityDGCTValidationRule implements IValidationRule<ImdgValidationContext<STrades>> { public class STradesSecurityDGCTValidationRule implements IValidationRule<ImdgValidationContext<STrades>> {
@ -53,14 +52,14 @@ public class STradesSecurityDGCTValidationRule implements IValidationRule<ImdgVa
return of(ClearingError.UtilitarianDigitalRightNotFound, security.getSecuritySymbol()); return of(ClearingError.UtilitarianDigitalRightNotFound, security.getSecuritySymbol());
} }
if (NominalTypeCode.INDX.equalsByKey(dcs.getNominalTypeCode())) { if (NominalTypeCode.INDX.equalsByKey(dcs.getNominalTypeCode())) {
if (!Objects.equals(dcs.getNominalIndexationDate(), validatedObject.getTradeDate())) { if (!Objects.equals(dcs.getNominalIndexationDate(), validatedObject.getSettleDate())) {
return of(ClearingError.UtilitarianDigitalRightNotFound, security.getSecuritySymbol()); return of(ClearingError.UtilitarianDigitalRightNotFound, security.getSecuritySymbol());
} }
if (dcs.getNominalValue() == null) { if (dcs.getNominalValue() == null) {
return of(ClearingError.UtilitarianDigitalRightNotFound, security.getSecuritySymbol()); return of(ClearingError.UtilitarianDigitalRightNotFound, security.getSecuritySymbol());
} }
} else if (NominalTypeCode.FIXD.equalsByKey(dcs.getNominalTypeCode())) { } else if (NominalTypeCode.FIXD.equalsByKey(dcs.getNominalTypeCode())) {
if (TextUtil.isEmpty(udr.getRightUnit())) { if (dcs.getNominalValue() == null) {
return of(ClearingError.UtilitarianDigitalRightNotFound, security.getSecuritySymbol()); return of(ClearingError.UtilitarianDigitalRightNotFound, security.getSecuritySymbol());
} }
} }