etreschenkov 2026-04-28 13:35:37 +03:00
parent 4166d7f685
commit a74a7e1643

View file

@ -97,6 +97,7 @@ public class TaskListener extends QueueConsumer implements InitializingBean {
log.info("CROR createOrder started, request={}", newReq);
Collection<Long> registryIds = imdgQueryService.getCurrencyRegistry();
//todo очередность создания
if (registryIds == null || registryIds.isEmpty()) {
log.info("No registries found for CROR processing");
return;
@ -167,24 +168,25 @@ public class TaskListener extends QueueConsumer implements InitializingBean {
private String checkBalance(OrderCurrency orderCurrency) {
Registry pmtRegistry = imdgQueryService.getRegistryById(orderCurrency.getRegistryId());
Registry amtRegistry = imdgQueryService.findAmtRegistry(pmtRegistry, CurrencyCode.RUB.getKey());
String currency = pmtRegistry.getSecuritySymbol().equals(CurrencyCode.RUB.getKey())
? CurrencyCode.CNY.getKey() : pmtRegistry.getSecuritySymbol();
Registry amtRegistry = null;
boolean isRubPmt = pmtRegistry.getSecuritySymbol().equals(CurrencyCode.RUB.getKey());
if (!isRubPmt) {
amtRegistry = imdgQueryService.findAmtRegistry(pmtRegistry, CurrencyCode.RUB.getKey());
}
String currency = isRubPmt ? CurrencyCode.CNY.getKey() : pmtRegistry.getSecuritySymbol();
SCrossRate sCrossRate = imdgQueryService.getSCrossRates(currency, LocalDate.now());
BigDecimal val = orderCurrency.getQuantityLot()
.multiply(orderCurrency.getLotSize())
.multiply(sCrossRate.getUnitRate());
BigDecimal diff;
int compareRes = amtRegistry.getBalance().compareTo(BigDecimal.ZERO);
if (compareRes < 0) {
diff = amtRegistry.getBalance().add(val);
} else {
diff = amtRegistry.getBalance().subtract(val);
}
BigDecimal diff = isRubPmt ?
pmtRegistry.getBalance().add(val) :
amtRegistry.getBalance().subtract(val);
if (diff.compareTo(BigDecimal.ZERO) < 0) {
return String.format("Для ТКР %s компании %s: баланс %s RUB;",
amtRegistry.getTradingClearingRegistry(), amtRegistry.getShortName(),
pmtRegistry.getTradingClearingRegistry(), pmtRegistry.getShortName(),
diff.setScale(2, RoundingMode.HALF_UP));
}
return null;