diff --git a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/builder/DigitalCertificateRequestBuilder.java b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/builder/DigitalCertificateRequestBuilder.java new file mode 100644 index 000000000..1b2a92bd0 --- /dev/null +++ b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/builder/DigitalCertificateRequestBuilder.java @@ -0,0 +1,88 @@ +package ru.spcex.clearing.securities.service.builder; + +import java.util.Arrays; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import ru.spcex.clearing.platform.messaging.domain.cud.securitites.DigitalCertificateSecurityGatewayRequest; +import ru.spcex.clearing.platform.messaging.domain.cud.securitites.DigitalCertificateSecurityNewRequest; +import ru.spcex.clearing.platform.messaging.domain.cud.securitites.DigitalCertificateSecurityUpdateRequest; +import ru.spcex.platform.enumeration.InstrumentType; + +public class DigitalCertificateRequestBuilder { + private final Logger log = LoggerFactory.getLogger(getClass()); + private DigitalCertificateSecurityGatewayRequest gatewayRequest; + private Long companyId; + private DigitalCertificateRequestBuilder() { + } + + public static DigitalCertificateRequestBuilder builder() { + return new DigitalCertificateRequestBuilder(); + } + + public DigitalCertificateRequestBuilder gatewayRequest(final DigitalCertificateSecurityGatewayRequest gatewayRequest) { + this.gatewayRequest = gatewayRequest; + return this; + } + + public DigitalCertificateRequestBuilder companyId(final Long companyId) { + this.companyId = companyId; + return this; + } + public DigitalCertificateSecurityNewRequest buildNewRequest() { + DigitalCertificateSecurityNewRequest newRequest = new DigitalCertificateSecurityNewRequest(); + + InstrumentType clrInstrumentType = Arrays.asList("DC", "D") + .contains(gatewayRequest.getInstrumentType()) ? InstrumentType.DGCT : null; + if (clrInstrumentType == null) { + log.warn("Not defined instrumentType={}", gatewayRequest.getInstrumentType()); + return null; + } + newRequest.setInstrumentType(clrInstrumentType.getKey()); + newRequest.setBaseCode(gatewayRequest.getDepoDcId()); + newRequest.setIssuerId(companyId); + newRequest.setShortName(gatewayRequest.getShortName()); + newRequest.setFullName(gatewayRequest.getFullName()); + newRequest.setShortNameEng(gatewayRequest.getShortNameEng()); + newRequest.setFullNameEng(gatewayRequest.getFullNameEng()); + newRequest.setBaseUnitSize(gatewayRequest.getNumberOfUcp().longValue()); + newRequest.setPriceVarianceLimit(gatewayRequest.getDeltaPrice()); + newRequest.setSecuritySymbol(gatewayRequest.getSecuritySymbol()); + newRequest.setWorkflowStatus(gatewayRequest.getWorkflowStatus()); + newRequest.setNominalTypeCode(gatewayRequest.getTypeCode()); + newRequest.setSettlementHouse(gatewayRequest.getSettlementOrganization()); + newRequest.setDepository(gatewayRequest.getSettlementDepository()); + newRequest.setNominalIndexationDate(gatewayRequest.getNominalIndexDate()); + newRequest.setNominalValue(gatewayRequest.getNominalDenominationUnitForDate()); + newRequest.setNominalIndexationSign(gatewayRequest.getNominalIndexFact()); + return newRequest; + } + + public DigitalCertificateSecurityUpdateRequest buildUpdateRequest() { + DigitalCertificateSecurityUpdateRequest updateRequest = new DigitalCertificateSecurityUpdateRequest(); + + InstrumentType clrInstrumentType = Arrays.asList("DC", "D") + .contains(gatewayRequest.getInstrumentType()) ? InstrumentType.DGCT : null; + if (clrInstrumentType == null) { + log.warn("Not defined instrumentType={}", gatewayRequest.getInstrumentType()); + return null; + } + updateRequest.setInstrumentType(clrInstrumentType.getKey()); + updateRequest.setBaseCode(gatewayRequest.getDepoDcId()); + updateRequest.setIssuerId(companyId); + updateRequest.setShortName(gatewayRequest.getShortName()); + updateRequest.setFullName(gatewayRequest.getFullName()); + updateRequest.setShortNameEng(gatewayRequest.getShortNameEng()); + updateRequest.setFullNameEng(gatewayRequest.getFullNameEng()); + updateRequest.setBaseUnitSize(gatewayRequest.getNumberOfUcp().longValue()); + updateRequest.setPriceVarianceLimit(gatewayRequest.getDeltaPrice()); + updateRequest.setSecuritySymbol(gatewayRequest.getSecuritySymbol()); + updateRequest.setWorkflowStatus(gatewayRequest.getWorkflowStatus()); + updateRequest.setNominalTypeCode(gatewayRequest.getTypeCode()); + updateRequest.setSettlementHouse(gatewayRequest.getSettlementOrganization()); + updateRequest.setDepository(gatewayRequest.getSettlementDepository()); + updateRequest.setNominalIndexationDate(gatewayRequest.getNominalIndexDate()); + updateRequest.setNominalValue(gatewayRequest.getNominalDenominationUnitForDate()); + updateRequest.setNominalIndexationSign(gatewayRequest.getNominalIndexFact()); + return updateRequest; + } +} 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 19c9fca07..b08594122 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 @@ -1,7 +1,6 @@ package ru.spcex.clearing.securities.service.cud; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; import java.util.HashMap; import java.util.List; @@ -53,6 +52,7 @@ import ru.spcex.clearing.platform.messaging.domain.cud.security.CurrencyPairSecu import ru.spcex.clearing.platform.messaging.domain.cud.security.CurrencyPairSecurityUpdateRequest; import ru.spcex.clearing.platform.messaging.service.QueueConsumer; import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate; +import ru.spcex.clearing.securities.service.builder.DigitalCertificateRequestBuilder; import ru.spcex.clearing.securities.service.facade.DigitalCertificateSecurityFacade; import ru.spcex.clearing.securities.service.facade.ListingFacade; import ru.spcex.clearing.securities.validation.ListingValidationProvider; @@ -479,47 +479,32 @@ public class GatewaySecurityService extends QueueConsumer implements Initializin private RequestInfoUpdate newDigitalSecurities(BaseRequest baseRequest) { DigitalCertificateSecurityGatewayRequest request = baseRequest.getRequestPayload(); - DigitalCertificateSecurityNewRequest newRequest = new DigitalCertificateSecurityNewRequest(); - newRequest.setBaseCode(request.getDepoDcId()); - - InstrumentType clrInstrumentType = Arrays.asList("DC", "D") - .contains(request.getInstrumentType()) ? InstrumentType.DGCT : null; - if (clrInstrumentType == null) { - log.warn("Not defined instrumentType={}", request.getInstrumentType()); - return null; - } - newRequest.setInstrumentType(request.getInstrumentType()); Map> query = new HashMap<>(); query.put("companySymbol", CompanySymbol.UUID.getKey()); query.put("companySymbolValue", request.getIssuerId()); CompanySymbols companySymbols = companySymbolsImdg.getSingleObjectByFieldValues(query); + Long companyId = null; if (companySymbols != null) { - Long companyId = companySymbols.getCompanyId(); - newRequest.setIssuerId(companyId); + companyId = companySymbols.getCompanyId(); } else { - log.warn("Not found company symbols..skip request"); + log.warn("Not found company symbols.."); } - - newRequest.setShortName(request.getShortName()); - newRequest.setFullName(request.getFullName()); - newRequest.setShortNameEng(request.getShortNameEng()); - newRequest.setFullNameEng(request.getFullNameEng()); - newRequest.setBaseUnitSize(request.getNumberOfUcp().longValue()); - newRequest.setPriceVarianceLimit(request.getDeltaPrice()); - newRequest.setSecuritySymbol(request.getSecuritySymbol()); - newRequest.setWorkflowStatus(request.getWorkflowStatus()); - newRequest.setNominalTypeCode(request.getTypeCode()); - newRequest.setSettlementHouse(request.getSettlementOrganization()); - newRequest.setDepository(request.getSettlementDepository()); - newRequest.setNominalIndexationDate(request.getNominalIndexDate()); - newRequest.setNominalValue(request.getNominalDenominationUnitForDate()); - newRequest.setNominalIndexationSign(request.getNominalIndexFact()); - - digitalCertificateSecurityFacade.newDigitalCertificate(newRequest); + DigitalCertificateRequestBuilder builder = DigitalCertificateRequestBuilder.builder() + .gatewayRequest(request) + .companyId(companyId); Security security = securitySelector.selectSecurityBySymbol(request.getSecuritySymbol()); + if (security == null) { + DigitalCertificateSecurityNewRequest newRequest = builder.buildNewRequest(); + digitalCertificateSecurityFacade.newDigitalCertificate(newRequest); + } else { + DigitalCertificateSecurityUpdateRequest updateRequest = builder.buildUpdateRequest(); + digitalCertificateSecurityFacade.updateDigitalCertificate(updateRequest); + } + + security = securitySelector.selectSecurityBySymbol(request.getSecuritySymbol()); Long securityId = security.getId(); for (ListingNewRequest listingReq : request.getListing()) { try {