diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/AbstractQueueController.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/AbstractQueueController.java index 5718d77e3..15d7d0b4e 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/AbstractQueueController.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/AbstractQueueController.java @@ -20,4 +20,15 @@ public class AbstractQueueController { responseToClient.setMessage("success"); return responseToClient; } + + /** + * Для оптимизации передачи userId + */ + protected CudResponse processRequest(String destination, IAction iAction, Long userId) throws ExecutionException, InterruptedException { + CudResponse responseToClient = new CudResponse(); + responseToClient.setPayload(operator.sendRequestToQueue(destination, iAction, userId)); + responseToClient.setCode(0); + responseToClient.setMessage("success"); + return responseToClient; + } } diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/company/EditCompanyInfoController.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/company/EditCompanyInfoController.java index 65b9e227f..b922132ed 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/company/EditCompanyInfoController.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/company/EditCompanyInfoController.java @@ -47,7 +47,7 @@ public class EditCompanyInfoController extends AbstractQueueController { @RequestMapping(value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE) @ResponseBody public CudResponse update( - @ApiParam(value = "Идентификатор изменяего объекта.", required = true, example = "1234") + @ApiParam(value = "Идентификатор изменяемого объекта.", required = true, example = "1234") @PathVariable("id") Long id, @ApiParam(value = "Новые значения полей объекта.", required = true) @RequestBody CompanyInfoUpdateAction companyInfoUpdateAction) throws ExecutionException, InterruptedException { diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/company/ProfileDocumentController.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/company/ProfileDocumentController.java index 589051d3c..49778ab9d 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/company/ProfileDocumentController.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/company/ProfileDocumentController.java @@ -7,13 +7,12 @@ 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.RequestBody; -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.profile.ProfileDocument; 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.ProfileDocumentNewAction; +import ru.spcex.clearing.backendapi.controller.request.cud.company.ProfileDocumentUpdateAction; 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; @@ -57,4 +56,28 @@ public class ProfileDocumentController extends AbstractQueueController { @RequestBody ProfileDocumentNewAction profileDocumentNewAction) throws ExecutionException, InterruptedException { return processRequest(Consts.DESTINATION_PROFILE_DOCUMENT_NEW, profileDocumentNewAction); } + + @ApiOperation(value = "update profile document.") + @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, produces = MediaType.APPLICATION_JSON_VALUE) + @ResponseBody + public CudResponse update( + @PathVariable("id") Long id, + @ApiParam(value = "Параметры команды в JSON формате.", required = true) + @RequestBody ProfileDocumentUpdateAction profileDocumentUpdateAction) throws ExecutionException, InterruptedException { + profileDocumentUpdateAction.setId(id); + return processRequest(Consts.DESTINATION_PROFILE_DOCUMENT_UPDATE, profileDocumentUpdateAction); + } + + + @ApiOperation(value = "delete profile document.") + @ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CudResponse.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_PROFILE_DOCUMENT_DELETE, deleteAction); + } } diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/company/CompanyInfoUpdateAction.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/company/CompanyInfoUpdateAction.java index 45ebfbe06..e9ec48c61 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/company/CompanyInfoUpdateAction.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/company/CompanyInfoUpdateAction.java @@ -11,45 +11,42 @@ public class CompanyInfoUpdateAction implements IAction { + @ApiModelProperty(hidden = true) + @JsonProperty + private Long id; + @ApiModelProperty(value = "Идентификатор Компании", example = "123") + @JsonProperty + private Long companyId; + @ApiModelProperty(value = "Идентификатор типа документа", example = "ABCD") + @JsonProperty + private String documentType; + @ApiModelProperty(value = "Дата выдачи", example = "2022-12-25") + @JsonSerialize(using = LocalDateSerializer.class) + @JsonDeserialize(using = LocalDateDeserializer.class) + @JsonProperty + private LocalDate issueDate; + @ApiModelProperty(value = "Место выдачи", example = "Example string") + @JsonProperty + private String issuePlace; + @ApiModelProperty(value = "Кем выдан", example = "Example string") + @JsonProperty + private String issuer; + @ApiModelProperty(value = "Код выдавшего органа", example = "Example string") + @JsonProperty + private String issuerCode; + @ApiModelProperty(value = "Наименование", example = "Example string") + @JsonProperty + private String name; + @ApiModelProperty(value = "Номер", example = "Example string") + @JsonProperty + private String number; + @ApiModelProperty(value = "Место", example = "Example string") + @JsonProperty + private String place; + @ApiModelProperty(value = "Дата начала срока действия", example = "2022-12-25") + @JsonSerialize(using = LocalDateSerializer.class) + @JsonDeserialize(using = LocalDateDeserializer.class) + @JsonProperty + private LocalDate validFromDate; + @ApiModelProperty(value = "Дата окончания срока действия", example = "2022-12-25") + @JsonSerialize(using = LocalDateSerializer.class) + @JsonDeserialize(using = LocalDateDeserializer.class) + @JsonProperty + private LocalDate validToDate; + @ApiModelProperty(value = "Ссылка на документ", example = "Example string") + @JsonProperty + private String link; + + @Override + public ProfileDocumentUpdateRequest toRequest() { + ProfileDocumentUpdateRequest request = new ProfileDocumentUpdateRequest(); + request.setId(this.id); + request.setCompanyId(this.companyId); + request.setDocumentType(this.documentType); + request.setIssueDate(this.issueDate); + request.setIssuePlace(this.issuePlace); + request.setIssuer(this.issuer); + request.setIssuerCode(this.issuerCode); + request.setName(this.name); + request.setNumber(this.number); + request.setPlace(this.place); + request.setValidFromDate(this.validFromDate); + request.setValidToDate(this.validToDate); + request.setLink(this.link); + return request; + } + + @ApiModelProperty(hidden = true) + @Override + public ActionType getActionType() { + return ActionType.UPDATE; + } + + @ApiModelProperty(hidden = true) + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } +} diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/entity/company/CompanyBackendGetAll.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/entity/company/CompanyBackendGetAll.java index 0c6948dbc..b44738709 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/entity/company/CompanyBackendGetAll.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/entity/company/CompanyBackendGetAll.java @@ -60,13 +60,8 @@ public class CompanyBackendGetAll extends BasicSpcexResponse { singleItem.setLegalKind(profile.getLegalKind()); singleItem.setOrganizationType(profile.getOrganizationType()); singleItem.setResidence(profile.getResidence()); - singleItem.setShortName(profile.getShortName()); - singleItem.setFullName(profile.getFullName()); singleItem.setShortNameEng(profile.getShortNameEng()); singleItem.setFullNameEng(profile.getFullNameEng()); - singleItem.setTradingCode(profile.getTradingCode()); - singleItem.setClearingCode(profile.getClearingCode()); - singleItem.setRegistrationCode(profile.getRegistrationCode()); } payload.getItems().add(singleItem); } diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/entity/company/CompanyBackendInfoGetAll.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/entity/company/CompanyBackendInfoGetAll.java index effd0af08..f696f17bc 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/entity/company/CompanyBackendInfoGetAll.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/response/entity/company/CompanyBackendInfoGetAll.java @@ -50,13 +50,8 @@ public class CompanyBackendInfoGetAll extends BasicSpcexResponse { singleItem.setLegalKind(companyInfo.getLegalKind()); singleItem.setOrganizationType(companyInfo.getOrganizationType()); singleItem.setResidence(companyInfo.getResidence()); - singleItem.setShortName(companyInfo.getShortName()); - singleItem.setFullName(companyInfo.getFullName()); singleItem.setShortNameEng(companyInfo.getShortNameEng()); singleItem.setFullNameEng(companyInfo.getFullNameEng()); - singleItem.setTradingCode(companyInfo.getTradingCode()); - singleItem.setClearingCode(companyInfo.getClearingCode()); - singleItem.setRegistrationCode(companyInfo.getRegistrationCode()); payload.getItems().add(singleItem); } } diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/IOperator.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/IOperator.java index 67c331b7a..55257c2ac 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/IOperator.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/IOperator.java @@ -7,4 +7,17 @@ import java.util.concurrent.ExecutionException; public interface IOperator { QueueSuccessResponse sendRequestToQueue(String destination, IAction iAction, boolean appendUserId) throws ExecutionException, InterruptedException; + + /** + * Для оптимизации проставления userId. + * Аналог sendRequestToQueue(String destination, IAction iAction, true) + * + * @param destination + * @param iAction + * @param userId совершивший запрос + * @return + * @throws ExecutionException + * @throws InterruptedException + */ + QueueSuccessResponse sendRequestToQueue(String destination, IAction iAction, Long userId) throws ExecutionException, InterruptedException; } diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/impl/OperatorImpl.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/impl/OperatorImpl.java index b039cdd82..3757706ad 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/impl/OperatorImpl.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/impl/OperatorImpl.java @@ -25,6 +25,7 @@ import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgId; import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.utils.enumeration.EnumMessage; +import ru.spcex.platform.utils.log.ExceptionUtils; import ru.spcex.platform.utils.validation.IValidator; import java.util.Collection; @@ -80,6 +81,25 @@ public class OperatorImpl implements IOperator { return new QueueSuccessResponse(request.getActionType(), request.getId()); } + @Override + public QueueSuccessResponse sendRequestToQueue(String destination, IAction iAction, Long userId) throws ExecutionException, InterruptedException { + throwValidate(destination, iAction); + BaseRequest request = new BaseRequest<>(); + request.setId(idGenerator.nextId()); + request.setActionType(iAction.getActionType()); + request.setRequestPayload(iAction.toRequest()); + if (userId == null) { + log.warn("userId not set, Stacktrace: {}", ExceptionUtils.getStackTrace(new IllegalArgumentException("Empty userId"))); + } else { + request.setUserId(userId); + } + //сохраняет данные о запросе в хранилище + saveRequestToStorage(destination, request); + Future send = kafka.send(new ProducerRecord<>(destination, request)); + send.get(); + return new QueueSuccessResponse(request.getActionType(), request.getId()); + } + private void saveRequestToStorage(String destination, BaseRequest request) { Imdg requestStorage = imdgProvider.getImdg(IMDGDistributedNames.Map_RequestInfo, RequestInfo.class); RequestInfo requestInfo = RequestInfo.create(request.getId()); diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/profile/CompanyInfo.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/profile/CompanyInfo.java index 175c17b69..f77984590 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/profile/CompanyInfo.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/profile/CompanyInfo.java @@ -17,13 +17,14 @@ public class CompanyInfo extends SpcexObjectBase { private String legalKind; // ref CHAR(4), private String organizationType; // ref CHAR(4), private String residence; // ref CHAR(4), - private String shortName; - private String fullName; +// private String shortName; // extends Company +// private String fullName; // extends Company private String shortNameEng; private String fullNameEng; - private String tradingCode; - private String clearingCode; - private String registrationCode; +// private String tradingCode; // extends Company +// private String clearingCode; // extends Company +// private String registrationCode; // extends Company +// private String workflowStatus; // extends Company public Long getCompanyId() { return companyId; @@ -89,22 +90,6 @@ public class CompanyInfo extends SpcexObjectBase { this.residence = residence; } - 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 getShortNameEng() { return shortNameEng; } @@ -121,27 +106,4 @@ public class CompanyInfo extends SpcexObjectBase { this.fullNameEng = fullNameEng; } - 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; - } } \ No newline at end of file diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/CompanyInfoUpdateRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/CompanyInfoUpdateRequest.java index 35a845c9b..5a7cd8c5a 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/CompanyInfoUpdateRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/CompanyInfoUpdateRequest.java @@ -29,9 +29,7 @@ public class CompanyInfoUpdateRequest { @JsonProperty private String fullName; @JsonProperty - private String tradingCode; - @JsonProperty - private String clearingCode; + private String workflowStatus; public Long getId() { return id; @@ -129,19 +127,11 @@ public class CompanyInfoUpdateRequest { this.fullName = fullName; } - public String getTradingCode() { - return tradingCode; + public String getWorkflowStatus() { + return workflowStatus; } - public void setTradingCode(String tradingCode) { - this.tradingCode = tradingCode; - } - - public String getClearingCode() { - return clearingCode; - } - - public void setClearingCode(String clearingCode) { - this.clearingCode = clearingCode; + public void setWorkflowStatus(String workflowStatus) { + this.workflowStatus = workflowStatus; } }