From 6e46ea433885d22c3c6b8dc7d5058382405a012a Mon Sep 17 00:00:00 2001 From: yarnom Date: Mon, 24 Nov 2025 18:56:31 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=90=88=E5=B9=B6=E7=94=9F=E4=BA=A7?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=99=A8=E5=89=8D=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/imdroid/secapi/client/RtkrcvClient.java | 4 ++++ .../executor/D331RtcmMessageExecutor.java | 1 - .../com/imdroid/sideslope/rtkrcv/RtkOutServer.java | 2 +- .../com/imdroid/sideslope/web/ApiController.java | 14 ++++++++++++++ .../beidou/controller/RtkrcvProxyController.java | 2 ++ .../imdroid/beidou/service/RtkMonitorService.java | 1 + .../src/main/resources/templates/page/rtkrcv.html | 4 ++-- 7 files changed, 24 insertions(+), 4 deletions(-) diff --git a/sec-api/src/main/java/com/imdroid/secapi/client/RtkrcvClient.java b/sec-api/src/main/java/com/imdroid/secapi/client/RtkrcvClient.java index 67309e83..45e7e621 100644 --- a/sec-api/src/main/java/com/imdroid/secapi/client/RtkrcvClient.java +++ b/sec-api/src/main/java/com/imdroid/secapi/client/RtkrcvClient.java @@ -19,4 +19,8 @@ public interface RtkrcvClient { @GetMapping("/rtk/gngga") java.util.Map gngga(@RequestParam("device_id") String deviceId); + + @PostMapping("/device_ntrip_forward") + HttpResp deviceNtripForward(@RequestParam("deviceId") String deviceId, + @RequestParam("forward") Boolean forward); } diff --git a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/executor/D331RtcmMessageExecutor.java b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/executor/D331RtcmMessageExecutor.java index 25949c74..d0761905 100644 --- a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/executor/D331RtcmMessageExecutor.java +++ b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/executor/D331RtcmMessageExecutor.java @@ -126,7 +126,6 @@ public class D331RtcmMessageExecutor implements Executor } // 添加NTRIP处理 - if(deviceBs.getForwardToNtrip()) { byte[] srcdata = message.getSrcData(); String rtcm = ByteUtil.bytesToHexString(srcdata); diff --git a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/rtkrcv/RtkOutServer.java b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/rtkrcv/RtkOutServer.java index 1b12c0ef..01db1b3b 100644 --- a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/rtkrcv/RtkOutServer.java +++ b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/rtkrcv/RtkOutServer.java @@ -46,7 +46,7 @@ public class RtkOutServer { Socket sock = serverSocket.accept(); handleClient(sock); } catch (IOException e) { - if(running) { /* ignore transient errors */ } + } } } diff --git a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/web/ApiController.java b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/web/ApiController.java index d0dc17bf..df962d72 100644 --- a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/web/ApiController.java +++ b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/web/ApiController.java @@ -172,6 +172,20 @@ public class ApiController { return resp; } + @PostMapping("/device_ntrip_forward") + public HttpResp deviceNtripForward(String deviceId, Boolean forward){ + HttpResp resp = new HttpResp(); + Device device = localDeviceService.findByDeviceId(deviceId); + if(device!=null){ + device.setForwardToNtrip(Boolean.TRUE.equals(forward)); + resp.setResponseMessage("succeed"); + } else { + resp.setCode(HttpResp.HTTP_RSP_FAILED); + resp.setResponseMessage("device not found"); + } + return resp; + } + @PostMapping("/warning_param_changed") public HttpResp warningParamChanged(){ warningService.refreshCfg(); diff --git a/sec-beidou/src/main/java/com/imdroid/beidou/controller/RtkrcvProxyController.java b/sec-beidou/src/main/java/com/imdroid/beidou/controller/RtkrcvProxyController.java index 92fef96c..4fc53f16 100644 --- a/sec-beidou/src/main/java/com/imdroid/beidou/controller/RtkrcvProxyController.java +++ b/sec-beidou/src/main/java/com/imdroid/beidou/controller/RtkrcvProxyController.java @@ -20,6 +20,7 @@ public class RtkrcvProxyController { @ResponseBody public HttpResult start(@RequestParam("device_id") String deviceId, @RequestParam(value = "clear_log", required = false) Boolean clearLog){ + try{ rtkrcvClient.deviceNtripForward(deviceId, true); }catch(Exception ignore){} String res = rtkrcvClient.start(deviceId, clearLog!=null && clearLog); rtkMonitorService.onStart(deviceId); if(res==null) return HttpResult.fail("start failed"); @@ -31,6 +32,7 @@ public class RtkrcvProxyController { public HttpResult stop(@RequestParam("device_id") String deviceId){ String res = rtkrcvClient.stop(deviceId); rtkMonitorService.onStop(deviceId); + try{ rtkrcvClient.deviceNtripForward(deviceId, false); }catch(Exception ignore){} if(res==null) return HttpResult.fail("stop failed"); return HttpResult.success(res); } diff --git a/sec-beidou/src/main/java/com/imdroid/beidou/service/RtkMonitorService.java b/sec-beidou/src/main/java/com/imdroid/beidou/service/RtkMonitorService.java index 1230e2d6..d138dd4d 100644 --- a/sec-beidou/src/main/java/com/imdroid/beidou/service/RtkMonitorService.java +++ b/sec-beidou/src/main/java/com/imdroid/beidou/service/RtkMonitorService.java @@ -60,6 +60,7 @@ public class RtkMonitorService { Integer cnt = e.getValue(); if(Boolean.TRUE.equals(running.get(dev)) && cnt != null && cnt >= 40){ try { rtkrcvClient.stop(dev); } catch (Exception ignore) {} + try { rtkrcvClient.deviceNtripForward(dev, false);} catch (Exception ignore) {} running.remove(dev); try { writeTransaction(dev); } catch (Exception ignore) {} try { diff --git a/sec-beidou/src/main/resources/templates/page/rtkrcv.html b/sec-beidou/src/main/resources/templates/page/rtkrcv.html index 97b10531..d774ae71 100644 --- a/sec-beidou/src/main/resources/templates/page/rtkrcv.html +++ b/sec-beidou/src/main/resources/templates/page/rtkrcv.html @@ -31,7 +31,7 @@
  • 分组管理
  • 设备管理
  • 单设备定位
  • -
  • 组设备定位
  • +
  • 组设备定位
  • @@ -167,7 +167,7 @@
    -
    +