From 3b1afb5d734593c57d1860fe56eef669a4537115 Mon Sep 17 00:00:00 2001 From: zouyiqing <854938661@qq.com> Date: Mon, 29 Jan 2024 19:42:05 +0800 Subject: [PATCH] =?UTF-8?q?win=E4=BB=A3=E7=A0=81=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/radarstatus/radarstatus.html | 3 + .../core/domain/entity/DataResponse.java | 2 +- .../com/ruoyi/common/utils/SocketUtil.java | 26 ++++--- .../impl/RadarRealTimeDataServiceImpl.java | 77 +++++++------------ .../mapper/system/PrimaryRadarDataMapper.xml | 12 +-- 5 files changed, 55 insertions(+), 65 deletions(-) diff --git a/ruoyi-admin/src/main/resources/templates/system/radarstatus/radarstatus.html b/ruoyi-admin/src/main/resources/templates/system/radarstatus/radarstatus.html index bd4e7a7..cbf6917 100644 --- a/ruoyi-admin/src/main/resources/templates/system/radarstatus/radarstatus.html +++ b/ruoyi-admin/src/main/resources/templates/system/radarstatus/radarstatus.html @@ -47,6 +47,8 @@ var data = JSON.parse(event.data); console.log("接收到数据:" + JSON.stringify(data)); this.tableData.forEach(item => { + + if (item.radarIp === data.radarIp) { item.status = data.status } @@ -54,6 +56,7 @@ }; socket.onclose = function (event) { + console.log("WebSocket连接已关闭"); }; }, diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/DataResponse.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/DataResponse.java index e5072d2..95d7ae2 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/DataResponse.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/DataResponse.java @@ -22,7 +22,7 @@ public class DataResponse implements Serializable { /** * 雷达连接状态 */ - private Integer status = 0 ; + private Integer status; private List data; diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/SocketUtil.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/SocketUtil.java index 9d6470d..8cc51a9 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/SocketUtil.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/SocketUtil.java @@ -19,22 +19,26 @@ public class SocketUtil { dataResponse.setRadarIp(radarIp); dataResponse.setRadarLocation(radarLocation); try { - boolean connected = socket.isConnected(); - if (!connected) { - System.out.println("雷达:" + radarIp + "===" + radarLocation + ": 连接异常:{}" + connected); - dataResponse.setStatus(0); - dataResponse.setData(null); - }else { - - } +// boolean connected = socket.isConnected(); +// if (!connected) { +// +// }else { +// +// } InputStream inputStream = socket.getInputStream(); // 获取输入流 int available = inputStream.available(); byte[] buffer = new byte[available]; inputStream.read(buffer, 0, available); + if (buffer.length!= 0){ + dataResponse.setStatus(1); + }else { +// System.out.println("雷达:" + radarIp + "===" + radarLocation + ": 连接异常:{}" ); + dataResponse.setStatus(0); + dataResponse.setData(null); + } String hex = new BigInteger(1, buffer).toString(16); - RadarStatusWebSocket.sendToAll(JSON.toJSONString(dataResponse)); if (!"0".equals(hex)) { hex = "0" + hex; List decimal = new ArrayList<>(); @@ -43,8 +47,10 @@ public class SocketUtil { int s = BitUtils.covert(string); decimal.add(s); } - dataResponse.setStatus(1); + dataResponse.setData(decimal); + + RadarStatusWebSocket.sendToAll(JSON.toJSONString(dataResponse)); return dataResponse; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RadarRealTimeDataServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RadarRealTimeDataServiceImpl.java index 3e44a1e..65ae0ba 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RadarRealTimeDataServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RadarRealTimeDataServiceImpl.java @@ -33,9 +33,9 @@ public class RadarRealTimeDataServiceImpl implements RadarRealTimeDataService, I public static CopyOnWriteArrayList allRadar = new CopyOnWriteArrayList<>(); - public static Integer count = 0 ; - - private Integer consecutiveZeros = 0; +// public static Integer count = 0 ; +// +// private Integer consecutiveZeros = 0; private Map radarDelMap = new HashMap<>(); @@ -57,12 +57,15 @@ public class RadarRealTimeDataServiceImpl implements RadarRealTimeDataService, I radarDelMap.put(radar.getId(), "0"); CompletableFuture.runAsync(() -> { - while (StringUtils.equals("0",radarDelMap.get(radar.getId()))) { - long start = System.currentTimeMillis(); - task(radar, socket); - System.out.println("耗时时间: " + (System.currentTimeMillis() - start)); -// System.out.println("雷达ip : =====" + radar.getRadarIp()); + while (StringUtils.equals("0",radarDelMap.get(radar.getId()))) { + + task(radar, socket); + try { + Thread.sleep(3000); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } } }); } catch (Exception e) { @@ -73,42 +76,21 @@ public class RadarRealTimeDataServiceImpl implements RadarRealTimeDataService, I } private void task(SysRadar radar, Socket socket) { - try { + int count = 0; + int consecutiveZeros = 0; + CompletableFuture.runAsync(() ->{ - Map> pulse4Number = new HashMap<>(); - int count = 0; - int consecutiveZeros = 0; - // socket连接成功返回数据 - DataResponse data = SocketUtil.getData(socket, radar.getRadarLocation(), radar.getRadarIp()); - // 天线号字符串转集合 - List numberList = convertStringToList(radar.getRadarNum()); - for (String number : numberList) { - if (!pulse4Number.containsKey(number)) { - pulse4Number.put(number, new ArrayList<>()); - } - List pulse4Values = pulse4Number.get(number); - if (data.getData().get(7) == 0) { - consecutiveZeros++; - if (consecutiveZeros >= 10) { - // 10个0连续,说明该天线没有数据 从pulse4Number中删除该天线 - pulse4Number.remove(number); - // 数据记录结束,计算最大pulse4值 - double maxPulse4 = pulse4Values.stream().mapToDouble(Integer::doubleValue).max().orElse(0); - System.out.println("天线 " + number + " 的最大pulse4值为: " + maxPulse4); - // 为下一次数据记录重置 - pulse4Values.clear(); - consecutiveZeros = 0; - } - } else { - count++; - System.out.println("天线:=== " + number + "雷达============" + radar.getRadarIp() + " 峰值为: " + data.getData().get(7) + "次数: ===" + count); - pulse4Values.add(data.getData().get(7)); - } - } - SysDiscern sysDiscern = copyDataToDiscern(data); - System.out.println(radar.getRadarIp() + ": " + data); - // 雷达数据返回封装类赋值 - ModbusResponse modbusResponse = getModbusResponse(data); + }); + Map> pulse4Number = new HashMap<>(); + try { + // socket连接成功返回数据 + DataResponse data = SocketUtil.getData(socket, radar.getRadarLocation(), radar.getRadarIp()); + // 天线号字符串转集合 + List numberList = convertStringToList(radar.getRadarNum()); + SysDiscern sysDiscern = copyDataToDiscern(data); + System.out.println(radar.getRadarIp() + ": " + data); + // 雷达数据返回封装类赋值 + ModbusResponse modbusResponse = getModbusResponse(data); String tag = modbusResponse.getTagId(); // 雷达原始数据对象 PrimaryRadarData primaryRadarData = new PrimaryRadarData(); @@ -117,15 +99,17 @@ public class RadarRealTimeDataServiceImpl implements RadarRealTimeDataService, I // 拷贝封装类属性到雷达原始数据对象 BeanUtils.copyProperties(modbusResponse, primaryRadarData); + primaryRadarData.setRadarLocation(radar.getRadarLocation()); //判断读取数据中是否携带标签 if (!"0".equals(modbusResponse.getTagId())) { + + // 根据标签去数据库查询标签列表 sysIdentifier = identifierService.selectIdentifierByTag(tag); //判断数据库查询结果是否有数据 if (sysIdentifier != null) { // 有数据将查询到的标识器配置属性放进原始数据对象 primaryRadarData.setLadleNumber(sysIdentifier.getLadleNumber()); - primaryRadarData.setRadarLocation(radar.getRadarLocation()); primaryRadarData.setRadarIp(radar.getRadarIp()); if (modbusResponse.getValue4() != 0) { // 给雷达识别报表赋值 @@ -138,14 +122,11 @@ public class RadarRealTimeDataServiceImpl implements RadarRealTimeDataService, I } else { // 没有配置过将铁包号置空 primaryRadarData.setLadleNumber(null); - primaryRadarData.setRadarLocation(null); primaryRadarData.setRadarIp(radar.getRadarIp()); } - if (modbusResponse.getValue4() != null && modbusResponse.getValue4() != 0) { CompletableFuture.runAsync(() -> { - primaryRadarDataService.insertPrimaryRadarData(primaryRadarData); +// primaryRadarDataService.insertPrimaryRadarData(primaryRadarData); }); - } } catch (Exception e) { } } diff --git a/ruoyi-system/src/main/resources/mapper/system/PrimaryRadarDataMapper.xml b/ruoyi-system/src/main/resources/mapper/system/PrimaryRadarDataMapper.xml index 2735436..42e8d63 100644 --- a/ruoyi-system/src/main/resources/mapper/system/PrimaryRadarDataMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/PrimaryRadarDataMapper.xml @@ -53,9 +53,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" value3, value4, value5, - base_line, - query_fre, - number, + base_line, + query_fre, + number, radar_location, ladle_number, radar_ip, @@ -71,9 +71,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{value3}, #{value4}, #{value5}, - #{baseLine}, - #{queryFre}, - #{number}, + #{baseLine}, + #{queryFre}, + #{number}, #{radarLocation}, #{ladleNumber}, #{radarIp},