ialbert 2026-04-30 13:06:11 +03:00
parent 2f645ceb67
commit 703ecf967b

View file

@ -38,7 +38,6 @@ import ru.spcex.clearing.platform.messaging.domain.cud.order.OrderCurrencyUpdate
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
import ru.spcex.clearing.platform.messaging.service.Status;
import ru.spcex.platform.enumeration.MarketType;
import ru.spcex.platform.enumeration.OrderStatus;
import ru.spcex.platform.enumeration.OvernightType;
import ru.spcex.platform.enumeration.SettleCode;
@ -216,26 +215,34 @@ public class OrderCurrencyListener extends QueueConsumer implements Initializing
}
Market market = imdgQueryService.getSpotMarket();
Listing listing = imdgQueryService.findListing(rgs, market.getCode());
Listing listingT0 = imdgQueryService.findListing(rgs, market.getCode(), SettleCode.T0.getKey());
Listing listingT1 = imdgQueryService.findListing(rgs, market.getCode(), SettleCode.T1.getKey());
//мб возвращать вместе с листингом?
CurrencyPairDictionary currPair = imdgQueryService.getCurrencyPairDictionaryBySecurityId(listing.getSecurityId());
SCrossRate rate = imdgQueryService.getSCrossRates(currPair.getBaseCurrency(), LocalDate.now());
CurrencyPairDictionary currPairT0 = imdgQueryService.getCurrencyPairDictionaryBySecurityId(listingT0.getSecurityId());
SCrossRate rateT0 = imdgQueryService.getSCrossRates(currPairT0.getBaseCurrency(), LocalDate.now());
CurrencyPairDictionary currPairT1 = imdgQueryService.getCurrencyPairDictionaryBySecurityId(listingT1.getSecurityId());
SCrossRate rateT1 = imdgQueryService.getSCrossRates(currPairT1.getBaseCurrency(), LocalDate.now());
var pair = new Pair<>(orderT0, orderT1);
Pair.forEach(pair, o -> {
copyCommonFields(swap, o);
o.setSecurityId(listing.getSecurityId());
o.setSecuritySymbol(listing.getSymbolCode());
o.setListingId(listing.getId());
o.setOvernightType(OvernightType.SPOT.getKey());
o.setMarket(MarketType.SCSP.getKey());
o.setMarket(market.getCode());
o.setCreated(Instant.now());
});
orderT0.setPrice(rate.getUnitRate());
orderT1.setPrice(BigDecimalUtil.safeSumBD(swap.getPrice(), rate.getUnitRate()));
updateOrderFieldsByListing(orderT0, listingT0);
updateOrderFieldsByListing(orderT1, listingT1);
orderT0.setPrice(rateT0.getUnitRate());
orderT1.setPrice(BigDecimalUtil.safeSumBD(swap.getPrice(), rateT1.getUnitRate()));
return pair;
}
private void updateOrderFieldsByListing(OrderCurrency order, Listing listing) {
order.setSecurityId(listing.getSecurityId());
order.setSecuritySymbol(listing.getSymbolCode());
order.setListingId(listing.getId());
}
private OrderCurrency spotToSwap(OrderCurrency order1, OrderCurrency order2, Registry rgs) {
OrderCurrency spotT0;
OrderCurrency spotT1;
@ -257,14 +264,14 @@ public class OrderCurrencyListener extends QueueConsumer implements Initializing
}
Market market = imdgQueryService.getSwapMarket();
Listing listing = imdgQueryService.findListing(rgs, market.getCode());
Listing listing = imdgQueryService.findListing(rgs, market.getCode(), SettleCode.T1.getKey());
copyCommonFields(order1, swap);
swap.setSecurityId(listing.getSecurityId());
swap.setSecuritySymbol(listing.getSymbolCode());
swap.setListingId(listing.getId());
swap.setOvernightType(OvernightType.SWAP.getKey());
swap.setMarket(MarketType.SCSW.getKey());
swap.setMarket(market.getCode());
swap.setPrice(safeBD(spotT1.getPrice()).subtract(safeBD(spotT0.getPrice())));
swap.setCreated(Instant.now());
return swap;