zhanghaijun лет назад: 2
Родитель
Сommit
41919de652
28 измененных файлов с 408 добавлено и 23 удалено
  1. 1 0
      train-common/pom.xml
  2. 27 0
      train-common/train-commom-websocket/pom.xml
  3. 45 0
      train-common/train-commom-websocket/src/main/java/top/haijunit/websocket/config/WebSocketConfig.java
  4. 26 0
      train-common/train-commom-websocket/src/main/java/top/haijunit/websocket/config/properties/WebSocketProperties.java
  5. 57 0
      train-common/train-commom-websocket/src/main/java/top/haijunit/websocket/handler/WebSocketHandler.java
  6. 46 0
      train-common/train-commom-websocket/src/main/java/top/haijunit/websocket/handler/WebSocketInterceptor.java
  7. 42 0
      train-common/train-commom-websocket/src/main/java/top/haijunit/websocket/handler/WebSocketSessionHolder.java
  8. 24 0
      train-common/train-commom-websocket/src/main/java/top/haijunit/websocket/handler/WebSocketTopicListener.java
  9. 54 0
      train-common/train-commom-websocket/src/main/java/top/haijunit/websocket/utils/WebSocketUtils.java
  10. 1 0
      train-common/train-commom-websocket/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
  11. 3 3
      train-server/src/main/java/top/haijunit/train/controller/TrainController.java
  12. 1 1
      train-server/src/main/java/top/haijunit/train/constant/DirectionEnum.java
  13. 1 1
      train-server/src/main/java/top/haijunit/train/constant/SignEnum.java
  14. 1 1
      train-server/src/main/java/top/haijunit/train/constant/StatusEnum.java
  15. 1 1
      train-server/src/main/java/top/haijunit/train/simulation/train/TrainConstant.java
  16. 1 1
      train-server/src/main/java/top/haijunit/train/constant/UserStatusEnum.java
  17. 2 2
      train-server/src/main/java/top/haijunit/train/domain/entity/SignEntity.java
  18. 1 1
      train-server/src/main/java/top/haijunit/train/domain/entity/UserEntity.java
  19. 24 0
      train-server/src/main/java/top/haijunit/train/service/TrainApplication.java
  20. 1 1
      train-server/src/main/java/top/haijunit/train/service/UserService.java
  21. 20 5
      train-server/src/main/java/top/haijunit/train/simulation/train/TrainMain.java
  22. 4 0
      train-server/src/main/java/top/haijunit/train/simulation/train/TrainTravel.java
  23. 1 1
      train-server/src/main/java/top/haijunit/train/simulation/train/TrainDate.java
  24. 1 1
      train-server/src/main/java/top/haijunit/train/simulation/train/TrainDateStatus.java
  25. 1 1
      train-server/src/main/java/top/haijunit/train/simulation/train/TrainRoute.java
  26. 2 2
      train-server/src/main/java/top/haijunit/train/service/TrainService.java
  27. 19 0
      train-server/src/main/java/top/haijunit/train/simulation/train/utils/RouteUtil.java
  28. 1 1
      train-server/src/main/resources/application.yml

+ 1 - 0
train-common/pom.xml

@@ -14,5 +14,6 @@
         <module>train-common-bom</module>
         <module>train-common-core</module>
         <module>train-common-mybatis</module>
+        <module>train-commom-websocket</module>
     </modules>
 </project>

+ 27 - 0
train-common/train-commom-websocket/pom.xml

@@ -0,0 +1,27 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>top.haijunit</groupId>
+        <artifactId>train-common</artifactId>
+        <version>1.0.1</version>
+    </parent>
+
+    <artifactId>train-commom-websocket</artifactId>
+    <packaging>jar</packaging>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-websocket</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
+    </dependencies>
+</project>

+ 45 - 0
train-common/train-commom-websocket/src/main/java/top/haijunit/websocket/config/WebSocketConfig.java

