реформат реквеста для security-service

This commit is contained in:
etreschenkov 2023-06-22 10:52:16 +03:00
parent 1d639b5b48
commit bf68d50b3e
8 changed files with 54 additions and 52 deletions

View file

@ -9,7 +9,6 @@ import ru.spcex.clearing.gatewayapi.controller.request.listing.fond.IssuerCompan
import ru.spcex.clearing.gatewayapi.controller.request.listing.fond.IssuerCompanySymbols; import ru.spcex.clearing.gatewayapi.controller.request.listing.fond.IssuerCompanySymbols;
import ru.spcex.clearing.gatewayapi.controller.request.listing.fond.IssuerContact; import ru.spcex.clearing.gatewayapi.controller.request.listing.fond.IssuerContact;
import ru.spcex.clearing.gatewayapi.service.adapter.IssuerCompanyRequestAdapter; import ru.spcex.clearing.gatewayapi.service.adapter.IssuerCompanyRequestAdapter;
import ru.spcex.clearing.platform.messaging.domain.Consts;
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolNewRequest; import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolNewRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.company.ContactNewRequest; import ru.spcex.clearing.platform.messaging.domain.cud.company.ContactNewRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.company.SecurityMkrGatewayRequest; import ru.spcex.clearing.platform.messaging.domain.cud.company.SecurityMkrGatewayRequest;
@ -55,7 +54,8 @@ public class IssueCompanyService {
.map(issuerCompanyRequestAdapter::toCompanyInfoRequest) .map(issuerCompanyRequestAdapter::toCompanyInfoRequest)
.ifPresent(securityMkrGatewayRequest::setCompanyInfoUpdateRequest); .ifPresent(securityMkrGatewayRequest::setCompanyInfoUpdateRequest);
kafkaSender.sendRequestToQueue(Consts.DESTINATION_ISSUER_COMPANY_GATEWAY_REQUEST, securityMkrGatewayRequest); //todo реализовать на стороне security-service обработку и правильную группировку
// kafkaSender.sendRequestToQueue(Consts.DESTINATION_ISSUER_COMPANY_GATEWAY_REQUEST, securityMkrGatewayRequest);
} }
} }

View file

