This commit is contained in:
parent
2781b29664
commit
a9e4967a25
2 changed files with 12 additions and 6 deletions
|
|
@ -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.misc.SOrders;
|
||||||
import ru.clearing.classes.statics.data.registry.Registry;
|
import ru.clearing.classes.statics.data.registry.Registry;
|
||||||
import ru.clearing.classes.statics.data.registry.TradingClearingRegistry;
|
import ru.clearing.classes.statics.data.registry.TradingClearingRegistry;
|
||||||
|
import ru.clearing.classes.statics.data.security.Rates;
|
||||||
import ru.clearing.platform.dictionary.CurrencyPairDictionary;
|
import ru.clearing.platform.dictionary.CurrencyPairDictionary;
|
||||||
import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyValidationStored;
|
import ru.spcex.clearing.dflt.management.component.validation.OrderCurrencyValidationStored;
|
||||||
import ru.spcex.clearing.dflt.management.service.ImdgQueryService;
|
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.imdg.IMDGDistributedNames;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
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 Function<CommonDeleteRequest, IValidator> orderCompanyDeleteValidator;
|
||||||
private final ImdgQueryService imdgQueryService;
|
private final ImdgQueryService imdgQueryService;
|
||||||
private final IMessageResolver msgResolver;
|
private final IMessageResolver msgResolver;
|
||||||
|
private final TransferDateService transferDateService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public OrderCurrencyListener(Consumer<String, Object> kafkaQueue,
|
public OrderCurrencyListener(Consumer<String, Object> kafkaQueue,
|
||||||
|
|
@ -86,7 +89,8 @@ public class OrderCurrencyListener extends QueueConsumer implements Initializing
|
||||||
Function<OrderCurrencyUpdateRequest, IValidator> orderCurrencyUpdateStatusValidator,
|
Function<OrderCurrencyUpdateRequest, IValidator> orderCurrencyUpdateStatusValidator,
|
||||||
Function<CommonDeleteRequest, IValidator> orderCompanyDeleteValidator,
|
Function<CommonDeleteRequest, IValidator> orderCompanyDeleteValidator,
|
||||||
ImdgQueryService imdgQueryService,
|
ImdgQueryService imdgQueryService,
|
||||||
IMessageResolver msgResolver) {
|
IMessageResolver msgResolver,
|
||||||
|
TransferDateService transferDateService) {
|
||||||
super(kafkaQueue, kafkaProducer);
|
super(kafkaQueue, kafkaProducer);
|
||||||
this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
||||||
this.overnightSettingsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_OvernightSettings, OvernightSettings.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.imdgQueryService = imdgQueryService;
|
||||||
this.msgResolver = msgResolver;
|
this.msgResolver = msgResolver;
|
||||||
this.orderCurrencyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_OrderCurrency, OrderCurrency.class);
|
this.orderCurrencyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_OrderCurrency, OrderCurrency.class);
|
||||||
|
this.transferDateService = transferDateService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -273,6 +278,10 @@ public class OrderCurrencyListener extends QueueConsumer implements Initializing
|
||||||
|
|
||||||
Market market = imdgQueryService.getSwapMarket();
|
Market market = imdgQueryService.getSwapMarket();
|
||||||
Listing listing = imdgQueryService.findListing(rgs, market.getCode(), SettleCode.T1.getKey());
|
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);
|
copyCommonFields(order1, swap);
|
||||||
swap.setSecurityId(listing.getSecurityId());
|
swap.setSecurityId(listing.getSecurityId());
|
||||||
|
|
@ -281,7 +290,7 @@ public class OrderCurrencyListener extends QueueConsumer implements Initializing
|
||||||
swap.setOvernightType(OvernightType.SWAP.getKey());
|
swap.setOvernightType(OvernightType.SWAP.getKey());
|
||||||
swap.setMarket(market.getCode());
|
swap.setMarket(market.getCode());
|
||||||
swap.setPrice(safeBD(spotT1.getPrice()).subtract(safeBD(spotT0.getPrice())));
|
swap.setPrice(safeBD(spotT1.getPrice()).subtract(safeBD(spotT0.getPrice())));
|
||||||
swap.setBasePrice(safeBD(spotT1.getBasePrice()));
|
swap.setBasePrice(safeBD(rates.getValue()));
|
||||||
swap.setCreated(Instant.now());
|
swap.setCreated(Instant.now());
|
||||||
return swap;
|
return swap;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -54,10 +54,7 @@ public class OrderCalculationService {
|
||||||
BigDecimal quantityLot = result.sum3().abs();
|
BigDecimal quantityLot = result.sum3().abs();
|
||||||
BigDecimal price;
|
BigDecimal price;
|
||||||
long nextWorkDayDelta = n.longValue();
|
long nextWorkDayDelta = n.longValue();
|
||||||
LocalDate searchingValueDate = LocalDate.now();
|
LocalDate searchingValueDate = LocalDate.now().plusDays(nextWorkDayDelta);
|
||||||
if (SettleCode.T1.equals(settleCode)) {
|
|
||||||
searchingValueDate = searchingValueDate.plusDays(nextWorkDayDelta);
|
|
||||||
}
|
|
||||||
int precision = listing.getPrecision().intValue();
|
int precision = listing.getPrecision().intValue();
|
||||||
Rates rates = imdgQueryService.getRate(pair.getBaseCurrency(), searchingValueDate);
|
Rates rates = imdgQueryService.getRate(pair.getBaseCurrency(), searchingValueDate);
|
||||||
price = swapPriceCalc(rates, s, n, precision);
|
price = swapPriceCalc(rates, s, n, precision);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue