etreschenkov 2026-05-14 15:55:22 +03:00
parent 2781b29664
commit a9e4967a25
2 changed files with 12 additions and 6 deletions

View file

@ -27,9 +27,11 @@ import ru.clearing.classes.statics.data.misc.SCrossRate;
import ru.clearing.classes.statics.data.misc.SOrders;
import ru.clearing.classes.statics.data.registry.Registry;
import ru.clearing.classes.statics.data.registry.TradingClearingRegistry;
import ru.clearing.classes.statics.data.security.Rates;
import ru.clearing.platform.dictionary.CurrencyPairDictionary;
import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyValidationStored;
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,6 +71,7 @@ public class OrderCurrencyListener extends QueueConsumer implements Initializing
private final Function<CommonDeleteRequest, IValidator> orderCompanyDeleteValidator;
private final ImdgQueryService imdgQueryService;
private final IMessageResolver msgResolver;
private final TransferDateService transferDateService;
@Autowired
public OrderCurrencyListener(Consumer<String, Object> kafkaQueue,
@ -86,7 +89,8 @@ public class OrderCurrencyListener extends QueueConsumer implements Initializing
Function<OrderCurrencyUpdateRequest, IValidator> orderCurrencyUpdateStatusValidator,
Function<CommonDeleteRequest, IValidator> orderCompanyDeleteValidator,
ImdgQueryService imdgQueryService,
IMessageResolver msgResolver) {
IMessageResolver msgResolver,
TransferDateService transferDateService) {
super(kafkaQueue, kafkaProducer);
this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
this.overnightSettingsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_OvernightSettings, OvernightSettings.class);
@ -100,6 +104,7 @@ public class OrderCurrencyListener extends QueueConsumer implements Initializing
this.imdgQueryService = imdgQueryService;
this.msgResolver = msgResolver;
this.orderCurrencyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_OrderCurrency, OrderCurrency.class);
this.transferDateService = transferDateService;
}
@Override
@ -273,6 +278,10 @@ public class OrderCurrencyListener extends QueueConsumer implements Initializing
Market market = imdgQueryService.getSwapMarket();
Listing listing = imdgQueryService.findListing(rgs, market.getCode(), SettleCode.T1.getKey());
CurrencyPairDictionary pair = imdgQueryService.getCurrencyPairDictionaryBySecurityId(listing.getSecurityId());
BigDecimal n = transferDateService.numberOfDaysOfTransfer();
LocalDate searchingValueDate = LocalDate.now().plusDays(n.longValue());
Rates rates = imdgQueryService.getRate(pair.getBaseCurrency(), searchingValueDate);
copyCommonFields(order1, swap);
swap.setSecurityId(listing.getSecurityId());
@ -281,7 +290,7 @@ public class OrderCurrencyListener extends QueueConsumer implements Initializing
swap.setOvernightType(OvernightType.SWAP.getKey());
swap.setMarket(market.getCode());
swap.setPrice(safeBD(spotT1.getPrice()).subtract(safeBD(spotT0.getPrice())));
swap.setBasePrice(safeBD(spotT1.getBasePrice()));
swap.setBasePrice(safeBD(rates.getValue()));
swap.setCreated(Instant.now());
return swap;
}

View file

@ -54,10 +54,7 @@ public class OrderCalculationService {
BigDecimal quantityLot = result.sum3().abs();
BigDecimal price;
long nextWorkDayDelta = n.longValue();
LocalDate searchingValueDate = LocalDate.now();
if (SettleCode.T1.equals(settleCode)) {
searchingValueDate = searchingValueDate.plusDays(nextWorkDayDelta);
}
LocalDate searchingValueDate = LocalDate.now().plusDays(nextWorkDayDelta);
int precision = listing.getPrecision().intValue();
Rates rates = imdgQueryService.getRate(pair.getBaseCurrency(), searchingValueDate);
price = swapPriceCalc(rates, s, n, precision);