zhanghaijun лет назад: 2
Родитель
Сommit
ac9c41f234
38 измененных файлов с 276 добавлено и 5 удалено
  1. 2 2
      train-server/src/assembly/bin/start.bat
  2. 4 0
      train-server/src/main/java/top/haijunit/train/domain/repository/SignStopRepository.java
  3. 1 0
      train-server/src/main/java/top/haijunit/train/listener/ReportTimeHandle.java
  4. 6 1
      train-server/src/main/java/top/haijunit/train/service/SelectionService.java
  5. 0 1
      train-server/src/main/java/top/haijunit/train/simulation/train/TrainComputerService.java
  6. 1 0
      train-server/src/main/resources/static/assets/404-a6977a7a.js
  7. 1 0
      train-server/src/main/resources/static/assets/404-legacy-2bd4d26d.js
  8. 1 0
      train-server/src/main/resources/static/assets/HomeIndex-4928ee79.js
  9. 1 0
      train-server/src/main/resources/static/assets/HomeIndex-legacy-dee8c6c2.js
  10. 1 0
      train-server/src/main/resources/static/assets/_plugin-vue_export-helper-c27b6911.js
  11. 1 0
      train-server/src/main/resources/static/assets/_plugin-vue_export-helper-legacy-762b7923.js
  12. 1 0
      train-server/src/main/resources/static/assets/base-1693959f.css
  13. 1 0
      train-server/src/main/resources/static/assets/base-f7c51771.js
  14. 1 0
      train-server/src/main/resources/static/assets/base-legacy-abed3fa5.js
  15. 1 0
      train-server/src/main/resources/static/assets/index-0b56a480.css
  16. 1 0
      train-server/src/main/resources/static/assets/index-378ac17a.js
  17. 1 0
      train-server/src/main/resources/static/assets/index-534d28ba.css
  18. 1 0
      train-server/src/main/resources/static/assets/index-5f2e0725.js
  19. 10 0
      train-server/src/main/resources/static/assets/index-653de16d.js
  20. 1 0
      train-server/src/main/resources/static/assets/index-6e14ffb8.js
  21. 1 0
      train-server/src/main/resources/static/assets/index-9349fa55.css
  22. 1 0
      train-server/src/main/resources/static/assets/index-a7e052a9.js
  23. 1 0
      train-server/src/main/resources/static/assets/index-c4aaad6d.js
  24. 1 0
      train-server/src/main/resources/static/assets/index-d00ac7ed.js
  25. 1 0
      train-server/src/main/resources/static/assets/index-legacy-2d58bd26.js
  26. 1 0
      train-server/src/main/resources/static/assets/index-legacy-32bb9980.js
  27. 1 0
      train-server/src/main/resources/static/assets/index-legacy-35b7c8e9.js
  28. 1 0
      train-server/src/main/resources/static/assets/index-legacy-589377fe.js
  29. 1 0
      train-server/src/main/resources/static/assets/index-legacy-6c7dca94.js
  30. 9 0
      train-server/src/main/resources/static/assets/index-legacy-ac93bd35.js
  31. 1 0
      train-server/src/main/resources/static/assets/index-legacy-cd17330d.js
  32. 1 0
      train-server/src/main/resources/static/assets/polyfills-legacy-2f5fa858.js
  33. 1 0
      train-server/src/main/resources/static/assets/train-028a062b.svg
  34. 84 0
      train-server/src/main/resources/static/canvas.html
  35. 20 0
      train-server/src/main/resources/static/index.html
  36. 113 0
      train-server/src/main/resources/static/lock.html
  37. 1 0
      train-server/src/main/resources/static/vite.svg
  38. 0 1
      train-web/src/store/socket.ts

+ 2 - 2
train-server/src/assembly/bin/start.bat

@@ -7,8 +7,8 @@ for %%I in ("%~dp0.") do set "SCRIPT_DIR=%%~fI"
 cd /d "%SCRIPT_DIR%\.."
 
 :: Check if Java is installed
