diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/adapter/CurrencyPairSecurityRequestAdapter.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/adapter/CurrencyPairSecurityRequestAdapter.java index 45739fc34..1782a637b 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/adapter/CurrencyPairSecurityRequestAdapter.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/adapter/CurrencyPairSecurityRequestAdapter.java @@ -22,9 +22,11 @@ public class CurrencyPairSecurityRequestAdapter { securityNewRequest.setClearingOrganization(currencyInstrument.getClearingOrganization()); securityNewRequest.setWorkflowStatus(currencyInstrument.getWorkflowStatus()); + // Для listing securityNewRequest.setMinStep(currencyInstrument.getMinStep()); securityNewRequest.setPrecision(currencyInstrument.getPrecision()); securityNewRequest.setLotSize(currencyInstrument.getLotSize()); + req.setTradeMode(currencyInstrument.getTradingMode()); // для currencyPairId req.setLotCurrencyLetterCode(currencyInstrument.getLotCurrencyLetterCode()); diff --git a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/GatewaySecurityService.java b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/GatewaySecurityService.java index 18ec7d91a..e43786e2d 100644 --- a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/GatewaySecurityService.java +++ b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/GatewaySecurityService.java @@ -36,10 +36,7 @@ import ru.spcex.clearing.securities.validation.ValidationProvider; import ru.spcex.clearing.util.security.UserRoleVerification; import ru.spcex.clearing.util.services.RequestHelper; import ru.spcex.clearing.validation.common.ValidationHelper; -import ru.spcex.platform.enumeration.CompanySymbol; -import ru.spcex.platform.enumeration.InstrumentType; -import ru.spcex.platform.enumeration.UserRole; -import ru.spcex.platform.enumeration.WorkflowStatus; +import ru.spcex.platform.enumeration.*; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgId; import ru.spcex.platform.imdg.api.ImdgProvider; @@ -195,6 +192,7 @@ public class GatewaySecurityService extends QueueConsumer implements Initializin CurrencyPairSecurityNewGatewayRequest req = (CurrencyPairSecurityNewGatewayRequest) baseRequest.getRequestPayload(); Security security = null; + Long securityId = null; try { CurrencyPairSecurityNewRequest currencyPairRequest = req.getCurrencySecurityNewRequest(); @@ -231,6 +229,31 @@ public class GatewaySecurityService extends QueueConsumer implements Initializin CurrencyPairSecurityUpdateRequest updateRequest = toUpdateRequest(security, currencyPairRequest); security = currencyPairSecurityService.updateCurrencyPairSecurity0(updateRequest); } + securityId = security.getId(); + + + { + ListingNewRequest listingReq = new ListingNewRequest(); + listingReq.setSecurityId(securityId); + listingReq.setMarket(req.getTradeMode()); + listingReq.setLotSize(currencyPairRequest.getLotSize()); + listingReq.setSymbolCode(currencyPairRequest.getSecuritySymbol()); + listingReq.setMinStep(currencyPairRequest.getMinStep()); + listingReq.setPrecision(currencyPairRequest.getPrecision()); + listingReq.setSymbolName(security.getFullName()); + listingReq.setTradingCurrency(CurrencyCode.RUB.getKey()); + Listing existListing = findListing(listingReq); + if (existListing == null) { + log.trace("For currency pair security[{}] do new Listing", securityId); + Listing listing = listingService.newListing0(listingReq); + log.debug("New listing.id={}", listing.getId()); + } else { + log.trace("For currency pair security[{}] do update Listing[{}]", securityId, existListing.getId()); + ListingUpdateRequest partUpdateRequest = toUpdateRequest(existListing, listingReq); + Listing listing = listingService.updateListing0(partUpdateRequest); + log.debug("Has updated listing.id={}", listing.getId()); + } + } } else { log.warn("currencyPairSecurityGatewayRequest is null"); } @@ -244,17 +267,14 @@ public class GatewaySecurityService extends QueueConsumer implements Initializin } } - Long securityId; if (security == null) { log.error("No new or update security."); - securityId = null; } else { - securityId = security.getId(); log.debug("Use security {}.id={} ({} {})", security.getClass().getSimpleName(), securityId, security.getInstrumentType(), security.getShortName()); } - log.debug("successfully processed, request id {}, currencyPairId={}", - baseRequest.getId(), securityId); + log.debug("successfully processed, request id {}", + baseRequest.getId()); return null; // default success } @@ -516,6 +536,8 @@ public class GatewaySecurityService extends QueueConsumer implements Initializin updateRequest.setWorkflowStatus(newRequest.getWorkflowStatus()); updateRequest.setSymbolCode(newRequest.getSymbolCode()); updateRequest.setSymbolName(newRequest.getSymbolName()); + updateRequest.setMinStep(newRequest.getMinStep()); + updateRequest.setPrecision(newRequest.getPrecision()); return updateRequest; } diff --git a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/ListingService.java b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/ListingService.java index 1ba0cd4e8..3840fe586 100644 --- a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/ListingService.java +++ b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/ListingService.java @@ -125,6 +125,8 @@ public class ListingService extends QueueConsumer implements InitializingBean { } else { listing.setWorkflowStatus(req.getWorkflowStatus()); } + listing.setMinStep(req.getMinStep()); + listing.setPrecision(req.getPrecision()); listingImdg.insert(listing); return listing; @@ -163,6 +165,8 @@ public class ListingService extends QueueConsumer implements InitializingBean { if (StringUtils.isNotEmpty(req.getWorkflowStatus())) { listing.setWorkflowStatus(req.getWorkflowStatus()); } + if (req.getMinStep() != null) listing.setMinStep(req.getMinStep()); + if (req.getPrecision() != null) listing.setPrecision(req.getPrecision()); listingImdg.update(listing); return listing; diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/securitites/ListingNewRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/securitites/ListingNewRequest.java index e410563a7..78f50f8ee 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/securitites/ListingNewRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/securitites/ListingNewRequest.java @@ -19,6 +19,10 @@ public class ListingNewRequest { private String symbolCode; @JsonProperty private String symbolName; + @JsonProperty + private BigDecimal minStep; + @JsonProperty + private BigDecimal precision; public Long getSecurityId() { return securityId; @@ -75,4 +79,20 @@ public class ListingNewRequest { public void setSymbolName(String symbolName) { this.symbolName = symbolName; } + + public BigDecimal getMinStep() { + return minStep; + } + + public void setMinStep(BigDecimal minStep) { + this.minStep = minStep; + } + + public BigDecimal getPrecision() { + return precision; + } + + public void setPrecision(BigDecimal precision) { + this.precision = precision; + } } diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/securitites/ListingUpdateRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/securitites/ListingUpdateRequest.java index c8e7ccc24..8b7a9edff 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/securitites/ListingUpdateRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/securitites/ListingUpdateRequest.java @@ -22,6 +22,10 @@ public class ListingUpdateRequest implements WithId { private String symbolCode; @JsonProperty private String symbolName; + @JsonProperty + private BigDecimal minStep; + @JsonProperty + private BigDecimal precision; @Override public Long getId() { @@ -87,4 +91,20 @@ public class ListingUpdateRequest implements WithId { public void setSymbolName(String symbolName) { this.symbolName = symbolName; } + + public BigDecimal getMinStep() { + return minStep; + } + + public void setMinStep(BigDecimal minStep) { + this.minStep = minStep; + } + + public BigDecimal getPrecision() { + return precision; + } + + public void setPrecision(BigDecimal precision) { + this.precision = precision; + } } diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/security/CurrencyPairSecurityNewGatewayRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/security/CurrencyPairSecurityNewGatewayRequest.java index 64a41eb19..214b59d86 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/security/CurrencyPairSecurityNewGatewayRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/security/CurrencyPairSecurityNewGatewayRequest.java @@ -8,6 +8,8 @@ public class CurrencyPairSecurityNewGatewayRequest { // in currencySecurityNewRequest: @JsonProperty + private String tradeMode; + @JsonProperty private String lotCurrencyLetterCode; @JsonProperty private String matchedCurrencyLetterCode; @@ -20,6 +22,14 @@ public class CurrencyPairSecurityNewGatewayRequest { this.currencySecurityNewRequest = currencySecurityNewRequest; } + public String getTradeMode() { + return tradeMode; + } + + public void setTradeMode(String tradeMode) { + this.tradeMode = tradeMode; + } + public String getLotCurrencyLetterCode() { return lotCurrencyLetterCode; }