ialbert 2023-03-31 17:23:53 +03:00
parent ead30c2765
commit 2570b82309
5 changed files with 175 additions and 7 deletions

View file

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

View file

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

View file

@ -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<CompanyNewRequest> 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<CommonDeleteRequest> userRequest) {
CommonDeleteRequest req = userRequest.getRequestPayload();
log.debug("CommonDeleteRequest received id = {}", req.getId());

View file

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

View file

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