@@ -0,0 +1,45 @@
+package top.haijunit.websocket.config;
+
+import org.springframework.boot.autoconfigure.AutoConfiguration;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.web.socket.WebSocketHandler;
+import org.springframework.web.socket.config.annotation.EnableWebSocket;
+import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
+import org.springframework.web.socket.server.HandshakeInterceptor;
+import top.haijunit.websocket.config.properties.WebSocketProperties;
+import top.haijunit.websocket.handler.WebSocketTopicListener;
+
+/**
+ * @author zhanghaijun
+ * @date 2023/11/17 17:47
+ * @description [一句话描述该类的功能]
+ */
+@AutoConfiguration
+@ConditionalOnProperty(value = "websocket.enabled", havingValue = "true")
+@EnableConfigurationProperties(WebSocketProperties.class)
+@EnableWebSocket
+public class WebSocketConfig {
+
+    @Bean
+    public WebSocketConfigurer webSocketConfigurer(HandshakeInterceptor handshakeInterceptor, WebSocketHandler webSocketHandler, WebSocketProperties webSocketProperties) {
+        return registry -> registry.addHandler(webSocketHandler, webSocketProperties.getPath()).addInterceptors(handshakeInterceptor).setAllowedOrigins(webSocketProperties.getAllowedOrigins());
+    }
+
+    @Bean
+    public HandshakeInterceptor handshakeInterceptor() {
+        return new top.haijunit.websocket.handler.WebSocketInterceptor();
+    }
+
+    @Bean
+    public WebSocketHandler webSocketHandler() {
+        return new top.haijunit.websocket.handler.WebSocketHandler();
+    }
+
+    @Bean
+    public WebSocketTopicListener topicListener() {
+        return new top.haijunit.websocket.handler.WebSocketTopicListener();
+    }
+
+}

+ 26 - 0
train-common/train-commom-websocket/src/main/java/top/haijunit/websocket/config/properties/WebSocketProperties.java

@@ -0,0 +1,26 @@
+package top.haijunit.websocket.config.properties;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+/**
+ * @author zhanghaijun
+ * @version 1.0
+ * @date 2023/11/17 17:48
+ * @description [一句话描述该类的功能]
+ */
+@Data
+@ConfigurationProperties("websocket")
+public class WebSocketProperties {
+
+    private Boolean enabled = true;
+    /**
+     * 路径
+     */
+    private String path = "/websocket";
+
+    /**
+     * 设置访问源地址
+     */
+    private String allowedOrigins = "*";
+}

+ 57 - 0
train-common/train-commom-websocket/src/main/java/top/haijunit/websocket/handler/WebSocketHandler.java

@@ -0,0 +1,57 @@
+package top.haijunit.websocket.handler;
+
+import cn.hutool.core.convert.Convert;
+import cn.hutool.core.util.IdUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.socket.CloseStatus;
+import org.springframework.web.socket.PongMessage;
+import org.springframework.web.socket.TextMessage;
+import org.springframework.web.socket.WebSocketSession;
+import org.springframework.web.socket.handler.AbstractWebSocketHandler;
+
+/**
+ * @author zhanghaijun
+ * @date 2023/11/17 17:51
+ * @description [一句话描述该类的功能]
+ */
+@Slf4j
+public class WebSocketHandler extends AbstractWebSocketHandler {
+
+    /** 连接成功后 */
+    @Override
+    public void afterConnectionEstablished(WebSocketSession session) throws Exception {
+        WebSocketSessionHolder.addSession(IdUtil.simpleUUID(), session);
+    }
+
+    /** 处理发送来的文本消息 */
+    @Override
+    protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
+        log.info("WebSocketHandler, 连接:" + session.getId() + ",已收到消息:" + message.getPayload());
+        String sessionId = Convert.toStr(session.getAttributes().get("loginUser"), "");
+        top.haijunit.websocket.utils.WebSocketUtils.sendMessage(sessionId, message.getPayload());
+    }
+
+    /** 心跳监测的回复 */
+    @Override
+    protected void handlePongMessage(WebSocketSession session, PongMessage message) throws Exception {
+        top.haijunit.websocket.utils.WebSocketUtils.sendPongMessage(session);
+    }
+
+    /** 连接出错时 */
+    @Override
+    public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception {
+        log.error("[transport error] sessionId: {} , exception:{}", session.getId(), exception.getMessage());
+    }
+
+    /** 连接关闭后 */
+    @Override
+    public void afterConnectionClosed(WebSocketSession session, CloseStatus status) {
+        log.info("[disconnect] sessionId: {}", session.getId());
+    }
+
+    /** 是否支持分片消息 */
+    @Override
+    public boolean supportsPartialMessages() {
+        return false;
+    }
+}

+ 46 - 0
train-common/train-commom-websocket/src/main/java/top/haijunit/websocket/handler/WebSocketInterceptor.java

