diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/company/DeleteCompanyController.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/company/CompanyController.java similarity index 67% rename from clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/company/DeleteCompanyController.java rename to clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/company/CompanyController.java index d6555064d..f75928320 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/company/DeleteCompanyController.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/company/CompanyController.java @@ -5,14 +5,14 @@ import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponses; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.*; import ru.clearing.classes.statics.data.company.Company; import ru.spcex.clearing.backendapi.controller.queue.AbstractQueueController; import ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction; +import ru.spcex.clearing.backendapi.controller.request.cud.company.CompanyNewAction; +import ru.spcex.clearing.backendapi.controller.response.BasicSpcexResponse; import ru.spcex.clearing.backendapi.controller.response.cud.CudResponse; import ru.spcex.clearing.backendapi.controller.response.entity.CommonGetAllResponse; import ru.spcex.clearing.backendapi.service.IOperator; @@ -26,12 +26,12 @@ import java.util.concurrent.ExecutionException; @Controller @RequestMapping("/companies") -public class DeleteCompanyController extends AbstractQueueController { +public class CompanyController extends AbstractQueueController { private final IStateLoader stateLoader; @Autowired - public DeleteCompanyController(IOperator operator, - IStateLoader stateLoader) { + public CompanyController(IOperator operator, + IStateLoader stateLoader) { super(operator); this.stateLoader = stateLoader; } @@ -57,4 +57,14 @@ public class DeleteCompanyController extends AbstractQueueController { response.fromEntity(all); return response; } + + @ApiOperation(value = "new company.") + @ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CudResponse.class), @ApiResponse(code = 400, message = "Ошибка валидации", response = BasicSpcexResponse.class)}) + @RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) + @ResponseBody + public CudResponse add( + @ApiParam(value = "Параметры команды в JSON формате.", required = true) + @RequestBody CompanyNewAction companyNewAction) throws ExecutionException, InterruptedException { + return processRequest(Consts.DESTINATION_COMPANY_NEW, companyNewAction); + } } diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/company/CompanyNewAction.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/company/CompanyNewAction.java new file mode 100644 index 000000000..b44582218 --- /dev/null +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/company/CompanyNewAction.java @@ -0,0 +1,83 @@ +package ru.spcex.clearing.backendapi.controller.request.cud.company; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModelProperty; +import ru.spcex.clearing.backendapi.domain.actions.IAction; +import ru.spcex.clearing.platform.messaging.domain.ActionType; +import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyNewRequest; + +public class CompanyNewAction implements IAction { + + @ApiModelProperty(value = "Краткое наименование Компании", example = "Company Name") + @JsonProperty + private String shortName; + @ApiModelProperty(value = "Полное наименование Компании", example = "OOO Full Company Name") + @JsonProperty + private String fullName; + @ApiModelProperty(value = "Код участника торгов", example = "TRADINGCODE") + @JsonProperty + private String tradingCode; + @ApiModelProperty(value = "Код участника клиринга", example = "CLEARINGCODE") + @JsonProperty + private String clearingCode; + @ApiModelProperty(value = "Регистрационный код участника", example = "REGISTRATIONCODE") + @JsonProperty + private String registrationCode; + + @Override + public CompanyNewRequest toRequest() { + CompanyNewRequest request = new CompanyNewRequest(); + request.setShortName(this.shortName); + request.setFullName(this.fullName); + request.setTradingCode(this.tradingCode); + request.setClearingCode(this.clearingCode); + request.setRegistrationCode(this.registrationCode); + return request; + } + + @ApiModelProperty(hidden = true) + @Override + public ActionType getActionType() { + return ActionType.NEW; + } + + 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 getTradingCode() { + return tradingCode; + } + + public void setTradingCode(String tradingCode) { + this.tradingCode = tradingCode; + } + + public String getClearingCode() { + return clearingCode; + } + + public void setClearingCode(String clearingCode) { + this.clearingCode = clearingCode; + } + + public String getRegistrationCode() { + return registrationCode; + } + + public void setRegistrationCode(String registrationCode) { + this.registrationCode = registrationCode; + } +} diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanyService.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanyService.java index e9008c33d..9fa18f424 100644 --- a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanyService.java +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanyService.java @@ -12,6 +12,7 @@ import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.platform.messaging.domain.BaseRequest; import ru.spcex.clearing.platform.messaging.domain.Consts; import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest; +import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyNewRequest; import ru.spcex.clearing.platform.messaging.service.QueueConsumer; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; @@ -33,9 +34,26 @@ public class CompanyService extends QueueConsumer implements InitializingBean { callback(CommonDeleteRequest.class) .setConsumer(this::deleteCompany) .forDestination(Consts.DESTINATION_COMPANY_DELETE, callbacks::put); + callback(CompanyNewRequest.class) + .setConsumer(this::createCompany) + .forDestination(Consts.DESTINATION_COMPANY_NEW, callbacks::put); init(); } + private void createCompany(BaseRequest companyNewRequestBaseRequest) { + CompanyNewRequest req = companyNewRequestBaseRequest.getRequestPayload(); + log.debug("company-new request received, BaseRequest.id = {}", companyNewRequestBaseRequest.getId()); + Company company = new Company(); + company.setShortName(req.getShortName()); + company.setFullName(req.getFullName()); + company.setTradingCode(req.getTradingCode()); + company.setClearingCode(req.getClearingCode()); + company.setRegistrationCode(req.getRegistrationCode()); + companyMap.insert(company); + log.debug("company-new request processed, BaseRequest.id = {}, company.id={}", + companyNewRequestBaseRequest.getId(), company.getId()); + } + private void deleteCompany(BaseRequest userRequest) { CommonDeleteRequest req = userRequest.getRequestPayload(); log.debug("CommonDeleteRequest received id = {}", req.getId()); diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java index 97ed7998a..cf5043740 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java @@ -21,6 +21,7 @@ public interface Consts { String DESTINATION_PLANNER_UPDATE = "planner-update"; String DESTINATION_PLANNER_DELETE = "planner-delete"; + String DESTINATION_COMPANY_NEW = "company-new"; String DESTINATION_COMPANY_DELETE = "company-delete"; String DESTINATION_COMPANY_INFO_UPDATE = "company-info-update"; String DESTINATION_COMPANY_SYMBOL_UPDATE = "company-symbol-update"; diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/CompanyNewRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/CompanyNewRequest.java new file mode 100644 index 000000000..a3796192e --- /dev/null +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/CompanyNewRequest.java @@ -0,0 +1,56 @@ +package ru.spcex.clearing.platform.messaging.domain.cud.company; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class CompanyNewRequest { + @JsonProperty + private String shortName; + @JsonProperty + private String fullName; + @JsonProperty + private String tradingCode; + @JsonProperty + private String clearingCode; + @JsonProperty + private String registrationCode; + + 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 getTradingCode() { + return tradingCode; + } + + public void setTradingCode(String tradingCode) { + this.tradingCode = tradingCode; + } + + public String getClearingCode() { + return clearingCode; + } + + public void setClearingCode(String clearingCode) { + this.clearingCode = clearingCode; + } + + public String getRegistrationCode() { + return registrationCode; + } + + public void setRegistrationCode(String registrationCode) { + this.registrationCode = registrationCode; + } +}