From 338d8274abb3c3ae348c82c0677fc491e028235f Mon Sep 17 00:00:00 2001 From: akulikov Date: Thu, 25 May 2023 18:36:04 +0300 Subject: [PATCH] add CompaniesRequest --- .../config/PipelineConfiguration.java | 3 +- .../controller/GatewayController.java | 23 +++++ .../{ => listings}/CheckSecurityExist.java | 4 +- .../{ => listings}/GroupingCompanyParts.java | 4 +- .../{ => listings}/GroupingSecurityParts.java | 4 +- .../{ => listings}/ListingsRequestParam.java | 2 +- .../ValidateIncomeSecurities.java | 4 +- .../gatewayapi/request/BaseRequest.java | 78 +++++++++++++++ .../gatewayapi/request/CompaniesRequest.java | 94 +++++++++++++++++++ .../gatewayapi/request/ListingsRequest.java | 72 +------------- 10 files changed, 211 insertions(+), 77 deletions(-) rename clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/{ => listings}/CheckSecurityExist.java (94%) rename clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/{ => listings}/GroupingCompanyParts.java (95%) rename clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/{ => listings}/GroupingSecurityParts.java (93%) rename clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/{ => listings}/ListingsRequestParam.java (94%) rename clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/{ => listings}/ValidateIncomeSecurities.java (93%) create mode 100644 clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/BaseRequest.java create mode 100644 clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/CompaniesRequest.java 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 be359e1d7..e27b7288d 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 @@ -2,7 +2,8 @@ package ru.spcex.clearing.gatewayapi.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import ru.spcex.clearing.gatewayapi.logic.*; +import ru.spcex.clearing.gatewayapi.logic.Stage; +import ru.spcex.clearing.gatewayapi.logic.listings.*; import ru.spcex.platform.imdg.api.ImdgProvider; import java.util.ArrayList; diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/controller/GatewayController.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/controller/GatewayController.java index 1b4f1c42a..82372f57e 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/controller/GatewayController.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/controller/GatewayController.java @@ -11,6 +11,7 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; +import ru.spcex.clearing.gatewayapi.request.CompaniesRequest; import ru.spcex.clearing.gatewayapi.request.ListingsRequest; import ru.spcex.clearing.gatewayapi.response.CommonResponse; @@ -42,5 +43,27 @@ public class GatewayController { return commonResponse; } + @ApiOperation(value = "Put companies") + @ApiResponses(value = { + @ApiResponse(code = 200, message = "OK", response = CommonResponse.class), + @ApiResponse(code = 400, message = "Ошибка валидации", response = CommonResponse.class) + }) + @RequestMapping( + path = "/companies", + method = RequestMethod.POST, + consumes = MediaType.APPLICATION_JSON_VALUE, + produces = MediaType.APPLICATION_JSON_VALUE + ) + @ResponseBody + public CommonResponse companies(@RequestBody CompaniesRequest request) { + // todo pack it to abstract class + CommonResponse commonResponse = new CommonResponse(); + commonResponse.setId(request.getId()); + commonResponse.setType(request.getType()); + commonResponse.setDatetime(request.getDatetime()); + commonResponse.setSection(request.getSection()); + commonResponse.setCode(200); // todo set result code + return commonResponse; + } } diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/CheckSecurityExist.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/CheckSecurityExist.java similarity index 94% rename from clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/CheckSecurityExist.java rename to clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/CheckSecurityExist.java index 7f0e39b0a..6202575c3 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/CheckSecurityExist.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/CheckSecurityExist.java @@ -1,7 +1,9 @@ -package ru.spcex.clearing.gatewayapi.logic; +package ru.spcex.clearing.gatewayapi.logic.listings; 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; +import ru.spcex.clearing.gatewayapi.logic.Stage; import ru.spcex.clearing.gatewayapi.request.objects.IncomeSecurity; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.platform.enumeration.InstrumentType; diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/GroupingCompanyParts.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/GroupingCompanyParts.java similarity index 95% rename from clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/GroupingCompanyParts.java rename to clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/GroupingCompanyParts.java index 789389cc8..06efcf778 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/GroupingCompanyParts.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/GroupingCompanyParts.java @@ -1,5 +1,7 @@ -package ru.spcex.clearing.gatewayapi.logic; +package ru.spcex.clearing.gatewayapi.logic.listings; +import ru.spcex.clearing.gatewayapi.logic.ProcessResult; +import ru.spcex.clearing.gatewayapi.logic.Stage; import ru.spcex.clearing.gatewayapi.request.objects.*; import java.util.HashMap; diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/GroupingSecurityParts.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/GroupingSecurityParts.java similarity index 93% rename from clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/GroupingSecurityParts.java rename to clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/GroupingSecurityParts.java index c64b4ab76..8ccda7471 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/GroupingSecurityParts.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/GroupingSecurityParts.java @@ -1,5 +1,7 @@ -package ru.spcex.clearing.gatewayapi.logic; +package ru.spcex.clearing.gatewayapi.logic.listings; +import ru.spcex.clearing.gatewayapi.logic.ProcessResult; +import ru.spcex.clearing.gatewayapi.logic.Stage; import ru.spcex.clearing.gatewayapi.request.objects.*; import java.util.HashMap; diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/ListingsRequestParam.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/ListingsRequestParam.java similarity index 94% rename from clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/ListingsRequestParam.java rename to clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/ListingsRequestParam.java index 935ccab54..07f6bdae4 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/ListingsRequestParam.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/ListingsRequestParam.java @@ -1,4 +1,4 @@ -package ru.spcex.clearing.gatewayapi.logic; +package ru.spcex.clearing.gatewayapi.logic.listings; import ru.spcex.clearing.gatewayapi.request.ListingsRequest; import ru.spcex.clearing.gatewayapi.request.objects.IncomeSecurity; diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/ValidateIncomeSecurities.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/ValidateIncomeSecurities.java similarity index 93% rename from clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/ValidateIncomeSecurities.java rename to clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/ValidateIncomeSecurities.java index d47e15707..3cd3201cc 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/ValidateIncomeSecurities.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/ValidateIncomeSecurities.java @@ -1,5 +1,7 @@ -package ru.spcex.clearing.gatewayapi.logic; +package ru.spcex.clearing.gatewayapi.logic.listings; +import ru.spcex.clearing.gatewayapi.logic.ProcessResult; +import ru.spcex.clearing.gatewayapi.logic.Stage; import ru.spcex.clearing.gatewayapi.request.objects.IncomeSecurity; import ru.spcex.clearing.gatewayapi.request.objects.Listing; import ru.spcex.platform.enumeration.BondType; diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/BaseRequest.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/BaseRequest.java new file mode 100644 index 000000000..ad469e976 --- /dev/null +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/BaseRequest.java @@ -0,0 +1,78 @@ +package ru.spcex.clearing.gatewayapi.request; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import io.swagger.annotations.ApiModelProperty; +import ru.spcex.clearing.gatewayapi.config.deserializers.InstantDeserializer; + +import java.time.Instant; +import java.util.UUID; + +public class BaseRequest { + + @JsonProperty("id") + @ApiModelProperty( + value = """ + Передавать новый UUID, если процесс стартовал по расписанию, или UUID, возвращенный в Клиринговую + систему в ответ на запрос Клиринговой системы об экспорте ценных бумаг (см. п. «Сигнальный REST API»), + если процесс стартовал по запросу от Клиринговой системы. + """, + example = "ef47f76c-bcea-11ed-afa1-0242ac120002" + ) + private UUID id; + + @JsonProperty("type") + @ApiModelProperty( + value = """ + Передавать «DAY_START», если процесс стартовал по расписанию, или «ON_DEMAND», + если процесс стартовал по запросу от Клиринговой системы. + """, + example = "DAY_START" + ) + private String type; + + @JsonProperty("datetime") + @JsonDeserialize(using = InstantDeserializer.class) + @ApiModelProperty( + value = "Передавать дату и время формирования JSON объекта в формате «ДД.ММ.ГГГГ ЧЧ:ММ:СС:ссс».", + example = "01.01.2023 12:34:56:789" + ) + private Instant datetime; + + @JsonProperty("section") + @ApiModelProperty(value = "Секция (FOND или MKR)", example = "FOND") + private String section; + + + public UUID getId() { + return id; + } + + public void setId(UUID id) { + this.id = id; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public Instant getDatetime() { + return datetime; + } + + public void setDatetime(Instant datetime) { + this.datetime = datetime; + } + + public String getSection() { + return section; + } + + public void setSection(String section) { + this.section = section; + } +} diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/CompaniesRequest.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/CompaniesRequest.java new file mode 100644 index 000000000..6add93bb6 --- /dev/null +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/CompaniesRequest.java @@ -0,0 +1,94 @@ +package ru.spcex.clearing.gatewayapi.request; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModelProperty; +import ru.spcex.clearing.gatewayapi.request.objects.*; + +import java.util.List; + +public class CompaniesRequest extends BaseRequest { + @JsonProperty("company") + @ApiModelProperty(value = "Список компаний") + private List companyList; + + @JsonProperty("company_info") + @ApiModelProperty(value = "Список профилей участников") + private List companyInfoList; + + @JsonProperty("company_clearing_category") + @ApiModelProperty(value = "Список категорий участников клиринга") + private List companyClearingCategoryList; + + @JsonProperty("company_symbols") + @ApiModelProperty(value = "Список реквизитов участников") + private List memberCompanySymbolsList; + + @JsonProperty("contact") + @ApiModelProperty(value = "Список контактов участников") + private List contactList; + + @JsonProperty("profile_document") + @ApiModelProperty(value = "Список документов участников") + private List profileDocumentList; + + @JsonProperty("client") + @ApiModelProperty(value = "Список клиентов участников") + private List clientList; + + + public List getCompanyList() { + return companyList; + } + + public void setCompanyList(List companyList) { + this.companyList = companyList; + } + + public List getCompanyInfoList() { + return companyInfoList; + } + + public void setCompanyInfoList(List companyInfoList) { + this.companyInfoList = companyInfoList; + } + + public List getCompanyClearingCategoryList() { + return companyClearingCategoryList; + } + + public void setCompanyClearingCategoryList(List companyClearingCategoryList) { + this.companyClearingCategoryList = companyClearingCategoryList; + } + + public List getMemberCompanySymbolsList() { + return memberCompanySymbolsList; + } + + public void setMemberCompanySymbolsList(List memberCompanySymbolsList) { + this.memberCompanySymbolsList = memberCompanySymbolsList; + } + + public List getContactList() { + return contactList; + } + + public void setContactList(List contactList) { + this.contactList = contactList; + } + + public List getProfileDocumentList() { + return profileDocumentList; + } + + public void setProfileDocumentList(List profileDocumentList) { + this.profileDocumentList = profileDocumentList; + } + + public List getClientList() { + return clientList; + } + + public void setClientList(List clientList) { + this.clientList = clientList; + } +} diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/ListingsRequest.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/ListingsRequest.java index eaebabbb1..09663b32b 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/ListingsRequest.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/ListingsRequest.java @@ -1,49 +1,12 @@ package ru.spcex.clearing.gatewayapi.request; import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import io.swagger.annotations.ApiModelProperty; -import ru.spcex.clearing.gatewayapi.config.deserializers.InstantDeserializer; import ru.spcex.clearing.gatewayapi.request.objects.*; -import java.time.Instant; import java.util.List; -import java.util.UUID; - -public class ListingsRequest { - @JsonProperty("id") - @ApiModelProperty( - value = """ - Передавать новый UUID, если процесс стартовал по расписанию, или UUID, возвращенный в Клиринговую - систему в ответ на запрос Клиринговой системы об экспорте ценных бумаг (см. п. «Сигнальный REST API»), - если процесс стартовал по запросу от Клиринговой системы. - """, - example = "ef47f76c-bcea-11ed-afa1-0242ac120002" - ) - private UUID id; - - @JsonProperty("type") - @ApiModelProperty( - value = """ - Передавать «DAY_START», если процесс стартовал по расписанию, или «ON_DEMAND», - если процесс стартовал по запросу от Клиринговой системы. - """, - example = "DAY_START" - ) - private String type; - - @JsonProperty("datetime") - @JsonDeserialize(using = InstantDeserializer.class) - @ApiModelProperty( - value = "Передавать дату и время формирования JSON объекта в формате «ДД.ММ.ГГГГ ЧЧ:ММ:СС:ссс».", - example = "01.01.2023 12:34:56:789" - ) - private Instant datetime; - - @JsonProperty("section") - @ApiModelProperty(value = "Секция (FOND или MKR)", example = "FOND") - private String section; +public class ListingsRequest extends BaseRequest { @JsonProperty("security") @ApiModelProperty(value = "Список security") private List securities; @@ -80,39 +43,6 @@ public class ListingsRequest { @ApiModelProperty(value = "Список контактов компаний эмитентов") private List issuerContactList; - - public UUID getId() { - return id; - } - - public void setId(UUID id) { - this.id = id; - } - - public String getType() { - return type; - } - - public void setType(String type) { - this.type = type; - } - - public Instant getDatetime() { - return datetime; - } - - public void setDatetime(Instant datetime) { - this.datetime = datetime; - } - - public String getSection() { - return section; - } - - public void setSection(String section) { - this.section = section; - } - public List getSecurities() { return securities; }