@@ -0,0 +1,46 @@
+package top.haijunit.websocket.handler;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.server.ServerHttpRequest;
+import org.springframework.http.server.ServerHttpResponse;
+import org.springframework.web.socket.WebSocketHandler;
+import org.springframework.web.socket.server.HandshakeInterceptor;
+
+import java.util.Map;
+
+/**
+ * @author zhanghaijun
+ * @date 2023/11/17 17:52
+ * @description WebSocket握手请求的拦截器
+ */
+@Slf4j
+public class WebSocketInterceptor implements HandshakeInterceptor {
+
+    /**
+     * 握手前
+     *
+     * @param request
+     * @param response
+     * @param wsHandler
+     * @param attributes
+     * @return
+     * @throws Exception
+     */
+    @Override
+    public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Map<String, Object> attributes) throws Exception {
+        return true;
+    }
+
+    /**
+     * 握手后
+     *
+     * @param request
+     * @param response
+     * @param wsHandler
+     * @param exception
+     */
+    @Override
+    public void afterHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Exception exception) {
+
+    }
+}

+ 42 - 0
train-common/train-commom-websocket/src/main/java/top/haijunit/websocket/handler/WebSocketSessionHolder.java

@@ -0,0 +1,42 @@
+package top.haijunit.websocket.handler;
+
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+import org.springframework.web.socket.WebSocketSession;
+
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * @author zhanghaijun
+ * @date 2023/11/17 18:03
+ * @description 用于保存当前所有在线的会话信息
+ */
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public class WebSocketSessionHolder {
+
+    private static final Map<String, WebSocketSession> USER_SESSION_MAP = new ConcurrentHashMap<>();
+
+    public static void addSession(String sessionKey, WebSocketSession session) {
+        USER_SESSION_MAP.put(sessionKey, session);
+    }
+
+    public static void removeSession(String sessionKey) {
+        if (USER_SESSION_MAP.containsKey(sessionKey)) {
+            USER_SESSION_MAP.remove(sessionKey);
+        }
+    }
+
+    public static WebSocketSession getSessions(String sessionKey) {
+        return USER_SESSION_MAP.get(sessionKey);
+    }
+
+    public static Set<String> getSessionsAll() {
+        return USER_SESSION_MAP.keySet();
+    }
+
+    public static Boolean existSession(String sessionKey) {
+        return USER_SESSION_MAP.containsKey(sessionKey);
+    }
+}

+ 24 - 0
train-common/train-commom-websocket/src/main/java/top/haijunit/websocket/handler/WebSocketTopicListener.java

@@ -0,0 +1,24 @@
+package top.haijunit.websocket.handler;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.core.Ordered;
+
+/**
+ * @author zhanghaijun
+ * @date 2023/11/17 17:55
+ * @description [一句话描述该类的功能]
+ */
+@Slf4j
+public class WebSocketTopicListener implements ApplicationRunner, Ordered {
+    @Override
+    public void run(ApplicationArguments args) throws Exception {
+        // TODO 实现多节点部署,通过redis订阅发布机制实现多节点的消息发送
+    }
+
+    @Override
+    public int getOrder() {
+        return -1;
+    }
+}

+ 54 - 0
train-common/train-commom-websocket/src/main/java/top/haijunit/websocket/utils/WebSocketUtils.java

@@ -0,0 +1,54 @@
+package top.haijunit.websocket.utils;
+
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.socket.PongMessage;
+import org.springframework.web.socket.TextMessage;
+import org.springframework.web.socket.WebSocketMessage;
+import org.springframework.web.socket.WebSocketSession;
+import top.haijunit.websocket.handler.WebSocketSessionHolder;
+
+import java.io.IOException;
+
+/**
+ * @author zhanghaijun
+ * @date 2023/11/17 17:58
+ * @description 工具类
+ */
+@Slf4j
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public class WebSocketUtils {
+
+    /**
+     * 发送消息
+     *
+     * @param sessionKey session主键 一般为用户id
+     * @param message    消息文本
+     */
+    public static void sendMessage(String sessionKey, String message) {
+        WebSocketSession session = WebSocketSessionHolder.getSessions(sessionKey);
+        sendMessage(session, message);
+    }
+
+    public static void sendPongMessage(WebSocketSession session) {
+        sendMessage(session, new PongMessage());
+    }
+
+    public static void sendMessage(WebSocketSession session, String message) {
+        sendMessage(session, new TextMessage(message));
+    }
+
+    private static void sendMessage(WebSocketSession session, WebSocketMessage<?> message) {
+        if (session == null || !session.isOpen()) {
+            log.error("[send] session会话已经关闭");
+        } else {
+            try {
+                session.sendMessage(message);
+                log.info("[send] sessionId: {},message:{}", session.getId(), message);
+            } catch (IOException e) {
+                log.error("[send] session({}) 发送消息({}) 异常", session, message, e);
+            }
+        }
+    }
+}

+ 1 - 0
train-common/train-commom-websocket/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

