add CompaniesRequest

This commit is contained in:
akulikov 2023-05-25 18:36:04 +03:00
parent 6832899c2a
commit 338d8274ab
10 changed files with 211 additions and 77 deletions

View file

@ -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;

View file

@ -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;
}
}

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;
}
}

View file

@ -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<MemberCompany> companyList;
@JsonProperty("company_info")
@ApiModelProperty(value = "Список профилей участников")
private List<MemberCompanyInfo> companyInfoList;
@JsonProperty("company_clearing_category")
@ApiModelProperty(value = "Список категорий участников клиринга")
private List<MemberCompanyClearingCategory> companyClearingCategoryList;
@JsonProperty("company_symbols")
@ApiModelProperty(value = "Список реквизитов участников")
private List<MemberCompanySymbols> memberCompanySymbolsList;
@JsonProperty("contact")
@ApiModelProperty(value = "Список контактов участников")
private List<MemberContact> contactList;
@JsonProperty("profile_document")
@ApiModelProperty(value = "Список документов участников")
private List<ProfileDocument> profileDocumentList;
@JsonProperty("client")
@ApiModelProperty(value = "Список клиентов участников")
private List<Client> clientList;
public List<MemberCompany> getCompanyList() {
return companyList;
}
public void setCompanyList(List<MemberCompany> companyList) {
this.companyList = companyList;
}
public List<MemberCompanyInfo> getCompanyInfoList() {
return companyInfoList;
}
public void setCompanyInfoList(List<MemberCompanyInfo> companyInfoList) {
this.companyInfoList = companyInfoList;
}
public List<MemberCompanyClearingCategory> getCompanyClearingCategoryList() {
return companyClearingCategoryList;
}
public void setCompanyClearingCategoryList(List<MemberCompanyClearingCategory> companyClearingCategoryList) {
this.companyClearingCategoryList = companyClearingCategoryList;
}
public List<MemberCompanySymbols> getMemberCompanySymbolsList() {
return memberCompanySymbolsList;
}
public void setMemberCompanySymbolsList(List<MemberCompanySymbols> memberCompanySymbolsList) {
this.memberCompanySymbolsList = memberCompanySymbolsList;
}
public List<MemberContact> getContactList() {
return contactList;
}
public void setContactList(List<MemberContact> contactList) {
this.contactList = contactList;
}
public List<ProfileDocument> getProfileDocumentList() {
return profileDocumentList;
}
public void setProfileDocumentList(List<ProfileDocument> profileDocumentList) {
this.profileDocumentList = profileDocumentList;
}
public List<Client> getClientList() {
return clientList;
}
public void setClientList(List<Client> clientList) {
this.clientList = clientList;
}
}

View file

@ -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<IncomeSecurity> securities;
@ -80,39 +43,6 @@ public class ListingsRequest {
@ApiModelProperty(value = "Список контактов компаний эмитентов")
private List<IssuerContact> 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<IncomeSecurity> getSecurities() {
return securities;
}