backend-api http://jira.mfd.msk:8088/browse/CLS-273
This commit is contained in:
parent
43ae4b26d8
commit
a325a7fd2e
10 changed files with 716 additions and 0 deletions
|
|
@ -0,0 +1,97 @@
|
||||||
|
package ru.spcex.clearing.backendapi.controller.queue.registry;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
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.*;
|
||||||
|
import ru.clearing.classes.statics.data.registry.TradingClearingRegistry;
|
||||||
|
import ru.spcex.clearing.backendapi.controller.queue.AbstractQueueController;
|
||||||
|
import ru.spcex.clearing.backendapi.controller.request.cud.registry.TradingClearingRegistryNewAction;
|
||||||
|
import ru.spcex.clearing.backendapi.controller.request.cud.registry.TradingClearingRegistryUpdateAction;
|
||||||
|
import ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction;
|
||||||
|
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.controller.response.entity.registry.TradingClearingRegistryBackendGetById;
|
||||||
|
import ru.spcex.clearing.backendapi.service.IOperator;
|
||||||
|
import ru.spcex.clearing.backendapi.service.IStateLoader;
|
||||||
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.concurrent.ExecutionException;
|
||||||
|
|
||||||
|
@Controller
|
||||||
|
@RequestMapping("/registry/trading-clearing-registry")
|
||||||
|
public class TradingClearingRegistryController extends AbstractQueueController {
|
||||||
|
private final IStateLoader stateLoader;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
public TradingClearingRegistryController(IOperator operator, IStateLoader stateLoader) {
|
||||||
|
super(operator);
|
||||||
|
this.stateLoader = stateLoader;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "create TradingClearingRegistry.")
|
||||||
|
@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 TradingClearingRegistryNewAction bankAccountNewAction) throws ExecutionException, InterruptedException {
|
||||||
|
return processRequest(Consts.DESTINATION_TRADING_CLEARING_REGISTRY_NEW, bankAccountNewAction);
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "update TradingClearingRegistry.")
|
||||||
|
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CudResponse.class), @ApiResponse(code = 400, message = "Ошибка валидации", response = BasicSpcexResponse.class)})
|
||||||
|
@RequestMapping(value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE)
|
||||||
|
@ResponseBody
|
||||||
|
public CudResponse update(
|
||||||
|
@ApiParam(value = "Идентификатор изменяемого объекта.", required = true, example = "1234")
|
||||||
|
@PathVariable("id") Long id,
|
||||||
|
@ApiParam(value = "Новые значения полей объекта.", required = true)
|
||||||
|
@RequestBody TradingClearingRegistryUpdateAction tradingClearingRegistryUpdateAction) throws ExecutionException, InterruptedException {
|
||||||
|
tradingClearingRegistryUpdateAction.setId(id);
|
||||||
|
return processRequest(Consts.DESTINATION_TRADING_CLEARING_REGISTRY_UPDATE, tradingClearingRegistryUpdateAction);
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "delete TradingClearingRegistry.")
|
||||||
|
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CudResponse.class), @ApiResponse(code = 400, message = "Ошибка валидации", response = BasicSpcexResponse.class)})
|
||||||
|
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
|
||||||
|
@ResponseBody
|
||||||
|
public CudResponse delete(@ApiParam(value = "Идентификатор удаляемого объекта", required = true, example = "1234")
|
||||||
|
@PathVariable("id") Long id) throws ExecutionException, InterruptedException {
|
||||||
|
CommonDeleteAction deleteAction = new CommonDeleteAction();
|
||||||
|
deleteAction.setId(id);
|
||||||
|
return processRequest(Consts.DESTINATION_TRADING_CLEARING_REGISTRY_DELETE, deleteAction);
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "get TradingClearingRegistry by id.")
|
||||||
|
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = TradingClearingRegistryBackendGetById.class), @ApiResponse(code = 400, message = "Ошибка валидации", response = BasicSpcexResponse.class)})
|
||||||
|
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
|
||||||
|
@ResponseBody
|
||||||
|
public TradingClearingRegistryBackendGetById getById(@ApiParam(value = "Идентификатор объекта", required = true, example = "1234")
|
||||||
|
@PathVariable("id") Long id) {
|
||||||
|
Optional<TradingClearingRegistry> tradingClearingRegistry = stateLoader.getById(id, IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class);
|
||||||
|
TradingClearingRegistryBackendGetById response = new TradingClearingRegistryBackendGetById();
|
||||||
|
tradingClearingRegistry.ifPresentOrElse(response::fromEntity, () -> response.setCode(404));
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "get all TradingClearingRegistry's.")
|
||||||
|
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CommonGetAllResponse.class)})
|
||||||
|
@RequestMapping(method = RequestMethod.GET)
|
||||||
|
@ResponseBody
|
||||||
|
public CommonGetAllResponse getAll() {
|
||||||
|
Collection<Map<String, Object>> all = stateLoader.getAllMetaTransform(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class);
|
||||||
|
CommonGetAllResponse response = new CommonGetAllResponse();
|
||||||
|
response.fromEntity(all);
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,87 @@
|
||||||
|
package ru.spcex.clearing.backendapi.controller.request.cud.registry;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import ru.spcex.clearing.backendapi.domain.actions.IAction;
|
||||||
|
import ru.spcex.clearing.backendapi.errors.BackEndError;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.ActionType;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.cud.registry.TradingClearingRegistryNewRequest;
|
||||||
|
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class TradingClearingRegistryNewAction implements IAction<TradingClearingRegistryNewRequest> {
|
||||||
|
@ApiModelProperty(value = "Наименование компании", example = "1200")
|
||||||
|
@JsonProperty
|
||||||
|
private Long companyId;
|
||||||
|
@ApiModelProperty(value = "Номер денежного счета", example = "1500")
|
||||||
|
@JsonProperty
|
||||||
|
private Long moneyAccountId;
|
||||||
|
@ApiModelProperty(value = "Номер депозитарного счета", example = "1600")
|
||||||
|
@JsonProperty
|
||||||
|
private Long depoAccountId;
|
||||||
|
@ApiModelProperty(value = "Наименование статуса", example = "ACTV")
|
||||||
|
@JsonProperty
|
||||||
|
private String status;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Collection<EnumMessage> validate() {
|
||||||
|
List<EnumMessage> errors = new ArrayList<>();
|
||||||
|
if (this.companyId == null)
|
||||||
|
errors.add(new EnumMessage(BackEndError.ValidationError, "companyId"));
|
||||||
|
if (this.moneyAccountId == null)
|
||||||
|
errors.add(new EnumMessage(BackEndError.ValidationError, "moneyAccountId"));
|
||||||
|
return errors.isEmpty() ? Collections.emptyList() : errors;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TradingClearingRegistryNewRequest toRequest() {
|
||||||
|
var req = new TradingClearingRegistryNewRequest();
|
||||||
|
req.setCompanyId(this.companyId);
|
||||||
|
req.setMoneyAccountId(this.moneyAccountId);
|
||||||
|
req.setDepoAccountId(this.depoAccountId);
|
||||||
|
req.setStatus(this.status);
|
||||||
|
return req;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiModelProperty(hidden = true)
|
||||||
|
@Override
|
||||||
|
public ActionType getActionType() {
|
||||||
|
return ActionType.NEW;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getCompanyId() {
|
||||||
|
return companyId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCompanyId(Long companyId) {
|
||||||
|
this.companyId = companyId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getMoneyAccountId() {
|
||||||
|
return moneyAccountId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMoneyAccountId(Long moneyAccountId) {
|
||||||
|
this.moneyAccountId = moneyAccountId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getDepoAccountId() {
|
||||||
|
return depoAccountId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDepoAccountId(Long depoAccountId) {
|
||||||
|
this.depoAccountId = depoAccountId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getStatus() {
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStatus(String status) {
|
||||||
|
this.status = status;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,62 @@
|
||||||
|
package ru.spcex.clearing.backendapi.controller.request.cud.registry;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import ru.spcex.clearing.backendapi.domain.actions.IAction;
|
||||||
|
import ru.spcex.clearing.backendapi.errors.BackEndError;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.ActionType;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.cud.registry.TradingClearingRegistryUpdateRequest;
|
||||||
|
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class TradingClearingRegistryUpdateAction implements IAction<TradingClearingRegistryUpdateRequest> {
|
||||||
|
|
||||||
|
@ApiModelProperty(hidden = true)
|
||||||
|
@JsonProperty
|
||||||
|
public Long id;
|
||||||
|
|
||||||
|
@JsonProperty
|
||||||
|
private String status;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Collection<EnumMessage> validate() {
|
||||||
|
List<EnumMessage> errors = new ArrayList<>();
|
||||||
|
if (this.id == null)
|
||||||
|
errors.add(new EnumMessage(BackEndError.ValidationError, "id"));
|
||||||
|
return errors.isEmpty() ? Collections.emptyList() : errors;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TradingClearingRegistryUpdateRequest toRequest() {
|
||||||
|
var req = new TradingClearingRegistryUpdateRequest();
|
||||||
|
req.setId(this.id);
|
||||||
|
req.setStatus(this.status);
|
||||||
|
return req;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiModelProperty(hidden = true)
|
||||||
|
@Override
|
||||||
|
public ActionType getActionType() {
|
||||||
|
return ActionType.UPDATE;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(Long id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getStatus() {
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStatus(String status) {
|
||||||
|
this.status = status;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,46 @@
|
||||||
|
package ru.spcex.clearing.backendapi.controller.response.entity.registry;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import ru.clearing.classes.statics.data.registry.TradingClearingRegistry;
|
||||||
|
import ru.spcex.clearing.backendapi.controller.response.BasicSpcexResponse;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Банковские реквизиты для перечисления денежных средств
|
||||||
|
*
|
||||||
|
* @ApiModel(description = "Ответ в результате отправки операции в топик Kafka.")
|
||||||
|
* @ApiModelProperty(value = "Информация о принятом запросе")
|
||||||
|
**/
|
||||||
|
@ApiModel(description = "Ответ при получении объекта TradingClearingRegistry.")
|
||||||
|
public class TradingClearingRegistryBackendGetById extends BasicSpcexResponse {
|
||||||
|
|
||||||
|
@JsonProperty
|
||||||
|
@ApiModelProperty(value = "Поля объекта")
|
||||||
|
private TradingClearingRegistryBackendGetFields payload;
|
||||||
|
|
||||||
|
public TradingClearingRegistryBackendGetFields getPayload() {
|
||||||
|
return payload;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPayload(TradingClearingRegistryBackendGetFields payload) {
|
||||||
|
this.payload = payload;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void fromEntity(TradingClearingRegistry tcr) {
|
||||||
|
var payload = new TradingClearingRegistryBackendGetFields();
|
||||||
|
this.setPayload(payload);
|
||||||
|
payload.setId(tcr.getId());
|
||||||
|
payload.setCompanyId(tcr.getCompanyId());
|
||||||
|
payload.setCode(tcr.getCode());
|
||||||
|
payload.setMoneyAccountId(tcr.getMoneyAccountId());
|
||||||
|
payload.setDepoAaccountId(tcr.getDepoAaccountId());
|
||||||
|
payload.setTradingClearingRegistryType(tcr.getTradingClearingRegistryType());
|
||||||
|
payload.setTradingClearingRegistryLevel(tcr.getTradingClearingRegistryLevel());
|
||||||
|
payload.setTradingClearingRegistryPurpose(tcr.getTradingClearingRegistryPurpose());
|
||||||
|
payload.setStatus(tcr.getStatus());
|
||||||
|
payload.setCreatedAt(tcr.getCreated());
|
||||||
|
payload.setUpdatedAt(tcr.getUpdated());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,133 @@
|
||||||
|
package ru.spcex.clearing.backendapi.controller.response.entity.registry;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.json.serialize.InstantSerializer;
|
||||||
|
|
||||||
|
import java.time.Instant;
|
||||||
|
|
||||||
|
public class TradingClearingRegistryBackendGetFields {
|
||||||
|
@JsonProperty
|
||||||
|
@ApiModelProperty(value = "Идентификатор", example = "1234")
|
||||||
|
private Long id;
|
||||||
|
@JsonProperty
|
||||||
|
@ApiModelProperty(value = "Идентификатор компании", example = "1234")
|
||||||
|
private Long companyId;
|
||||||
|
@JsonProperty
|
||||||
|
@ApiModelProperty(value = "од торгово-клирингового регистра", example = "ABCD")
|
||||||
|
private String code;
|
||||||
|
@JsonProperty
|
||||||
|
@ApiModelProperty(value = "Идентификатор денежного счета", example = "")
|
||||||
|
private Long moneyAccountId;
|
||||||
|
@JsonProperty
|
||||||
|
@ApiModelProperty(value = "Идентификатор депозитарного счета", example = "")
|
||||||
|
private Long depoAaccountId;
|
||||||
|
@JsonProperty
|
||||||
|
@ApiModelProperty(value = "Код торгово-клирингового регистра", example = "")
|
||||||
|
private String tradingClearingRegistryType;
|
||||||
|
@JsonProperty
|
||||||
|
@ApiModelProperty(value = "Код торгово-клирингового регистра", example = "")
|
||||||
|
private String tradingClearingRegistryLevel;
|
||||||
|
@JsonProperty
|
||||||
|
@ApiModelProperty(value = "Код области применения", example = "")
|
||||||
|
private String tradingClearingRegistryPurpose;
|
||||||
|
@JsonProperty
|
||||||
|
@ApiModelProperty(value = "Наименование статуса", example = "ACTV")
|
||||||
|
private String status;
|
||||||
|
|
||||||
|
@JsonProperty("Дата-время создания записи")
|
||||||
|
@JsonSerialize(using = InstantSerializer.class)
|
||||||
|
private Instant createdAt;
|
||||||
|
@JsonProperty("Дата-время изменения записи")
|
||||||
|
@JsonSerialize(using = InstantSerializer.class)
|
||||||
|
private Instant updatedAt;
|
||||||
|
|
||||||
|
public Long getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(Long id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getCompanyId() {
|
||||||
|
return companyId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCompanyId(Long companyId) {
|
||||||
|
this.companyId = companyId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCode() {
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCode(String code) {
|
||||||
|
this.code = code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getMoneyAccountId() {
|
||||||
|
return moneyAccountId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMoneyAccountId(Long moneyAccountId) {
|
||||||
|
this.moneyAccountId = moneyAccountId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getDepoAaccountId() {
|
||||||
|
return depoAaccountId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDepoAaccountId(Long depoAaccountId) {
|
||||||
|
this.depoAaccountId = depoAaccountId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTradingClearingRegistryType() {
|
||||||
|
return tradingClearingRegistryType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTradingClearingRegistryType(String tradingClearingRegistryType) {
|
||||||
|
this.tradingClearingRegistryType = tradingClearingRegistryType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTradingClearingRegistryLevel() {
|
||||||
|
return tradingClearingRegistryLevel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTradingClearingRegistryLevel(String tradingClearingRegistryLevel) {
|
||||||
|
this.tradingClearingRegistryLevel = tradingClearingRegistryLevel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTradingClearingRegistryPurpose() {
|
||||||
|
return tradingClearingRegistryPurpose;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTradingClearingRegistryPurpose(String tradingClearingRegistryPurpose) {
|
||||||
|
this.tradingClearingRegistryPurpose = tradingClearingRegistryPurpose;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getStatus() {
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStatus(String status) {
|
||||||
|
this.status = status;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Instant getCreatedAt() {
|
||||||
|
return createdAt;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCreatedAt(Instant createdAt) {
|
||||||
|
this.createdAt = createdAt;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Instant getUpdatedAt() {
|
||||||
|
return updatedAt;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUpdatedAt(Instant updatedAt) {
|
||||||
|
this.updatedAt = updatedAt;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -40,6 +40,7 @@ import ru.spcex.clearing.backendapi.controller.queue.liabilities.LiabilitiesClai
|
||||||
import ru.spcex.clearing.backendapi.controller.queue.misc.*;
|
import ru.spcex.clearing.backendapi.controller.queue.misc.*;
|
||||||
import ru.spcex.clearing.backendapi.controller.queue.payment.PaymentInstructionController;
|
import ru.spcex.clearing.backendapi.controller.queue.payment.PaymentInstructionController;
|
||||||
import ru.spcex.clearing.backendapi.controller.queue.register.*;
|
import ru.spcex.clearing.backendapi.controller.queue.register.*;
|
||||||
|
import ru.spcex.clearing.backendapi.controller.queue.registry.TradingClearingRegistryController;
|
||||||
import ru.spcex.clearing.backendapi.controller.queue.scheduler.*;
|
import ru.spcex.clearing.backendapi.controller.queue.scheduler.*;
|
||||||
import ru.spcex.clearing.backendapi.controller.queue.securities.*;
|
import ru.spcex.clearing.backendapi.controller.queue.securities.*;
|
||||||
import ru.spcex.clearing.backendapi.controller.queue.user.UserController;
|
import ru.spcex.clearing.backendapi.controller.queue.user.UserController;
|
||||||
|
|
@ -129,6 +130,8 @@ import static ru.spcex.clearing.test.json.MatcherFactoryWithJson.usingIgnoringFi
|
||||||
OrderRegisterController.class,
|
OrderRegisterController.class,
|
||||||
ReportRegisterController.class,
|
ReportRegisterController.class,
|
||||||
UncoveredDealRegisterController.class,
|
UncoveredDealRegisterController.class,
|
||||||
|
//registry
|
||||||
|
TradingClearingRegistryController.class,
|
||||||
//scheduler
|
//scheduler
|
||||||
ClearingCalendarController.class,
|
ClearingCalendarController.class,
|
||||||
LauncherController.class,
|
LauncherController.class,
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,202 @@
|
||||||
|
package ru.spcex.clearing.backendapi.controller.queue.registry;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.springframework.core.NestedExceptionUtils;
|
||||||
|
import org.springframework.http.MediaType;
|
||||||
|
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
|
||||||
|
import ru.clearing.classes.statics.data.registry.TradingClearingRegistry;
|
||||||
|
import ru.spcex.clearing.backendapi.controller.queue.AbstractControllerTest;
|
||||||
|
import ru.spcex.clearing.backendapi.controller.request.cud.registry.TradingClearingRegistryNewAction;
|
||||||
|
import ru.spcex.clearing.backendapi.controller.request.cud.registry.TradingClearingRegistryUpdateAction;
|
||||||
|
import ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction;
|
||||||
|
import ru.spcex.clearing.backendapi.controller.response.entity.registry.TradingClearingRegistryBackendGetById;
|
||||||
|
import ru.spcex.clearing.backendapi.controller.response.entity.registry.TradingClearingRegistryBackendGetFields;
|
||||||
|
import ru.spcex.clearing.backendapi.domain.actions.IAction;
|
||||||
|
import ru.spcex.clearing.backendapi.errors.ActionValidationException;
|
||||||
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.cud.registry.TradingClearingRegistryNewRequest;
|
||||||
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||||
|
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
|
||||||
|
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
|
||||||
|
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||||
|
import static ru.spcex.clearing.test.json.JsonUtil.writeValue;
|
||||||
|
|
||||||
|
class TradingClearingRegistryControllerTest extends AbstractControllerTest {
|
||||||
|
private static final String REST_URL = "/registry/trading-clearing-registry/";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link TradingClearingRegistryController#add(TradingClearingRegistryNewAction)}<br>
|
||||||
|
* Тест проверяет получение сущности {@link TradingClearingRegistryNewAction} по REST API и отправку в Apache Kafka.<br>
|
||||||
|
* Входной запрос {@link TradingClearingRegistryNewRequest}:<br>
|
||||||
|
* {@link TradingClearingRegistryNewRequest#companyId} - 1234567890<br>
|
||||||
|
* {@link TradingClearingRegistryNewRequest#moneyAccountId} - 18415056336414057<br>
|
||||||
|
* {@link TradingClearingRegistryNewRequest#depoAccountId} - 21239757374450030<br>
|
||||||
|
* {@link TradingClearingRegistryNewRequest#status} - ACTV<br>
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
void add() throws Exception {
|
||||||
|
//ARRANGE
|
||||||
|
TradingClearingRegistryNewAction tradingClearingRegistryNewAction = getTradingClearingRegistryNewAction(
|
||||||
|
0,
|
||||||
|
1234567890L, 18415056336414057L, 21239757374450030L, "ACTV"
|
||||||
|
);
|
||||||
|
|
||||||
|
//ACT and ASSERT
|
||||||
|
checkAddingByRestApi(REST_URL, tradingClearingRegistryNewAction);
|
||||||
|
checkSendedMessegeFromKafka(Consts.DESTINATION_TRADING_CLEARING_REGISTRY_NEW, tradingClearingRegistryNewAction);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link TradingClearingRegistryController#add(TradingClearingRegistryNewAction)}<br>
|
||||||
|
* Тест проверяет работу валидации сущности {@link TradingClearingRegistryNewAction} принятой по REST API для отправку в Apache Kafka.<br>
|
||||||
|
* Входной запрос {@link TradingClearingRegistryNewRequest}:<br>
|
||||||
|
* {@link TradingClearingRegistryNewRequest#companyId} - 1234567890 / null<br>
|
||||||
|
* {@link TradingClearingRegistryNewRequest#moneyAccountId} - 18415056336414057 / null<br>
|
||||||
|
* {@link TradingClearingRegistryNewRequest#depoAccountId} - 21239757374450030<br>
|
||||||
|
* {@link TradingClearingRegistryNewRequest#status} - ACTV<br>
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
void addWithException() {
|
||||||
|
assertThrowsForNew(getTradingClearingRegistryNewAction(0, null, 18415056336414057L, 21239757374450030L, "ACTV"));
|
||||||
|
assertThrowsForNew(getTradingClearingRegistryNewAction(0, 1234567890L, null, 21239757374450030L, "ACTV"));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link TradingClearingRegistryController#update(Long, TradingClearingRegistryUpdateAction)}<br>
|
||||||
|
* Тест проверяет получение сущности {@link TradingClearingRegistryUpdateAction} по REST API и отправку в Apache Kafka.<br>
|
||||||
|
* Входной запрос {@link TradingClearingRegistryUpdateAction}:<br>
|
||||||
|
* {@link TradingClearingRegistryUpdateAction#id} - generated<br>
|
||||||
|
* {@link TradingClearingRegistryUpdateAction#code} - ACTV<br>
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
void update() throws Exception {
|
||||||
|
//ARRANGE
|
||||||
|
long id = 0;
|
||||||
|
TradingClearingRegistryUpdateAction tradingClearingRegistryUpdateAction = getTradingClearingRegistryUpdateAction(
|
||||||
|
id, "ACTV"
|
||||||
|
);
|
||||||
|
|
||||||
|
//ACT and ASSERT
|
||||||
|
checkUpdatingByRestApi(REST_URL, tradingClearingRegistryUpdateAction, id);
|
||||||
|
checkSendedMessegeFromKafka(Consts.DESTINATION_TRADING_CLEARING_REGISTRY_UPDATE, tradingClearingRegistryUpdateAction);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link TradingClearingRegistryController#delete(Long)} <br>
|
||||||
|
* Тест проверяет получение id сущности {@link Long} по REST API и отправку в Apache Kafka.<br>
|
||||||
|
* Входной запрос /registry/trading-clearing-registry/{@link Long}: - 0L<br>
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
void delete() throws Exception {
|
||||||
|
//ARRANGE
|
||||||
|
long id = currentId.getAndIncrement();
|
||||||
|
CommonDeleteAction deleteAction = new CommonDeleteAction();
|
||||||
|
deleteAction.setId(id);
|
||||||
|
//ACT and ASSERT
|
||||||
|
checkDeletingByRestApi(REST_URL, id);
|
||||||
|
checkSendedMessegeFromKafka(Consts.DESTINATION_TRADING_CLEARING_REGISTRY_DELETE, deleteAction);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link TradingClearingRegistryController#getById(Long)} <br>
|
||||||
|
* Тест проверяет получение запроса по REST API и отправку всех записей из таблицы hazelcast Map_TradingClearingRegistry.<br>
|
||||||
|
* Входной запрос /registry/trading-clearing-registry/{@link Long}: - 0L <br>
|
||||||
|
* Ответ BankAccountBackendGetById <br>
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
void getById() throws Exception {
|
||||||
|
//ARRANGE
|
||||||
|
TradingClearingRegistry existTradingClearingRegistry = new TradingClearingRegistry();
|
||||||
|
existTradingClearingRegistry.setCompanyId(365L);
|
||||||
|
existTradingClearingRegistry.setCode("99999");
|
||||||
|
existTradingClearingRegistry.setMoneyAccountId(404L);
|
||||||
|
existTradingClearingRegistry.setDepoAaccountId(512L);
|
||||||
|
existTradingClearingRegistry.setTradingClearingRegistryType("RUB");
|
||||||
|
existTradingClearingRegistry.setTradingClearingRegistryLevel("OOO ROGA I KOPITA");
|
||||||
|
existTradingClearingRegistry.setTradingClearingRegistryPurpose("848484848484");
|
||||||
|
existTradingClearingRegistry.setStatus("ACTV");
|
||||||
|
existTradingClearingRegistry.setId(currentId.get());
|
||||||
|
|
||||||
|
Imdg<TradingClearingRegistry> inDocumentJournalImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class);
|
||||||
|
inDocumentJournalImdg.insert(existTradingClearingRegistry);
|
||||||
|
|
||||||
|
TradingClearingRegistryBackendGetById expected = new TradingClearingRegistryBackendGetById();
|
||||||
|
TradingClearingRegistryBackendGetFields payload = new TradingClearingRegistryBackendGetFields();
|
||||||
|
payload.setId(existTradingClearingRegistry.getId());
|
||||||
|
payload.setCompanyId(existTradingClearingRegistry.getCompanyId());
|
||||||
|
payload.setCode(existTradingClearingRegistry.getCode());
|
||||||
|
payload.setMoneyAccountId(existTradingClearingRegistry.getMoneyAccountId());
|
||||||
|
payload.setDepoAaccountId(existTradingClearingRegistry.getDepoAaccountId());
|
||||||
|
payload.setTradingClearingRegistryType(existTradingClearingRegistry.getTradingClearingRegistryType());
|
||||||
|
payload.setTradingClearingRegistryLevel(existTradingClearingRegistry.getTradingClearingRegistryLevel());
|
||||||
|
payload.setTradingClearingRegistryPurpose(existTradingClearingRegistry.getTradingClearingRegistryPurpose());
|
||||||
|
payload.setStatus(existTradingClearingRegistry.getStatus());
|
||||||
|
payload.setCreatedAt(existTradingClearingRegistry.getCreated());
|
||||||
|
payload.setUpdatedAt(existTradingClearingRegistry.getUpdated());
|
||||||
|
expected.setPayload(payload);
|
||||||
|
//ACT
|
||||||
|
perform(MockMvcRequestBuilders.get(REST_URL + existTradingClearingRegistry.getId())
|
||||||
|
.contentType(MediaType.APPLICATION_JSON))
|
||||||
|
.andDo(print())//output to the log request and response
|
||||||
|
// ASSERT
|
||||||
|
.andExpect(status().isOk())
|
||||||
|
.andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON))
|
||||||
|
.andExpect(content().json(writeValue(expected)));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link TradingClearingRegistryController#getAll()} <br>
|
||||||
|
* Тест проверяет получение запроса по REST API и отправку всех записей из таблицы hazelcast Map_BankAccount.<br>
|
||||||
|
* Входной запрос /registry/trading-clearing-registry/ <br>
|
||||||
|
* Ответ CommonGetAllResponse <br>
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
void getAll() throws Exception {
|
||||||
|
//ARRANGE
|
||||||
|
TradingClearingRegistry existTradingClearingRegistry = new TradingClearingRegistry();
|
||||||
|
existTradingClearingRegistry.setCompanyId(365L);
|
||||||
|
existTradingClearingRegistry.setCode("99999");
|
||||||
|
existTradingClearingRegistry.setMoneyAccountId(404L);
|
||||||
|
existTradingClearingRegistry.setDepoAaccountId(512L);
|
||||||
|
existTradingClearingRegistry.setTradingClearingRegistryType("RUB");
|
||||||
|
existTradingClearingRegistry.setTradingClearingRegistryLevel("OOO ROGA I KOPITA");
|
||||||
|
existTradingClearingRegistry.setTradingClearingRegistryPurpose("848484848484");
|
||||||
|
existTradingClearingRegistry.setStatus("ACTV");
|
||||||
|
existTradingClearingRegistry.setId(currentId.get());
|
||||||
|
|
||||||
|
//ACT and ASSERT
|
||||||
|
checkGettingAllFromRestApi(IMDGDistributedNames.Map_TradingClearingRegistry, existTradingClearingRegistry, REST_URL);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void assertThrowsForNew(IAction<?> iAction) {
|
||||||
|
assertThrows(ActionValidationException.class, () -> {
|
||||||
|
try {
|
||||||
|
perform(MockMvcRequestBuilders.post(REST_URL).contentType(MediaType.APPLICATION_JSON).content(writeValue(iAction)));
|
||||||
|
} catch (Exception e) {
|
||||||
|
Throwable rootCause = NestedExceptionUtils.getRootCause(e);
|
||||||
|
throw rootCause != null ? rootCause : e;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private TradingClearingRegistryNewAction getTradingClearingRegistryNewAction(long id,
|
||||||
|
Long companyId, Long moneyAccountId, Long depoAccountId, String status
|
||||||
|
) {
|
||||||
|
TradingClearingRegistryNewAction tradingClearingRegistryNewAction = new TradingClearingRegistryNewAction();
|
||||||
|
tradingClearingRegistryNewAction.setCompanyId(companyId);
|
||||||
|
tradingClearingRegistryNewAction.setMoneyAccountId(moneyAccountId);
|
||||||
|
tradingClearingRegistryNewAction.setDepoAccountId(21239757374450030L);
|
||||||
|
tradingClearingRegistryNewAction.setStatus(status);
|
||||||
|
return tradingClearingRegistryNewAction;
|
||||||
|
}
|
||||||
|
|
||||||
|
private TradingClearingRegistryUpdateAction getTradingClearingRegistryUpdateAction(Long id, String status) {
|
||||||
|
TradingClearingRegistryUpdateAction tradingClearingRegistryUpdateAction = new TradingClearingRegistryUpdateAction();
|
||||||
|
tradingClearingRegistryUpdateAction.setId(id);
|
||||||
|
tradingClearingRegistryUpdateAction.setStatus(status);
|
||||||
|
return tradingClearingRegistryUpdateAction;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -69,6 +69,10 @@ public interface Consts {
|
||||||
String DESTINATION_CLIENT_CODE_UPDATE = "client-code-update";
|
String DESTINATION_CLIENT_CODE_UPDATE = "client-code-update";
|
||||||
String DESTINATION_CLIENT_CODE_DELETE = "client-code-delete";
|
String DESTINATION_CLIENT_CODE_DELETE = "client-code-delete";
|
||||||
|
|
||||||
|
String DESTINATION_TRADING_CLEARING_REGISTRY_NEW = "trading-clearing-registry-new";
|
||||||
|
String DESTINATION_TRADING_CLEARING_REGISTRY_UPDATE = "trading-clearing-registry-update";
|
||||||
|
String DESTINATION_TRADING_CLEARING_REGISTRY_DELETE = "trading-clearing-registry-delete";
|
||||||
|
|
||||||
String DESTINATION_SDF08_NEW = "s-df-08-new";
|
String DESTINATION_SDF08_NEW = "s-df-08-new";
|
||||||
String DESTINATION_SDF02_NEW = "s-df-02-new";
|
String DESTINATION_SDF02_NEW = "s-df-02-new";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,56 @@
|
||||||
|
package ru.spcex.clearing.platform.messaging.domain.cud.registry;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||||||
|
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.json.deserialize.InstantDateTimeDeserializer;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.json.deserialize.LocalDateDeserializer;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.json.serialize.InstantDateTimeSerializer;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.json.serialize.LocalDateSerializer;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.Instant;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
|
||||||
|
public class TradingClearingRegistryNewRequest {
|
||||||
|
@JsonProperty
|
||||||
|
private Long companyId;
|
||||||
|
@JsonProperty
|
||||||
|
private Long moneyAccountId;
|
||||||
|
@JsonProperty
|
||||||
|
private Long depoAccountId;
|
||||||
|
@JsonProperty
|
||||||
|
private String status;
|
||||||
|
|
||||||
|
public Long getCompanyId() {
|
||||||
|
return companyId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCompanyId(Long companyId) {
|
||||||
|
this.companyId = companyId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getMoneyAccountId() {
|
||||||
|
return moneyAccountId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMoneyAccountId(Long moneyAccountId) {
|
||||||
|
this.moneyAccountId = moneyAccountId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getDepoAccountId() {
|
||||||
|
return depoAccountId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDepoAccountId(Long depoAccountId) {
|
||||||
|
this.depoAccountId = depoAccountId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getStatus() {
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStatus(String status) {
|
||||||
|
this.status = status;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
package ru.spcex.clearing.platform.messaging.domain.cud.registry;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
|
||||||
|
public class TradingClearingRegistryUpdateRequest {
|
||||||
|
@JsonProperty
|
||||||
|
private Long id;
|
||||||
|
@JsonProperty
|
||||||
|
private String status;
|
||||||
|
|
||||||
|
public Long getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(Long id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getStatus() {
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStatus(String status) {
|
||||||
|
this.status = status;
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Reference in a new issue