@ -47,23 +47,30 @@ public class SecurityService {
List<FixedIncomeCashFlowNewRequest> cashFlowRequests = nominals.stream(). List<FixedIncomeCashFlowNewRequest> cashFlowRequests = nominals.stream().
map(securityRequestAdapter::toFixedIncomeCashFlowRequest).toList(); map(securityRequestAdapter::toFixedIncomeCashFlowRequest).toList();
SecurityFondGatewayRequest<?> securityGatewayRequest; SecurityFondGatewayRequest securityGatewayRequest;
if (InstrumentType.BOND.equalsByKey(security.getInstrumentType())) { if (InstrumentType.BOND.equalsByKey(security.getInstrumentType())) {
FixedIncomeSecurityNewRequest fixedIncomeSecurityNewRequest = securityRequestAdapter.toFixedIncomeSecurityRequest(security); FixedIncomeSecurityNewRequest fixedIncomeSecurityNewRequest = securityRequestAdapter.toFixedIncomeSecurityRequest(security);
securityGatewayRequest = new FixedIncomeGatewayRequest(fixedIncomeSecurityNewRequest); securityGatewayRequest = new FixedIncomeGatewayRequest(fixedIncomeSecurityNewRequest);
} else {EquitySecurityNewRequest } else {
equitySecurityNewRequest = securityRequestAdapter.toEquitySecurityNewRequest(security); EquitySecurityNewRequest equitySecurityNewRequest = securityRequestAdapter.toEquitySecurityNewRequest(security);
securityGatewayRequest = new EquitySecurityGatewayRequest(equitySecurityNewRequest); securityGatewayRequest = new EquitySecurityGatewayRequest(equitySecurityNewRequest);
} }
securityGatewayRequest.setSecurityType(security.getInstrumentType()); fillRequest(securityGatewayRequest, security, listingRequests, couponPeriodRequests, cashFlowRequests);
securityGatewayRequest.setListing(listingRequests); kafkaSender.sendRequestToQueue(Consts.DESTINATION_SECURITY_GATEWAY, securityGatewayRequest);
securityGatewayRequest.setCouponPeriods(couponPeriodRequests);
securityGatewayRequest.setFixedIncomesCashFlow(cashFlowRequests);
kafkaSender.sendRequestToQueue(Consts.DESTINATION_SECURITY_MULTIREQUEST, securityGatewayRequest);
} }
} }
private void fillRequest(SecurityFondGatewayRequest securityGatewayRequest,
FondSecurity security,
List<ListingNewRequest> listingRequests,
List<CouponPeriodNewRequest> couponPeriodRequests,
List<FixedIncomeCashFlowNewRequest> cashFlowRequests) {
securityGatewayRequest.setSecurityType(security.getInstrumentType());
securityGatewayRequest.setListing(listingRequests);
securityGatewayRequest.setCouponPeriods(couponPeriodRequests);
securityGatewayRequest.setFixedIncomesCashFlow(cashFlowRequests);
}
private <T extends WithSecurityId> List<T> groupByCompanyId(List<T> listToProcess, UUID securityId) { private <T extends WithSecurityId> List<T> groupByCompanyId(List<T> listToProcess, UUID securityId) {
return listToProcess.stream().filter(t -> t.getSecurityId().equals(securityId)).collect(Collectors.toList()); return listToProcess.stream().filter(t -> t.getSecurityId().equals(securityId)).collect(Collectors.toList());
} }

View file

@ -26,7 +26,7 @@ public class OutboundRequestBuilder {
} }
public OutboundRequestBuilder type(OutboundRequestType outboundRequestType) { public OutboundRequestBuilder type(OutboundRequestType outboundRequestType) {
this.section = section; this.requestType = outboundRequestType;
return this; return this;
} }
@ -39,8 +39,12 @@ public class OutboundRequestBuilder {
OutboundRequest outboundRequest = new OutboundRequest(); OutboundRequest outboundRequest = new OutboundRequest();
outboundRequest.setId(UUID.randomUUID()); outboundRequest.setId(UUID.randomUUID());
outboundRequest.setDatetime(Instant.now()); outboundRequest.setDatetime(Instant.now());
outboundRequest.setSection(section); if (section != null) {
outboundRequest.setType(requestType != null ? requestType.getKey() : null); outboundRequest.setSection(section);
}
if (requestType != null) {
outboundRequest.setType(requestType.getKey());
}
outboundRequest.setContent(content); outboundRequest.setContent(content);
return outboundRequest; return outboundRequest;
} }

View file

