ialbert 2023-07-14 18:11:28 +03:00
parent 85a4cc95fe
commit 7f8e2dd027
2 changed files with 29 additions and 5 deletions

View file

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

View file

@ -13,6 +13,7 @@ public enum CompanySymbol implements IEnumKey {
UUID("UUID"),
TRDC("TRDC"),
CLRC("CLRC"),
INTC("INTC"),
RGRC("RGRC"),
LICB("LICB"),
LICR("LICR"),