From d0409a243e17ccc29fe74294a761947e3e2ff65e Mon Sep 17 00:00:00 2001 From: akulikov Date: Fri, 26 May 2023 19:48:56 +0300 Subject: [PATCH] PrepareMemberCompanies stage --- .../config/PipelineConfiguration.java | 2 +- .../companies/GroupingMemberCompanyParts.java | 51 -------- .../companies/PrepareMemberCompanies.java | 111 ++++++++++++++++++ ...anies.java => PrepareIssuerCompanies.java} | 2 +- .../gatewayapi/request/objects/Client.java | 2 +- .../request/objects/MemberCompany.java | 12 +- .../MemberCompanyClearingCategory.java | 2 +- .../request/objects/MemberCompanySymbols.java | 2 +- .../request/objects/MemberContact.java | 2 +- .../request/objects/ProfileDocument.java | 2 +- 10 files changed, 124 insertions(+), 64 deletions(-) delete mode 100644 clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/companies/GroupingMemberCompanyParts.java create mode 100644 clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/companies/PrepareMemberCompanies.java rename clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/{PrepareCompanies.java => PrepareIssuerCompanies.java} (98%) diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/PipelineConfiguration.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/PipelineConfiguration.java index 2b7dd4458..af71e5f2c 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/PipelineConfiguration.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/PipelineConfiguration.java @@ -17,7 +17,7 @@ public class PipelineConfiguration { public List> listingsRequestPipeline(ImdgProvider imdgProvider, KafkaSender kafkaSender) { List> pipeline = new ArrayList<>(); pipeline.add(new PrepareSecurities()); - pipeline.add(new PrepareCompanies()); + pipeline.add(new PrepareIssuerCompanies()); pipeline.add(new ValidateIncomeSecurities()); pipeline.add(new ValidateIssuerCompanies()); pipeline.add(new CheckSecurityExist(imdgProvider)); diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/companies/GroupingMemberCompanyParts.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/companies/GroupingMemberCompanyParts.java deleted file mode 100644 index 5f27d8975..000000000 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/companies/GroupingMemberCompanyParts.java +++ /dev/null @@ -1,51 +0,0 @@ -package ru.spcex.clearing.gatewayapi.logic.companies; - -import ru.spcex.clearing.gatewayapi.logic.ProcessResult; -import ru.spcex.clearing.gatewayapi.logic.Stage; -import ru.spcex.clearing.gatewayapi.request.CompaniesRequest; -import ru.spcex.clearing.gatewayapi.request.objects.*; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; - -public class GroupingMemberCompanyParts extends Stage { - @Override - public ProcessResult process(CompaniesRequestParam param) { - CompaniesRequest request = param.getCompaniesRequest(); - - List companyList = request.getCompanyList(); - List companyInfoList = request.getCompanyInfoList(); - List companyClearingCategoryList = request.getCompanyClearingCategoryList(); - List memberCompanySymbolsList = request.getMemberCompanySymbolsList(); - List contactList = request.getContactList(); - List profileDocumentList = request.getProfileDocumentList(); - List clientList = request.getClientList(); - - Map companyForUUID = new HashMap<>(); - for (MemberCompany memberCompany : companyList) { - if (companyForUUID.put(memberCompany.getId(), memberCompany) != null) { - throw new IllegalStateException("Duplicate key"); - } - } - - for (MemberCompanyInfo companyInfo : companyInfoList) { - UUID companyInfoUUID = companyInfo.getCompanyId(); - MemberCompany company = companyForUUID.get(companyInfoUUID); - if (company == null) { - // todo error - continue; - } - company.getCompanyInfoList().add(companyInfo); - } - - for (MemberCompanyClearingCategory companyClearingCategory : companyClearingCategoryList) { - // todo in progress -// UUID companyClearingCate - } - - return null; - } - -} diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/companies/PrepareMemberCompanies.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/companies/PrepareMemberCompanies.java new file mode 100644 index 000000000..c558698c3 --- /dev/null +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/companies/PrepareMemberCompanies.java @@ -0,0 +1,111 @@ +package ru.spcex.clearing.gatewayapi.logic.companies; + +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.CompaniesRequest; +import ru.spcex.clearing.gatewayapi.request.objects.*; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +public class PrepareMemberCompanies extends Stage { + private final Logger log = LoggerFactory.getLogger(getClass()); + + @Override + public ProcessResult process(CompaniesRequestParam param) { + CompaniesRequest request = param.getCompaniesRequest(); + + List companyList = request.getCompanyList(); + Map companyForUUID = new HashMap<>(); + for (MemberCompany memberCompany : companyList) { + if (companyForUUID.containsKey(memberCompany.getId())) { + log.warn("For company.UUID {} found > 1 element from request, use first", memberCompany.getId()); + memberCompany.setInvalidData(true); + continue; + } + companyForUUID.put(memberCompany.getId(), memberCompany); + } + + List companyInfoList = request.getCompanyInfoList(); + for (MemberCompanyInfo companyInfo : companyInfoList) { + UUID companyInfoUUID = companyInfo.getCompanyId(); + MemberCompany company = companyForUUID.get(companyInfoUUID); + if (company == null) { + log.warn("For companyInfo.UUID {} not found company, companyInfo skipped", companyInfoUUID); + continue; + } + company.setCompanyInfo(companyInfo); + } + + List memberCompanySymbolsList = param.getCompaniesRequest().getMemberCompanySymbolsList(); + for (MemberCompanySymbols memberCompanySymbols : memberCompanySymbolsList) { + UUID memberCompanySymbolsUUID = memberCompanySymbols.getCompanyId(); + MemberCompany memberCompany = companyForUUID.get(memberCompanySymbolsUUID); + if (memberCompany == null) { + log.warn("For companySymbols ({} = {}) not found company, companySymbols skipped", + memberCompanySymbols.getCompanySymbol(), + memberCompanySymbols.getCompanySymbolValue()); + memberCompanySymbols.setInvalidData(true); + continue; + } + memberCompany.getMemberCompanySymbolsList().add(memberCompanySymbols); + } + + List memberContactList = param.getCompaniesRequest().getContactList(); + for (MemberContact memberContact : memberContactList) { + UUID memberContactUUID = memberContact.getCompanyId(); + MemberCompany memberCompany = companyForUUID.get(memberContactUUID); + if (memberCompany == null) { + log.warn("For contact ({} = {}) not found company, skipped", + memberContact.getContactType(), + memberContact.getContactValue()); + memberContact.setInvalidData(true); + continue; + } + memberCompany.getContactList().add(memberContact); + } + + List companyClearingCategoryList = param.getCompaniesRequest().getCompanyClearingCategoryList(); + for (MemberCompanyClearingCategory companyClearingCategory : companyClearingCategoryList) { + UUID companyClearingCategoryUUID = companyClearingCategory.getCompanyId(); + MemberCompany memberCompany = companyForUUID.get(companyClearingCategoryUUID); + if (memberCompany == null) { + log.warn("For companyClearingCategory ({}) not found company, skipped", companyClearingCategory.getCategory()); + companyClearingCategory.setInvalidData(true); + continue; + } + memberCompany.getCompanyClearingCategoryList().add(companyClearingCategory); + } + + List profileDocumentList = param.getCompaniesRequest().getProfileDocumentList(); + for (ProfileDocument profileDocument : profileDocumentList) { + UUID profileDocumentUUID = profileDocument.getCompanyId(); + MemberCompany memberCompany = companyForUUID.get(profileDocumentUUID); + if (memberCompany == null) { + log.warn("For profileDocument (documentType {}) not found company, skipped", profileDocument.getDocumentType()); + profileDocument.setInvalidData(true); + continue; + } + memberCompany.getProfileDocumentList().add(profileDocument); + } + + List clientList = param.getCompaniesRequest().getClientList(); + for (Client client : clientList) { + UUID clientUUID = client.getCompanyId(); + MemberCompany memberCompany = companyForUUID.get(clientUUID); + if (memberCompany == null) { + log.warn("For client (clientCode {}) not found company, skipped", client.getClientCode()); + client.setInvalidData(true); + continue; + } + memberCompany.getClientList().add(client); + } + + return null; + } + +} diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/PrepareCompanies.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/PrepareIssuerCompanies.java similarity index 98% rename from clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/PrepareCompanies.java rename to clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/PrepareIssuerCompanies.java index 8dce664d2..471d21745 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/PrepareCompanies.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/PrepareIssuerCompanies.java @@ -12,7 +12,7 @@ import java.util.Map; import java.util.UUID; import java.util.stream.Collectors; -public class PrepareCompanies extends Stage { +public class PrepareIssuerCompanies extends Stage { private final Logger log = LoggerFactory.getLogger(getClass()); @Override diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/Client.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/Client.java index 13110a66b..685cd4288 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/Client.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/Client.java @@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty; import java.util.UUID; -public class Client { +public class Client extends WithMapId { @JsonProperty("company_id") @ApiModelProperty( value = "Ссылка на company", diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/MemberCompany.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/MemberCompany.java index d458c5120..d258cfb51 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/MemberCompany.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/MemberCompany.java @@ -11,7 +11,7 @@ import java.util.UUID; /** * Компания участник */ -public class MemberCompany { +public class MemberCompany extends WithMapId { @JsonProperty("id") @ApiModelProperty( value = "Идентификатор участника", @@ -63,7 +63,7 @@ public class MemberCompany { @JsonIgnore - private List companyInfoList = new ArrayList<>(); + private MemberCompanyInfo companyInfo; @JsonIgnore private List companyClearingCategoryList = new ArrayList<>(); @@ -137,12 +137,12 @@ public class MemberCompany { this.initiatorCode = initiatorCode; } - public List getCompanyInfoList() { - return companyInfoList; + public MemberCompanyInfo getCompanyInfo() { + return companyInfo; } - public void setCompanyInfoList(List companyInfoList) { - this.companyInfoList = companyInfoList; + public void setCompanyInfo(MemberCompanyInfo companyInfo) { + this.companyInfo = companyInfo; } public List getCompanyClearingCategoryList() { diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/MemberCompanyClearingCategory.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/MemberCompanyClearingCategory.java index cd8b0ef39..f5890a4f4 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/MemberCompanyClearingCategory.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/MemberCompanyClearingCategory.java @@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty; import java.util.UUID; -public class MemberCompanyClearingCategory { +public class MemberCompanyClearingCategory extends WithMapId { @JsonProperty("company_id") @ApiModelProperty( value = "Ссылка на company", diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/MemberCompanySymbols.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/MemberCompanySymbols.java index 8ac053231..db79e31de 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/MemberCompanySymbols.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/MemberCompanySymbols.java @@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty; import java.util.UUID; -public class MemberCompanySymbols { +public class MemberCompanySymbols extends WithMapId { @JsonProperty("company_id") @ApiModelProperty( value = "Ссылка на company", diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/MemberContact.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/MemberContact.java index 0f2bb5076..0b736e76b 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/MemberContact.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/MemberContact.java @@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty; import java.util.UUID; -public class MemberContact { +public class MemberContact extends WithMapId { @JsonProperty("company_id") @ApiModelProperty( value = "Ссылка на компанию", diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/ProfileDocument.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/ProfileDocument.java index a3714104d..31814639d 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/ProfileDocument.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/ProfileDocument.java @@ -8,7 +8,7 @@ import ru.spcex.clearing.gatewayapi.config.deserializers.LocalDateDeserializer; import java.time.LocalDate; import java.util.UUID; -public class ProfileDocument { +public class ProfileDocument extends WithMapId { @JsonProperty("company_id") @ApiModelProperty( value = "Ссылка на company",