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 a532f1084..0b7f0b704 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 @@ -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;