ValidateMemberCompanies, CheckMemberCompanyExist
This commit is contained in:
parent
53fab62830
commit
0881e1182b
14 changed files with 451 additions and 46 deletions
|
|
@ -20,8 +20,8 @@ public class PipelineConfiguration {
|
|||
pipeline.add(new PrepareIssuerCompanies());
|
||||
pipeline.add(new ValidateIncomeSecurities());
|
||||
pipeline.add(new ValidateIssuerCompanies());
|
||||
pipeline.add(new CheckSecurityExist(imdgProvider));
|
||||
pipeline.add(new CheckCompanyExist(imdgProvider));
|
||||
pipeline.add(new CheckFondSecurityExist(imdgProvider));
|
||||
pipeline.add(new CheckIssuerCompanyExist(imdgProvider));
|
||||
pipeline.add(new SendMessageToCompanyService(kafkaSender, imdgProvider));
|
||||
pipeline.add(new SendMessageToSecurityService(kafkaSender, imdgProvider));
|
||||
return pipeline;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,257 @@
|
|||
package ru.spcex.clearing.gatewayapi.logic.companies;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import ru.clearing.classes.statics.data.account.ClientCode;
|
||||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
||||
import ru.clearing.classes.statics.data.profile.Contact;
|
||||
import ru.clearing.classes.statics.data.profile.ProfileDocument;
|
||||
import ru.spcex.clearing.gatewayapi.logic.ProcessResult;
|
||||
import ru.spcex.clearing.gatewayapi.logic.Stage;
|
||||
import ru.spcex.clearing.gatewayapi.request.objects.*;
|
||||
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 java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class CheckMemberCompanyExist extends Stage<CompaniesRequestParam> {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
|
||||
private final Imdg<Company> companyImdg;
|
||||
private final Imdg<CompanySymbols> companySymbolsImdg;
|
||||
private final Imdg<Contact> contactImdg;
|
||||
private final Imdg<ProfileDocument> profileDocumentImdg;
|
||||
private final Imdg<ClientCode> clientCodeImdg;
|
||||
|
||||
public CheckMemberCompanyExist(ImdgProvider imdgProvider) {
|
||||
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
||||
contactImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Contact, Contact.class);
|
||||
profileDocumentImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class);
|
||||
clientCodeImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClientCode, ClientCode.class);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public ProcessResult process(CompaniesRequestParam param) {
|
||||
List<MemberCompany> companyList = param.getMemberCompanyList();
|
||||
|
||||
for (MemberCompany company : companyList) {
|
||||
boolean companyFound = false;
|
||||
List<MemberCompanySymbols> companySymbolsList = company.getMemberCompanySymbolsList();
|
||||
|
||||
// Пытаемся найти компанию по UUID
|
||||
Collection<CompanySymbols> 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());
|
||||
}
|
||||
|
||||
// Если по UUID не нашли, пытаемся найти по INN или CIO
|
||||
List<MemberCompanySymbols> companySymbolsListINNorCIO = companySymbolsList.stream()
|
||||
.filter(issuerCompanySymbols ->
|
||||
!issuerCompanySymbols.isInvalidData() &&
|
||||
(
|
||||
CompanySymbol.CIO.equalsByKey(issuerCompanySymbols.getCompanySymbol()) ||
|
||||
CompanySymbol.INN.equalsByKey(issuerCompanySymbols.getCompanySymbol())
|
||||
)
|
||||
).collect(Collectors.toList());
|
||||
|
||||
// Для компании не найдены реквизиты, значит создаем новую компанию
|
||||
if (companySymbolsListINNorCIO.isEmpty()) {
|
||||
company.setAlreadyExist(false);
|
||||
continue;
|
||||
}
|
||||
|
||||
// Реквизиты найдены, ищем по ним company.id
|
||||
for (MemberCompanySymbols companySymbols : companySymbolsListINNorCIO) {
|
||||
if (companySymbols.isInvalidData()) continue;
|
||||
|
||||
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()
|
||||
)
|
||||
);
|
||||
if (companySymbolsFromImdg.isEmpty()) {
|
||||
companySymbols.setAlreadyExist(false);
|
||||
} else {
|
||||
CompanySymbols companySymbolFromImdg = companySymbolsFromImdg.iterator().next();
|
||||
if (companySymbolsFromImdg.size() > 1) {
|
||||
log.warn("For company_symbols ({}={}) found > 1 own company_symbols, " +
|
||||
"update first (company_symbols.id = {})",
|
||||
companySymbols.getCompanySymbol(),
|
||||
companySymbols.getCompanySymbolValue(),
|
||||
companySymbolFromImdg.getId());
|
||||
}
|
||||
companySymbols.setAlreadyExist(true);
|
||||
companySymbols.setMapId(companySymbolFromImdg.getId());
|
||||
}
|
||||
}
|
||||
|
||||
// Проверяем контакты, документы и клиентов на необходимость обновления
|
||||
if (company.isAlreadyExist()) {
|
||||
List<MemberContact> contactList = company.getContactList();
|
||||
for (MemberContact contact : contactList) {
|
||||
if (contact.isInvalidData()) continue;
|
||||
|
||||
Collection<Contact> contactsFromImdg = contactImdg.getCollectionObjectsByFieldValues(
|
||||
Map.of(
|
||||
"companyId", company.getMapId(),
|
||||
"contactType", contact.getContactType()
|
||||
)
|
||||
);
|
||||
if (contactsFromImdg.isEmpty()) {
|
||||
contact.setAlreadyExist(false);
|
||||
} else {
|
||||
Contact contactFromImdg = contactsFromImdg.iterator().next();
|
||||
if (contactsFromImdg.size() > 1) {
|
||||
log.warn("Found contact > 1 for contactType {}, update first (id = {})",
|
||||
contactFromImdg.getContactType(),
|
||||
contactFromImdg.getId());
|
||||
}
|
||||
contact.setAlreadyExist(true);
|
||||
contact.setMapId(contactFromImdg.getId());
|
||||
}
|
||||
}
|
||||
|
||||
List<MemberProfileDocument> memberProfileDocumentList = company.getProfileDocumentList();
|
||||
for (MemberProfileDocument memberProfileDocument : memberProfileDocumentList) {
|
||||
if (memberProfileDocument.isInvalidData()) continue;
|
||||
|
||||
Collection<ProfileDocument> profileDocumentsFromImdg = profileDocumentImdg.getCollectionObjectsByFieldValues(
|
||||
Map.of(
|
||||
"companyId", company.getMapId(),
|
||||
"documentType", memberProfileDocument.getDocumentType()
|
||||
)
|
||||
);
|
||||
if (profileDocumentsFromImdg.isEmpty()) {
|
||||
memberProfileDocument.setAlreadyExist(false);
|
||||
} else {
|
||||
ProfileDocument profileDocument = profileDocumentsFromImdg.iterator().next();
|
||||
if (profileDocumentsFromImdg.size() > 1) {
|
||||
log.warn("Found profileDocument > 1 for documentType {} (companyId {}), update first (id = {})",
|
||||
memberProfileDocument.getDocumentType(),
|
||||
company.getMapId(),
|
||||
profileDocument.getId());
|
||||
}
|
||||
memberProfileDocument.setAlreadyExist(true);
|
||||
memberProfileDocument.setMapId(profileDocument.getId());
|
||||
}
|
||||
}
|
||||
|
||||
List<MemberClient> memberClientList = company.getClientList();
|
||||
for (MemberClient memberClient : memberClientList) {
|
||||
if (memberClient.isInvalidData()) continue;
|
||||
|
||||
Collection<ClientCode> clientCodesFromImdg = clientCodeImdg.getCollectionObjectsByFieldValues(
|
||||
Map.of(
|
||||
"companyId", company.getMapId(),
|
||||
"code", memberClient.getClientCode()
|
||||
)
|
||||
);
|
||||
if (clientCodesFromImdg.isEmpty()) {
|
||||
memberClient.setAlreadyExist(false);
|
||||
} else {
|
||||
ClientCode clientCode = clientCodesFromImdg.iterator().next();
|
||||
if (clientCodesFromImdg.size() > 1) {
|
||||
log.warn("Found clientCode > 1 for code {} (companyId {}), update first (id = {})",
|
||||
clientCode.getCode(),
|
||||
company.getMapId(),
|
||||
clientCode.getId());
|
||||
}
|
||||
memberClient.setAlreadyExist(true);
|
||||
memberClient.setMapId(clientCode.getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
List<MemberCompany> filteredMemberCompany = companyList.stream()
|
||||
.filter(issuerCompany -> !issuerCompany.isInvalidData())
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// todo check list is empty
|
||||
|
||||
param.setMemberCompanyList(filteredMemberCompany);
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
@ -82,28 +82,28 @@ public class PrepareMemberCompanies extends Stage<CompaniesRequestParam> {
|
|||
memberCompany.getCompanyClearingCategoryList().add(companyClearingCategory);
|
||||
}
|
||||
|
||||
List<ProfileDocument> profileDocumentList = param.getCompaniesRequest().getProfileDocumentList();
|
||||
for (ProfileDocument profileDocument : profileDocumentList) {
|
||||
UUID profileDocumentUUID = profileDocument.getCompanyId();
|
||||
List<MemberProfileDocument> memberProfileDocumentList = param.getCompaniesRequest().getProfileDocumentList();
|
||||
for (MemberProfileDocument memberProfileDocument : memberProfileDocumentList) {
|
||||
UUID profileDocumentUUID = memberProfileDocument.getCompanyId();
|
||||
MemberCompany memberCompany = companyForUUID.get(profileDocumentUUID);
|
||||
if (memberCompany == null) {
|
||||
log.warn("For profileDocument (documentType {}) not found company, skipped", profileDocument.getDocumentType());
|
||||
profileDocument.setInvalidData(true);
|
||||
log.warn("For profileDocument (documentType {}) not found company, skipped", memberProfileDocument.getDocumentType());
|
||||
memberProfileDocument.setInvalidData(true);
|
||||
continue;
|
||||
}
|
||||
memberCompany.getProfileDocumentList().add(profileDocument);
|
||||
memberCompany.getProfileDocumentList().add(memberProfileDocument);
|
||||
}
|
||||
|
||||
List<Client> clientList = param.getCompaniesRequest().getClientList();
|
||||
for (Client client : clientList) {
|
||||
UUID clientUUID = client.getCompanyId();
|
||||
List<MemberClient> memberClientList = param.getCompaniesRequest().getClientList();
|
||||
for (MemberClient memberClient : memberClientList) {
|
||||
UUID clientUUID = memberClient.getCompanyId();
|
||||
MemberCompany memberCompany = companyForUUID.get(clientUUID);
|
||||
if (memberCompany == null) {
|
||||
log.warn("For client (clientCode {}) not found company, skipped", client.getClientCode());
|
||||
client.setInvalidData(true);
|
||||
log.warn("For client (clientCode {}) not found company, skipped", memberClient.getClientCode());
|
||||
memberClient.setInvalidData(true);
|
||||
continue;
|
||||
}
|
||||
memberCompany.getClientList().add(client);
|
||||
memberCompany.getClientList().add(memberClient);
|
||||
}
|
||||
|
||||
List<MemberCompany> filteredIssuerCompany = companyList.stream()
|
||||
|
|
|
|||
|
|
@ -5,13 +5,58 @@ import org.slf4j.Logger;
|
|||
import org.slf4j.LoggerFactory;
|
||||
import ru.spcex.clearing.gatewayapi.logic.ProcessResult;
|
||||
import ru.spcex.clearing.gatewayapi.logic.Stage;
|
||||
import ru.spcex.clearing.gatewayapi.request.objects.MemberCompany;
|
||||
import ru.spcex.clearing.gatewayapi.request.objects.*;
|
||||
import ru.spcex.platform.enumeration.*;
|
||||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
public class ValidateMemberCompanies extends Stage<CompaniesRequestParam> {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
|
||||
private final List<CompanySymbol> validCompanySymbols = Arrays.asList(
|
||||
CompanySymbol.INN,
|
||||
CompanySymbol.CIO,
|
||||
CompanySymbol.OGRN,
|
||||
CompanySymbol.CPP,
|
||||
CompanySymbol.OCPO,
|
||||
CompanySymbol.BIC,
|
||||
CompanySymbol.LICB,
|
||||
CompanySymbol.LICR,
|
||||
CompanySymbol.LICD,
|
||||
CompanySymbol.LICT,
|
||||
CompanySymbol.LICC,
|
||||
CompanySymbol.LICF
|
||||
);
|
||||
|
||||
private final List<ContactTypes> validContactTypes = Arrays.asList(
|
||||
ContactTypes.adrs,
|
||||
ContactTypes.cont,
|
||||
ContactTypes.mail,
|
||||
ContactTypes.gdir,
|
||||
ContactTypes.trst,
|
||||
ContactTypes.fax,
|
||||
ContactTypes.info,
|
||||
ContactTypes.web
|
||||
);
|
||||
|
||||
private final List<DocumentTypes> validDocumentTypes = Arrays.asList(
|
||||
DocumentTypes.cntr,
|
||||
DocumentTypes.form,
|
||||
DocumentTypes.licb,
|
||||
DocumentTypes.licr,
|
||||
DocumentTypes.licd,
|
||||
DocumentTypes.lict,
|
||||
DocumentTypes.licc,
|
||||
DocumentTypes.licf,
|
||||
DocumentTypes.edoc,
|
||||
DocumentTypes.xcnt
|
||||
);
|
||||
|
||||
private final List<ServiceStatus> validWorkflowStatus = List.of(ServiceStatus.values());
|
||||
private final List<ClearingCategory> validClearingCategory = List.of(ClearingCategory.values());
|
||||
|
||||
@Override
|
||||
public ProcessResult process(CompaniesRequestParam param) {
|
||||
List<MemberCompany> memberCompanyList = param.getMemberCompanyList();
|
||||
|
|
@ -25,7 +70,92 @@ public class ValidateMemberCompanies extends Stage<CompaniesRequestParam> {
|
|||
continue;
|
||||
}
|
||||
|
||||
// todo in progress...
|
||||
for (MemberCompanyClearingCategory companyClearingCategory : company.getCompanyClearingCategoryList()) {
|
||||
String workflowStatusStr = companyClearingCategory.getWorkflowStatus();
|
||||
ServiceStatus workflowStatus = IEnumKey.getEnumByKey(ServiceStatus.class, workflowStatusStr);
|
||||
if (!validWorkflowStatus.contains(workflowStatus)) {
|
||||
log.warn("Invalid workflow_status {} for company_clearing_category for company.UUID {}, skipped", workflowStatus, company.getId());
|
||||
companyClearingCategory.setInvalidData(true);
|
||||
}
|
||||
|
||||
String clearingCategoryStr = companyClearingCategory.getCategory();
|
||||
ClearingCategory clearingCategory = IEnumKey.getEnumByKey(ClearingCategory.class, clearingCategoryStr);
|
||||
if (!validClearingCategory.contains(clearingCategory)) {
|
||||
log.warn("Invalid category {} for company_clearing_category for company.UUID {}, skipped", workflowStatus, company.getId());
|
||||
companyClearingCategory.setInvalidData(true);
|
||||
}
|
||||
}
|
||||
|
||||
for (MemberCompanySymbols companySymbols : company.getMemberCompanySymbolsList()) {
|
||||
String companySymbolStr = companySymbols.getCompanySymbol();
|
||||
CompanySymbol companySymbol = IEnumKey.getEnumByKey(CompanySymbol.class, companySymbolStr);
|
||||
if (!validCompanySymbols.contains(companySymbol)) {
|
||||
log.warn("Invalid companySymbol {} for company.UUID {}, skipped", companySymbolStr, company.getId());
|
||||
companySymbols.setInvalidData(true);
|
||||
}
|
||||
|
||||
if (StringUtils.isEmpty(companySymbols.getCompanySymbolValue())) {
|
||||
log.warn("Empty or null companySymbolValue for company.UUID {}, skipped", companySymbols.getCompanySymbolValue());
|
||||
companySymbols.setInvalidData(true);
|
||||
}
|
||||
}
|
||||
|
||||
for (MemberContact contact : company.getContactList()) {
|
||||
|
||||
String contactTypeStr = contact.getContactType();
|
||||
ContactTypes contactType = IEnumKey.getEnumByKey(ContactTypes.class, contactTypeStr);
|
||||
if (!validContactTypes.contains(contactType)) {
|
||||
log.warn("Invalid contact_type {} for company.UUID {}, skipped", contactTypeStr, company.getId());
|
||||
contact.setInvalidData(true);
|
||||
}
|
||||
|
||||
if (StringUtils.isEmpty(contact.getContactValue())) {
|
||||
log.warn("Empty or null contact_value for contact {}, company.UUID {}", contactTypeStr, company.getId());
|
||||
contact.setInvalidData(true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
for (MemberProfileDocument memberProfileDocument : company.getProfileDocumentList()) {
|
||||
String documentTypeStr = memberProfileDocument.getDocumentType();
|
||||
DocumentTypes documentType = IEnumKey.getEnumByKey(DocumentTypes.class, documentTypeStr);
|
||||
if (!validDocumentTypes.contains(documentType)) {
|
||||
log.warn("Invalid document_type {} for profile_document for company.UUID {}, skipped", documentTypeStr, company.getId());
|
||||
memberProfileDocument.setInvalidData(true);
|
||||
}
|
||||
|
||||
if (memberProfileDocument.getIssueDate() == null) {
|
||||
log.warn("issue_date is null for profile_document, company.UUID {}", company.getId());
|
||||
memberProfileDocument.setInvalidData(true);
|
||||
}
|
||||
|
||||
if (StringUtils.isEmpty(memberProfileDocument.getIssuer())) {
|
||||
log.warn("issuer is null or empty for profile_document, company.UUID {}", company.getId());
|
||||
memberProfileDocument.setInvalidData(true);
|
||||
}
|
||||
|
||||
if (StringUtils.isEmpty(memberProfileDocument.getNumber())) {
|
||||
log.warn("number is null or empty for profile_document, company.UUID {}", company.getId());
|
||||
memberProfileDocument.setInvalidData(true);
|
||||
}
|
||||
|
||||
if (memberProfileDocument.getValidToDate() == null) {
|
||||
log.warn("valid_to_date is null for profile_document, company.UUID {}", company.getId());
|
||||
memberProfileDocument.setInvalidData(true);
|
||||
}
|
||||
}
|
||||
|
||||
for (MemberClient memberClient : company.getClientList()) {
|
||||
if (StringUtils.isEmpty(memberClient.getClientCode())) {
|
||||
log.warn("client_code is null or empty for client, company.UUID {}", company.getId());
|
||||
memberClient.setInvalidData(true);
|
||||
}
|
||||
|
||||
if (StringUtils.isEmpty(memberClient.getMoneyAccount()) && StringUtils.isEmpty(memberClient.getDepoAccount())) {
|
||||
log.warn("money_account and depo_account is null or empty for client, company.UUID {}", company.getId());
|
||||
memberClient.setInvalidData(true);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ import java.util.Collection;
|
|||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class CheckSecurityExist extends Stage<FondListingsRequestParam> {
|
||||
public class CheckFondSecurityExist extends Stage<FondListingsRequestParam> {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
|
||||
private final Imdg<EquitySecurity> equitySecurityImdg;
|
||||
|
|
@ -31,7 +31,7 @@ public class CheckSecurityExist extends Stage<FondListingsRequestParam> {
|
|||
private final Imdg<CouponPeriod> couponPeriodImdg;
|
||||
private final Imdg<FixedIncomeCashFlow> fixedIncomeCashFlowImdg;
|
||||
|
||||
public CheckSecurityExist(ImdgProvider imdgProvider) {
|
||||
public CheckFondSecurityExist(ImdgProvider imdgProvider) {
|
||||
equitySecurityImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_EquitySecurity, EquitySecurity.class);
|
||||
fixedIncomeSecurityImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_FixedIncomeSecurity, FixedIncomeSecurity.class);
|
||||
listingImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Listing, Listing.class);
|
||||
|
|
@ -21,14 +21,14 @@ import java.util.Map;
|
|||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class CheckCompanyExist extends Stage<FondListingsRequestParam> {
|
||||
public class CheckIssuerCompanyExist extends Stage<FondListingsRequestParam> {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
|
||||
private final Imdg<Company> companyImdg;
|
||||
private final Imdg<CompanySymbols> companySymbolsImdg;
|
||||
private final Imdg<Contact> contactImdg;
|
||||
|
||||
public CheckCompanyExist(ImdgProvider imdgProvider) {
|
||||
public CheckIssuerCompanyExist(ImdgProvider imdgProvider) {
|
||||
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
||||
contactImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Contact, Contact.class);
|
||||
|
|
@ -135,10 +135,11 @@ public class CheckCompanyExist extends Stage<FondListingsRequestParam> {
|
|||
|
||||
// Проверяем оставшиеся реквизиты на необходимость обновления
|
||||
for (IssuerCompanySymbols companySymbols : companySymbolsList) {
|
||||
if (companySymbols.isInvalidData() || companySymbols.getMapId() != null) continue;
|
||||
if (companySymbols.isInvalidData() || companySymbols.getMapId() == null) continue;
|
||||
|
||||
companySymbolsFromImdg = companySymbolsImdg.getCollectionObjectsByFieldValues(
|
||||
Map.of(
|
||||
"companyId", company.getMapId(),
|
||||
"companySymbol", companySymbols.getCompanySymbol(),
|
||||
"companySymbolValue", companySymbols.getCompanySymbolValue()
|
||||
)
|
||||
|
|
@ -160,13 +161,16 @@ public class CheckCompanyExist extends Stage<FondListingsRequestParam> {
|
|||
}
|
||||
|
||||
// Проверяем контакты на необходимость обновления
|
||||
if (company.isAlreadyExist()) {
|
||||
if (company.isAlreadyExist() && company.getMapId() != null) {
|
||||
List<IssuerContact> contactList = company.getIssuerContactList();
|
||||
for (IssuerContact contact : contactList) {
|
||||
if (contact.isInvalidData()) continue;
|
||||
|
||||
Collection<Contact> contactsFromImdg = contactImdg.getCollectionObjectsByFieldValues(
|
||||
Map.of("contactType", contact.getContactType())
|
||||
Map.of(
|
||||
"companyId", company.getMapId(),
|
||||
"contactType", contact.getContactType()
|
||||
)
|
||||
);
|
||||
if (contactsFromImdg.isEmpty()) {
|
||||
contact.setAlreadyExist(false);
|
||||
|
|
@ -22,6 +22,7 @@ public class ValidateIssuerCompanies extends Stage<FondListingsRequestParam> {
|
|||
private final List<CompanySymbol> validCompanySymbols = Arrays.asList(
|
||||
CompanySymbol.OCVD,
|
||||
CompanySymbol.INN,
|
||||
CompanySymbol.CIO,
|
||||
CompanySymbol.CPP,
|
||||
CompanySymbol.OCPO,
|
||||
CompanySymbol.BIC,
|
||||
|
|
|
|||
|
|
@ -29,11 +29,11 @@ public class CompaniesRequest extends BaseRequest {
|
|||
|
||||
@JsonProperty("profile_document")
|
||||
@ApiModelProperty(value = "Список документов участников")
|
||||
private List<ProfileDocument> profileDocumentList;
|
||||
private List<MemberProfileDocument> memberProfileDocumentList;
|
||||
|
||||
@JsonProperty("client")
|
||||
@ApiModelProperty(value = "Список клиентов участников")
|
||||
private List<Client> clientList;
|
||||
private List<MemberClient> memberClientList;
|
||||
|
||||
|
||||
public List<MemberCompany> getCompanyList() {
|
||||
|
|
@ -76,19 +76,19 @@ public class CompaniesRequest extends BaseRequest {
|
|||
this.contactList = contactList;
|
||||
}
|
||||
|
||||
public List<ProfileDocument> getProfileDocumentList() {
|
||||
return profileDocumentList;
|
||||
public List<MemberProfileDocument> getProfileDocumentList() {
|
||||
return memberProfileDocumentList;
|
||||
}
|
||||
|
||||
public void setProfileDocumentList(List<ProfileDocument> profileDocumentList) {
|
||||
this.profileDocumentList = profileDocumentList;
|
||||
public void setProfileDocumentList(List<MemberProfileDocument> memberProfileDocumentList) {
|
||||
this.memberProfileDocumentList = memberProfileDocumentList;
|
||||
}
|
||||
|
||||
public List<Client> getClientList() {
|
||||
return clientList;
|
||||
public List<MemberClient> getClientList() {
|
||||
return memberClientList;
|
||||
}
|
||||
|
||||
public void setClientList(List<Client> clientList) {
|
||||
this.clientList = clientList;
|
||||
public void setClientList(List<MemberClient> memberClientList) {
|
||||
this.memberClientList = memberClientList;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ public class IssuerCompanySymbols extends WithMapId {
|
|||
· OCPO
|
||||
· BIC
|
||||
· OGRN
|
||||
· CIO
|
||||
""",
|
||||
example = "INN"
|
||||
)
|
||||
|
|
@ -36,6 +37,7 @@ public class IssuerCompanySymbols extends WithMapId {
|
|||
Значения для company_symbol:
|
||||
Для OCVD - Регистрационные данные\\ОКВЭД
|
||||
Для INN - Основные сведения\\ИНН
|
||||
Для CIO - Основные сведения\\CIO
|
||||
Для CPP - Основные сведения\\КПП
|
||||
Для OCPO - Основные сведения\\ОКПО
|
||||
Для BIC - Основные сведения\\БИК
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
|
|||
|
||||
import java.util.UUID;
|
||||
|
||||
public class Client extends WithMapId {
|
||||
public class MemberClient extends WithMapId {
|
||||
@JsonProperty("company_id")
|
||||
@ApiModelProperty(
|
||||
value = "Ссылка на company",
|
||||
|
|
@ -75,10 +75,10 @@ public class MemberCompany extends WithMapId {
|
|||
private List<MemberContact> contactList = new ArrayList<>();
|
||||
|
||||
@JsonIgnore
|
||||
private List<ProfileDocument> profileDocumentList = new ArrayList<>();
|
||||
private List<MemberProfileDocument> memberProfileDocumentList = new ArrayList<>();
|
||||
|
||||
@JsonIgnore
|
||||
private List<Client> clientList = new ArrayList<>();
|
||||
private List<MemberClient> memberClientList = new ArrayList<>();
|
||||
|
||||
|
||||
public UUID getId() {
|
||||
|
|
@ -169,19 +169,19 @@ public class MemberCompany extends WithMapId {
|
|||
this.contactList = contactList;
|
||||
}
|
||||
|
||||
public List<ProfileDocument> getProfileDocumentList() {
|
||||
return profileDocumentList;
|
||||
public List<MemberProfileDocument> getProfileDocumentList() {
|
||||
return memberProfileDocumentList;
|
||||
}
|
||||
|
||||
public void setProfileDocumentList(List<ProfileDocument> profileDocumentList) {
|
||||
this.profileDocumentList = profileDocumentList;
|
||||
public void setProfileDocumentList(List<MemberProfileDocument> memberProfileDocumentList) {
|
||||
this.memberProfileDocumentList = memberProfileDocumentList;
|
||||
}
|
||||
|
||||
public List<Client> getClientList() {
|
||||
return clientList;
|
||||
public List<MemberClient> getClientList() {
|
||||
return memberClientList;
|
||||
}
|
||||
|
||||
public void setClientList(List<Client> clientList) {
|
||||
this.clientList = clientList;
|
||||
public void setClientList(List<MemberClient> memberClientList) {
|
||||
this.memberClientList = memberClientList;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import ru.spcex.clearing.gatewayapi.config.deserializers.LocalDateDeserializer;
|
|||
import java.time.LocalDate;
|
||||
import java.util.UUID;
|
||||
|
||||
public class ProfileDocument extends WithMapId {
|
||||
public class MemberProfileDocument extends WithMapId {
|
||||
@JsonProperty("company_id")
|
||||
@ApiModelProperty(
|
||||
value = "Ссылка на company",
|
||||
|
|
@ -13,7 +13,14 @@ public enum CompanySymbol implements IEnumKey {
|
|||
UUID("UUID"),
|
||||
TRDC("TRDC"),
|
||||
CLRC("CLRC"),
|
||||
RGRC("RGRC");
|
||||
RGRC("RGRC"),
|
||||
LICB("LICB"),
|
||||
LICR("LICR"),
|
||||
LICD("LICD"),
|
||||
LICT("LICT"),
|
||||
LICC("LICC"),
|
||||
LICF("LICF"),
|
||||
;
|
||||
|
||||
private final String key;
|
||||
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@ public enum DocumentTypes implements IEnumKey {
|
|||
inn("INN"), // ИНН
|
||||
cio("CIO"), // КИО
|
||||
licr("LICR"), // Брокерская лицензия
|
||||
licd("LICD"), // Номер дилерской лицензии
|
||||
lict("LICT"), // Номер лицензии по управлению ЦБ
|
||||
licc("LICC"), // Номер лицензии по брокерской деятельности ПФИ (производных финансовых инструментов)
|
||||
licf("LICF"), // Номер лицензии форекс-дилера
|
||||
fin("FIN"), // Финансовая отчетность
|
||||
trst("TRST"), // Полномочия должностных лиц
|
||||
pmkr("PMKR"), // Распоряжение на списание МКР
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue