diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/MultiCompanyService.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/MultiCompanyService.java index d6ecd0ac4..f96baeec1 100644 --- a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/MultiCompanyService.java +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/MultiCompanyService.java @@ -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 additionalSymbols(CompanyNewRequest companyNewReq) { + BiFunction> 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()); diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/CompanySymbol.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/CompanySymbol.java index e89c3179b..3e044cea7 100644 --- a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/CompanySymbol.java +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/CompanySymbol.java @@ -13,6 +13,7 @@ public enum CompanySymbol implements IEnumKey { UUID("UUID"), TRDC("TRDC"), CLRC("CLRC"), + INTC("INTC"), RGRC("RGRC"), LICB("LICB"), LICR("LICR"),