This commit is contained in:
parent
b5ad5540c7
commit
578f6a708b
4 changed files with 66 additions and 8 deletions
|
|
@ -0,0 +1,24 @@
|
|||
package ru.spcex.clearing.dflt.management.error;
|
||||
|
||||
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
||||
|
||||
public class ListingNotFound extends Exception {
|
||||
final EnumMessage enumMsg;
|
||||
|
||||
public ListingNotFound(EnumMessage enumMsg) {
|
||||
this.enumMsg = enumMsg;
|
||||
}
|
||||
|
||||
public ListingNotFound(DefaultManagementErrors code) {
|
||||
this.enumMsg = new EnumMessage(code);
|
||||
}
|
||||
|
||||
public ListingNotFound(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
this.enumMsg = new EnumMessage(DefaultManagementErrors.GeneralError);
|
||||
}
|
||||
|
||||
public EnumMessage getEnumMsg() {
|
||||
return enumMsg;
|
||||
}
|
||||
}
|
||||
|
|
@ -27,6 +27,7 @@ import ru.clearing.classes.statics.data.registry.Registry;
|
|||
import ru.clearing.classes.statics.data.security.Rates;
|
||||
import ru.spcex.clearing.dflt.management.config.settings.DefaultManagementSettings;
|
||||
import ru.spcex.clearing.dflt.management.enums.SendOrdersTypes;
|
||||
import ru.spcex.clearing.dflt.management.error.ListingNotFound;
|
||||
import ru.spcex.clearing.dflt.management.service.ImdgQueryService;
|
||||
import ru.spcex.clearing.dflt.management.service.OrderCurrencyTriExportService;
|
||||
import ru.spcex.clearing.dflt.management.service.SpotOvernightOrderService;
|
||||
|
|
@ -141,7 +142,11 @@ public class TaskListener extends QueueConsumer implements InitializingBean {
|
|||
log.warn("Unsupported overnightType={} for registry id={}", overnightType, registry.getId());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("Error while processing registryId={}, ex: {}", registryId, ExceptionUtils.getStackTrace(e));
|
||||
if (e instanceof ListingNotFound) {
|
||||
sendNotification("Ошибка: не найден инструмент");
|
||||
} else {
|
||||
log.error("Error while processing registryId={}, ex: {}", registryId, ExceptionUtils.getStackTrace(e));
|
||||
}
|
||||
}
|
||||
}
|
||||
log.info("CROR createOrder finished");
|
||||
|
|
@ -163,11 +168,7 @@ public class TaskListener extends QueueConsumer implements InitializingBean {
|
|||
if (!messages.isEmpty()) {
|
||||
String comment = "После проведения первой части сделок переноса будет получен отрицательный баланс по RUB:\n"
|
||||
+ String.join("\n", messages);
|
||||
NotificationNewRequest newReq = new NotificationNewRequest();
|
||||
newReq.setObjectType(ObjectType.rgst.getKey());
|
||||
newReq.setPriority(Priority.HIGH.getKey());
|
||||
newReq.setComment(comment);
|
||||
kafkaSender.sendRequestToQueue(Consts.NOTIFICATION_NEW, newReq);
|
||||
sendNotification(comment);
|
||||
}
|
||||
|
||||
try {
|
||||
|
|
@ -230,4 +231,12 @@ public class TaskListener extends QueueConsumer implements InitializingBean {
|
|||
orderCurrencyImdg.update(orderCurrency);
|
||||
}
|
||||
}
|
||||
|
||||
private void sendNotification(String comment) {
|
||||
NotificationNewRequest newReq = new NotificationNewRequest();
|
||||
newReq.setObjectType(ObjectType.rgst.getKey());
|
||||
newReq.setPriority(Priority.HIGH.getKey());
|
||||
newReq.setComment(comment);
|
||||
kafkaSender.sendRequestToQueue(Consts.NOTIFICATION_NEW, newReq);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,10 +4,13 @@ import java.math.BigDecimal;
|
|||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.clearing.classes.statics.data.misc.Listing;
|
||||
import ru.clearing.classes.statics.data.misc.Market;
|
||||
import ru.clearing.classes.statics.data.misc.OrderCurrency;
|
||||
import ru.clearing.classes.statics.data.registry.Registry;
|
||||
import ru.clearing.classes.statics.data.security.RiskParameter;
|
||||
import ru.spcex.clearing.dflt.management.error.DefaultManagementErrors;
|
||||
import ru.spcex.clearing.dflt.management.error.ListingNotFound;
|
||||
import ru.spcex.clearing.dflt.management.model.CounterpartyInfo;
|
||||
import ru.spcex.clearing.dflt.management.model.FinalCalculationResult;
|
||||
import ru.spcex.clearing.dflt.management.model.OrderCurrencyContext;
|
||||
|
|
@ -42,7 +45,7 @@ public class SpotOvernightOrderService {
|
|||
this.swapCalculationService = swapCalculationService;
|
||||
}
|
||||
|
||||
public void process(Registry registry) {
|
||||
public void process(Registry registry) throws ListingNotFound {
|
||||
String orderCategory = imdgQueryService.resolveOrderCategory(registry.getCompanyId());
|
||||
|
||||
Market market = imdgQueryService.getSpotMarket();
|
||||
|
|
@ -52,6 +55,16 @@ public class SpotOvernightOrderService {
|
|||
CounterpartyInfo rgcm = imdgQueryService.getCompanyByRole(CompanyRole.RGCM);
|
||||
CurrencyCode currency = IEnumKey.getEnumByKey(CurrencyCode.class, registry.getSecuritySymbol());
|
||||
|
||||
try {
|
||||
Listing listingT0 = imdgQueryService.findListing(registry, market.getCode(), SettleCode.T0.getKey());
|
||||
Listing listingT1 = imdgQueryService.findListing(registry, market.getCode(), SettleCode.T1.getKey());
|
||||
if (listingT0 == null || listingT1 == null) {
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new ListingNotFound(DefaultManagementErrors.OperationNotAllowed);
|
||||
}
|
||||
|
||||
OrderCurrencyContext context = OrderCurrencyContext.builder()
|
||||
.registry(registry)
|
||||
.orderCategory(orderCategory)
|
||||
|
|
|
|||
|
|
@ -4,10 +4,13 @@ import java.math.BigDecimal;
|
|||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.clearing.classes.statics.data.misc.Listing;
|
||||
import ru.clearing.classes.statics.data.misc.Market;
|
||||
import ru.clearing.classes.statics.data.misc.OrderCurrency;
|
||||
import ru.clearing.classes.statics.data.registry.Registry;
|
||||
import ru.clearing.classes.statics.data.security.RiskParameter;
|
||||
import ru.spcex.clearing.dflt.management.error.DefaultManagementErrors;
|
||||
import ru.spcex.clearing.dflt.management.error.ListingNotFound;
|
||||
import ru.spcex.clearing.dflt.management.model.CounterpartyInfo;
|
||||
import ru.spcex.clearing.dflt.management.model.FinalCalculationResult;
|
||||
import ru.spcex.clearing.dflt.management.model.OrderCurrencyContext;
|
||||
|
|
@ -42,7 +45,7 @@ public class SwapOvernightOrderService {
|
|||
this.swapCalculationService = swapCalculationService;
|
||||
}
|
||||
|
||||
public void process(Registry registry) {
|
||||
public void process(Registry registry) throws ListingNotFound {
|
||||
String orderCategory = imdgQueryService.resolveOrderCategory(registry.getCompanyId());
|
||||
|
||||
Market market = imdgQueryService.getSwapMarket();
|
||||
|
|
@ -51,6 +54,15 @@ public class SwapOvernightOrderService {
|
|||
CounterpartyInfo clcc = imdgQueryService.getCompanyByRole(CompanyRole.CLCC);
|
||||
CounterpartyInfo rgcm = imdgQueryService.getCompanyByRole(CompanyRole.RGCM);
|
||||
CurrencyCode currency = IEnumKey.getEnumByKey(CurrencyCode.class, registry.getSecuritySymbol());
|
||||
try {
|
||||
Listing listing = imdgQueryService.findListing(registry, market.getCode(), SettleCode.T1.getKey());
|
||||
if (listing == null) {
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new ListingNotFound(DefaultManagementErrors.OperationNotAllowed);
|
||||
}
|
||||
|
||||
OrderCurrencyContext context = OrderCurrencyContext.builder()
|
||||
.registry(registry)
|
||||
.orderCategory(orderCategory)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue