allen 1 mēnesi atpakaļ
vecāks
revīzija
dfaaabf2a2

+ 1 - 1
uavps-admin/src/main/resources/application.yml

@@ -7,7 +7,7 @@ ruoyi:
   # 版权年份
   copyrightYear: 2024
   # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
-  profile: D:/UavPs/uploadPath
+  profile: D:/uavps/uploadPath
   # 获取ip地址开关
   addressEnabled: false
   # 验证码类型 math 数字计算 char 字符验证

+ 10 - 0
uavps-framework/src/main/java/com/uavps/framework/udp/TaskInfo.java

@@ -25,6 +25,8 @@ public enum TaskInfo {
     private double latitude;
     private Long bizId;
     private String filePath;
+
+    private Long initMilli = 0L;
     private Long lastTime = 0L;
 
     private FileWriterThread writerThread;
@@ -178,6 +180,14 @@ public enum TaskInfo {
         return initCenterPixel;
     }
 
+    public Long getInitMilli() {
+        return initMilli;
+    }
+
+    public void setInitMilli(Long initMilli) {
+        this.initMilli = initMilli;
+    }
+
     public Long getLastTime() {
         return lastTime;
     }

+ 9 - 5
uavps-framework/src/main/java/com/uavps/framework/udp/UdpServerService.java

@@ -54,27 +54,31 @@ public class UdpServerService {
             DatagramPacket packet = new DatagramPacket(data, data.length);
 
             String uavData = "";
-            long initMilli = Instant.now().toEpochMilli();
 
-            while (true) {
+            long initMilli = 0;
+            long epochMilli = 0;
 
+            while (true) {
+                epochMilli = Instant.now().toEpochMilli();
                 //使用数据包接收客户端发送的数据
                 INSTANCE.receive(packet);
                 // 设置初始时间,用于计算每个数据的时间差
                 if(TaskInfo.INSTANCE.getInitFlag()){
-                    initMilli = Instant.now().toEpochMilli();
+                    initMilli = epochMilli;
+                    TaskInfo.INSTANCE.setInitMilli(initMilli);
                     log.info("任务Id:{},任务开始,开始时间是:{}", TaskInfo.INSTANCE.getBizId(), initMilli);
                 }
                 uavData = new String(data, 0, packet.getLength());
                 byte[] remoteData = UdpDataUtils.hexStringToBytes(uavData);
                 // 将日志条目放入队列
-                long lastTime = Instant.now().toEpochMilli() - initMilli;
+                long lastTime = epochMilli - initMilli;
                 String jsonResult = UdpUtils.getJson(remoteData, lastTime);
                 if(StringUtils.isEmpty(jsonResult)){ // 如果解析完数据为null 则跳过
                     continue;
                 }
                 TaskInfo.INSTANCE.getLogQueue().add(new TaskInfo.LogEntry(jsonResult, lastTime));
-                TaskInfo.INSTANCE.setLastTime(lastTime);
+                log.info("飞机日志,时间:{}",lastTime);
+                TaskInfo.INSTANCE.setLastTime(epochMilli);
                 session.getBasicRemote().sendText(jsonResult);
             }
         } catch (IOException e) {

+ 6 - 2
uavps-framework/src/main/java/com/uavps/framework/websocket/WebSocketServer.java

@@ -24,6 +24,8 @@ import java.io.IOException;
 import java.time.Instant;
 import java.util.Date;
 import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 import java.util.concurrent.TimeUnit;
 
 /**
@@ -54,10 +56,11 @@ public class WebSocketServer {
     @OnOpen
     public void onOpen(Session session) throws Exception {
         log.info("\nWebSocket建立连接 - {}", session);
+        ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();
         //启动服务,接收算法返回的数据
         CompletableFuture.runAsync(() -> {
             udpServerService.receive(session);
-        });
+        },singleThreadExecutor);
 
         //发送初始化参数给算法
         //String str = "BB 14 03 01 00 01 01 00 D2 57 05 08 B4 18 6D 2F 64 00 0A 00 14 00 0A 00 15 CD 5B 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 44 1B";
@@ -214,7 +217,8 @@ public class WebSocketServer {
                     assert json != null;
                     udpClientService.send(json);
                     uavpsTask = uavpsTaskService.selectUavpsTaskByBizId(bizId);
-                    uavpsTask.setEndTime(new Date());
+                    uavpsTask.setEndTime(new Date(TaskInfo.INSTANCE.getLastTime()));
+                    uavpsTask.setStartTime(new Date(TaskInfo.INSTANCE.getInitMilli()));
                     uavpsTask.setStatus(UavpsTask.COMPLETED);
                     uavpsTaskService.updateUavpsTask(uavpsTask);
                 } else {