-set "javaPath=D:\windows\app\Java\jdk-17.0.8\bin\java.exe"
-REM set "javaPath=java"
+REM set "javaPath=D:\windows\app\Java\jdk-17.0.8\bin\java.exe"
+set "javaPath=java"
 %javaPath% -version >nul 2>&1
 if errorlevel 1 (
     echo Java is not installed or not found.

+ 4 - 0
train-server/src/main/java/top/haijunit/train/domain/repository/SignStopRepository.java

@@ -4,6 +4,8 @@ import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
 import top.haijunit.train.domain.entity.SignStopEntity;
 
+import java.util.List;
+
 /**
  * @author zhang
  * @date 2023/11/26 02:03
@@ -11,5 +13,7 @@ import top.haijunit.train.domain.entity.SignStopEntity;
  */
 @Repository
 public interface SignStopRepository extends JpaRepository<SignStopEntity, Long> {
+
+    public List<SignStopEntity> findAllByStationId(Long stationId);
 }
 

+ 1 - 0
train-server/src/main/java/top/haijunit/train/listener/ReportTimeHandle.java

@@ -66,6 +66,7 @@ public class ReportTimeHandle {
     }
 
     @Async
+    @Scheduled(fixedDelay = 1000)
     public void runTrainCompute() {
         for (TrainItem trainItem : TrainSimulationHolder.getTrainItem()) {
             trainComputerService.run(trainItem);

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

@@ -9,7 +9,7 @@ import top.haijunit.train.domain.entity.RouteEntity;
 import top.haijunit.train.domain.entity.SelectionEntity;
 import top.haijunit.train.domain.repository.RouteRepository;
 import top.haijunit.train.domain.repository.SelectionRepository;
-import top.haijunit.train.simulation.domain.RouteItem;
+import top.haijunit.train.domain.repository.SignStopRepository;
 import top.haijunit.train.utils.NumberUtil;
 
 import java.math.BigDecimal;
@@ -29,6 +29,7 @@ public class SelectionService {
 
     private final SelectionRepository selectionRepository;
     private final RouteRepository routeRepository;
+    private final SignStopRepository signStopRepository;
 
     // 根据公里标和上下行获取区段的问题
     public SelectionEntity getSelection(BigDecimal kilometer, DirectionEnum direction) {
@@ -81,4 +82,8 @@ public class SelectionService {
         }
         return list;
     }
+
+    // public BigDecimal getMaKilometer(List<Long> selectionIds) {
+    //
+    // }
 }

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

@@ -12,7 +12,6 @@ import top.haijunit.train.utils.CalculatorUtil;
 import top.haijunit.train.utils.NumberUtil;
 
 import java.math.BigDecimal;
-import java.time.Duration;
 import java.time.LocalTime;
 import java.util.LinkedList;
 

+ 1 - 0
train-server/src/main/resources/static/assets/404-a6977a7a.js

@@ -0,0 +1 @@
+import{_ as t}from"./_plugin-vue_export-helper-c27b6911.js";import{S as o,h as r,j as n,t as s,x as a,U as c,V as _}from"./index-653de16d.js";const d={},i={style:{"border-radius":"8px",border:"1px solid #3666",margin:"0 auto",width:"600px","text-align":"center",padding:"50px"}},l=c("h2",null,"页面找不到",-1);function p(x,m){const e=o("router-link");return r(),n("div",i,[l,s(e,{to:"/"},{default:a(()=>[_(" 跳转首页 ")]),_:1})])}const h=t(d,[["render",p]]);export{h as default};

Разница между файлами не показана из-за своего большого размера
+ 1 - 0
train-server/src/main/resources/static/assets/404-legacy-2bd4d26d.js


+ 1 - 0
train-server/src/main/resources/static/assets/HomeIndex-4928ee79.js

@@ -0,0 +1 @@
+import{_ as e}from"./_plugin-vue_export-helper-c27b6911.js";import{h as o,j as r}from"./index-653de16d.js";const c={};function n(t,s){return o(),r("h2",null,"欢迎访问")}const f=e(c,[["render",n]]);export{f as default};

+ 1 - 0
train-server/src/main/resources/static/assets/HomeIndex-legacy-dee8c6c2.js

@@ -0,0 +1 @@
+System.register(["./_plugin-vue_export-helper-legacy-762b7923.js","./index-legacy-ac93bd35.js"],(function(e,t){"use strict";var r,n,u;return{setters:[e=>{r=e._},e=>{n=e.h,u=e.j}],execute:function(){e("default",r({},[["render",function(e,t){return n(),u("h2",null,"欢迎访问")}]]))}}}));

+ 1 - 0
train-server/src/main/resources/static/assets/_plugin-vue_export-helper-c27b6911.js

@@ -0,0 +1 @@
+const s=(t,r)=>{const o=t.__vccOpts||t;for(const[c,e]of r)o[c]=e;return o};export{s as _};

+ 1 - 0
train-server/src/main/resources/static/assets/_plugin-vue_export-helper-legacy-762b7923.js

@@ -0,0 +1 @@
+System.register([],(function(t,e){"use strict";return{execute:function(){t("_",((t,e)=>{const c=t.__vccOpts||t;for(const[n,r]of e)c[n]=r;return c}))}}}));

Разница между файлами не показана из-за своего большого размера
+ 1 - 0
train-server/src/main/resources/static/assets/base-1693959f.css


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
train-server/src/main/resources/static/assets/base-f7c51771.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
train-server/src/main/resources/static/assets/base-legacy-abed3fa5.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
train-server/src/main/resources/static/assets/index-0b56a480.css


+ 1 - 0
train-server/src/main/resources/static/assets/index-378ac17a.js

@@ -0,0 +1 @@
+import{_ as e}from"./_plugin-vue_export-helper-c27b6911.js";import{h as r,j as c}from"./index-653de16d.js";const n={};function o(t,s){return r(),c("h2",null,"场景态势智能体仿真")}const f=e(n,[["render",o]]);export{f as default};

Разница между файлами не показана из-за своего большого размера
+ 1 - 0
train-server/src/main/resources/static/assets/index-534d28ba.css


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
train-server/src/main/resources/static/assets/index-5f2e0725.js


Разница между файлами не показана из-за своего большого размера
+ 10 - 0
train-server/src/main/resources/static/assets/index-653de16d.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
train-server/src/main/resources/static/assets/index-6e14ffb8.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
train-server/src/main/resources/static/assets/index-9349fa55.css


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
train-server/src/main/resources/static/assets/index-a7e052a9.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
train-server/src/main/resources/static/assets/index-c4aaad6d.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
train-server/src/main/resources/static/assets/index-d00ac7ed.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
train-server/src/main/resources/static/assets/index-legacy-2d58bd26.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
train-server/src/main/resources/static/assets/index-legacy-32bb9980.js


+ 1 - 0
train-server/src/main/resources/static/assets/index-legacy-35b7c8e9.js

@@ -0,0 +1 @@
+System.register(["./_plugin-vue_export-helper-legacy-762b7923.js","./index-legacy-ac93bd35.js"],(function(e,t){"use strict";var r,n,u;return{setters:[e=>{r=e._},e=>{n=e.h,u=e.j}],execute:function(){e("default",r({},[["render",function(e,t){return n(),u("h2",null,"场景态势智能体仿真")}]]))}}}));

Разница между файлами не показана из-за своего большого размера
+ 1 - 0
train-server/src/main/resources/static/assets/index-legacy-589377fe.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
train-server/src/main/resources/static/assets/index-legacy-6c7dca94.js


Разница между файлами не показана из-за своего большого размера
+ 9 - 0
train-server/src/main/resources/static/assets/index-legacy-ac93bd35.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
train-server/src/main/resources/static/assets/index-legacy-cd17330d.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
train-server/src/main/resources/static/assets/polyfills-legacy-2f5fa858.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
train-server/src/main/resources/static/assets/train-028a062b.svg


+ 84 - 0
train-server/src/main/resources/static/canvas.html

@@ -0,0 +1,84 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+  <meta charset="UTF-8" />
+  <title>canvas 鼠标缩放 拖动平移</title>
+  <style>
+    canvas {
+      border: 1px solid #ccc;
+    }
+  </style>
+</head>
+
+<body>
+  <canvas id="canvas" width="500" height="500"></canvas>
+  <script type="text/javascript">
+    (function () {
+      var c = document.getElementById('canvas');
+      var ctx = c.getContext('2d');
+      var ax, ay, r = 30, num = 1; //绘制图形的参数
+      var timeOutEvent = 0; //区分拖拽和点击的参数
+      //创建图形
+      function createBlock (a, b, r) {
+        ctx.beginPath();
+        ctx.fillStyle = 'red';
+        ctx.arc(a, b, r, 0, Math.PI * 2);
+        ctx.fill();
+      }
+      createBlock(200, 200, 30);
+      c.onmousedown = function (ev) {
+        var e = ev || event;
+        var x = e.clientX;
+        var y = e.clientY;
+        timeOutEvent = setTimeout('longPress()', 500);
+        e.preventDefault();
+        drag(x, y, r);
+      };
+      //缩放
+      c.onmousewheel = function (ev) {
+        var e = ev || event;
+        num += e.wheelDelta / 1200;
+        r = 30 * num;
+        ctx.clearRect(0, 0, c.width, c.height);
+        if (ax == null || ay == null) {
+          createBlock(200, 200, r);
+        } else {
+          if (r > 0) {
+            createBlock(ax, ay, r);
+          }
+        }
+      };
+      //拖拽函数
+      function drag (x, y, r) {
+        if (ctx.isPointInPath(x, y)) {
+          //路径正确,鼠标移动事件
+          c.onmousemove = function (ev) {
+            var e = ev || event;
+            ax = e.clientX;
+            ay = e.clientY;
+            clearTimeout(timeOutEvent);
+            timeOutEvent = 0;
+            //鼠标移动每一帧都清除画布内容,然后重新画圆
+            ctx.clearRect(0, 0, c.width, c.height);
+            createBlock(ax, ay, r);
+          };
+          //鼠标移开事件
+          c.onmouseup = function () {
+            c.onmousemove = null;
+            c.onmouseup = null;
+            clearTimeout(timeOutEvent);
+            if (timeOutEvent != 0) {
+              alert('你这是点击,不是拖拽');
+            }
+          };
+        }
+      }
+      function longPress () {
+        timeOutEvent = 0;
+      }
+    })();
+  </script>
+</body>
+
+</html>

+ 20 - 0
train-server/src/main/resources/static/index.html

@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html lang="zh_cn">
+  <head>
+    <meta charset="UTF-8" />
+    <link rel="icon" type="image/svg+xml" href="/logo.svg" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>城轨车站多智能体虚拟场景演练系统</title>
+    <script type="module" crossorigin src="/assets/index-653de16d.js"></script>
+    <link rel="stylesheet" href="/assets/index-534d28ba.css">
+    <script type="module">import.meta.url;import("_").catch(()=>1);async function* g(){};if(location.protocol!="file:"){window.__vite_is_modern_browser=true}</script>
+    <script type="module">!function(){if(window.__vite_is_modern_browser)return;console.warn("vite: loading legacy chunks, syntax error above and the same error below should be ignored");var e=document.getElementById("vite-legacy-polyfill"),n=document.createElement("script");n.src=e.src,n.onload=function(){System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))},document.body.appendChild(n)}();</script>
+  </head>
+  <body>
+    <div id="app"></div>
+    
+    <script nomodule>!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",(function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()}),!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script>
+    <script nomodule crossorigin id="vite-legacy-polyfill" src="/assets/polyfills-legacy-2f5fa858.js"></script>
+    <script nomodule crossorigin id="vite-legacy-entry" data-src="/assets/index-legacy-ac93bd35.js">System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))</script>
+  </body>
+</html>