@@ -0,0 +1 @@
+top.haijunit.websocket.config.WebSocketConfig

+ 3 - 3
train-server/src/main/java/top/haijunit/train/controller/TrainController.java

@@ -7,7 +7,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 import top.haijunit.common.domain.ResultData;
 import top.haijunit.train.domain.entity.SignEntity;
-import top.haijunit.train.service.TrainService;
+import top.haijunit.train.simulation.train.service.RouteService;
 
 import java.util.List;
 
@@ -21,11 +21,11 @@ import java.util.List;
 @RestController
 @RequestMapping("/train")
 public class TrainController {
-    private final TrainService trainService;
+    private final RouteService routeService;
 
     @GetMapping("/sign")
     public ResultData<List<SignEntity>> getSignAll(){
-        return ResultData.success(trainService.getSignAll());
+        return ResultData.success(routeService.getSignAll());
     }
 
 

+ 1 - 1
train-server/src/main/java/top/haijunit/train/constant/DirectionEnum.java

@@ -1,4 +1,4 @@
-package top.haijunit.train.constant;
+package top.haijunit.train.domain.constant;
 
 import com.baomidou.mybatisplus.annotation.EnumValue;
 import com.fasterxml.jackson.annotation.JsonCreator;

+ 1 - 1
train-server/src/main/java/top/haijunit/train/constant/SignEnum.java

@@ -1,4 +1,4 @@
-package top.haijunit.train.constant;
+package top.haijunit.train.domain.constant;
 
 import com.baomidou.mybatisplus.annotation.EnumValue;
 import com.fasterxml.jackson.annotation.JsonCreator;

+ 1 - 1
train-server/src/main/java/top/haijunit/train/constant/StatusEnum.java

@@ -1,4 +1,4 @@
-package top.haijunit.train.constant;
+package top.haijunit.train.domain.constant;
 
 import com.baomidou.mybatisplus.annotation.EnumValue;
 import com.fasterxml.jackson.annotation.JsonCreator;

+ 1 - 1
train-server/src/main/java/top/haijunit/train/simulation/train/TrainConstant.java

@@ -1,4 +1,4 @@
-package top.haijunit.train.simulation.train;
+package top.haijunit.train.domain.constant;
 
 /**
  * @author zhanghaijun

+ 1 - 1
train-server/src/main/java/top/haijunit/train/constant/UserStatusEnum.java

@@ -1,4 +1,4 @@
-package top.haijunit.train.constant;
+package top.haijunit.train.domain.constant;
 
 import com.baomidou.mybatisplus.annotation.EnumValue;
 import com.fasterxml.jackson.annotation.JsonCreator;

+ 2 - 2
train-server/src/main/java/top/haijunit/train/domain/entity/SignEntity.java

@@ -7,8 +7,8 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 import top.haijunit.mybatis.domain.BaseEntity;
 import top.haijunit.train.constant.DirectionEnum;
-import top.haijunit.train.constant.SignEnum;
-import top.haijunit.train.constant.StatusEnum;
+import top.haijunit.train.domain.constant.SignEnum;
+import top.haijunit.train.domain.constant.StatusEnum;
 
 import java.util.function.DoubleBinaryOperator;
 

+ 1 - 1
train-server/src/main/java/top/haijunit/train/domain/entity/UserEntity.java

@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import top.haijunit.mybatis.domain.BaseEntity;
-import top.haijunit.train.constant.UserStatusEnum;
+import top.haijunit.train.domain.constant.UserStatusEnum;
 
 /**
  * @author zhanghaijun

+ 24 - 0
train-server/src/main/java/top/haijunit/train/service/TrainApplication.java

@@ -0,0 +1,24 @@
+package top.haijunit.train.service;
+
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author zhanghaijun
+ * @date 2023/11/17 17:32
+ * @description [一句话描述该类的功能]
+ */
+@Slf4j
+@Component
+@RequiredArgsConstructor
+public class TrainApplication implements ApplicationRunner {
+
+
+    @Override
+    public void run(ApplicationArguments args) throws Exception {
+
+    }
+}

+ 1 - 1
train-server/src/main/java/top/haijunit/train/service/UserService.java

@@ -4,7 +4,7 @@ import cn.hutool.core.util.RandomUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
-import top.haijunit.train.constant.UserStatusEnum;
+import top.haijunit.train.domain.constant.UserStatusEnum;
 import top.haijunit.train.domain.entity.UserEntity;
 import top.haijunit.train.mapper.UserMapper;
 

+ 20 - 5
train-server/src/main/java/top/haijunit/train/simulation/train/TrainMain.java

@@ -1,8 +1,11 @@
 package top.haijunit.train.simulation.train;
 
+import cn.hutool.core.util.StrUtil;
 import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
-import top.haijunit.train.service.TrainService;
+import top.haijunit.train.simulation.train.service.RouteService;
+import top.haijunit.train.simulation.train.domain.TrainRoute;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -12,21 +15,33 @@ import java.util.List;
  * @date 2023/11/16 10:10
  * @description [一句话描述该类的功能]
  */
+@Slf4j
 @Service
 @RequiredArgsConstructor
 public class TrainMain {
 
-    private final TrainService trainService;
+    private final RouteService routeService;
     private final List<TrainRoute> routeList = new ArrayList<>();
     private final ArrayList<TrainTravel> runList = new ArrayList<>();
 
     public void init() {
         routeList.clear();
-        routeList.addAll(TrainRoute.initTrainRoute(trainService.getRouteList()));
+        routeList.addAll(TrainRoute.initTrainRoute(routeService.getRouteList()));
 
     }
 
-    public void getNextRoute(TrainRoute route) {
-
+    // 获取下一个进路
+    public TrainRoute getNextRoute(TrainRoute route) {
+        for (int i = 0; i < this.routeList.size(); i++) {
+            TrainRoute item = this.routeList.get(i);
+            if (StrUtil.equals(item.getName(), route.getName())) {
+                if (i == this.routeList.size() - 1) {
+                    return this.routeList.stream().findFirst().orElse(null);
+                } else {
+                    return this.routeList.get(i + 1);
+                }
+            }
+        }
+        return null;
     }
 }

+ 4 - 0
train-server/src/main/java/top/haijunit/train/simulation/train/TrainTravel.java

@@ -5,6 +5,10 @@ import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
 import top.haijunit.common.utils.StreamUtils;
 import top.haijunit.train.domain.entity.SignEntity;
+import top.haijunit.train.domain.constant.TrainConstant;
+import top.haijunit.train.simulation.train.domain.TrainDate;
+import top.haijunit.train.simulation.train.domain.TrainDateStatus;
+import top.haijunit.train.simulation.train.domain.TrainRoute;
 
 import java.time.LocalDateTime;
 import java.util.ArrayList;

+ 1 - 1
train-server/src/main/java/top/haijunit/train/simulation/train/TrainDate.java

@@ -1,4 +1,4 @@
-package top.haijunit.train.simulation.train;
+package top.haijunit.train.simulation.train.domain;
 
 import lombok.Data;
 

+ 1 - 1
train-server/src/main/java/top/haijunit/train/simulation/train/TrainDateStatus.java

@@ -1,4 +1,4 @@
-package top.haijunit.train.simulation.train;
+package top.haijunit.train.simulation.train.domain;
 
 import lombok.AllArgsConstructor;
 import lombok.Getter;

+ 1 - 1
train-server/src/main/java/top/haijunit/train/simulation/train/TrainRoute.java

@@ -1,4 +1,4 @@
-package top.haijunit.train.simulation.train;
+package top.haijunit.train.simulation.train.domain;
 
 import cn.hutool.core.collection.CollUtil;
 import lombok.Data;

+ 2 - 2
train-server/src/main/java/top/haijunit/train/service/TrainService.java

@@ -1,4 +1,4 @@
-package top.haijunit.train.service;
+package top.haijunit.train.simulation.train.service;
 
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -21,7 +21,7 @@ import java.util.stream.Collectors;
 @Slf4j
 @Service
 @RequiredArgsConstructor
-public class TrainService {
+public class RouteService {
 
     private final TrainProperties trainProperties;
     private final SignMapper signMapper;

+ 19 - 0
train-server/src/main/java/top/haijunit/train/simulation/train/utils/RouteUtil.java

@@ -0,0 +1,19 @@
+package top.haijunit.train.simulation.train.utils;
+
+import lombok.experimental.UtilityClass;
+import top.haijunit.common.utils.SpringUtils;
+
+/**
+ * @author zhanghaijun
+ * @date 2023/11/17 17:13
+ * @description [一句话描述该类的功能]
+ */
+@UtilityClass
+public class RouteUtil {
+
+    public void getNextRoute() {
+        if (SpringUtils.containsBean("")) {
+
+        }
+    }
+}

+ 1 - 1
train-server/src/main/resources/application.yml

@@ -2,8 +2,8 @@ train:
   routes:
     - S1001
     - S1002
-    - S1003
     - S1004
+    - S1003
     - S1005
 ---
 server: