This commit is contained in:
parent
4e50f77576
commit
5f24eba895
7 changed files with 144 additions and 4 deletions
|
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -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<SessionActionRequest> {
|
||||||
|
@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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
|
|
||||||
{
|
{
|
||||||
"version": "3.19.244.135",
|
"version": "3.19.250.136",
|
||||||
|
|
||||||
"enums": {
|
"enums": {
|
||||||
|
|
||||||
|
|
@ -6229,7 +6229,33 @@
|
||||||
"type": 12,"dbname": "Код статуса","name": "Наименование статуса","shortname": "Статус","searchable": true,"sortable": true,"visible": true,"link": "workflowStatus"
|
"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": {
|
"sTrades": {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!--?xml-stylesheet type="text/xsl" href="\..\corp-reports\src\data\meta\meta.server.xslt"?-->
|
<!--?xml-stylesheet type="text/xsl" href="\..\corp-reports\src\data\meta\meta.server.xslt"?-->
|
||||||
<meta version="3.19.244.135">
|
<meta version="3.19.250.136">
|
||||||
<!-- _xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" _xsi:noNamespaceSchemaLocation="file:///E:/d/projects/meta/from/meta.xsd" -->
|
<!-- _xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" _xsi:noNamespaceSchemaLocation="file:///E:/d/projects/meta/from/meta.xsd" -->
|
||||||
<!--Здесь словари-->
|
<!--Здесь словари-->
|
||||||
<enums>
|
<enums>
|
||||||
|
|
@ -1442,6 +1442,14 @@
|
||||||
<section type="12" dbname="Код наименования секции" name="Наименование секции" shortname="Секция" searchable="true" sortable="true" visible="true" link="section"/>
|
<section type="12" dbname="Код наименования секции" name="Наименование секции" shortname="Секция" searchable="true" sortable="true" visible="true" link="section"/>
|
||||||
<sessionType type="12" dbname="Код типа клиринговой сессии" name="Тип клиринговой сессии" shortname="Тип" searchable="true" sortable="true" visible="true" link="sessionType"/>
|
<sessionType type="12" dbname="Код типа клиринговой сессии" name="Тип клиринговой сессии" shortname="Тип" searchable="true" sortable="true" visible="true" link="sessionType"/>
|
||||||
<workflowStatus type="12" dbname="Код статуса" name="Наименование статуса" shortname="Статус" searchable="true" sortable="true" visible="true" link="workflowStatus"/>
|
<workflowStatus type="12" dbname="Код статуса" name="Наименование статуса" shortname="Статус" searchable="true" sortable="true" visible="true" link="workflowStatus"/>
|
||||||
|
<actions>
|
||||||
|
<post destination="REPT" name="Продолжение сессии c текущего шага">
|
||||||
|
<id type="1" name="Идентификатор записи" shortname="ID" link="session" required="true" linkCode="id"/>
|
||||||
|
</post>
|
||||||
|
<post destination="NEXT" name="Продолжение сессии cо следующего шага">
|
||||||
|
<id type="1" name="Идентификатор записи" shortname="ID" link="session" required="true" linkCode="id"/>
|
||||||
|
</post>
|
||||||
|
</actions>
|
||||||
</session>
|
</session>
|
||||||
<sTrades name="Сделки из Торговой системы" class="ru.clearing.classes.statics.data.misc.STrades" table="s_trades">
|
<sTrades name="Сделки из Торговой системы" class="ru.clearing.classes.statics.data.misc.STrades" table="s_trades">
|
||||||
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true"/>
|
<id type="1" name="Идентификатор записи" shortname="ID" searchable="true" sortable="true"/>
|
||||||
|
|
|
||||||
|
|
@ -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.RegistryReturnDepositRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.registry.RegistrySplitDepositActionRequest;
|
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.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.domain.cud.utilities.STradesImportedRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumerV2;
|
import ru.spcex.clearing.platform.messaging.service.QueueConsumerV2;
|
||||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||||
|
|
@ -129,9 +130,12 @@ public class EventsReceiver extends QueueConsumerV2 implements InitializingBean
|
||||||
return null;
|
return null;
|
||||||
})
|
})
|
||||||
.forDestination(Task.startOfClearing.topic(), callbacks::put);
|
.forDestination(Task.startOfClearing.topic(), callbacks::put);
|
||||||
callback(Object.class)
|
callback(SessionActionRequest.class)
|
||||||
.setConsumer(o -> stateMachineWrapper.sendEvent(SsnEvent.CONTINUE))
|
.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)
|
callback(PIClearingOutbondActionNewRequest.class)
|
||||||
.setFunction(pmtOutboundService::sendOutBoundPayment)
|
.setFunction(pmtOutboundService::sendOutBoundPayment)
|
||||||
|
|
|
||||||
|
|
@ -162,6 +162,8 @@ public interface Consts {
|
||||||
String SDF56_PROCESS = "sdf56-process";
|
String SDF56_PROCESS = "sdf56-process";
|
||||||
String CONTINUE_SESSION_BN_FIRST_PART = "sdf57-process";
|
String CONTINUE_SESSION_BN_FIRST_PART = "sdf57-process";
|
||||||
String CONTINUE_SESSION_BN_SECOND_PART = "sdf13-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 KILL_SESSION = "kill-session";
|
||||||
String FORCE_STOP_SESSION = "force-stop-session";
|
String FORCE_STOP_SESSION = "force-stop-session";
|
||||||
String SWT_EXPORTER = "swt-exporter";
|
String SWT_EXPORTER = "swt-exporter";
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Reference in a new issue