+ 113 - 0
train-server/src/main/resources/static/lock.html

@@ -0,0 +1,113 @@
+<!DOCTYPE html>
+<html lang="zh_cn">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>Document</title>
+  </head>
+  <body>
+    <canvas id="clockCanvas" width="400" height="400"></canvas>
+  </body>
+  <script>
+    // 获取 Canvas 元素和 2D 上下文
+    const canvas = document.getElementById("clockCanvas");
+    const ctx = canvas.getContext("2d");
+
+    // 获取 Canvas 的中心点坐标
+    const centerX = canvas.width / 2;
+    const centerY = canvas.height / 2;
+
+    // 绘制时钟的外圆
+    function drawClockFace() {
+      ctx.beginPath();
+      ctx.arc(centerX, centerY, 190, 0, Math.PI * 2);
+      ctx.lineWidth = 5;
+      ctx.strokeStyle = "#000";
+      ctx.stroke();
+      ctx.closePath();
+    }
+
+    // 绘制时钟的刻度
+    function drawClockTicks() {
+      for (let i = 0; i < 12; i++) {
+        const angle = (Math.PI / 6) * i;
+        const x1 = centerX + Math.sin(angle) * 160;
+        const y1 = centerY - Math.cos(angle) * 160;
+        const x2 = centerX + Math.sin(angle) * 180;
+        const y2 = centerY - Math.cos(angle) * 180;
+
+        ctx.beginPath();
+        ctx.moveTo(x1, y1);
+        ctx.lineTo(x2, y2);
+        ctx.lineWidth = 3;
+        ctx.strokeStyle = "#000";
+        ctx.stroke();
+        ctx.closePath();
+      }
+    }
+
+    // 绘制时钟的指针
+    function drawClockHands() {
+      const now = new Date();
+      const hours = now.getHours();
+      const minutes = now.getMinutes();
+      const seconds = now.getSeconds();
+
+      // 绘制时针
+      const hourAngle = (Math.PI / 6) * (hours % 12) + (Math.PI / 360) * minutes;
+      const hourHandLength = 100;
+      const hourX = centerX + Math.sin(hourAngle) * hourHandLength;
+      const hourY = centerY - Math.cos(hourAngle) * hourHandLength;
+
+      ctx.beginPath();
+      ctx.moveTo(centerX, centerY);
+      ctx.lineTo(hourX, hourY);
+      ctx.lineWidth = 8;
+      ctx.strokeStyle = "#000";
+      ctx.stroke();
+      ctx.closePath();
+
+      // 绘制分针
+      const minuteAngle = (Math.PI / 30) * minutes + (Math.PI / 1800) * seconds;
+      const minuteHandLength = 140;
+      const minuteX = centerX + Math.sin(minuteAngle) * minuteHandLength;
+      const minuteY = centerY - Math.cos(minuteAngle) * minuteHandLength;
+
+      ctx.beginPath();
+      ctx.moveTo(centerX, centerY);
+      ctx.lineTo(minuteX, minuteY);
+      ctx.lineWidth = 5;
+      ctx.strokeStyle = "#000";
+      ctx.stroke();
+      ctx.closePath();
+
+      // 绘制秒针
+      const secondAngle = (Math.PI / 30) * seconds;
+      const secondHandLength = 160;
+      const secondX = centerX + Math.sin(secondAngle) * secondHandLength;
+      const secondY = centerY - Math.cos(secondAngle) * secondHandLength;
+
+      ctx.beginPath();
+      ctx.moveTo(centerX, centerY);
+      ctx.lineTo(secondX, secondY);
+      ctx.lineWidth = 2;
+      ctx.strokeStyle = "#f00";
+      ctx.stroke();
+      ctx.closePath();
+    }
+
+    // 绘制整个时钟
+    function drawClock() {
+      ctx.clearRect(0, 0, canvas.width, canvas.height);
+
+      drawClockFace();
+      drawClockTicks();
+      drawClockHands();
+
+      requestAnimationFrame(drawClock);
+    }
+
+    // 开始绘制时钟
+    drawClock();
+  </script>
+</html>

Разница между файлами не показана из-за своего большого размера
+ 1 - 0
train-server/src/main/resources/static/vite.svg


+ 0 - 1
train-web/src/store/socket.ts

@@ -1,7 +1,6 @@
 import { defineStore } from "pinia";
 import SocketClient from "@/types/WebSocketClient";
 import { CommandEnum, RouteItem, SelectionItem, TrainItem } from '@/types/train-travel'
-import { it } from "node:test";
 
 interface WebSocketState {
   client: SocketClient<string> | null;