diff --git a/ruoyi-admin/src/main/resources/templates/monitor/discern/discern.html b/ruoyi-admin/src/main/resources/templates/monitor/discern/discern.html index e099302..7e9aa8e 100644 --- a/ruoyi-admin/src/main/resources/templates/monitor/discern/discern.html +++ b/ruoyi-admin/src/main/resources/templates/monitor/discern/discern.html @@ -103,9 +103,8 @@ }, { field: 'createTime', - title: '记录开始时间', - sortable: true, - }, + title: '记录开始时间' + }, { field: 'updateTime', title: '记录结束时间', 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 95d7ae2..7cd0c13 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 @@ -26,4 +26,6 @@ public class DataResponse implements Serializable { private List data; + private Long time; + } 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 dedff2a..3c8b9f1 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 @@ -22,11 +22,9 @@ public class SocketUtil { try { boolean connected = socket.isConnected(); if (!connected) { - dataResponse.setStatus(0); - }else { - dataResponse.setStatus(1); + dataResponse.setStatus(0); } - RadarStatusWebSocket.sendToAll(JSON.toJSONString(dataResponse)); + dataResponse.setTime(System.currentTimeMillis()); InputStream inputStream = socket.getInputStream(); // 获取输入流 int available = inputStream.available(); byte[] buffer = new byte[available]; @@ -48,6 +46,11 @@ public class SocketUtil { if (Objects.equals(radarId, decimal.get(0))) { dataResponse.setData(decimal); } + dataResponse.setStatus(1); + + System.out.println("雷达ip " + radarIp+ radarId + radarLocation + "成功"); + + 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 0428702..f7a7575 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 @@ -58,6 +58,7 @@ public class RadarRealTimeDataServiceImpl implements RadarRealTimeDataService, I } private void radarWebSocket(List radarList) { +// System.out.println(" 雷达集合:::" + radarList); for (SysRadar radar : radarList) { try { Socket socket = new Socket(radar.getRadarIp(), 23); @@ -83,27 +84,33 @@ public class RadarRealTimeDataServiceImpl implements RadarRealTimeDataService, I Map> map = new HashMap<>(); + Map timeMap = new HashMap(); + while (StringUtils.equals("0", radarDelMap.get(radar.getId()))) { try { + // socket连接成功返回数据 DataResponse data = SocketUtil.getData(socket, radar.getRadarLocation(), radar.getRadarIp(), radar.getRadarId()); - long current = System.currentTimeMillis(); + if (Objects.nonNull(data.getData())){ + timeMap.put("noDataStart",System.currentTimeMillis()); + } // 没数据返回data.data == null + long current = System.currentTimeMillis(); if (Objects.isNull(data.getData())) { + current = System.currentTimeMillis(); // 连续2秒没读到数据,结束 if (current - noDataStart >= 2000) { - long dataNullTime = System.currentTimeMillis(); // todo:存数据 if (CollectionUtils.isNotEmpty(map.get(getMapKey(radar)))) { - + System.out.println("连续两秒没收到数据:开始存储........" + "开始时间为:" + timeMap.get("noDataStart") + "结束时间为:" + current); if (readCount > 1) { - saveData(radar, map, readCount, noDataEnd, dataNullTime); - + saveData(radar, map, readCount, timeMap.get("noDataStart"), current); + timeMap.put("noDataStart",System.currentTimeMillis()); readCount = 1; } } - map.get(getMapKey(radar)).clear(); + map.remove(getMapKey(radar)); noDataStart = current; } @@ -141,25 +148,35 @@ public class RadarRealTimeDataServiceImpl implements RadarRealTimeDataService, I dataList.add(primaryRadarData); map.put(getMapKey(radar), dataList); } - if (StringUtils.equals(modbusResponse.getTagId(), dataList.get(dataList.size() - 1).getTagId()) && Objects.equals(primaryRadarData.getRadarId(), dataList.get(dataList.size() - 1).getRadarId()) && Objects.equals(primaryRadarData.getRadarIp(), dataList.get(dataList.size() - 1).getRadarIp())) { - if (current - start >= 20000) { - // todo:存数据 - - if (readCount > 100) { - saveData(radar, map, readCount, start, current); - readCount = 1; - } - start = System.currentTimeMillis(); - - } - dataList.clear(); - dataList.add(primaryRadarData); - } - if (!StringUtils.equals(modbusResponse.getTagId(), dataList.get(dataList.size() - 1).getTagId()) && !StringUtils.equals("0", dataList.get(dataList.size() - 1).getTagId()) && Objects.equals(primaryRadarData.getRadarId(), dataList.get(dataList.size() - 1).getRadarId()) && Objects.equals(primaryRadarData.getRadarIp(), dataList.get(dataList.size() - 1).getRadarIp())) { +// if (StringUtils.equals(modbusResponse.getTagId(), dataList.get(dataList.size() - 1).getTagId()) && Objects.equals(primaryRadarData.getRadarId(), dataList.get(dataList.size() - 1).getRadarId()) && Objects.equals(primaryRadarData.getRadarIp(), dataList.get(dataList.size() - 1).getRadarIp())) { +// if (current - start >= 20000) { +// // todo:存数据 +// +// System.out.println("连续二十秒秒没收到数据:开始存储........" + "开始时间为:" + start + "结束时间为:" + current); +// if (readCount > 100) { +// saveData(radar, map, readCount, start, current); +// readCount = 1; +// } +// start = System.currentTimeMillis(); +// +// } +// dataList.clear(); +// dataList.add(primaryRadarData); +// } + if (!StringUtils.equals(modbusResponse.getTagId(), dataList.get(dataList.size() - 1).getTagId()) + && !StringUtils.equals("0", dataList.get(dataList.size() - 1).getTagId()) + && Objects.equals(primaryRadarData.getRadarId(), dataList.get(dataList.size() - 1).getRadarId()) + && Objects.equals(primaryRadarData.getRadarIp(), dataList.get(dataList.size() - 1).getRadarIp())) { // todo:存数据 long currentTimeMillis = System.currentTimeMillis(); - saveData(radar, map, readCount, start, currentTimeMillis); + Long dataStart = timeMap.get("noDataStart"); + System.out.println("突然读到另一个标签:开始存储........" + + "此次雷达id===="+primaryRadarData.getRadarId() + "上次雷达id===="+primaryRadarData.getRadarId() + + "此次雷达ip为:====" + primaryRadarData.getRadarIp()+ "上次雷达ip为 =====" + dataList.get(dataList.size() - 1).getRadarIp() + dataStart + "结束时间为:" + currentTimeMillis); + saveData(radar, map, readCount, data.getTime()-1, currentTimeMillis); dataList.clear(); + timeMap.put("noDataStart",System.currentTimeMillis()); + map.remove(getMapKey(radar)); dataList.add(primaryRadarData); readCount = 1; } @@ -172,8 +189,13 @@ public class RadarRealTimeDataServiceImpl implements RadarRealTimeDataService, I if (!Objects.equals(data.getData().get(0), dataList.get(dataList.size() - 1).getRadarId())) { long end = System.currentTimeMillis(); - saveData(radar, map, readCount, start, end); + Long dataStart = timeMap.get("noDataStart"); + + System.out.println("突然读到另一个雷达id: " + "开始存储........" + "开始时间为:" + dataStart + "结束时间为:" + end); + saveData(radar, map, readCount, data.getTime(), end); dataList.clear(); + timeMap.put("noDataStart",System.currentTimeMillis()); + map.remove(getMapKey(radar)); dataList.add(primaryRadarData); readCount = 1; } @@ -181,17 +203,20 @@ public class RadarRealTimeDataServiceImpl implements RadarRealTimeDataService, I } consecutiveZeros = 0; } else { + Long dataStart = timeMap.get("noDataStart"); //连续10次读取标签号为0 consecutiveZeros++; if (10 == consecutiveZeros) { // todo:存数据 long nullTime = System.currentTimeMillis(); - saveData(radar, map, readCount, start, noDataStart); + + System.out.println("连续10次读取标签号为0:开始存储........" + "开始时间为:" + dataStart + "结束时间为:" + noDataStart); + saveData(radar, map, readCount, data.getTime(), noDataStart); readCount = 1; - map.get(getMapKey(radar)).clear(); + map.remove(getMapKey(radar)); + timeMap.remove("noDataStart"); dataList.clear(); consecutiveZeros = 0; - start = System.currentTimeMillis(); } // 没有配置过将铁包号置空 diff --git a/ruoyi-system/src/main/resources/mapper/system/SysDiscernMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysDiscernMapper.xml index 093b220..feb4035 100644 --- a/ruoyi-system/src/main/resources/mapper/system/SysDiscernMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/SysDiscernMapper.xml @@ -93,6 +93,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND DATE_FORMAT(update_time,'%Y-%m-%d') between DATE_FORMAT(#{createTime},'%Y-%m-%d') and DATE_FORMAT(#{updateTime},'%Y-%m-%d') + order by id desc