@ -20,6 +20,8 @@ import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.ActionType; import ru.spcex.clearing.platform.messaging.domain.ActionType;
import ru.spcex.clearing.platform.messaging.domain.BaseRequest; import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
import ru.spcex.clearing.platform.messaging.domain.Consts; import ru.spcex.clearing.platform.messaging.domain.Consts;
import ru.spcex.clearing.platform.messaging.domain.cud.company.EquitySecurityGatewayRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.company.FixedIncomeGatewayRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.company.SecurityFondGatewayRequest; import ru.spcex.clearing.platform.messaging.domain.cud.company.SecurityFondGatewayRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.*; import ru.spcex.clearing.platform.messaging.domain.cud.securitites.*;
import ru.spcex.clearing.platform.messaging.service.QueueConsumer; import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
@ -176,8 +178,9 @@ public class GatewaySecurityService extends QueueConsumer implements Initializin
Security security = null; Security security = null;
try { try {
if (req.getSecurity() != null && InstrumentType.BOND.equalsByKey(req.getSecurityType())) { if (InstrumentType.BOND.equalsByKey(req.getSecurityType())) {
FixedIncomeSecurityNewRequest fixedIncomeRequest = (FixedIncomeSecurityNewRequest) req.getSecurity(); FixedIncomeGatewayRequest fixedIncomeGatewayRequest = (FixedIncomeGatewayRequest) req;
FixedIncomeSecurityNewRequest fixedIncomeRequest = fixedIncomeGatewayRequest.getSecurity();
fixedIncomeRequest.setIssuerId(companyId); fixedIncomeRequest.setIssuerId(companyId);
log.trace("FixedIncomeSecurityNewRequest - BOND"); log.trace("FixedIncomeSecurityNewRequest - BOND");
String securitySymbol = fixedIncomeRequest.getSecuritySymbol(); String securitySymbol = fixedIncomeRequest.getSecuritySymbol();
@ -190,8 +193,9 @@ public class GatewaySecurityService extends QueueConsumer implements Initializin
security = fixedIncomeSecurityService.updateFixedIncome0(updateRequest); security = fixedIncomeSecurityService.updateFixedIncome0(updateRequest);
} }
} }
if (req.getSecurity() != null && InstrumentType.EQTY.equalsByKey(req.getSecurityType())) { if (InstrumentType.EQTY.equalsByKey(req.getSecurityType())) {
EquitySecurityNewRequest equityRequest = (EquitySecurityNewRequest) req.getSecurity(); EquitySecurityGatewayRequest equitySecurityGatewayRequest = (EquitySecurityGatewayRequest) req;
EquitySecurityNewRequest equityRequest = equitySecurityGatewayRequest.getSecurity();
equityRequest.setIssuerId(companyId); equityRequest.setIssuerId(companyId);
log.trace("EquitySecurityNewRequest - FOND"); log.trace("EquitySecurityNewRequest - FOND");
String securitySymbol = equityRequest.getSecuritySymbol(); String securitySymbol = equityRequest.getSecuritySymbol();

View file

@ -46,7 +46,6 @@ public interface Consts {
String DESTINATION_COMPANY_GATEWAY_REQUEST = "company-gateway-request"; String DESTINATION_COMPANY_GATEWAY_REQUEST = "company-gateway-request";
String DESTINATION_ISSUER_COMPANY_GATEWAY_REQUEST = "company-issuer-company-gateway-request"; String DESTINATION_ISSUER_COMPANY_GATEWAY_REQUEST = "company-issuer-company-gateway-request";
String DESTINATION_SECURITY_MULTIREQUEST = "company-multirequest-new";
String DESTINATION_COMPANY_NEW = "company-new"; String DESTINATION_COMPANY_NEW = "company-new";
String DESTINATION_COMPANY_DELETE = "company-delete"; String DESTINATION_COMPANY_DELETE = "company-delete";
String DESTINATION_COMPANY_UPDATE = "company-update"; String DESTINATION_COMPANY_UPDATE = "company-update";

View file

@ -1,19 +1,21 @@
package ru.spcex.clearing.platform.messaging.domain.cud.company; package ru.spcex.clearing.platform.messaging.domain.cud.company;
import com.fasterxml.jackson.annotation.JsonProperty;
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.EquitySecurityNewRequest; import ru.spcex.clearing.platform.messaging.domain.cud.securitites.EquitySecurityNewRequest;
public class EquitySecurityGatewayRequest extends SecurityFondGatewayRequest<EquitySecurityNewRequest> { public class EquitySecurityGatewayRequest extends SecurityFondGatewayRequest {
public EquitySecurityGatewayRequest(EquitySecurityNewRequest request) { @JsonProperty
super(request); private EquitySecurityNewRequest security;
public EquitySecurityGatewayRequest(EquitySecurityNewRequest security) {
this.security = security;
} }
@Override
public EquitySecurityNewRequest getSecurity() { public EquitySecurityNewRequest getSecurity() {
return super.getSecurity(); return security;
} }
@Override
public void setSecurity(EquitySecurityNewRequest security) { public void setSecurity(EquitySecurityNewRequest security) {
super.setSecurity(security); this.security = security;
} }
} }

View file

@ -1,19 +1,21 @@
package ru.spcex.clearing.platform.messaging.domain.cud.company; package ru.spcex.clearing.platform.messaging.domain.cud.company;
import com.fasterxml.jackson.annotation.JsonProperty;
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.FixedIncomeSecurityNewRequest; import ru.spcex.clearing.platform.messaging.domain.cud.securitites.FixedIncomeSecurityNewRequest;
public class FixedIncomeGatewayRequest extends SecurityFondGatewayRequest<FixedIncomeSecurityNewRequest> { public class FixedIncomeGatewayRequest extends SecurityFondGatewayRequest {
public FixedIncomeGatewayRequest(FixedIncomeSecurityNewRequest request) { @JsonProperty
super(request); private FixedIncomeSecurityNewRequest security;
public FixedIncomeGatewayRequest(FixedIncomeSecurityNewRequest security) {
this.security = security;
} }
@Override
public FixedIncomeSecurityNewRequest getSecurity() { public FixedIncomeSecurityNewRequest getSecurity() {
return super.getSecurity(); return security;
} }
@Override
public void setSecurity(FixedIncomeSecurityNewRequest security) { public void setSecurity(FixedIncomeSecurityNewRequest security) {
super.setSecurity(security); this.security = security;
} }
} }

View file

@ -1,21 +1,18 @@
package ru.spcex.clearing.platform.messaging.domain.cud.company; package ru.spcex.clearing.platform.messaging.domain.cud.company;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.CouponPeriodNewRequest; import ru.spcex.clearing.platform.messaging.domain.cud.securitites.CouponPeriodNewRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.FixedIncomeCashFlowNewRequest; import ru.spcex.clearing.platform.messaging.domain.cud.securitites.FixedIncomeCashFlowNewRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.ListingNewRequest; import ru.spcex.clearing.platform.messaging.domain.cud.securitites.ListingNewRequest;
import ru.spcex.platform.classes.base.interfaces.WithInstrumentType;
import ru.spcex.platform.classes.base.interfaces.WithSecuritySymbol;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
public abstract class SecurityFondGatewayRequest<T extends WithSecuritySymbol & WithInstrumentType> { @JsonTypeInfo(use = JsonTypeInfo.Id.CLASS)
public abstract class SecurityFondGatewayRequest {
@JsonProperty @JsonProperty
private String uuid; private String uuid;
@JsonProperty
protected T security;
@JsonProperty @JsonProperty
private List<ListingNewRequest> listing = new ArrayList<>(); private List<ListingNewRequest> listing = new ArrayList<>();
@JsonProperty @JsonProperty
@ -23,10 +20,6 @@ public abstract class SecurityFondGatewayRequest<T extends WithSecuritySymbol &
@JsonProperty @JsonProperty
private List<FixedIncomeCashFlowNewRequest> fixedIncomesCashFlow = new ArrayList<>(); private List<FixedIncomeCashFlowNewRequest> fixedIncomesCashFlow = new ArrayList<>();
public SecurityFondGatewayRequest(T security) {
this.security = security;
}
@JsonProperty @JsonProperty
private String securityType; private String securityType;
@ -37,15 +30,6 @@ public abstract class SecurityFondGatewayRequest<T extends WithSecuritySymbol &
public void setUuid(String uuid) { public void setUuid(String uuid) {
this.uuid = uuid; this.uuid = uuid;
} }
public T getSecurity() {
return security;
}
public void setSecurity(T security) {
this.security = security;
}
public List<ListingNewRequest> getListing() { public List<ListingNewRequest> getListing() {
return listing; return listing;
} }