diff --git a/clearing-parent/gateway-api/pom.xml b/clearing-parent/gateway-api/pom.xml
index 639971466..fa27e7e4b 100644
--- a/clearing-parent/gateway-api/pom.xml
+++ b/clearing-parent/gateway-api/pom.xml
@@ -61,6 +61,21 @@
ru.spcex.clearing
clearing-validation
+
+ org.junit.jupiter
+ junit-jupiter
+ test
+
+
+ org.springframework
+ spring-test
+ test
+
+
+ ru.spcex.clearing
+ test-clearing
+ test
+
diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/companies/CheckMemberCompanyExist.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/companies/CheckMemberCompanyExist.java
index 7dc7715e6..68593e60b 100644
--- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/companies/CheckMemberCompanyExist.java
+++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/companies/CheckMemberCompanyExist.java
@@ -14,11 +14,12 @@ import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.platform.enumeration.CompanySymbol;
import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.ImdgProvider;
+import ru.spcex.platform.utils.enumeration.IEnumKey;
import java.util.Collection;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.Objects;
import java.util.stream.Collectors;
public class CheckMemberCompanyExist extends Stage {
@@ -52,109 +53,35 @@ public class CheckMemberCompanyExist extends Stage {
List companyList = param.getMemberCompanyList();
for (MemberCompany company : companyList) {
- boolean companyFound = false;
List companySymbolsList = company.getMemberCompanySymbolsList();
- // Пытаемся найти компанию по UUID
- Collection companySymbolsFromImdg = companySymbolsImdg.getCollectionObjectsByFieldValues(
- Map.of(
- "companySymbol", "UUID",
- "companySymbolValue", company.getId()
- )
- );
- if (!companySymbolsFromImdg.isEmpty()) {
- CompanySymbols companySymbolFromImdg = companySymbolsFromImdg.iterator().next();
- if (companySymbolsFromImdg.size() > 1) {
- log.warn("For UUID = {} > 1 company_symbols, update first (id = {})", company.getId(), companySymbolFromImdg.getId());
- }
- companyFound = true;
- company.setAlreadyExist(true);
- company.setMapId(companySymbolFromImdg.getId());
+ Map companySymbolMap = new HashMap<>();
+ for (MemberCompanySymbols memberCompanySymbol : companySymbolsList) {
+ if (
+ !memberCompanySymbol.isInvalidData() &&
+ !CompanySymbol.CIO.equalsByKey(memberCompanySymbol.getCompanySymbol()) &&
+ !CompanySymbol.INN.equalsByKey(memberCompanySymbol.getCompanySymbol())
+ ) continue;
+ companySymbolMap.put(IEnumKey.getEnumByKey(CompanySymbol.class, memberCompanySymbol.getCompanySymbol()), memberCompanySymbol.getCompanySymbolValue());
}
+ Long companyId = getCompanyIdForCompanySymbols(company.getId().toString(), companySymbolMap);
- // Если по UUID не нашли, пытаемся найти по INN или CIO
- List companySymbolsListINNorCIO = companySymbolsList.stream()
- .filter(issuerCompanySymbols ->
- !issuerCompanySymbols.isInvalidData() &&
- (
- CompanySymbol.CIO.equalsByKey(issuerCompanySymbols.getCompanySymbol()) ||
- CompanySymbol.INN.equalsByKey(issuerCompanySymbols.getCompanySymbol())
- )
- ).collect(Collectors.toList());
-
- // Для компании не найдены реквизиты, значит создаем новую компанию
- if (companySymbolsListINNorCIO.isEmpty()) {
+ if (companyId != null) {
+ company.setAlreadyExist(true);
+ company.setMapId(companyId);
+ } else {
company.setAlreadyExist(false);
continue;
}
- // Реквизиты найдены, ищем по ним company.id
- for (MemberCompanySymbols companySymbols : companySymbolsListINNorCIO) {
+ // Проверяем реквизиты на необходимость обновления
+ for (MemberCompanySymbols companySymbols : companySymbolsList) {
if (companySymbols.isInvalidData()) continue;
- companySymbolsFromImdg = companySymbolsImdg.getCollectionObjectsByFieldValues(
+ Collection companySymbolsFromImdg = companySymbolsImdg.getCollectionObjectsByFieldValues(
Map.of(
- "companySymbol", companySymbols.getCompanySymbol(),
- "companySymbolValue", companySymbols.getCompanySymbolValue()
- )
- );
- if (companySymbolsFromImdg.isEmpty()) {
- companySymbols.setAlreadyExist(false);
- } else {
- if (companySymbolsFromImdg.size() > 1)
- log.warn("For {} found > 1 company_symbols, use first", companySymbols.getCompanySymbol());
-
- CompanySymbols companySymbolFromImdg = companySymbolsFromImdg.iterator().next();
- Company companyFromImdg = companyImdg.getSingleObjectByID(companySymbolFromImdg.getCompanyId());
- if (companyFromImdg == null) {
-
- // Случай, когда реквизиты есть, а компании нет (по сути данных ошибка в мапе)
- log.warn("For own company_symbols (id = {}) company not found", companySymbolFromImdg.getId());
- companySymbols.setAlreadyExist(false);
- continue;
-
- } else if (companyFound) {
-
- // Случай, когда по переданным реквизитам найдено несколько компании
- if (!Objects.equals(company.getMapId(), companyFromImdg.getId())) {
- log.warn("For company_symbols (company.UUID = {}, {} = {}) found > 1 company (company.id = {}), " +
- "company_symbols skipped",
- company.getId(),
- companySymbols.getCompanySymbol(),
- companySymbols.getCompanySymbolValue(),
- companyFromImdg.getId());
- companySymbols.setInvalidData(true);
- continue;
- }
-
- } else {
-
- // Самый вероятный случай: компания найдена по реквизитам
- companyFound = true;
- company.setAlreadyExist(true);
- company.setMapId(companyFromImdg.getId());
- }
-
- companySymbols.setAlreadyExist(true);
- companySymbols.setMapId(companySymbolsFromImdg.iterator().next().getId());
- }
- }
-
- // Если компания реквизиты есть, а компании нет. Маловероятный кейс
- if (!companyFound) {
- company.setAlreadyExist(false);
- continue;
- }
-
- // Проверяем оставшиеся реквизиты на необходимость обновления
- for (MemberCompanySymbols companySymbols : companySymbolsList) {
- if (companySymbols.isInvalidData() || companySymbols.getMapId() == null) continue;
-
- companySymbolsFromImdg = companySymbolsImdg.getCollectionObjectsByFieldValues(
- Map.of(
- "companyId", company.getMapId(),
- "companySymbol", companySymbols.getCompanySymbol(),
- "companySymbolValue", companySymbols.getCompanySymbolValue()
+ "companyId", companyId,
+ "companySymbol", companySymbols.getCompanySymbol()
)
);
if (companySymbolsFromImdg.isEmpty()) {
@@ -181,7 +108,7 @@ public class CheckMemberCompanyExist extends Stage {
Collection contactsFromImdg = contactImdg.getCollectionObjectsByFieldValues(
Map.of(
- "companyId", company.getMapId(),
+ "companyId", companyId,
"contactType", contact.getContactType()
)
);
@@ -205,7 +132,7 @@ public class CheckMemberCompanyExist extends Stage {
Collection profileDocumentsFromImdg = profileDocumentImdg.getCollectionObjectsByFieldValues(
Map.of(
- "companyId", company.getMapId(),
+ "companyId", companyId,
"documentType", memberProfileDocument.getDocumentType()
)
);
@@ -216,7 +143,7 @@ public class CheckMemberCompanyExist extends Stage {
if (profileDocumentsFromImdg.size() > 1) {
log.warn("Found profile_document > 1 for document_type {} (company.id {}), update first (id = {})",
memberProfileDocument.getDocumentType(),
- company.getMapId(),
+ companyId,
profileDocument.getId());
}
memberProfileDocument.setAlreadyExist(true);
@@ -230,7 +157,7 @@ public class CheckMemberCompanyExist extends Stage {
Collection clientCodesFromImdg = clientCodeImdg.getCollectionObjectsByFieldValues(
Map.of(
- "companyId", company.getMapId(),
+ "companyId", companyId,
"code", memberClient.getClientCode()
)
);
@@ -241,7 +168,7 @@ public class CheckMemberCompanyExist extends Stage {
if (clientCodesFromImdg.size() > 1) {
log.warn("Found client_code > 1 for code {} (company.id {}), update first (id = {})",
clientCode.getCode(),
- company.getMapId(),
+ companyId,
clientCode.getId());
}
memberClient.setAlreadyExist(true);
@@ -256,11 +183,9 @@ public class CheckMemberCompanyExist extends Stage {
}
List filteredMemberCompany = companyList.stream()
- .filter(issuerCompany -> !issuerCompany.isInvalidData())
+ .filter(memberCompany -> !memberCompany.isInvalidData())
.collect(Collectors.toList());
- // todo check list is empty
-
param.setMemberCompanyList(filteredMemberCompany);
return null;
@@ -319,4 +244,50 @@ public class CheckMemberCompanyExist extends Stage {
}
}
}
+
+
+ private Long getCompanyIdForCompanySymbols(String uuid, Map INNorCIO) {
+ Collection companySymbolsFromImdg = companySymbolsImdg.getCollectionObjectsByFieldValues(
+ Map.of(
+ "companySymbol", CompanySymbol.UUID.getKey(),
+ "companySymbolValue", uuid
+ )
+ );
+ if (!companySymbolsFromImdg.isEmpty()) {
+ CompanySymbols companySymbolFromImdg = companySymbolsFromImdg.iterator().next();
+ if (companySymbolsFromImdg.size() > 1) {
+ log.warn("For UUID found > 1 company_symbols, use first (id = {})", companySymbolFromImdg.getId());
+ }
+ return companySymbolFromImdg.getCompanyId();
+ }
+
+ for (Map.Entry entry : INNorCIO.entrySet()) {
+ CompanySymbol companySymbol = entry.getKey();
+ String companySymbolValue = entry.getValue();
+
+ companySymbolsFromImdg = companySymbolsImdg.getCollectionObjectsByFieldValues(
+ Map.of(
+ "companySymbol", companySymbol.getKey(),
+ "companySymbolValue", companySymbolValue
+ )
+ );
+ if (!companySymbolsFromImdg.isEmpty()) {
+ if (companySymbolsFromImdg.size() > 1)
+ log.warn("For {} = {} found > 1 company_symbols, use first", companySymbol.getKey(), companySymbolValue);
+
+ CompanySymbols companySymbolFromImdg = companySymbolsFromImdg.iterator().next();
+ Company companyFromImdg = companyImdg.getSingleObjectByID(companySymbolFromImdg.getCompanyId());
+
+ if (companyFromImdg == null) {
+ // Случай, когда реквизиты есть, а компании нет (по сути данных ошибка в мапе)
+ log.error("For own company_symbols (id = {}) company not found (map error)", companySymbolFromImdg.getId());
+ } else {
+ return companyFromImdg.getId();
+ }
+ }
+ }
+
+ return null;
+ }
+
}
diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/CheckIssuerCompanyExist.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/CheckIssuerCompanyExist.java
index 93f938f23..af575623e 100644
--- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/CheckIssuerCompanyExist.java
+++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/CheckIssuerCompanyExist.java
@@ -14,11 +14,12 @@ import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.platform.enumeration.CompanySymbol;
import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.ImdgProvider;
+import ru.spcex.platform.utils.enumeration.IEnumKey;
import java.util.Collection;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.Objects;
import java.util.stream.Collectors;
public class CheckIssuerCompanyExist extends Stage {
@@ -39,109 +40,35 @@ public class CheckIssuerCompanyExist extends Stage {
List companyList = param.getIssuerCompanyList();
for (IssuerCompany company : companyList) {
- boolean companyFound = false;
List companySymbolsList = company.getIssuerCompanySymbolsList();
- // Пытаемся найти компанию по UUID
- Collection companySymbolsFromImdg = companySymbolsImdg.getCollectionObjectsByFieldValues(
- Map.of(
- "companySymbol", "UUID",
- "companySymbolValue", company.getId()
- )
- );
- if (!companySymbolsFromImdg.isEmpty()) {
- CompanySymbols companySymbolFromImdg = companySymbolsFromImdg.iterator().next();
- if (companySymbolsFromImdg.size() > 1) {
- log.warn("For UUID found > 1 company_symbols, update first (id = {})", companySymbolFromImdg.getId());
- }
- companyFound = true;
- company.setAlreadyExist(true);
- company.setMapId(companySymbolFromImdg.getId());
+ Map companySymbolMap = new HashMap<>();
+ for (IssuerCompanySymbols issuerCompanySymbol : companySymbolsList) {
+ if (
+ !issuerCompanySymbol.isInvalidData() &&
+ !CompanySymbol.CIO.equalsByKey(issuerCompanySymbol.getCompanySymbol()) &&
+ !CompanySymbol.INN.equalsByKey(issuerCompanySymbol.getCompanySymbol())
+ ) continue;
+ companySymbolMap.put(IEnumKey.getEnumByKey(CompanySymbol.class, issuerCompanySymbol.getCompanySymbol()), issuerCompanySymbol.getCompanySymbolValue());
}
+ Long companyId = getCompanyIdForCompanySymbols(company.getId().toString(), companySymbolMap);
- // Если по UUID не нашли, пытаемся найти по INN или CIO
- List companySymbolsListINNorCIO = companySymbolsList.stream()
- .filter(issuerCompanySymbols ->
- !issuerCompanySymbols.isInvalidData() &&
- (
- CompanySymbol.CIO.equalsByKey(issuerCompanySymbols.getCompanySymbol()) ||
- CompanySymbol.INN.equalsByKey(issuerCompanySymbols.getCompanySymbol())
- )
- ).collect(Collectors.toList());
-
- // Для компании не найдены реквизиты, значит создаем новую компанию
- if (companySymbolsListINNorCIO.isEmpty()) {
+ if (companyId != null) {
+ company.setAlreadyExist(true);
+ company.setMapId(companyId);
+ } else {
company.setAlreadyExist(false);
continue;
}
- // Реквизиты найдены, ищем по ним company.id
- for (IssuerCompanySymbols companySymbols : companySymbolsListINNorCIO) {
+ // Проверяем реквизиты на необходимость обновления
+ for (IssuerCompanySymbols companySymbols : companySymbolsList) {
if (companySymbols.isInvalidData()) continue;
- companySymbolsFromImdg = companySymbolsImdg.getCollectionObjectsByFieldValues(
+ Collection companySymbolsFromImdg = companySymbolsImdg.getCollectionObjectsByFieldValues(
Map.of(
- "companySymbol", companySymbols.getCompanySymbol(),
- "companySymbolValue", companySymbols.getCompanySymbolValue()
- )
- );
- if (companySymbolsFromImdg.isEmpty()) {
- companySymbols.setAlreadyExist(false);
- } else {
- if (companySymbolsFromImdg.size() > 1)
- log.warn("For {} found > 1 company_symbols, use first", companySymbols.getCompanySymbol());
-
- CompanySymbols companySymbolFromImdg = companySymbolsFromImdg.iterator().next();
- Company companyFromImdg = companyImdg.getSingleObjectByID(companySymbolFromImdg.getCompanyId());
- if (companyFromImdg == null) {
-
- // Случай, когда реквизиты есть, а компании нет (по сути данных ошибка в мапе)
- log.warn("For own company_symbols (id = {}) company not found", companySymbolFromImdg.getId());
- companySymbols.setAlreadyExist(false);
- continue;
-
- } else if (companyFound) {
-
- // Случай, когда по переданным реквизитам найдено несколько компании
- if (!Objects.equals(company.getMapId(), companyFromImdg.getId())) {
- log.warn("For company_symbols (company.id = {}, {} = {}) found > 1 company (company.id = {}), " +
- "company_symbols skipped",
- company.getId(),
- companySymbols.getCompanySymbol(),
- companySymbols.getCompanySymbolValue(),
- companyFromImdg.getId());
- companySymbols.setInvalidData(true);
- continue;
- }
-
- } else {
-
- // Самый вероятный случай: компания найдена по реквизитам
- companyFound = true;
- company.setAlreadyExist(true);
- company.setMapId(companyFromImdg.getId());
- }
-
- companySymbols.setAlreadyExist(true);
- companySymbols.setMapId(companySymbolsFromImdg.iterator().next().getId());
- }
- }
-
- // Если компания реквизиты есть, а компании нет. Маловероятный кейс
- if (!companyFound) {
- company.setAlreadyExist(false);
- continue;
- }
-
- // Проверяем оставшиеся реквизиты на необходимость обновления
- for (IssuerCompanySymbols companySymbols : companySymbolsList) {
- if (companySymbols.isInvalidData() || companySymbols.getMapId() == null) continue;
-
- companySymbolsFromImdg = companySymbolsImdg.getCollectionObjectsByFieldValues(
- Map.of(
- "companyId", company.getMapId(),
- "companySymbol", companySymbols.getCompanySymbol(),
- "companySymbolValue", companySymbols.getCompanySymbolValue()
+ "companyId", companyId,
+ "companySymbol", companySymbols.getCompanySymbol()
)
);
if (companySymbolsFromImdg.isEmpty()) {
@@ -193,10 +120,53 @@ public class CheckIssuerCompanyExist extends Stage {
.filter(issuerCompany -> !issuerCompany.isInvalidData())
.collect(Collectors.toList());
- // todo check list is empty
-
param.setIssuerCompanyList(filteredIssuerCompany);
return null;
}
+
+ private Long getCompanyIdForCompanySymbols(String uuid, Map INNorCIO) {
+ Collection companySymbolsFromImdg = companySymbolsImdg.getCollectionObjectsByFieldValues(
+ Map.of(
+ "companySymbol", CompanySymbol.UUID.getKey(),
+ "companySymbolValue", uuid
+ )
+ );
+ if (!companySymbolsFromImdg.isEmpty()) {
+ CompanySymbols companySymbolFromImdg = companySymbolsFromImdg.iterator().next();
+ if (companySymbolsFromImdg.size() > 1) {
+ log.warn("For UUID found > 1 company_symbols, use first (id = {})", companySymbolFromImdg.getId());
+ }
+ return companySymbolFromImdg.getCompanyId();
+ }
+
+ for (Map.Entry entry : INNorCIO.entrySet()) {
+ CompanySymbol companySymbol = entry.getKey();
+ String companySymbolValue = entry.getValue();
+
+ companySymbolsFromImdg = companySymbolsImdg.getCollectionObjectsByFieldValues(
+ Map.of(
+ "companySymbol", companySymbol.getKey(),
+ "companySymbolValue", companySymbolValue
+ )
+ );
+ if (!companySymbolsFromImdg.isEmpty()) {
+ if (companySymbolsFromImdg.size() > 1)
+ log.warn("For {} = {} found > 1 company_symbols, use first", companySymbol.getKey(), companySymbolValue);
+
+ CompanySymbols companySymbolFromImdg = companySymbolsFromImdg.iterator().next();
+ Company companyFromImdg = companyImdg.getSingleObjectByID(companySymbolFromImdg.getCompanyId());
+
+ if (companyFromImdg == null) {
+ // Случай, когда реквизиты есть, а компании нет (по сути данных ошибка в мапе)
+ log.error("For own company_symbols (id = {}) company not found (map error)", companySymbolFromImdg.getId());
+ } else {
+ return companyFromImdg.getId();
+ }
+ }
+ }
+
+ return null;
+ }
+
}
diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/SendMessageToSecurityServiceWithFondSecurities.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/SendMessageToSecurityServiceWithFondSecurities.java
index fd8d80dcc..77b34af0a 100644
--- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/SendMessageToSecurityServiceWithFondSecurities.java
+++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/SendMessageToSecurityServiceWithFondSecurities.java
@@ -2,6 +2,8 @@ package ru.spcex.clearing.gatewayapi.logic.listings_fond;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import ru.clearing.classes.statics.data.company.Company;
+import ru.clearing.classes.statics.data.company.CompanySymbols;
import ru.clearing.classes.statics.data.instrument.issue.EquitySecurity;
import ru.clearing.classes.statics.data.instrument.issue.FixedIncomeSecurity;
import ru.spcex.clearing.gatewayapi.logic.ProcessResult;
@@ -14,12 +16,15 @@ import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.Consts;
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.*;
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
+import ru.spcex.platform.enumeration.CompanySymbol;
import ru.spcex.platform.enumeration.InstrumentType;
import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.ImdgProvider;
+import java.util.Collection;
import java.util.List;
import java.util.Map;
+import java.util.UUID;
public class SendMessageToSecurityServiceWithFondSecurities extends Stage {
private final Logger log = LoggerFactory.getLogger(getClass());
@@ -27,12 +32,16 @@ public class SendMessageToSecurityServiceWithFondSecurities extends Stage fixedIncomeSecurityImdg;
private final Imdg equitySecurityImdg;
+ private final Imdg companySymbolsImdg;
+ private final Imdg companyImdg;
public SendMessageToSecurityServiceWithFondSecurities(KafkaSender kafkaSender, ImdgProvider imdgProvider) {
this.kafkaSender = kafkaSender;
this.fixedIncomeSecurityImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_FixedIncomeSecurity, FixedIncomeSecurity.class);
this.equitySecurityImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_EquitySecurity, EquitySecurity.class);
+ this.companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
+ this.companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
}
@Override
@@ -40,10 +49,34 @@ public class SendMessageToSecurityServiceWithFondSecurities extends Stage securityList = param.getSecurities();
for (FondSecurity security : securityList) {
if (security.isInvalidData()) continue;
+ Long companyId;
if (security.getIssuerCompany() == null || security.getIssuerCompany().getMapId() == null) {
- log.warn("Can't insert security.UUID {}, company not found for parameter issuerId", security.getId());
- security.setInvalidData(true);
- continue;
+ // Пытаемся найти компанию по UUID
+ UUID companyUUID = security.getIssuerId();
+ Collection companySymbols = companySymbolsImdg.getCollectionObjectsByFieldValues(
+ Map.of(
+ "companySymbol", CompanySymbol.UUID.getKey(),
+ "companySymbolValue", companyUUID.toString()
+ )
+ );
+ if (companySymbols.isEmpty()) {
+ log.warn("Can't insert security.id {}, company not found for parameter issuerId", security.getId());
+ security.setInvalidData(true);
+ continue;
+ } else if (companySymbols.size() > 1) {
+ log.warn("For {} = {} found > 1 company_symbol, use first", CompanySymbol.UUID.getKey(), companyUUID);
+ }
+
+ // Проверяем, что в базе помимо реквизита есть компания
+ companyId = companySymbols.iterator().next().getCompanyId();
+ Company company = companyImdg.getSingleObjectByID(companyId);
+ if (company == null) {
+ log.warn("Can't insert security: not found company with id {}", companyId);
+ security.setInvalidData(true);
+ continue;
+ }
+ } else {
+ companyId = security.getIssuerCompany().getMapId();
}
Long securityId;
if (InstrumentType.BOND.equalsByKey(security.getInstrumentType())) {
@@ -58,7 +91,7 @@ public class SendMessageToSecurityServiceWithFondSecurities extends Stage {
for (FondSecurity fondSecurity : securities) {
if (fondSecurity.isInvalidData()) continue;
- if (fondSecurity.getIssuerCompany() == null) {
- log.warn("For security.id {} not found company, skipped", fondSecurity.getId());
- fondSecurity.setInvalidData(true);
- continue;
- }
-
String instrumentTypeStr = fondSecurity.getInstrumentType();
InstrumentType instrumentType = IEnumKey.getEnumByKey(InstrumentType.class, instrumentTypeStr);
if (instrumentType != InstrumentType.BOND && instrumentType != InstrumentType.EQTY) {