This commit is contained in:
parent
85a4cc95fe
commit
7f8e2dd027
2 changed files with 29 additions and 5 deletions
|
|
@ -29,11 +29,12 @@ import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
import ru.spcex.platform.utils.error.ValidationException;
|
import ru.spcex.platform.utils.error.ValidationException;
|
||||||
import ru.spcex.platform.utils.log.ExceptionUtils;
|
import ru.spcex.platform.utils.log.ExceptionUtils;
|
||||||
|
import ru.spcex.platform.utils.text.TextUtil;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Collection;
|
import java.util.function.BiFunction;
|
||||||
import java.util.HashMap;
|
import java.util.stream.Collectors;
|
||||||
import java.util.Map;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Обрабатывает MultiCompanyRequest и распределяет сложный объект по...
|
* Обрабатывает MultiCompanyRequest и распределяет сложный объект по...
|
||||||
|
|
@ -119,6 +120,10 @@ public class MultiCompanyService
|
||||||
boolean txOk = false; // todo IMDG transaction
|
boolean txOk = false; // todo IMDG transaction
|
||||||
synchronized (companyService) {
|
synchronized (companyService) {
|
||||||
try {
|
try {
|
||||||
|
//часть в companyService
|
||||||
|
req.setCompanySymbols(
|
||||||
|
Stream.concat(req.getCompanySymbols().stream(), additionalSymbols(req.getCompany())).collect(Collectors.toList())
|
||||||
|
);
|
||||||
companyId = getCompanyIdForCompanySymbols(req.getUuid(), req.getCompany());
|
companyId = getCompanyIdForCompanySymbols(req.getUuid(), req.getCompany());
|
||||||
log.debug("For request {} (uuid {}) company {}.", baseRequest.getId(), req.getUuid(), companyId == null ? "not found" : ("found, id=" + companyId));
|
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()) {
|
for (CompanySymbolNewRequest partRequest : req.getCompanySymbols()) {
|
||||||
CompanySymbols existSymbol = findCompanySymbols(partRequest);
|
CompanySymbols existSymbol = findCompanySymbols(partRequest);
|
||||||
if (existSymbol == null) {
|
if (existSymbol == null) {
|
||||||
log.trace("For company[{}] do new companySymbol", companyId);
|
log.trace("For company[{}] do new companySymbol", companyId);
|
||||||
Long id = companySymbolService.create(partRequest);
|
Long id = companySymbolService.create(partRequest);
|
||||||
} else {
|
} else {
|
||||||
log.trace("For company[{}] do update companySymbol[{}]", companyId, existSymbol.getId());
|
log.trace("For company[{}] do update companySymbol[{}]", companyId, existSymbol.getId());
|
||||||
|
|
@ -205,6 +210,24 @@ public class MultiCompanyService
|
||||||
return null;
|
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) {
|
void validateReply(Long companyId, String process, RequestInfoUpdate replyI) {
|
||||||
if (replyI != null && replyI.getMessage() != null) {
|
if (replyI != null && replyI.getMessage() != null) {
|
||||||
log.warn("Error process {} for companyId={}: {}", process, companyId, replyI.getMessage());
|
log.warn("Error process {} for companyId={}: {}", process, companyId, replyI.getMessage());
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ public enum CompanySymbol implements IEnumKey {
|
||||||
UUID("UUID"),
|
UUID("UUID"),
|
||||||
TRDC("TRDC"),
|
TRDC("TRDC"),
|
||||||
CLRC("CLRC"),
|
CLRC("CLRC"),
|
||||||
|
INTC("INTC"),
|
||||||
RGRC("RGRC"),
|
RGRC("RGRC"),
|
||||||
LICB("LICB"),
|
LICB("LICB"),
|
||||||
LICR("LICR"),
|
LICR("LICR"),
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue