diff --git a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/listener/OrderCurrencyListener.java b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/listener/OrderCurrencyListener.java index 3ee0101f7..49ee69a7f 100644 --- a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/listener/OrderCurrencyListener.java +++ b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/listener/OrderCurrencyListener.java @@ -27,9 +27,7 @@ import ru.clearing.classes.statics.data.registry.Registry; import ru.clearing.classes.statics.data.registry.TradingClearingRegistry; import ru.clearing.platform.dictionary.CurrencyPairDictionary; import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyValidationStored; -import ru.spcex.clearing.dflt.management.config.ValidationConfig; import ru.spcex.clearing.dflt.management.service.ImdgQueryService; -import ru.spcex.clearing.dflt.management.service.TransferDateService; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.platform.messaging.domain.BaseRequest; import ru.spcex.clearing.platform.messaging.domain.Consts; @@ -69,8 +67,6 @@ public class OrderCurrencyListener extends QueueConsumer implements Initializing private final Function orderCompanyDeleteValidator; private final ImdgQueryService imdgQueryService; private final IMessageResolver msgResolver; - private final ValidationConfig validationConfig; - private final TransferDateService transferDateService; @Autowired public OrderCurrencyListener(Consumer kafkaQueue, @@ -88,12 +84,11 @@ public class OrderCurrencyListener extends QueueConsumer implements Initializing Function orderCurrencyUpdateStatusValidator, Function orderCompanyDeleteValidator, ImdgQueryService imdgQueryService, - IMessageResolver msgResolver, ValidationConfig validationConfig, TransferDateService transferDateService) { + IMessageResolver msgResolver) { super(kafkaQueue, kafkaProducer); this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class); this.overnightSettingsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_OvernightSettings, OvernightSettings.class); this.sOrdersImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SOrders, SOrders.class); - this.transferDateService = transferDateService; this.orderCurrencyUpdateValidator = orderCurrencyUpdateValidator; this.orderCurrencyUpdateStatusValidator = orderCurrencyUpdateStatusValidator; this.overnightTypeUpdateValidator = overnightTypeUpdateValidator; @@ -103,7 +98,6 @@ public class OrderCurrencyListener extends QueueConsumer implements Initializing this.imdgQueryService = imdgQueryService; this.msgResolver = msgResolver; this.orderCurrencyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_OrderCurrency, OrderCurrency.class); - this.validationConfig = validationConfig; } @Override @@ -233,11 +227,7 @@ public class OrderCurrencyListener extends QueueConsumer implements Initializing CurrencyPairDictionary currPairT0 = imdgQueryService.getCurrencyPairDictionaryBySecurityId(listingT0.getSecurityId()); SCrossRate rateT0 = imdgQueryService.getSCrossRates(currPairT0.getBaseCurrency(), now); CurrencyPairDictionary currPairT1 = imdgQueryService.getCurrencyPairDictionaryBySecurityId(listingT1.getSecurityId()); - BigDecimal nextWorkDayDelta = transferDateService.numberOfDaysOfTransfer(); - SCrossRate rateT1 = imdgQueryService.getSCrossRates( - currPairT1.getBaseCurrency(), - now.plusDays(nextWorkDayDelta.longValue()) - ); + SCrossRate rateT1 = imdgQueryService.getSCrossRates(currPairT1.getBaseCurrency(), now); var pair = new Pair<>(orderT0, orderT1); Pair.forEach(pair, o -> { diff --git a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/listener/TaskListener.java b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/listener/TaskListener.java index 2f217600e..f6c00556b 100644 --- a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/listener/TaskListener.java +++ b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/listener/TaskListener.java @@ -32,7 +32,6 @@ import ru.spcex.clearing.dflt.management.service.ImdgQueryService; import ru.spcex.clearing.dflt.management.service.OrderCurrencyTriExportService; import ru.spcex.clearing.dflt.management.service.SpotOvernightOrderService; import ru.spcex.clearing.dflt.management.service.SwapOvernightOrderService; -import ru.spcex.clearing.dflt.management.service.TransferDateService; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.platform.messaging.domain.BaseRequest; import ru.spcex.clearing.platform.messaging.domain.Consts; @@ -45,7 +44,6 @@ import ru.spcex.platform.enumeration.ObjectType; import ru.spcex.platform.enumeration.OrderStatus; import ru.spcex.platform.enumeration.OvernightType; import ru.spcex.platform.enumeration.Priority; -import ru.spcex.platform.enumeration.SettleCode; import ru.spcex.platform.enumeration.Task; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; @@ -66,7 +64,6 @@ public class TaskListener extends QueueConsumer implements InitializingBean { private final Path storagePath; private final SendOrdersTypes sendOrdersTypes; private final Charset winCharset = Charset.forName("windows-1251"); - private final TransferDateService transferDateService; @Autowired public TaskListener(Consumer kafkaQueue, @@ -77,7 +74,7 @@ public class TaskListener extends QueueConsumer implements InitializingBean { SpotOvernightOrderService spotOvernightOrderService, OrderCurrencyTriExportService orderCurrencyTriExportService, KafkaSender kafkaSender, - DefaultManagementSettings defaultManagementSettings, TransferDateService transferDateService) { + DefaultManagementSettings defaultManagementSettings) { super(kafkaQueue, kafkaProducer); this.imdgQueryService = imdgQueryService; this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class); @@ -88,7 +85,6 @@ public class TaskListener extends QueueConsumer implements InitializingBean { this.kafkaSender = kafkaSender; this.storagePath = Path.of(defaultManagementSettings.getFileStoragePath()); this.sendOrdersTypes = defaultManagementSettings.getSendOrdersType(); - this.transferDateService = transferDateService; } @Override @@ -186,12 +182,7 @@ public class TaskListener extends QueueConsumer implements InitializingBean { } String currency = isRubPmt ? CurrencyCode.CNY.getKey() : pmtRegistry.getSecuritySymbol(); - LocalDate rateDate = LocalDate.now(); - if (SettleCode.T1.equalsByKey(orderCurrency.getSettleCode())) { - BigDecimal workDayDelta = transferDateService.numberOfDaysOfTransfer(); - rateDate = rateDate.plusDays(workDayDelta.longValue()); - } - SCrossRate sCrossRate = imdgQueryService.getSCrossRates(currency, rateDate); + SCrossRate sCrossRate = imdgQueryService.getSCrossRates(currency, LocalDate.now()); BigDecimal val = orderCurrency.getQuantityLot() .multiply(orderCurrency.getLotSize()) diff --git a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/service/OrderCalculationService.java b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/service/OrderCalculationService.java index 745d4392a..11ac7ba71 100644 --- a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/service/OrderCalculationService.java +++ b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/service/OrderCalculationService.java @@ -42,8 +42,8 @@ public class OrderCalculationService { BigDecimal n = transferDateService.numberOfDaysOfTransfer(); CalculationResult result = isRub(registry) - ? calculationRubSums(registry, listing.getLotSize().intValue(), s, n, settleCode) - : calculationSums(registry, listing.getLotSize().intValue(), s, n, settleCode); + ? calculationRubSums(registry, listing.getLotSize().intValue(), s, n) + : calculationSums(registry, listing.getLotSize().intValue(), s, n); BigDecimal quantityLot = result.sum3().abs(); BigDecimal price; @@ -66,18 +66,16 @@ public class OrderCalculationService { BigDecimal n = transferDateService.numberOfDaysOfTransfer(); CalculationResult result = isRub(registry) - ? calculationRubSums(registry, listing.getLotSize().intValue(), s, n, settleCode) - : calculationSums(registry, listing.getLotSize().intValue(), s, n, settleCode); + ? calculationRubSums(registry, listing.getLotSize().intValue(), s, n) + : calculationSums(registry, listing.getLotSize().intValue(), s, n); - SCrossRate rates; + SCrossRate rates = imdgQueryService.getSCrossRates(pair.getBaseCurrency(), LocalDate.now()); BigDecimal quantityLot; BigDecimal price; if (SettleCode.T0 == settleCode) { - rates = imdgQueryService.getSCrossRates(pair.getBaseCurrency(), LocalDate.now()); quantityLot = result.sum3().abs(); price = rates.getUnitRate().setScale(listing.getPrecision().intValue(), RoundingMode.HALF_UP); } else { - rates = imdgQueryService.getSCrossRates(pair.getBaseCurrency(), LocalDate.now().plusDays(n.longValue())); quantityLot = result.sum5().abs(); BigDecimal delta = swapPriceCalcT1(pair.getBaseCurrency(), s, n, listing.getPrecision().intValue()); price = rates.getUnitRate().add(delta).setScale(listing.getPrecision().intValue(), RoundingMode.HALF_UP);; @@ -86,15 +84,11 @@ public class OrderCalculationService { return new FinalCalculationResult(price, s, quantityLot, result); } - private CalculationResult calculationSums(Registry registry, Integer lotSize, BigDecimal s, BigDecimal n, SettleCode settleCode) { + private CalculationResult calculationSums(Registry registry, Integer lotSize, BigDecimal s, BigDecimal n) { BigDecimal planPosition = registry.getBalance(); BigDecimal sum1 = planPosition.abs(); - LocalDate rateDate = LocalDate.now(); - if (settleCode.equals(SettleCode.T1)) { - rateDate = rateDate.plusDays(n.longValue()); - } - SCrossRate sCrossRates = imdgQueryService.getSCrossRates(registry.getSecuritySymbol(), rateDate); + SCrossRate sCrossRates = imdgQueryService.getSCrossRates(registry.getSecuritySymbol(), LocalDate.now()); if (sCrossRates == null) { throw new IllegalStateException(String.format("Not fond rate by security symbol: %s", CurrencyCode.CNY.getKey())); } @@ -113,13 +107,9 @@ public class OrderCalculationService { return new CalculationResult(sum1, BigDecimal.ZERO, sum3, sum4, sum5, sum6); } - private CalculationResult calculationRubSums(Registry registry, Integer lotSize, BigDecimal s, BigDecimal n, SettleCode settleCode) { + private CalculationResult calculationRubSums(Registry registry, Integer lotSize, BigDecimal s, BigDecimal n) { BigDecimal planPosition = registry.getBalance(); - LocalDate rateDate = LocalDate.now(); - if (settleCode.equals(SettleCode.T1)) { - rateDate = rateDate.plusDays(n.longValue()); - } - SCrossRate sCrossRates = imdgQueryService.getSCrossRates(CurrencyCode.CNY.getKey(), rateDate); + SCrossRate sCrossRates = imdgQueryService.getSCrossRates(CurrencyCode.CNY.getKey(), LocalDate.now()); if (sCrossRates == null) { throw new IllegalStateException(String.format("Not fond rate by security symbol: %s", CurrencyCode.CNY.getKey())); }