From 5f24eba89538e12e223682f21d3c32457211f28c Mon Sep 17 00:00:00 2001 From: etreschenkov Date: Tue, 8 Jul 2025 18:38:30 +0300 Subject: [PATCH] http://jira.mfd.msk:8088/browse/CLS-866 --- .../queue/session/SessionController.java | 51 +++++++++++++++++++ .../cud/session/ContinueSessionAction.java | 33 ++++++++++++ .../src/main/resources/meta/meta.json | 28 +++++++++- .../src/main/resources/meta/meta.xml | 10 +++- .../clearing/service/EventsReceiver.java | 8 ++- .../platform/messaging/domain/Consts.java | 2 + .../cud/session/SessionActionRequest.java | 16 ++++++ 7 files changed, 144 insertions(+), 4 deletions(-) create mode 100644 clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/session/SessionController.java create mode 100644 clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/session/ContinueSessionAction.java create mode 100644 platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/session/SessionActionRequest.java diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/session/SessionController.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/session/SessionController.java new file mode 100644 index 000000000..b63a8b86a --- /dev/null +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/session/SessionController.java @@ -0,0 +1,51 @@ +package ru.spcex.clearing.backendapi.controller.queue.session; + +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import io.swagger.annotations.ApiResponse; +import io.swagger.annotations.ApiResponses; +import java.util.concurrent.ExecutionException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +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 ru.spcex.clearing.backendapi.controller.queue.AbstractQueueController; +import ru.spcex.clearing.backendapi.controller.request.cud.session.ContinueSessionAction; +import ru.spcex.clearing.backendapi.controller.response.BasicSpcexResponse; +import ru.spcex.clearing.backendapi.controller.response.cud.CudResponse; +import ru.spcex.clearing.backendapi.service.IOperator; +import ru.spcex.clearing.platform.messaging.domain.Consts; + +@Controller +@RequestMapping("/session") +public class SessionController extends AbstractQueueController { + protected final Logger log = LoggerFactory.getLogger(getClass()); + + public SessionController(IOperator operator) { + super(operator); + } + + @ApiOperation(value = "Continue session") + @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 repeatSession( + @ApiParam(value = "Параметры команды в JSON формате.", required = true) + @RequestBody ContinueSessionAction continueSessionAction) throws ExecutionException, InterruptedException { + return processRequest(Consts.REPEAT_SESSION, continueSessionAction); + } + + @ApiOperation(value = "Continue session") + @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 continueSession( + @ApiParam(value = "Параметры команды в JSON формате.", required = true) + @RequestBody ContinueSessionAction continueSessionAction) throws ExecutionException, InterruptedException { + return processRequest(Consts.CONTINUE_SESSION, continueSessionAction); + } +} diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/session/ContinueSessionAction.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/session/ContinueSessionAction.java new file mode 100644 index 000000000..b742368dc --- /dev/null +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/session/ContinueSessionAction.java @@ -0,0 +1,33 @@ +package ru.spcex.clearing.backendapi.controller.request.cud.session; + +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.session.SessionActionRequest; + +public class ContinueSessionAction implements IAction { + @ApiModelProperty(value = "Идентификатор задачи", example = "ADBC") + @JsonProperty + public Long id; + + @Override + public SessionActionRequest toRequest() { + SessionActionRequest request = new SessionActionRequest(); + request.setSessionId(this.id); + return request; + } + + @Override + public ActionType getActionType() { + return ActionType.SYSTEM; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } +} diff --git a/clearing-parent/backend-api/src/main/resources/meta/meta.json b/clearing-parent/backend-api/src/main/resources/meta/meta.json index 3117187cc..e4a61e823 100644 --- a/clearing-parent/backend-api/src/main/resources/meta/meta.json +++ b/clearing-parent/backend-api/src/main/resources/meta/meta.json @@ -1,6 +1,6 @@ { - "version": "3.19.244.135", + "version": "3.19.250.136", "enums": { @@ -6229,7 +6229,33 @@ "type": 12,"dbname": "Код статуса","name": "Наименование статуса","shortname": "Статус","searchable": true,"sortable": true,"visible": true,"link": "workflowStatus" } ] + ,"actions":[ + {"method":"post", + "destination": "REPT", + + "name": "Продолжение сессии c текущего шага", + + "fields": [ + {"code": "id", + "type": 1,"name": "Идентификатор записи","shortname": "ID","link": "session","required": true,"linkCode": "id" + } + ] + } + , + {"method":"post", + + "destination": "NEXT", + + "name": "Продолжение сессии cо следующего шага", + + "fields": [ + {"code": "id", + "type": 1,"name": "Идентификатор записи","shortname": "ID","link": "session","required": true,"linkCode": "id" + } + ] + } + ] } , "sTrades": { diff --git a/clearing-parent/backend-api/src/main/resources/meta/meta.xml b/clearing-parent/backend-api/src/main/resources/meta/meta.xml index 80bfc3e29..c69946550 100644 --- a/clearing-parent/backend-api/src/main/resources/meta/meta.xml +++ b/clearing-parent/backend-api/src/main/resources/meta/meta.xml @@ -1,6 +1,6 @@ - + @@ -1442,6 +1442,14 @@
+ + + + + + + + diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/EventsReceiver.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/EventsReceiver.java index 5fdf7e152..0471f96ee 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/EventsReceiver.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/EventsReceiver.java @@ -29,6 +29,7 @@ import ru.spcex.clearing.platform.messaging.domain.cud.registry.RegistryChangeSt import ru.spcex.clearing.platform.messaging.domain.cud.registry.RegistryReturnDepositRequest; import ru.spcex.clearing.platform.messaging.domain.cud.registry.RegistrySplitDepositActionRequest; import ru.spcex.clearing.platform.messaging.domain.cud.schedule.LauncherCommandRequest; +import ru.spcex.clearing.platform.messaging.domain.cud.session.SessionActionRequest; import ru.spcex.clearing.platform.messaging.domain.cud.utilities.STradesImportedRequest; import ru.spcex.clearing.platform.messaging.service.QueueConsumerV2; import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate; @@ -129,9 +130,12 @@ public class EventsReceiver extends QueueConsumerV2 implements InitializingBean return null; }) .forDestination(Task.startOfClearing.topic(), callbacks::put); - callback(Object.class) + callback(SessionActionRequest.class) .setConsumer(o -> stateMachineWrapper.sendEvent(SsnEvent.CONTINUE)) - .forDestination("continue-state-session", callbacks::put); + .forDestination(Consts.CONTINUE_SESSION, callbacks::put); + callback(SessionActionRequest.class) + .setConsumer(o -> stateMachineWrapper.sendEvent(SsnEvent.REPEAT)) + .forDestination(Consts.REPEAT_SESSION, callbacks::put); callback(PIClearingOutbondActionNewRequest.class) .setFunction(pmtOutboundService::sendOutBoundPayment) 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 77d9f94a5..93ae19b35 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 @@ -162,6 +162,8 @@ public interface Consts { String SDF56_PROCESS = "sdf56-process"; String CONTINUE_SESSION_BN_FIRST_PART = "sdf57-process"; String CONTINUE_SESSION_BN_SECOND_PART = "sdf13-process"; + String CONTINUE_SESSION = "continue-session"; + String REPEAT_SESSION = "repeat-session"; String KILL_SESSION = "kill-session"; String FORCE_STOP_SESSION = "force-stop-session"; String SWT_EXPORTER = "swt-exporter"; diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/session/SessionActionRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/session/SessionActionRequest.java new file mode 100644 index 000000000..428e3a9a5 --- /dev/null +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/session/SessionActionRequest.java @@ -0,0 +1,16 @@ +package ru.spcex.clearing.platform.messaging.domain.cud.session; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class SessionActionRequest { + @JsonProperty + private Long sessionId; + + public Long getSessionId() { + return sessionId; + } + + public void setSessionId(Long sessionId) { + this.sessionId = sessionId; + } +}