gateway-api securities-service http://jira.mfd.msk:8088/browse/CLS-663 CURR(currency-pair) Listing

This commit is contained in:
AKurakin 2024-04-27 18:07:33 +03:00
parent bbef81e867
commit f4425bd987
6 changed files with 87 additions and 9 deletions

View file

@ -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());

View file

@ -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;
}

View file

@ -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;

View file

@ -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;
}
}

View file

@ -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;
}
}

View file

@ -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;
}