【将CTC所有消息发送移到CTCLogicLoop】
【增加调度台、邻站消息发送类型】
This commit is contained in:
parent
8ef0eafd69
commit
99678ccc1d
@ -10,14 +10,11 @@ import club.joylink.rtss.simulation.cbtc.data.map.Station;
|
||||
import club.joylink.rtss.simulation.cbtc.exception.SimulationException;
|
||||
import club.joylink.rtss.simulation.cbtc.exception.SimulationExceptionType;
|
||||
import club.joylink.rtss.util.RandomGenerator;
|
||||
import club.joylink.rtss.vo.client.WebSocketMessageType;
|
||||
import club.joylink.rtss.vo.client.ctc.CtcRunPlanVO;
|
||||
import club.joylink.rtss.websocket.StompMessageService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.time.LocalTime;
|
||||
@ -92,7 +89,7 @@ public class CtcStationRunPlanLogService {
|
||||
runPlanLogList.add(changeRunPlanLog);
|
||||
}
|
||||
});
|
||||
sendRunPlanChangeMessage(simulation, runPlanLogList);
|
||||
ctcLogicLoop.sendRunPlanChangeMessage(simulation, runPlanLogList, simulation.getSimulationUserIds());
|
||||
}
|
||||
|
||||
/**
|
||||
@ -120,8 +117,7 @@ public class CtcStationRunPlanLogService {
|
||||
}
|
||||
});
|
||||
// 发送消息
|
||||
ctcLogicLoop.sendCtcRunPlanMessage(simulation.getId(), runPlanLogList,
|
||||
WebSocketMessageType.SIMULATION_CTC_MANAGER_RUN_PLAN_EDIT_CHANGE, simulation.getSimulationUserIds());
|
||||
ctcLogicLoop.sendCtcManageChangeMessage(simulation, runPlanLogList, simulation.getSimulationUserIds());
|
||||
}
|
||||
|
||||
/**
|
||||
@ -142,8 +138,7 @@ public class CtcStationRunPlanLogService {
|
||||
}, (p) -> p));
|
||||
simulation.getCtcRepository().getSimulationRunPlanEditAreaMap().put(stationCode, planParamMap);
|
||||
// 发送消息
|
||||
ctcLogicLoop.sendCtcRunPlanMessage(simulation.getId(), runPlanParamList,
|
||||
WebSocketMessageType.SIMULATION_CTC_MANAGER_RUN_PLAN_EDIT_COVER, simulation.getSimulationUserIds());
|
||||
ctcLogicLoop.sendCtcManageCoverMessage(simulation, runPlanParamList, simulation.getSimulationUserIds());
|
||||
}
|
||||
|
||||
/**
|
||||
@ -158,8 +153,7 @@ public class CtcStationRunPlanLogService {
|
||||
.getSimulationRunPlanEditAreaMap().getOrDefault(stationCode, new ConcurrentHashMap<>());
|
||||
tripNumberList.forEach(tripNumber -> stationRunLogTripNumberMap.remove(tripNumber));
|
||||
// 发送消息
|
||||
ctcLogicLoop.sendCtcRunPlanMessage(simulation.getId(), tripNumberList,
|
||||
WebSocketMessageType.SIMULATION_CTC_MANAGER_RUN_PLAN_EDIT_REMOVE, simulation.getSimulationUserIds());
|
||||
ctcLogicLoop.sendCtcManageRemoveMessage(simulation, tripNumberList, simulation.getSimulationUserIds());
|
||||
}
|
||||
|
||||
/**
|
||||
@ -180,7 +174,7 @@ public class CtcStationRunPlanLogService {
|
||||
simulation.getCtcRepository().addRunPlanToSimulationMap(runPlanLog);
|
||||
runPlanLogList.add(runPlanLog);
|
||||
});
|
||||
coverRunPlanMessage(simulation, runPlanLogList);
|
||||
ctcLogicLoop.coverRunPlanMessage(simulation, runPlanLogList, simulation.getSimulationUserIds());
|
||||
}
|
||||
|
||||
/**
|
||||
@ -236,7 +230,7 @@ public class CtcStationRunPlanLogService {
|
||||
}
|
||||
}
|
||||
if (changeRunPlanLog.getArriveRunPlan() != null || changeRunPlanLog.getDepartRunPlan() != null) {
|
||||
sendRunPlanChangeMessage(simulation, Arrays.asList(changeRunPlanLog));
|
||||
ctcLogicLoop.sendRunPlanChangeMessage(simulation, Arrays.asList(changeRunPlanLog), simulation.getSimulationUserIds());
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -273,7 +267,7 @@ public class CtcStationRunPlanLogService {
|
||||
}
|
||||
}
|
||||
if (changeRunPlanLog.getArriveRunPlan() != null || changeRunPlanLog.getDepartRunPlan() != null) {
|
||||
sendRunPlanChangeMessage(simulation, Arrays.asList(changeRunPlanLog));
|
||||
ctcLogicLoop.sendRunPlanChangeMessage(simulation, Arrays.asList(changeRunPlanLog), simulation.getSimulationUserIds());
|
||||
}
|
||||
}
|
||||
|
||||
@ -307,7 +301,7 @@ public class CtcStationRunPlanLogService {
|
||||
}
|
||||
}
|
||||
if (changeRunPlanLog.getArriveRunPlan() != null || changeRunPlanLog.getDepartRunPlan() != null) {
|
||||
sendRunPlanChangeMessage(simulation, Arrays.asList(changeRunPlanLog));
|
||||
ctcLogicLoop.sendRunPlanChangeMessage(simulation, Arrays.asList(changeRunPlanLog), simulation.getSimulationUserIds());
|
||||
}
|
||||
}
|
||||
|
||||
@ -344,7 +338,7 @@ public class CtcStationRunPlanLogService {
|
||||
}
|
||||
}
|
||||
if (changeRunPlanLog.getArriveRunPlan() != null || changeRunPlanLog.getDepartRunPlan() != null) {
|
||||
sendRunPlanChangeMessage(simulation, Arrays.asList(changeRunPlanLog));
|
||||
ctcLogicLoop.sendRunPlanChangeMessage(simulation, Arrays.asList(changeRunPlanLog), simulation.getSimulationUserIds());
|
||||
}
|
||||
}
|
||||
|
||||
@ -362,7 +356,7 @@ public class CtcStationRunPlanLogService {
|
||||
CtcStationRunPlanLog changeRunPlanLog = new CtcStationRunPlanLog();
|
||||
changeRunPlanLog.setCode(runPlanCode);
|
||||
changeRunPlanLog.setDelete(Boolean.TRUE);
|
||||
sendRunPlanChangeMessage(simulation, Arrays.asList(changeRunPlanLog));
|
||||
ctcLogicLoop.sendRunPlanChangeMessage(simulation, Arrays.asList(changeRunPlanLog), simulation.getSimulationUserIds());
|
||||
}
|
||||
}
|
||||
|
||||
@ -567,30 +561,4 @@ public class CtcStationRunPlanLogService {
|
||||
}
|
||||
return runPlanParam;
|
||||
}
|
||||
|
||||
/**
|
||||
* websocket消息发送事件
|
||||
*
|
||||
* @param simulation 仿真实体
|
||||
* @param ctcStationRunPlanLogList 信息变更的实体列表
|
||||
*/
|
||||
private void sendRunPlanChangeMessage(Simulation simulation, List<CtcStationRunPlanLog> ctcStationRunPlanLogList) {
|
||||
if (!CollectionUtils.isEmpty(ctcStationRunPlanLogList)) {
|
||||
// CTC运行日志发消息
|
||||
List<CtcRunPlanVO> messageList = ctcStationRunPlanLogList.stream().map(ctcStationRunPlanLog -> new CtcRunPlanVO(ctcStationRunPlanLog))
|
||||
.collect(Collectors.toList());
|
||||
ctcLogicLoop.sendCtcRunPlanMessage(simulation.getId(), messageList
|
||||
, WebSocketMessageType.SIMULATION_CTC_RUN_PLAN_CHANGE, simulation.getSimulationUserIds());
|
||||
}
|
||||
}
|
||||
|
||||
private void coverRunPlanMessage(Simulation simulation, List<CtcStationRunPlanLog> ctcStationRunPlanLogList) {
|
||||
if (!CollectionUtils.isEmpty(ctcStationRunPlanLogList)) {
|
||||
// CTC运行日志发消息
|
||||
List<CtcRunPlanVO> messageList = ctcStationRunPlanLogList.stream().map(ctcStationRunPlanLog -> new CtcRunPlanVO(ctcStationRunPlanLog))
|
||||
.collect(Collectors.toList());
|
||||
ctcLogicLoop.sendCtcRunPlanMessage(simulation.getId(), messageList
|
||||
, WebSocketMessageType.SIMULATION_CTC_RUN_PLAN_COVER, simulation.getSimulationUserIds());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,11 +1,14 @@
|
||||
package club.joylink.rtss.simulation.cbtc.CTC;
|
||||
|
||||
import club.joylink.rtss.simulation.cbtc.ATS.operation.vo.CtcRunPlanParam;
|
||||
import club.joylink.rtss.simulation.cbtc.ATS.service.ars.AtsRouteSelectService;
|
||||
import club.joylink.rtss.simulation.cbtc.CI.CiApiService;
|
||||
import club.joylink.rtss.simulation.cbtc.CTC.data.CtcRepository;
|
||||
import club.joylink.rtss.simulation.cbtc.CTC.data.CtcStationRunPlanLog;
|
||||
import club.joylink.rtss.simulation.cbtc.Simulation;
|
||||
import club.joylink.rtss.vo.client.SocketMessageVO;
|
||||
import club.joylink.rtss.vo.client.WebSocketMessageType;
|
||||
import club.joylink.rtss.vo.client.ctc.CtcRunPlanVO;
|
||||
import club.joylink.rtss.vo.client.factory.SocketMessageFactory;
|
||||
import club.joylink.rtss.websocket.StompMessageService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@ -15,6 +18,7 @@ import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Component
|
||||
public class CTCLogicLoop {
|
||||
@ -58,18 +62,139 @@ public class CTCLogicLoop {
|
||||
simulation.addFixedRateJob(MESSAGE_NAME, () -> this.sendMessage(simulation), MESSAGE_RATE);
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送CTC初始变化
|
||||
*
|
||||
* @param simulation 仿真实体
|
||||
* @param messageList 消息列表
|
||||
* @param userIds 用户ID
|
||||
*/
|
||||
public void sendRunPlanInitMessage(Simulation simulation, List<CtcRunPlanVO> messageList, Set<String> userIds) {
|
||||
if (!CollectionUtils.isEmpty(messageList)) {
|
||||
sendCtcMessage(simulation.getId(), messageList, WebSocketMessageType.SIMULATION_CTC_RUN_PLAN_INIT, userIds);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* websocket消息发送变化事件
|
||||
*
|
||||
* @param simulation 仿真实体
|
||||
* @param messageInfo 信息变更的实体列表
|
||||
*/
|
||||
public void sendRunPlanChangeMessage(Simulation simulation, List<CtcStationRunPlanLog> messageInfo, Set<String> userIds) {
|
||||
if (!CollectionUtils.isEmpty(messageInfo)) {
|
||||
// CTC运行日志发消息
|
||||
List<CtcRunPlanVO> messageList = messageInfo.stream().map(ctcStationRunPlanLog -> new CtcRunPlanVO(ctcStationRunPlanLog))
|
||||
.collect(Collectors.toList());
|
||||
sendCtcMessage(simulation.getId(), messageList, WebSocketMessageType.SIMULATION_CTC_RUN_PLAN_CHANGE, userIds);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* websocket消息发送覆盖事件
|
||||
*
|
||||
* @param simulation 仿真实体
|
||||
* @param messageInfo 信息变更的实体列表
|
||||
*/
|
||||
public void coverRunPlanMessage(Simulation simulation, List<CtcStationRunPlanLog> messageInfo, Set<String> userIds) {
|
||||
if (!CollectionUtils.isEmpty(messageInfo)) {
|
||||
// CTC运行日志发消息
|
||||
List<CtcRunPlanVO> messageList = messageInfo.stream().map(ctcStationRunPlanLog -> new CtcRunPlanVO(ctcStationRunPlanLog))
|
||||
.collect(Collectors.toList());
|
||||
sendCtcMessage(simulation.getId(), messageList, WebSocketMessageType.SIMULATION_CTC_RUN_PLAN_COVER, userIds);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param simulation
|
||||
* @param messageInfo
|
||||
* @param userIds
|
||||
*/
|
||||
public void initCtcManageMessage(Simulation simulation, List<CtcRunPlanParam> messageInfo, Set<String> userIds) {
|
||||
if (!CollectionUtils.isEmpty(messageInfo)) {
|
||||
sendCtcMessage(simulation.getId(), messageInfo, WebSocketMessageType.SIMULATION_CTC_MANAGER_RUN_PLAN_EDIT_INIT, userIds);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送管理端信息变更消息
|
||||
*
|
||||
* @param simulation 仿真ID
|
||||
* @param messageInfo 消息
|
||||
* @param userIds 用户ID
|
||||
*/
|
||||
public void sendCtcManageChangeMessage(Simulation simulation, List<CtcRunPlanParam> messageInfo, Set<String> userIds) {
|
||||
if (messageInfo != null && !messageInfo.isEmpty()) {
|
||||
sendCtcMessage(simulation.getId(), messageInfo, WebSocketMessageType.SIMULATION_CTC_MANAGER_RUN_PLAN_EDIT_CHANGE, userIds);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送管理端信息覆盖消息
|
||||
*
|
||||
* @param simulation 仿真ID
|
||||
* @param messageInfo 消息
|
||||
* @param userIds 用户ID
|
||||
*/
|
||||
public void sendCtcManageCoverMessage(Simulation simulation, List<CtcRunPlanParam> messageInfo, Set<String> userIds) {
|
||||
if (messageInfo != null && !messageInfo.isEmpty()) {
|
||||
sendCtcMessage(simulation.getId(), messageInfo, WebSocketMessageType.SIMULATION_CTC_MANAGER_RUN_PLAN_EDIT_COVER, userIds);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送管理端信息删除消息
|
||||
*
|
||||
* @param simulation 仿真ID
|
||||
* @param messageInfo 消息
|
||||
* @param userIds 用户ID
|
||||
*/
|
||||
public void sendCtcManageRemoveMessage(Simulation simulation, List<String> messageInfo, Set<String> userIds) {
|
||||
if (messageInfo != null && !messageInfo.isEmpty()) {
|
||||
sendCtcMessage(simulation.getId(), messageInfo, WebSocketMessageType.SIMULATION_CTC_MANAGER_RUN_PLAN_EDIT_REMOVE, userIds);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送调度台消息
|
||||
*
|
||||
* @param simulationId 仿真ID
|
||||
* @param messageInfo 消息
|
||||
* @param userIds 用户ID
|
||||
* @param <T> 消息类型
|
||||
*/
|
||||
public <T> void sendCtcDispatcherMessage(String simulationId, T messageInfo, Set<String> userIds) {
|
||||
if (messageInfo != null) {
|
||||
sendCtcMessage(simulationId, messageInfo, WebSocketMessageType.SIMULATION_CTC_DISPATCHER_MESSAGE, userIds);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* CTC邻站消息
|
||||
*
|
||||
* @param simulationId 仿真ID
|
||||
* @param messageInfo 消息
|
||||
* @param userIds 用户ID
|
||||
* @param <T> 消息类型
|
||||
*/
|
||||
public <T> void sendCtcAdjacentStationMessage(String simulationId, T messageInfo, Set<String> userIds) {
|
||||
if (messageInfo != null) {
|
||||
sendCtcMessage(simulationId, messageInfo, WebSocketMessageType.SIMULATION_CTC_ADJACENT_STATION_MESSAGE, userIds);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送CTC运行计划消息
|
||||
*
|
||||
* @param simulationId 仿真ID
|
||||
* @param messageInfoList 运行计划列表
|
||||
* @param type 消息类型
|
||||
* @param userIds 用户ID
|
||||
* @param simulationId 仿真ID
|
||||
* @param messageInfo 运行计划列表
|
||||
* @param type 消息类型
|
||||
* @param userIds 用户ID
|
||||
*/
|
||||
public <T> void sendCtcRunPlanMessage(String simulationId, List<T> messageInfoList, WebSocketMessageType type, Set<String> userIds) {
|
||||
if (!CollectionUtils.isEmpty(messageInfoList)) {
|
||||
SocketMessageVO<List<T>> message = SocketMessageFactory.build(type, simulationId, messageInfoList);
|
||||
stompMessageService.sendToUser(userIds, message);
|
||||
public <T> void sendCtcMessage(String simulationId, T messageInfo, WebSocketMessageType type, Set<String> userIds) {
|
||||
if (messageInfo != null) {
|
||||
SocketMessageVO<T> messageVO = SocketMessageFactory.build(type, simulationId, messageInfo);
|
||||
stompMessageService.sendToUser(userIds, messageVO);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -115,8 +115,7 @@ public class SimulationUserWsListener {
|
||||
List<CtcRunPlanVO> messageList = simulation.getCtcRepository().getAllRunPlanList().stream()
|
||||
.map(ctcStationRunPlanLog -> new CtcRunPlanVO(ctcStationRunPlanLog))
|
||||
.collect(Collectors.toList());
|
||||
ctcLogicLoop.sendCtcRunPlanMessage(simulation.getId(), messageList
|
||||
, WebSocketMessageType.SIMULATION_CTC_RUN_PLAN_INIT, Stream.of(userId).collect(Collectors.toSet()));
|
||||
ctcLogicLoop.sendRunPlanInitMessage(simulation, messageList, Stream.of(userId).collect(Collectors.toSet()));
|
||||
ctcLogicLoop.sendAllMessage(simulation);
|
||||
break;
|
||||
}
|
||||
@ -124,8 +123,7 @@ public class SimulationUserWsListener {
|
||||
// CTC管理端编辑区发送消息
|
||||
List<CtcRunPlanParam> allList = new ArrayList<>();
|
||||
simulation.getCtcRepository().getSimulationRunPlanEditAreaMap().forEach((k, v) -> allList.addAll(v.values()));
|
||||
ctcLogicLoop.sendCtcRunPlanMessage(simulation.getId(), allList
|
||||
, WebSocketMessageType.SIMULATION_CTC_MANAGER_RUN_PLAN_EDIT_INIT, Stream.of(userId).collect(Collectors.toSet()));
|
||||
ctcLogicLoop.initCtcManageMessage(simulation, allList, Stream.of(userId).collect(Collectors.toSet()));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -367,6 +367,16 @@ public enum WebSocketMessageType {
|
||||
*/
|
||||
SIMULATION_CTC_RUN_PLAN_COVER,
|
||||
|
||||
/**
|
||||
* CTC调度台消息类型
|
||||
*/
|
||||
SIMULATION_CTC_DISPATCHER_MESSAGE,
|
||||
|
||||
/**
|
||||
* CTC邻站消息
|
||||
*/
|
||||
SIMULATION_CTC_ADJACENT_STATION_MESSAGE,
|
||||
|
||||
/**
|
||||
* 仿真CTC管理端
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user