Merge branch 'gateway' into dev
This commit is contained in:
commit
14b29edf84
8 changed files with 86 additions and 27 deletions
|
|
@ -29,11 +29,12 @@ import ru.spcex.platform.imdg.api.Imdg;
|
|||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.utils.error.ValidationException;
|
||||
import ru.spcex.platform.utils.log.ExceptionUtils;
|
||||
import ru.spcex.platform.utils.text.TextUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
import java.util.function.BiFunction;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
/**
|
||||
* Обрабатывает MultiCompanyRequest и распределяет сложный объект по...
|
||||
|
|
@ -119,6 +120,10 @@ public class MultiCompanyService
|
|||
boolean txOk = false; // todo IMDG transaction
|
||||
synchronized (companyService) {
|
||||
try {
|
||||
//часть в companyService
|
||||
req.setCompanySymbols(
|
||||
Stream.concat(req.getCompanySymbols().stream(), additionalSymbols(req.getCompany())).collect(Collectors.toList())
|
||||
);
|
||||
companyId = getCompanyIdForCompanySymbols(req.getUuid(), req.getCompany());
|
||||
log.debug("For request {} (uuid {}) company {}.", baseRequest.getId(), req.getUuid(), companyId == null ? "not found" : ("found, id=" + companyId));
|
||||
|
||||
|
|
@ -154,7 +159,7 @@ public class MultiCompanyService
|
|||
for (CompanySymbolNewRequest partRequest : req.getCompanySymbols()) {
|
||||
CompanySymbols existSymbol = findCompanySymbols(partRequest);
|
||||
if (existSymbol == null) {
|
||||
log.trace("For company[{}] do new companySymbol", companyId);
|
||||
log.trace("For company[{}] do new companySymbol", companyId);
|
||||
Long id = companySymbolService.create(partRequest);
|
||||
} else {
|
||||
log.trace("For company[{}] do update companySymbol[{}]", companyId, existSymbol.getId());
|
||||
|
|
@ -205,6 +210,24 @@ public class MultiCompanyService
|
|||
return null;
|
||||
}
|
||||
|
||||
private Stream<CompanySymbolNewRequest> additionalSymbols(CompanyNewRequest companyNewReq) {
|
||||
BiFunction<String, String, Optional<CompanySymbolNewRequest>> symbolCreation = (companySymbol, companySymbolValue) -> {
|
||||
if (companySymbolValue == null || TextUtil.isEmpty(companySymbolValue)) {
|
||||
return Optional.empty();
|
||||
}
|
||||
CompanySymbolNewRequest companySymbolNewRequest = new CompanySymbolNewRequest();
|
||||
companySymbolNewRequest.setCompanySymbol(companySymbol);
|
||||
companySymbolNewRequest.setCompanySymbolValue(companySymbolValue);
|
||||
return Optional.of(companySymbolNewRequest);
|
||||
};
|
||||
return Stream.of(symbolCreation.apply(CompanySymbol.TRDC.getKey(), companyNewReq.getTradingCode()),
|
||||
symbolCreation.apply(CompanySymbol.CLRC.getKey(), companyNewReq.getClearingCode()),
|
||||
symbolCreation.apply(CompanySymbol.INTC.getKey(), companyNewReq.getInitiatorCode()),
|
||||
symbolCreation.apply(CompanySymbol.RGRC.getKey(), companyNewReq.getRegistrationCode()))
|
||||
.filter(Optional::isPresent)
|
||||
.map(Optional::get);
|
||||
}
|
||||
|
||||
void validateReply(Long companyId, String process, RequestInfoUpdate replyI) {
|
||||
if (replyI != null && replyI.getMessage() != null) {
|
||||
log.warn("Error process {} for companyId={}: {}", process, companyId, replyI.getMessage());
|
||||
|
|
|
|||
|
|
@ -10,7 +10,9 @@ public class MoneyMarketSecurityRequestAdapter {
|
|||
|
||||
public MoneyMarketSecurityNewRequest toMoneyMarketSecurityNewRequest(ExchangeInstrument exchangeInstrument) {
|
||||
MoneyMarketSecurityNewRequest moneyMarketSecurityNewRequest = new MoneyMarketSecurityNewRequest();
|
||||
moneyMarketSecurityNewRequest.setSecuritySymbol(exchangeInstrument.getCode().substring(0, 6));
|
||||
String code = exchangeInstrument.getCode();
|
||||
moneyMarketSecurityNewRequest.setSecuritySymbol(code.substring(0, 6));
|
||||
moneyMarketSecurityNewRequest.setConvention(code);
|
||||
moneyMarketSecurityNewRequest.setNominalCurrency(exchangeInstrument.getSettlementCurrencyLetterCode());
|
||||
moneyMarketSecurityNewRequest.setInstrumentType(InstrumentType.RATE.getKey());
|
||||
moneyMarketSecurityNewRequest.setShortName(exchangeInstrument.getName());
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import ru.spcex.clearing.gatewayapi.controller.inbound.request.listing.fond.Fond
|
|||
import ru.spcex.clearing.gatewayapi.controller.inbound.request.listing.fond.IncomeListing;
|
||||
import ru.spcex.clearing.gatewayapi.controller.inbound.request.listing.fond.Nominal;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.*;
|
||||
import ru.spcex.platform.utils.text.TextUtil;
|
||||
|
||||
@Service
|
||||
public class SecurityRequestAdapter {
|
||||
|
|
@ -46,7 +47,11 @@ public class SecurityRequestAdapter {
|
|||
|
||||
public ListingNewRequest toIncomeListing(IncomeListing incomeListing) {
|
||||
ListingNewRequest listingNewRequest = new ListingNewRequest();
|
||||
listingNewRequest.setMarket(incomeListing.getCode());
|
||||
String code = incomeListing.getCode();
|
||||
listingNewRequest.setMarket(code);
|
||||
if (!TextUtil.isEmpty(code)) {
|
||||
listingNewRequest.setSymbolCode(code.substring(0, Math.min(6, code.length())));
|
||||
}
|
||||
listingNewRequest.setLotSize(incomeListing.getLotSize());
|
||||
listingNewRequest.setTradingCurrency(incomeListing.getTradingCurrency());
|
||||
listingNewRequest.setWorkflowStatus(incomeListing.getWorkflowStatus());
|
||||
|
|
|
|||
|
|
@ -186,7 +186,7 @@ public class GatewaySecurityService extends QueueConsumer implements Initializin
|
|||
if (InstrumentType.BOND.equalsByKey(req.getSecurityType())) {
|
||||
FixedIncomeGatewayRequest fixedIncomeGatewayRequest = (FixedIncomeGatewayRequest) req;
|
||||
FixedIncomeSecurityNewRequest fixedIncomeRequest = fixedIncomeGatewayRequest.getSecurity();
|
||||
if (StringUtils.isEmpty(fixedIncomeRequest.getSecuritySymbol())){
|
||||
if (StringUtils.isEmpty(fixedIncomeRequest.getSecuritySymbol())) {
|
||||
log.warn("Skip creating eqtySecurtity without securityId: uuid: {}", req.getUuid());
|
||||
return null;
|
||||
}
|
||||
|
|
@ -206,7 +206,7 @@ public class GatewaySecurityService extends QueueConsumer implements Initializin
|
|||
if (InstrumentType.EQTY.equalsByKey(req.getSecurityType())) {
|
||||
EquitySecurityGatewayRequest equitySecurityGatewayRequest = (EquitySecurityGatewayRequest) req;
|
||||
EquitySecurityNewRequest equityRequest = equitySecurityGatewayRequest.getSecurity();
|
||||
if (StringUtils.isEmpty(equityRequest.getSecuritySymbol())){
|
||||
if (StringUtils.isEmpty(equityRequest.getSecuritySymbol())) {
|
||||
log.warn("Skip creating eqtySecurtity without securityId: uuid: {}", req.getUuid());
|
||||
return null;
|
||||
}
|
||||
|
|
@ -244,8 +244,8 @@ public class GatewaySecurityService extends QueueConsumer implements Initializin
|
|||
if (req.getFixedIncomesCashFlow() == null)
|
||||
req.setFixedIncomesCashFlow(new ArrayList<>());
|
||||
|
||||
try {
|
||||
for (Object partRequestO : req.getListing()) {
|
||||
for (Object partRequestO : req.getListing()) {
|
||||
try {
|
||||
ListingNewRequest partRequest = (ListingNewRequest) partRequestO;
|
||||
partRequest.setSecurityId(securityId);
|
||||
Listing existListing = findListing(partRequest);
|
||||
|
|
@ -259,13 +259,15 @@ public class GatewaySecurityService extends QueueConsumer implements Initializin
|
|||
Listing listing = listingService.updateListing0(partUpdateRequest);
|
||||
log.debug("Has updated listing.id={}", listing.getId());
|
||||
}
|
||||
} catch (ValidationException expected) {
|
||||
log.warn("Error create or update listing: {}", expected.toString());
|
||||
return requestHelper.makeErrorResponse(baseRequest, expected.getEnumMsg());
|
||||
}
|
||||
} catch (ValidationException expected) {
|
||||
log.warn("Error create or update listing: {}", expected.toString());
|
||||
return requestHelper.makeErrorResponse(baseRequest, expected.getEnumMsg());
|
||||
}
|
||||
try {
|
||||
for (CouponPeriodNewRequest partRequest : (List<CouponPeriodNewRequest>) req.getCouponPeriods()) {
|
||||
|
||||
|
||||
for (CouponPeriodNewRequest partRequest : (List<CouponPeriodNewRequest>) req.getCouponPeriods()) {
|
||||
try {
|
||||
partRequest.setSecurityId(securityId);
|
||||
CouponPeriod existCouponPeriod = findCouponPeriod(partRequest);
|
||||
if (existCouponPeriod == null) {
|
||||
|
|
@ -278,13 +280,14 @@ public class GatewaySecurityService extends QueueConsumer implements Initializin
|
|||
CouponPeriod couponPeriod = couponPeriodService.updateCouponPeriod0(partUpdateRequest);
|
||||
log.debug("Has update couponPeriod.id={}", couponPeriod.getId());
|
||||
}
|
||||
} catch (ValidationException expected) {
|
||||
log.warn("Error create or update couponPeriod: {}", expected.toString());
|
||||
return requestHelper.makeErrorResponse(baseRequest, expected.getEnumMsg());
|
||||
}
|
||||
} catch (ValidationException expected) {
|
||||
log.warn("Error create or update couponPeriod: {}", expected.toString());
|
||||
return requestHelper.makeErrorResponse(baseRequest, expected.getEnumMsg());
|
||||
}
|
||||
try {
|
||||
for (FixedIncomeCashFlowNewRequest partRequest : (List<FixedIncomeCashFlowNewRequest>) req.getFixedIncomesCashFlow()) {
|
||||
|
||||
for (FixedIncomeCashFlowNewRequest partRequest : (List<FixedIncomeCashFlowNewRequest>) req.getFixedIncomesCashFlow()) {
|
||||
try {
|
||||
partRequest.setSecuritySymbol(String.valueOf(securityId)); // не getSecuritySymbol
|
||||
FixedIncomeCashFlow existFixedIncomeCashFlow = findFixedIncomeCashFlow(partRequest);
|
||||
if (existFixedIncomeCashFlow == null) {
|
||||
|
|
@ -297,10 +300,10 @@ public class GatewaySecurityService extends QueueConsumer implements Initializin
|
|||
FixedIncomeCashFlow fixedIncomeCashFlow = fixedIncomeCashFlowService.fixedIncomeCashFlowUpdate0(partUpdateRequest);
|
||||
log.debug("Has update fixedIncomeCashFlow.id={}", fixedIncomeCashFlow.getId());
|
||||
}
|
||||
} catch (ValidationException expected) {
|
||||
log.warn("Error create or update fixedIncomeCashFlow: {}", expected.toString());
|
||||
return requestHelper.makeErrorResponse(baseRequest, expected.getEnumMsg());
|
||||
}
|
||||
} catch (ValidationException expected) {
|
||||
log.warn("Error create or update fixedIncomeCashFlow: {}", expected.toString());
|
||||
return requestHelper.makeErrorResponse(baseRequest, expected.getEnumMsg());
|
||||
}
|
||||
|
||||
log.debug("successfully processed, request id {}", baseRequest.getId());
|
||||
|
|
@ -398,6 +401,7 @@ public class GatewaySecurityService extends QueueConsumer implements Initializin
|
|||
updateRequest.setLotSize(newRequest.getLotSize());
|
||||
updateRequest.setTradingCurrency(newRequest.getTradingCurrency());
|
||||
updateRequest.setWorkflowStatus(newRequest.getWorkflowStatus());
|
||||
updateRequest.setSymbolCode(newRequest.getSymbolCode());
|
||||
return updateRequest;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -18,8 +18,8 @@ import ru.spcex.clearing.platform.messaging.domain.cud.securitites.ListingNewReq
|
|||
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.ListingUpdateRequest;
|
||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||
import ru.spcex.clearing.util.security.SecuritySelector;
|
||||
import ru.spcex.clearing.securities.validation.ListingValidationProvider;
|
||||
import ru.spcex.clearing.util.security.SecuritySelector;
|
||||
import ru.spcex.clearing.util.security.UserRoleVerification;
|
||||
import ru.spcex.clearing.util.services.RequestHelper;
|
||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
||||
|
|
@ -107,7 +107,11 @@ public class ListingService extends QueueConsumer implements InitializingBean {
|
|||
listing.setSecurityId(req.getSecurityId());
|
||||
listing.setMarket(req.getMarket());
|
||||
listing.setLotSize(req.getLotSize());
|
||||
listing.setSymbolCode(security.getSecuritySymbol()); // listing.setSymbolCode(req.getSymbolCode());
|
||||
if (req.getSymbolCode() != null) {
|
||||
listing.setSymbolCode(req.getSymbolCode()); // listing.setSymbolCode(req.getSymbolCode());
|
||||
} else {
|
||||
listing.setSymbolCode(security.getSecuritySymbol());
|
||||
}
|
||||
listing.setSymbolName(security.getFullName()); // req.getSymbolName
|
||||
listing.setTradingCurrency(req.getTradingCurrency());
|
||||
if (StringUtils.isEmpty(req.getWorkflowStatus())) {
|
||||
|
|
@ -147,7 +151,7 @@ public class ListingService extends QueueConsumer implements InitializingBean {
|
|||
|
||||
listing.setUpdated(Instant.now());
|
||||
listing.setLotSize(req.getLotSize());
|
||||
//if (req.getSymbolCode()!=null) listing.setSymbolCode(req.getSymbolCode());
|
||||
if (req.getSymbolCode()!=null) listing.setSymbolCode(req.getSymbolCode());
|
||||
//if (req.getSymbolName!=null) listing.setSymbolName(req.getSymbolName);
|
||||
listing.setTradingCurrency(req.getTradingCurrency());
|
||||
if (StringUtils.isNotEmpty(req.getWorkflowStatus())) {
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ public enum CompanySymbol implements IEnumKey {
|
|||
UUID("UUID"),
|
||||
TRDC("TRDC"),
|
||||
CLRC("CLRC"),
|
||||
INTC("INTC"),
|
||||
RGRC("RGRC"),
|
||||
LICB("LICB"),
|
||||
LICR("LICR"),
|
||||
|
|
|
|||
|
|
@ -15,6 +15,8 @@ public class ListingNewRequest {
|
|||
private String tradingCurrency;
|
||||
@JsonProperty
|
||||
private String workflowStatus;
|
||||
@JsonProperty
|
||||
private String symbolCode;
|
||||
|
||||
public Long getSecurityId() {
|
||||
return securityId;
|
||||
|
|
@ -55,4 +57,12 @@ public class ListingNewRequest {
|
|||
public void setWorkflowStatus(String workflowStatus) {
|
||||
this.workflowStatus = workflowStatus;
|
||||
}
|
||||
|
||||
public String getSymbolCode() {
|
||||
return symbolCode;
|
||||
}
|
||||
|
||||
public void setSymbolCode(String symbolCode) {
|
||||
this.symbolCode = symbolCode;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,6 +18,8 @@ public class ListingUpdateRequest implements WithId {
|
|||
private String tradingCurrency;
|
||||
@JsonProperty
|
||||
private String workflowStatus;
|
||||
@JsonProperty
|
||||
private String symbolCode;
|
||||
|
||||
@Override
|
||||
public Long getId() {
|
||||
|
|
@ -67,4 +69,12 @@ public class ListingUpdateRequest implements WithId {
|
|||
public void setWorkflowStatus(String workflowStatus) {
|
||||
this.workflowStatus = workflowStatus;
|
||||
}
|
||||
|
||||
public String getSymbolCode() {
|
||||
return symbolCode;
|
||||
}
|
||||
|
||||
public void setSymbolCode(String symbolCode) {
|
||||
this.symbolCode = symbolCode;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue