|
|
@@ -1,14 +1,22 @@
|
|
|
package top.haijunit.train.listener;
|
|
|
|
|
|
+import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.scheduling.annotation.Async;
|
|
|
import org.springframework.scheduling.annotation.Scheduled;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
+import top.haijunit.train.domain.entity.RouteEntity;
|
|
|
+import top.haijunit.train.simulation.RouteComputerService;
|
|
|
+import top.haijunit.train.simulation.TrainComputerService;
|
|
|
import top.haijunit.train.simulation.TrainItem;
|
|
|
import top.haijunit.train.simulation.TrainSimulationHolder;
|
|
|
import top.haijunit.train.socket.CommandEnum;
|
|
|
import top.haijunit.train.socket.TrainWebSocketUtils;
|
|
|
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.LinkedList;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
/**
|
|
|
* @author zhanghaijun
|
|
|
* @date 2023/11/27 17:50
|
|
|
@@ -16,8 +24,14 @@ import top.haijunit.train.socket.TrainWebSocketUtils;
|
|
|
*/
|
|
|
@Slf4j
|
|
|
@Component
|
|
|
+@RequiredArgsConstructor
|
|
|
public class ReportTimeHandle {
|
|
|
|
|
|
+ private final RouteComputerService routeComputerService;
|
|
|
+ private final TrainComputerService trainComputerService;
|
|
|
+
|
|
|
+ /** 定时发送列车位置数据 */
|
|
|
+ @Async
|
|
|
@Scheduled(fixedRate = 50)
|
|
|
public void sendTrainPositionList() {
|
|
|
for (TrainItem trainItem : TrainSimulationHolder.getTrainItem()) {
|
|
|
@@ -25,8 +39,33 @@ public class ReportTimeHandle {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /** 定时发送进路占用数据 */
|
|
|
+ // @Async
|
|
|
+ // @Scheduled(fixedRate = 50)
|
|
|
+ public void sendRouterStatus() {
|
|
|
+ Map<Long, LinkedList<RouteEntity>> routeMap = TrainSimulationHolder.getRouteMap();
|
|
|
+ TrainWebSocketUtils.sendMessage(CommandEnum.ROUTE_STATUS, new HashMap<>(routeMap));
|
|
|
+ }
|
|
|
+
|
|
|
@Async
|
|
|
public void sendTrainPosition(TrainItem train) {
|
|
|
TrainWebSocketUtils.sendMessage(CommandEnum.TRAIN, train);
|
|
|
}
|
|
|
+
|
|
|
+ /** 定时计算进路 */
|
|
|
+ @Async
|
|
|
+ @Scheduled(fixedRate = 10000)
|
|
|
+ public void runRouteCompute() {
|
|
|
+ for (TrainItem trainItem : TrainSimulationHolder.getTrainItem()) {
|
|
|
+ routeComputerService.run(trainItem);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void runTrainCompute() {
|
|
|
+ for (TrainItem trainItem : TrainSimulationHolder.getTrainItem()) {
|
|
|
+ trainComputerService.run(trainItem);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
}
|