From b6a48e49d775c3aa9a7faede0c39c4efb36ba4ea Mon Sep 17 00:00:00 2001 From: akulikov Date: Wed, 24 May 2023 15:20:33 +0300 Subject: [PATCH] . --- .../gatewayapi/config/GatewayApiSettings.java | 10 +- .../config/InboundServerSettings.java | 40 ++++ .../config/serializers/InstantSerializer.java | 21 ++ .../serializers/LocalDateSerializer.java | 20 ++ .../controller/GatewayController.java | 31 ++- .../logic/GroupingCompanyParts.java | 60 ++++++ .../logic/GroupingSecurityParts.java | 64 ++++++ .../gatewayapi/logic/ProcessResult.java | 4 + .../clearing/gatewayapi/logic/Processor.java | 23 +++ .../clearing/gatewayapi/logic/Stage.java | 5 + .../{FullRequest.java => InboundRequest.java} | 2 +- .../gatewayapi/request/ListingsRequest.java | 187 ++++++++++++++++++ .../gatewayapi/request/objects/Currency.java | 2 +- .../objects/DirAuctionBiddingType.java | 2 +- .../request/objects/IssuerCompany.java | 109 ++++++++++ .../request/objects/IssuerCompanyInfo.java | 115 +++++++++++ .../request/objects/IssuerCompanySymbols.java | 72 +++++++ .../{Contact.java => IssuerContact.java} | 8 +- .../{Company.java => MemberCompany.java} | 29 +-- ...ava => MemberCompanyClearingCategory.java} | 2 +- ...ompanyInfo.java => MemberCompanyInfo.java} | 65 ++---- ...Symbols.java => MemberCompanySymbols.java} | 12 +- .../request/objects/MemberContact.java | 60 ++++++ .../gatewayapi/request/objects/Security.java | 47 +++++ .../gatewayapi/response/CommonResponse.java | 85 ++++++++ .../src/main/resources/application.properties | 11 +- 26 files changed, 991 insertions(+), 95 deletions(-) create mode 100644 clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/InboundServerSettings.java create mode 100644 clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/serializers/InstantSerializer.java create mode 100644 clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/serializers/LocalDateSerializer.java create mode 100644 clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/GroupingCompanyParts.java create mode 100644 clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/GroupingSecurityParts.java create mode 100644 clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/ProcessResult.java create mode 100644 clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/Processor.java create mode 100644 clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/Stage.java rename clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/{FullRequest.java => InboundRequest.java} (98%) create mode 100644 clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/ListingsRequest.java create mode 100644 clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/IssuerCompany.java create mode 100644 clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/IssuerCompanyInfo.java create mode 100644 clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/IssuerCompanySymbols.java rename clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/{Contact.java => IssuerContact.java} (92%) rename clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/{Company.java => MemberCompany.java} (75%) rename clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/{CompanyClearingCategory.java => MemberCompanyClearingCategory.java} (98%) rename clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/{CompanyInfo.java => MemberCompanyInfo.java} (71%) rename clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/{CompanySymbols.java => MemberCompanySymbols.java} (81%) create mode 100644 clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/MemberContact.java create mode 100644 clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/response/CommonResponse.java diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/GatewayApiSettings.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/GatewayApiSettings.java index 8fec38e7e..bfe34b603 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/GatewayApiSettings.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/GatewayApiSettings.java @@ -9,11 +9,12 @@ import ru.spcex.platform.imdg.iml.hazelcast.config.HazelcastClientParams; @Component @PropertySource("file:${spring.config.location}/application.properties") -@ConfigurationProperties("backend-api") +@ConfigurationProperties("gateway-api") public class GatewayApiSettings { private HazelcastClientParams hazelcast; private KafkaProducerSettings kafkaProducer; private KafkaConsumerSettings kafkaConsumer; + private InboundServerSettings inboundServer; public HazelcastClientParams getHazelcast() { return hazelcast; @@ -39,4 +40,11 @@ public class GatewayApiSettings { this.kafkaConsumer = kafkaConsumer; } + public InboundServerSettings getInboundServer() { + return inboundServer; + } + + public void setInboundServer(InboundServerSettings inboundServer) { + this.inboundServer = inboundServer; + } } diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/InboundServerSettings.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/InboundServerSettings.java new file mode 100644 index 000000000..c330b1c2b --- /dev/null +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/InboundServerSettings.java @@ -0,0 +1,40 @@ +package ru.spcex.clearing.gatewayapi.config; + +public class InboundServerSettings { + private String host; + private String path; + private Integer port; + private Boolean ssl; + + public String getHost() { + return host; + } + + public void setHost(String host) { + this.host = host; + } + + public Integer getPort() { + return port; + } + + public void setPort(Integer port) { + this.port = port; + } + + public Boolean getSsl() { + return ssl; + } + + public void setSsl(Boolean ssl) { + this.ssl = ssl; + } + + public String getPath() { + return path; + } + + public void setPath(String path) { + this.path = path; + } +} diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/serializers/InstantSerializer.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/serializers/InstantSerializer.java new file mode 100644 index 000000000..d6ea47601 --- /dev/null +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/serializers/InstantSerializer.java @@ -0,0 +1,21 @@ +package ru.spcex.clearing.gatewayapi.config.serializers; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; +import ru.spcex.platform.utils.time.TimeUtil; + +import java.io.IOException; +import java.time.Instant; +import java.time.format.DateTimeFormatter; + +public class InstantSerializer extends JsonSerializer { + private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm:ss:SSS"); + + @Override + public void serialize(Instant value, JsonGenerator gen, SerializerProvider serializers) throws IOException { + if (value == null) return; + gen.writeString(TimeUtil.formatInstant(value, formatter)); + } +} + diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/serializers/LocalDateSerializer.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/serializers/LocalDateSerializer.java new file mode 100644 index 000000000..efb762bc6 --- /dev/null +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/serializers/LocalDateSerializer.java @@ -0,0 +1,20 @@ +package ru.spcex.clearing.gatewayapi.config.serializers; + + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; + +import java.io.IOException; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + +public class LocalDateSerializer extends JsonSerializer { + private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy"); + + @Override + public void serialize(LocalDate value, JsonGenerator gen, SerializerProvider serializers) throws IOException { + if (value == null) return; + gen.writeString(value.format(formatter)); + } +} 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 33c5545ea..1b4f1c42a 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,21 +11,36 @@ 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.FullRequest; +import ru.spcex.clearing.gatewayapi.request.ListingsRequest; +import ru.spcex.clearing.gatewayapi.response.CommonResponse; @Controller @RequestMapping("/") public class GatewayController { private final Logger log = LoggerFactory.getLogger(getClass()); - @ApiOperation(value = "Test gateway post request") - @ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = String.class), @ApiResponse(code = 400, message = "Ошибка валидации", response = String.class)}) - @RequestMapping(path = "/inbound_request", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.TEXT_PLAIN_VALUE) + @ApiOperation(value = "Put listings") + @ApiResponses(value = { + @ApiResponse(code = 200, message = "OK", response = CommonResponse.class), + @ApiResponse(code = 400, message = "Ошибка валидации", response = CommonResponse.class) + }) + @RequestMapping( + path = "/listings", + method = RequestMethod.POST, + consumes = MediaType.APPLICATION_JSON_VALUE, + produces = MediaType.APPLICATION_JSON_VALUE + ) @ResponseBody - public String inboundRequest(@RequestBody FullRequest request) { - log.info("toString: {}", request.toString()); - log.info("Call test method for gateway-api controller"); - return "gateway-api controller test method"; + public CommonResponse listings(@RequestBody ListingsRequest 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/GroupingCompanyParts.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/GroupingCompanyParts.java new file mode 100644 index 000000000..ab2edf92b --- /dev/null +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/GroupingCompanyParts.java @@ -0,0 +1,60 @@ +package ru.spcex.clearing.gatewayapi.logic; + +import ru.spcex.clearing.gatewayapi.request.ListingsRequest; +import ru.spcex.clearing.gatewayapi.request.objects.IssuerCompany; +import ru.spcex.clearing.gatewayapi.request.objects.IssuerCompanyInfo; +import ru.spcex.clearing.gatewayapi.request.objects.IssuerCompanySymbols; +import ru.spcex.clearing.gatewayapi.request.objects.IssuerContact; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +public class GroupingCompanyParts extends Stage { + @Override + public ProcessResult process(ListingsRequest param) { + List companyList = param.getIssuerCompanyList(); + Map issuerCompanyMap = new HashMap<>(); + for (IssuerCompany issuerCompany : companyList) { + if (issuerCompanyMap.put(issuerCompany.getId(), issuerCompany) != null) { + throw new IllegalStateException("Duplicate key"); + } + } + + List issuerCompanyInfoList = param.getIssuerCompanyInfoList(); + for (IssuerCompanyInfo issuerCompanyInfo : issuerCompanyInfoList) { + UUID issuerCompanyInfoUUID = issuerCompanyInfo.getCompanyId(); + IssuerCompany issuerCompany = issuerCompanyMap.get(issuerCompanyInfoUUID); + if (issuerCompany == null) { + // todo error + continue; + } + issuerCompany.getIssuerCompanyInfoList().add(issuerCompanyInfo); + } + + List issuerCompanySymbolsList = param.getIssuerCompanySymbolsList(); + for (IssuerCompanySymbols issuerCompanySymbols : issuerCompanySymbolsList) { + UUID issuerCompanySymbolsUUID = issuerCompanySymbols.getCompanyId(); + IssuerCompany issuerCompany = issuerCompanyMap.get(issuerCompanySymbolsUUID); + if (issuerCompany == null) { + // todo error + continue; + } + issuerCompany.getIssuerCompanySymbolsList().add(issuerCompanySymbols); + } + + List issuerContactList = param.getIssuerContactList(); + for (IssuerContact issuerContact : issuerContactList) { + UUID issuerContactUUID = issuerContact.getCompanyId(); + IssuerCompany issuerCompany = issuerCompanyMap.get(issuerContactUUID); + if (issuerCompany == null) { + // todo error + continue; + } + issuerCompany.getIssuerContactList().add(issuerContact); + } + + return null; + } +} 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/GroupingSecurityParts.java new file mode 100644 index 000000000..d90c60480 --- /dev/null +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/GroupingSecurityParts.java @@ -0,0 +1,64 @@ +package ru.spcex.clearing.gatewayapi.logic; + +import ru.spcex.clearing.gatewayapi.request.ListingsRequest; +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 GroupingSecurityParts extends Stage { + @Override + public ProcessResult process(ListingsRequest param) { + List securities = param.getSecurities(); + Map securityMap = new HashMap<>(); + for (Security security : securities) { + if (securityMap.put(security.getId(), security) != null) { + // todo error + throw new IllegalStateException("Duplicate key"); + } + } + + List couponSchedules = param.getCouponSchedules(); + for (CouponSchedule couponSchedule : couponSchedules) { + UUID couponScheduleUUID = couponSchedule.getSecurityId(); + Security security = securityMap.get(couponScheduleUUID); + if (security == null) { + // todo error + continue; + } + security.getCouponScheduleList().add(couponSchedule); + } + + List currencyList = param.getCurrencies(); + for (Currency currency : currencyList) { + UUID currencyUUID = currency.getId(); + // todo сделать после выяснения + } + + List listingList = param.getListingList(); + for (Listing listing : listingList) { + UUID listingUUID = listing.getSecurityId(); + Security security = securityMap.get(listingUUID); + if (security == null) { + // todo error + continue; + } + security.getListingList().add(listing); + } + + List nominalList = param.getNominalList(); + for (Nominal nominal : nominalList) { + UUID nominalUUID = nominal.getSecurityId(); + Security security = securityMap.get(nominalUUID); + if (security == null) { + // todo error + continue; + } + security.getNominalList().add(nominal); + } + + return null; + } +} diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/ProcessResult.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/ProcessResult.java new file mode 100644 index 000000000..cf569bb07 --- /dev/null +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/ProcessResult.java @@ -0,0 +1,4 @@ +package ru.spcex.clearing.gatewayapi.logic; + +public class ProcessResult { +} diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/Processor.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/Processor.java new file mode 100644 index 000000000..23f9b5863 --- /dev/null +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/Processor.java @@ -0,0 +1,23 @@ +package ru.spcex.clearing.gatewayapi.logic; + +import java.util.List; + +public abstract class Processor { + private List> pipeline; + + public ProcessResult process(T param) { + for (Stage stage : pipeline) { + ProcessResult processResult = stage.process(param); + if (processResult != null) return processResult; + } + return null; + } + + public List> getPipeline() { + return pipeline; + } + + public void setPipeline(List> pipeline) { + this.pipeline = pipeline; + } +} diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/Stage.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/Stage.java new file mode 100644 index 000000000..3439e051c --- /dev/null +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/Stage.java @@ -0,0 +1,5 @@ +package ru.spcex.clearing.gatewayapi.logic; + +public abstract class Stage { + public abstract ProcessResult process(T param); +} diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/FullRequest.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/InboundRequest.java similarity index 98% rename from clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/FullRequest.java rename to clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/InboundRequest.java index df291f764..539dc9e67 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/FullRequest.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/InboundRequest.java @@ -8,7 +8,7 @@ import ru.spcex.clearing.gatewayapi.config.deserializers.InstantDeserializer; import java.time.Instant; import java.util.UUID; -public class FullRequest { +public class InboundRequest { @JsonProperty("id") @ApiModelProperty( value = """ 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 new file mode 100644 index 000000000..719d57ebf --- /dev/null +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/ListingsRequest.java @@ -0,0 +1,187 @@ +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; + + @JsonProperty("security") + @ApiModelProperty(value = "Список security") + private List securities; + + @JsonProperty("coupon_schedule") + @ApiModelProperty(value = "Список coupon_schedule") + private List couponSchedules; + + @JsonProperty("currency") + @ApiModelProperty(value = "Список валют") + private List currencies; + + @JsonProperty("listing") + @ApiModelProperty(value = "Список режимов торгов") + private List listingList; + + @JsonProperty("nominal") + @ApiModelProperty(value = "Список nominal") + private List nominalList; + + @JsonProperty("company") + @ApiModelProperty(value = "Список компаний эмитентов") + private List issuerCompanyList; + + @JsonProperty("company_info") + @ApiModelProperty(value = "Список профилей компаний эмитентов") + private List issuerCompanyInfoList; + + @JsonProperty("company_symbols") + @ApiModelProperty(value = "Список реквизитов компаний эмитентов") + private List issuerCompanySymbolsList; + + @JsonProperty("contact") + @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; + } + + public void setSecurities(List securities) { + this.securities = securities; + } + + public List getCouponSchedules() { + return couponSchedules; + } + + public void setCouponSchedules(List couponSchedules) { + this.couponSchedules = couponSchedules; + } + + public List getCurrencies() { + return currencies; + } + + public void setCurrencies(List currencies) { + this.currencies = currencies; + } + + public List getListingList() { + return listingList; + } + + public void setListingList(List listingList) { + this.listingList = listingList; + } + + public List getNominalList() { + return nominalList; + } + + public void setNominalList(List nominalList) { + this.nominalList = nominalList; + } + + public List getIssuerCompanyList() { + return issuerCompanyList; + } + + public void setIssuerCompanyList(List issuerCompanyList) { + this.issuerCompanyList = issuerCompanyList; + } + + public List getIssuerCompanyInfoList() { + return issuerCompanyInfoList; + } + + public void setIssuerCompanyInfoList(List issuerCompanyInfoList) { + this.issuerCompanyInfoList = issuerCompanyInfoList; + } + + public List getIssuerCompanySymbolsList() { + return issuerCompanySymbolsList; + } + + public void setIssuerCompanySymbolsList(List issuerCompanySymbolsList) { + this.issuerCompanySymbolsList = issuerCompanySymbolsList; + } + + public List getIssuerContactList() { + return issuerContactList; + } + + public void setIssuerContactList(List issuerContactList) { + this.issuerContactList = issuerContactList; + } +} diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/Currency.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/Currency.java index e12ccbf31..208002d52 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/Currency.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/Currency.java @@ -8,7 +8,7 @@ import java.util.UUID; public class Currency { @JsonProperty("id") @ApiModelProperty( - value = "id", + value = "Ссылка на security", example = "ef47f76c-bcea-11ed-afa1-0242ac120005" ) private UUID id; diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/DirAuctionBiddingType.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/DirAuctionBiddingType.java index cc10dc125..e484e38eb 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/DirAuctionBiddingType.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/DirAuctionBiddingType.java @@ -8,7 +8,7 @@ import java.util.UUID; public class DirAuctionBiddingType { @JsonProperty("id") @ApiModelProperty( - value = "id", + value = "Ссылка на security", example = "ef47f76c-bcea-11ed-afa1-0242ac120004" ) private UUID id; diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/IssuerCompany.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/IssuerCompany.java new file mode 100644 index 000000000..369c083b0 --- /dev/null +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/IssuerCompany.java @@ -0,0 +1,109 @@ +package ru.spcex.clearing.gatewayapi.request.objects; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +@ApiModel("Компания эмитент") +public class IssuerCompany { + @JsonProperty("id") + @ApiModelProperty( + value = "Идентификатор Эмитента в Модуле регистрации биржевых инструментов", + example = "ef47f76c-bcea-11ed-afa1-0242ac120003" + ) + private UUID id; + + @JsonProperty("short_name") + @ApiModelProperty( + value = "Основные сведения\\Сокращенное наименование на русском языке", + example = "Банк ВТБ (ПАО)" + ) + private String shortName; + + @JsonProperty("full_name") + @ApiModelProperty( + value = "Основные сведения\\Полное наименование на русском языке", + example = "Банк ВТБ (публичное акционерное общество)" + ) + private String fullName; + + @JsonProperty("workflow_status") + @ApiModelProperty( + value = """ + «ACTV», если Эмитент не удален + «BLKD», если Эмитент удален + """, + example = "ACTV" + ) + private String workflowStatus; + + @JsonIgnore + private List issuerCompanyInfoList = new ArrayList<>(); + + @JsonIgnore + private List issuerCompanySymbolsList = new ArrayList<>(); + + @JsonIgnore + private List issuerContactList = new ArrayList<>(); + + public UUID getId() { + return id; + } + + public void setId(UUID id) { + this.id = id; + } + + public String getShortName() { + return shortName; + } + + public void setShortName(String shortName) { + this.shortName = shortName; + } + + public String getFullName() { + return fullName; + } + + public void setFullName(String fullName) { + this.fullName = fullName; + } + + public String getWorkflowStatus() { + return workflowStatus; + } + + public void setWorkflowStatus(String workflowStatus) { + this.workflowStatus = workflowStatus; + } + + public List getIssuerCompanyInfoList() { + return issuerCompanyInfoList; + } + + public void setIssuerCompanyInfoList(List issuerCompanyInfoList) { + this.issuerCompanyInfoList = issuerCompanyInfoList; + } + + public List getIssuerCompanySymbolsList() { + return issuerCompanySymbolsList; + } + + public void setIssuerCompanySymbolsList(List issuerCompanySymbolsList) { + this.issuerCompanySymbolsList = issuerCompanySymbolsList; + } + + public List getIssuerContactList() { + return issuerContactList; + } + + public void setIssuerContactList(List issuerContactList) { + this.issuerContactList = issuerContactList; + } +} diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/IssuerCompanyInfo.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/IssuerCompanyInfo.java new file mode 100644 index 000000000..af76045d4 --- /dev/null +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/IssuerCompanyInfo.java @@ -0,0 +1,115 @@ +package ru.spcex.clearing.gatewayapi.request.objects; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +import java.util.UUID; + + +@ApiModel("Профиль компании эмитента") +public class IssuerCompanyInfo { + @JsonProperty("company_id") + @ApiModelProperty( + value = "Ссылка на company", + example = "ef47f76c-bcea-11ed-afa1-0242ac120003" + ) + private UUID companyId; + + @JsonProperty("country_code") + @ApiModelProperty(value = "RUS", example = "RUS") + private String countryCode; + + @JsonProperty("legal_kind") + @ApiModelProperty(value = "JURD", example = "JURD") + private String legalKind; + + @JsonProperty("organization_type") + @ApiModelProperty( + value = """ + «CRED», если Основные сведения\\Кредитная организация = true + «NCRD», если Основные сведения\\Кредитная организация = false + """, + example = "CRED" + ) + private String organizationType; + + @JsonProperty("residence") + @ApiModelProperty( + value = "Резиденция. Трехсимвольный код страны из классификатора ОКСМ.", + example = "RUS" + ) + private String residence; + + @JsonProperty("short_name_eng") + @ApiModelProperty( + value = "Основные сведения\\Сокращенное наименование на английском языке", + example = "VTB (PJSC)" + ) + private String shortNameEng; + + @JsonProperty("full_name_eng") + @ApiModelProperty( + value = "Основные сведения\\Полное наименование на английском языке", + example = "VTB (public joint stock company)" + ) + private String fullNameEng; + + + public UUID getCompanyId() { + return companyId; + } + + public void setCompanyId(UUID companyId) { + this.companyId = companyId; + } + + public String getCountryCode() { + return countryCode; + } + + public void setCountryCode(String countryCode) { + this.countryCode = countryCode; + } + + public String getLegalKind() { + return legalKind; + } + + public void setLegalKind(String legalKind) { + this.legalKind = legalKind; + } + + public String getOrganizationType() { + return organizationType; + } + + public void setOrganizationType(String organizationType) { + this.organizationType = organizationType; + } + + public String getResidence() { + return residence; + } + + public void setResidence(String residence) { + this.residence = residence; + } + + public String getShortNameEng() { + return shortNameEng; + } + + public void setShortNameEng(String shortNameEng) { + this.shortNameEng = shortNameEng; + } + + public String getFullNameEng() { + return fullNameEng; + } + + public void setFullNameEng(String fullNameEng) { + this.fullNameEng = fullNameEng; + } + +} diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/IssuerCompanySymbols.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/IssuerCompanySymbols.java new file mode 100644 index 000000000..eac3e4ef0 --- /dev/null +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/IssuerCompanySymbols.java @@ -0,0 +1,72 @@ +package ru.spcex.clearing.gatewayapi.request.objects; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +import java.util.UUID; + +@ApiModel("Реквизиты компании эмитента") +public class IssuerCompanySymbols { + @JsonProperty("company_id") + @ApiModelProperty( + value = "Ссылка на company", + example = "ef47f76c-bcea-11ed-afa1-0242ac120003" + ) + private UUID companyId; + + @JsonProperty("company_symbol") + @ApiModelProperty( + value = """ + Передавать строки: + · OCVD + · INN + · CPP + · OCPO + · BIC + · OGRN + """, + example = "INN" + ) + private String companySymbol; + + @JsonProperty("company_symbol_value") + @ApiModelProperty( + value = """ + Значения для company_symbol: + Для OCVD - Регистрационные данные\\ОКВЭД + Для INN - Основные сведения\\ИНН + Для CPP - Основные сведения\\КПП + Для OCPO - Основные сведения\\ОКПО + Для BIC - Основные сведения\\БИК + Для OGRN - Основные сведения\\ОГРН + """, + example = "7702070139" + ) + private String companySymbolValue; + + + public UUID getCompanyId() { + return companyId; + } + + public void setCompanyId(UUID companyId) { + this.companyId = companyId; + } + + public String getCompanySymbol() { + return companySymbol; + } + + public void setCompanySymbol(String companySymbol) { + this.companySymbol = companySymbol; + } + + public String getCompanySymbolValue() { + return companySymbolValue; + } + + public void setCompanySymbolValue(String companySymbolValue) { + this.companySymbolValue = companySymbolValue; + } +} diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/Contact.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/IssuerContact.java similarity index 92% rename from clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/Contact.java rename to clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/IssuerContact.java index 0428ecd51..c9428973c 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/Contact.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/IssuerContact.java @@ -1,14 +1,16 @@ package ru.spcex.clearing.gatewayapi.request.objects; import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.util.UUID; -public class Contact { +@ApiModel("Контакты компании эмитента") +public class IssuerContact { @JsonProperty("company_id") @ApiModelProperty( - value = "Ссылка на компанию", + value = "Ссылка на company", example = "ef47f76c-bcea-11ed-afa1-0242ac120003" ) private UUID companyId; @@ -45,7 +47,7 @@ public class Contact { Для INFO - Контакты\\ФИО контактного лица + «, » + Должность контактного лица + «, » + Эл. почта контактного лица + «, » + Телефон контактного лица Для WEB - Контакты\\Веб-сайт """, - example = "example@ex.ample" + example = "test.org" ) private String contactValue; diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/Company.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/MemberCompany.java similarity index 75% rename from clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/Company.java rename to clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/MemberCompany.java index 29a3d380e..f2b51a1ae 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/Company.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/MemberCompany.java @@ -5,24 +5,27 @@ import io.swagger.annotations.ApiModelProperty; import java.util.UUID; -public class Company { +/** + * Компания участник + */ +public class MemberCompany { @JsonProperty("id") @ApiModelProperty( - value = "Идентификатор Эмитента в Модуле регистрации биржевых инструментов", + value = "Идентификатор участника", example = "ef47f76c-bcea-11ed-afa1-0242ac120003" ) private UUID id; @JsonProperty("short_name") @ApiModelProperty( - value = "Основные сведения\\Сокращенное наименование на русском языке", + value = "Краткое наименование участника", example = "Банк ВТБ (ПАО)" ) private String shortName; @JsonProperty("full_name") @ApiModelProperty( - value = "Основные сведения\\Полное наименование на русском языке", + value = "Полное наименование участника", example = "Банк ВТБ (публичное акционерное общество)" ) private String fullName; @@ -55,16 +58,6 @@ public class Company { ) private String initiatorCode; - @JsonProperty("workflow_status") - @ApiModelProperty( - value = """ - «ACTV», если Эмитент не удален - «BLKD», если Эмитент удален - """, - example = "ACTV" - ) - private String workflowStatus; - public UUID getId() { return id; @@ -90,14 +83,6 @@ public class Company { this.fullName = fullName; } - public String getWorkflowStatus() { - return workflowStatus; - } - - public void setWorkflowStatus(String workflowStatus) { - this.workflowStatus = workflowStatus; - } - public String getTradingCode() { return tradingCode; } diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/CompanyClearingCategory.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/MemberCompanyClearingCategory.java similarity index 98% rename from clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/CompanyClearingCategory.java rename to clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/MemberCompanyClearingCategory.java index d6c65966a..cd8b0ef39 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/CompanyClearingCategory.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 CompanyClearingCategory { +public class MemberCompanyClearingCategory { @JsonProperty("company_id") @ApiModelProperty( value = "Ссылка на company", diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/CompanyInfo.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/MemberCompanyInfo.java similarity index 71% rename from clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/CompanyInfo.java rename to clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/MemberCompanyInfo.java index 234b056a4..62cd0dbf4 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/CompanyInfo.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/MemberCompanyInfo.java @@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty; import java.util.UUID; -public class CompanyInfo { +public class MemberCompanyInfo { @JsonProperty("company_id") @ApiModelProperty( value = "Ссылка на company", @@ -14,8 +14,22 @@ public class CompanyInfo { private UUID companyId; @JsonProperty("country_code") - @ApiModelProperty(value = "RUS", example = "RUS") - private String countryCode; + @ApiModelProperty( + value = "Юрисдикция. Цифровой код страны из классификатора ОКСМ.", + example = "643" + ) + private Integer countryCode; + + @JsonProperty("professional_sign") + @ApiModelProperty( + value = """ + Признак проф. участника. Возможные значения: + · ALWD – Да + · DEND - Нет + """, + example = "DNED" + ) + private String professionalSign; @JsonProperty("legal_kind") @ApiModelProperty( @@ -35,17 +49,6 @@ public class CompanyInfo { ) private String organizationType; - @JsonProperty("professional_sign") - @ApiModelProperty( - value = """ - Признак проф. участника. Возможные значения: - · ALWD – Да - · DEND - Нет - """, - example = "DNED" - ) - private String professionalSign; - @JsonProperty("residence") @ApiModelProperty( value = "Резиденция. Трехсимвольный код страны из классификатора ОКСМ.", @@ -53,20 +56,6 @@ public class CompanyInfo { ) private String residence; - @JsonProperty("short_name_eng") - @ApiModelProperty( - value = "Основные сведения\\Сокращенное наименование на английском языке", - example = "VTB (PJSC)" - ) - private String shortNameEng; - - @JsonProperty("full_name_eng") - @ApiModelProperty( - value = "Основные сведения\\Полное наименование на английском языке", - example = "VTB (public joint stock company)" - ) - private String fullNameEng; - public UUID getCompanyId() { return companyId; @@ -76,11 +65,11 @@ public class CompanyInfo { this.companyId = companyId; } - public String getCountryCode() { + public Integer getCountryCode() { return countryCode; } - public void setCountryCode(String countryCode) { + public void setCountryCode(Integer countryCode) { this.countryCode = countryCode; } @@ -108,22 +97,6 @@ public class CompanyInfo { this.residence = residence; } - public String getShortNameEng() { - return shortNameEng; - } - - public void setShortNameEng(String shortNameEng) { - this.shortNameEng = shortNameEng; - } - - public String getFullNameEng() { - return fullNameEng; - } - - public void setFullNameEng(String fullNameEng) { - this.fullNameEng = fullNameEng; - } - public String getProfessionalSign() { return professionalSign; } diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/CompanySymbols.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/MemberCompanySymbols.java similarity index 81% rename from clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/CompanySymbols.java rename to clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/MemberCompanySymbols.java index 95eee1a9d..8ac053231 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/CompanySymbols.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 CompanySymbols { +public class MemberCompanySymbols { @JsonProperty("company_id") @ApiModelProperty( value = "Ссылка на company", @@ -36,15 +36,7 @@ public class CompanySymbols { @JsonProperty("company_symbol_value") @ApiModelProperty( - value = """ - Значения для company_symbol: - Для OCVD - Регистрационные данные\\ОКВЭД - Для INN - Основные сведения\\ИНН - Для CPP - Основные сведения\\КПП - Для OCPO - Основные сведения\\ОКПО - Для BIC - Основные сведения\\БИК - Для OGRN - Основные сведения\\ОГРН - """, + value = "Значение реквизита", example = "7702070139" ) private String companySymbolValue; 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 new file mode 100644 index 000000000..0f2bb5076 --- /dev/null +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/MemberContact.java @@ -0,0 +1,60 @@ +package ru.spcex.clearing.gatewayapi.request.objects; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModelProperty; + +import java.util.UUID; + +public class MemberContact { + @JsonProperty("company_id") + @ApiModelProperty( + value = "Ссылка на компанию", + example = "ef47f76c-bcea-11ed-afa1-0242ac120003" + ) + private UUID companyId; + + @JsonProperty("contact_type") + @ApiModelProperty( + value = """ + Тип контакта. Возможные значения: + · ADRS – адрес участника + · MAIL - Электронная почта участника клиринга + · PHON – Телефон участника клиринга + · FAX – факс участника клиринга + """, + example = "MAIL" + ) + private String contactType; + + @JsonProperty("contact_value") + @ApiModelProperty( + value = "Значение контакта", + example = "example@ya.ru" + ) + private String contactValue; + + + public UUID getCompanyId() { + return companyId; + } + + public void setCompanyId(UUID companyId) { + this.companyId = companyId; + } + + public String getContactType() { + return contactType; + } + + public void setContactType(String contactType) { + this.contactType = contactType; + } + + public String getContactValue() { + return contactValue; + } + + public void setContactValue(String contactValue) { + this.contactValue = contactValue; + } +} diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/Security.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/Security.java index 485e370fc..9a27405e4 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/Security.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/Security.java @@ -1,5 +1,6 @@ package ru.spcex.clearing.gatewayapi.request.objects; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import io.swagger.annotations.ApiModelProperty; @@ -7,6 +8,8 @@ import ru.spcex.clearing.gatewayapi.config.deserializers.LocalDateDeserializer; import java.math.BigDecimal; import java.time.LocalDate; +import java.util.ArrayList; +import java.util.List; import java.util.UUID; public class Security { @@ -168,6 +171,18 @@ public class Security { ) private BigDecimal couponFrequency; + @JsonIgnore + private List listingList = new ArrayList<>(); + + @JsonIgnore + private List couponScheduleList = new ArrayList<>(); + + @JsonIgnore + private List nominalList = new ArrayList<>(); + + @JsonIgnore + private List issuerCompanyList = new ArrayList<>(); + public UUID getId() { return id; } @@ -311,4 +326,36 @@ public class Security { public void setCouponFrequency(BigDecimal couponFrequency) { this.couponFrequency = couponFrequency; } + + public List getListingList() { + return listingList; + } + + public void setListingList(List listingList) { + this.listingList = listingList; + } + + public List getCouponScheduleList() { + return couponScheduleList; + } + + public void setCouponScheduleList(List couponScheduleList) { + this.couponScheduleList = couponScheduleList; + } + + public List getNominalList() { + return nominalList; + } + + public void setNominalList(List nominalList) { + this.nominalList = nominalList; + } + + public List getIssuerCompanyList() { + return issuerCompanyList; + } + + public void setIssuerCompanyList(List issuerCompanyList) { + this.issuerCompanyList = issuerCompanyList; + } } diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/response/CommonResponse.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/response/CommonResponse.java new file mode 100644 index 000000000..59a1d8bcf --- /dev/null +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/response/CommonResponse.java @@ -0,0 +1,85 @@ +package ru.spcex.clearing.gatewayapi.response; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import ru.spcex.clearing.gatewayapi.config.serializers.InstantSerializer; + +import java.time.Instant; +import java.util.UUID; + +@ApiModel(description = "Базовый формат ответа") +public class CommonResponse { + @JsonProperty("code") + @ApiModelProperty(value = "Код ответа", example = "200") + private Integer code; + + @JsonProperty("id") + @ApiModelProperty( + value = "Значение соответствует полученному из запроса", + example = "ef47f76c-bcea-11ed-afa1-0242ac120002" + ) + private UUID id; + + @JsonProperty("type") + @ApiModelProperty( + value = "Значение соответствует полученному из запроса", + example = "DAY_START" + ) + private String type; + + @JsonProperty("datetime") + @JsonSerialize(using = InstantSerializer.class) + @ApiModelProperty( + value = "Значение соответствует полученному из запроса", + example = "01.01.2023 12:34:56:789" + ) + private Instant datetime; + + @JsonProperty("section") + @ApiModelProperty( + value = "Значение соответствует полученному из запроса", 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; + } + + public Integer getCode() { + return code; + } + + public void setCode(Integer code) { + this.code = code; + } +} diff --git a/clearing-parent/gateway-api/src/main/resources/application.properties b/clearing-parent/gateway-api/src/main/resources/application.properties index 982647841..28dd2901f 100644 --- a/clearing-parent/gateway-api/src/main/resources/application.properties +++ b/clearing-parent/gateway-api/src/main/resources/application.properties @@ -1,20 +1,29 @@ server.port=8080 server.servlet.context-path=/gateway-api + spring.main.web-application-type=servlet + gateway-api.example-setting=test gateway-api.hazelcast.cluster-members=127.0.0.1:5701 gateway-api.hazelcast.login=dev gateway-api.hazelcast.password=dev-pass + gateway-api.kafka-producer.bootstrap-servers=localhost:9092 gateway-api.kafka-producer.acks=all gateway-api.kafka-producer.retries=0 gateway-api.kafka-producer.batch-size=16384 gateway-api.kafka-producer.linger-ms=1 gateway-api.kafka-producer.buffer-memory=33554432 + gateway-api.kafka-consumer.bootstrap-servers=localhost:9092 gateway-api.kafka-consumer.group-id=dev-group-gateway-api gateway-api.kafka-consumer.enable-auto-commit=true gateway-api.kafka-consumer.session-timeout-ms=30000 gateway-api.kafka-consumer.auto-offset-reset=latest gateway-api.kafka-consumer.linger-ms=1 -gateway-api.kafka-consumer.buffer-memory=33554432 \ No newline at end of file +gateway-api.kafka-consumer.buffer-memory=33554432 + +gateway-api.inbound-server.ssl=true +gateway-api.inbound-server.host=localhost +gateway-api.inbound-server.port=9999 +gateway-api.inbound-server.path=/inbound_request \ No newline at end of file