From ddfa81b18df5c69a21e65ce5bcaffe1a6ea518f8 Mon Sep 17 00:00:00 2001 From: zouyiqing <854938661@qq.com> Date: Thu, 25 Jan 2024 17:22:03 +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 --- pom.xml | 6 +- ruoyi-admin/pom.xml | 6 +- .../system/IdentifierStatusController.java | 2 +- .../system/RadarStatusController.java | 225 +++++++++++------- .../system/identifierStatus/button.html | 2 +- .../identifierStatus/identifierStatus.html | 174 ++++++-------- ruoyi-common/pom.xml | 4 + .../common}/config/RadarStatusWebSocket.java | 6 +- .../ruoyi/common}/config/WebSocketConfig.java | 2 +- .../common/core/domain/entity/TsanaRadar.java | 34 +++ .../com/ruoyi/common/utils/SocketModel.java | 3 +- .../com/ruoyi/common/utils/SocketUtil.java | 17 +- 12 files changed, 275 insertions(+), 206 deletions(-) rename {ruoyi-admin/src/main/java/com/ruoyi/web/core => ruoyi-common/src/main/java/com/ruoyi/common}/config/RadarStatusWebSocket.java (83%) rename {ruoyi-admin/src/main/java/com/ruoyi/web/core => ruoyi-common/src/main/java/com/ruoyi/common}/config/WebSocketConfig.java (96%) create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/TsanaRadar.java diff --git a/pom.xml b/pom.xml index b13d905..905ad23 100644 --- a/pom.xml +++ b/pom.xml @@ -226,9 +226,9 @@ 3.0.2 - org.clojars.zentrope - ojdbc - 11.2.0.3.0 + com.oracle + ojdbc6 + 11.2.0.4.0 diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml index c2c4763..b5e5bb3 100644 --- a/ruoyi-admin/pom.xml +++ b/ruoyi-admin/pom.xml @@ -70,9 +70,9 @@ ruoyi-generator - org.clojars.zentrope - ojdbc - 11.2.0.3.0 + com.oracle + ojdbc6 + 11.2.0.4.0 diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/IdentifierStatusController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/IdentifierStatusController.java index 9dbef03..b9f1da2 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/IdentifierStatusController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/IdentifierStatusController.java @@ -35,7 +35,7 @@ public class IdentifierStatusController private IdentifierStatusService identifierStatusService; - private String prefix = "/system/identifierStatus"; + private String prefix = "system/identifierStatus"; /** diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/RadarStatusController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/RadarStatusController.java index 78bbd02..538204a 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/RadarStatusController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/RadarStatusController.java @@ -2,44 +2,30 @@ package com.ruoyi.web.controller.system; import com.alibaba.fastjson.JSON; -import com.ruoyi.common.core.domain.entity.DataResponse; -import com.ruoyi.common.core.domain.entity.PrimaryRadarData; -import com.ruoyi.common.core.domain.entity.SysIdentifier; -import com.ruoyi.common.core.domain.entity.SysRadar; +import com.ruoyi.common.core.domain.entity.*; import com.ruoyi.common.core.page.PageDomain; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.page.TableSupport; import com.ruoyi.common.utils.SocketModel; import com.ruoyi.common.utils.SocketUtil; -import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.bean.BeanUtils; import com.ruoyi.common.utils.bean.ModbusResponse; -import com.ruoyi.common.utils.modbus.ModbusUtils; -import com.ruoyi.framework.web.domain.server.Sys; import com.ruoyi.system.service.ISysIdentifierService; import com.ruoyi.system.service.ISysRadarService; import com.ruoyi.system.service.PrimaryRadarDataService; -import com.ruoyi.system.service.impl.IdentifierStatusServiceImpl; -import com.ruoyi.web.core.config.RadarStatusWebSocket; -import com.serotonin.modbus4j.ModbusMaster; -import lombok.Data; -import org.apache.commons.compress.utils.Lists; +import com.ruoyi.common.config.RadarStatusWebSocket; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; -import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.*; -import java.io.IOException; -import java.net.Inet4Address; import java.net.Socket; -import java.net.UnknownHostException; import java.sql.Connection; import java.sql.DriverManager; -import java.sql.ResultSet; -import java.sql.Statement; +import java.sql.PreparedStatement; +import java.sql.SQLException; import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.concurrent.CopyOnWriteArrayList; @@ -68,8 +54,9 @@ public class RadarStatusController implements InitializingBean { public static CopyOnWriteArrayList allRadar = new CopyOnWriteArrayList<>(); - private String prefix = "system/radarstatus"; + public static Integer count = 0 ; + private String prefix = "system/radarstatus"; /** * 按钮页 @@ -79,69 +66,91 @@ public class RadarStatusController implements InitializingBean { return prefix + "/radarstatus"; } - - @PostMapping("/list") @ResponseBody public TableDataInfo list(@RequestBody SysRadar sysRadar) { TableDataInfo rspData = new TableDataInfo(); List radarList = service.selectRadarList(sysRadar); - - // 异步连接硬件 -// CompletableFuture> listCompletableFuture = CompletableFuture.supplyAsync(() -> { -// List responses = new ArrayList<>(); -// final ConnectionStatus connectionStatus = new ConnectionStatus(); -// Timer timer = new Timer(); -// boolean connected = false; -// TimerTask task = new TimerTask() { -// @Override -// public void run() { +// int year = 2024; +// int month = 2; // 8月代表9月,因为月份是从0开始计数的 +// int day = 25; +// java.sql.Date date2 = new java.sql.Date(year - 1900, month - 1, day); +// List tsanaRadarList = new ArrayList<>(); +// TsanaRadar tsanaRadar = new TsanaRadar("111","111","111","111",date2,date2 , 1); +// TsanaRadar tsanaRadar1 = new TsanaRadar("222","222","222","222",date2,date2 , 2); +// TsanaRadar tsanaRadar2 = new TsanaRadar("333","333","333","333",date2,date2 , 3); +// TsanaRadar tsanaRadar3 = new TsanaRadar("444","444","444","444",date2,date2 , 4); +// TsanaRadar tsanaRadar4 = new TsanaRadar("555","555","555","555",date2,date2 , 5); +// tsanaRadarList.add(tsanaRadar); +// tsanaRadarList.add(tsanaRadar1); +// tsanaRadarList.add(tsanaRadar2); +// tsanaRadarList.add(tsanaRadar3); +// tsanaRadarList.add(tsanaRadar4); // -// for (SysRadar radar : radarList) { -// System.out.println("=======radar=====" + radar.getRadarIp()); -// try { -// DataResponse data = SocketUtil.getData(radar.getRadarIp(), 23, radar.getRadarLocation()); -// System.out.println(radar.getRadarIp() +": "+ data); -// ModbusResponse modbusResponse = getModbusResponse(data); -// String tag = modbusResponse.getTagId(); -// PrimaryRadarData primaryRadarData = new PrimaryRadarData(); -// SysIdentifier sysIdentifier = new SysIdentifier(); -// BeanUtils.copyProperties(modbusResponse, primaryRadarData); -// if (!"0".equals(modbusResponse.getTagId())) { -// sysIdentifier = identifierService.selectIdentifierByTag(tag); -// primaryRadarData.setLadleNumber(sysIdentifier.getLadleNumber()); -// primaryRadarData.setRadarLocation(radar.getRadarLocation()); -// primaryRadarData.setRadarIp(radar.getRadarIp()); -// } else { -// primaryRadarData.setLadleNumber(null); -// primaryRadarData.setRadarLocation(null); -// primaryRadarData.setRadarIp(radar.getRadarIp()); -// } -// String ip = Inet4Address.getLocalHost().getHostAddress(); -// if (modbusResponse.getValue4() != null && !"0".equals(modbusResponse.getValue4())) { -// primaryRadarDataService.insertPrimaryRadarData(primaryRadarData); -// } else { +// Connection connection = null; +// PreparedStatement preparedStatement = null; +// try { +// Class.forName("oracle.jdbc.driver.OracleDriver"); // -// } -// RadarStatusWebSocket.sendToAll(JSON.toJSONString(data)); -// } catch (Exception e) { -//// if (e.equals("java.net.SocketTimeoutException: connect timed out")) { -//// System.err.println("从串口读取失败:" + "连接超时"); -//// } -//// DataResponse dataResponse = new DataResponse(); -//// dataResponse.setRadarIp(radar.getRadarIp()); -//// dataResponse.setRadarLocation(radar.getRadarLocation()); -//// dataResponse.setStatus(0); -//// RadarStatusWebSocket.sendToAll(JSON.toJSONString(dataResponse)); -//// e.printStackTrace(); -// } -// } +// String url = "jdbc:oracle:thin:@172.16.18.195:1523:xccb"; +// String user = "radartest"; +// String password = "radartest"; +// connection = DriverManager.getConnection(url,user,password); +// System.out.println(" ============= 连接数据库成功 =========="); +// String insertStatement = "INSERT INTO xccb.TS_ANARADAR (RADARCODE, LABELCODE, LOCATIONIP , LABELNUM , TIMEBEGIN , TIMEEND , TIMECOUNT) VALUES (?, ?, ?, ?, ?, ?, ?)"; +// +// preparedStatement = connection.prepareStatement(insertStatement); +// for (TsanaRadar radar : tsanaRadarList) { +// preparedStatement.setString(1,radar.getRadarCode()); +// preparedStatement.setString(2,radar.getLabelCode()); +// preparedStatement.setString(3,radar.getLocationIp()); +// preparedStatement.setString(4,radar.getLabelNum()); +// preparedStatement.setDate(5,radar.getTimeBegin()); +// preparedStatement.setDate(6,radar.getTimeEnd()); +// preparedStatement.setInt(7,radar.getTimeCount()); +// } +// int i = preparedStatement.executeUpdate(); +// System.out.println("新增数据成功,新增数量: " + i); +// }catch (Exception e){ +// System.out.println("连接异常======" + e); +// }finally { +// // 关闭连接和statement +// if (preparedStatement != null) { +// try { +// preparedStatement.close(); +// } catch (SQLException e) { +// e.printStackTrace(); // } -// }; -// timer.scheduleAtFixedRate(task, 1, 10000); -// -// return responses; -// }); +// } +// if (connection != null) { +// try { +// connection.close(); +// } catch (SQLException e) { +// e.printStackTrace(); +// } +// } +// } + + + + + + + + + + + + + + + + + + + + + PageDomain pageDomain = TableSupport.buildPageRequest(); if (null == pageDomain.getPageNum() || null == pageDomain.getPageSize()) { rspData.setRows(radarList); @@ -156,19 +165,18 @@ public class RadarStatusController implements InitializingBean { rspData.setRows(radarList.subList(pageNum, pageSize)); rspData.setTotal(radarList.size()); -// RadarStatusWebSocket.sendToAll(rspData); +// RadarStatusWebSocket.sendToAll(rspData); return rspData; } private void asyncWebSocket(List radarList) { - CompletableFuture.runAsync(()->{ + CompletableFuture.runAsync(() -> { buildAllRadar(radarList); TimerTask task = new TimerTask() { @Override public void run() { - int count = 0; allRadar.forEach(socketModel -> { asyncReadRadar(socketModel); }); @@ -207,36 +215,85 @@ public class RadarStatusController implements InitializingBean { private void asyncReadRadar(SocketModel socketModel) { - CompletableFuture.runAsync(()->{ + CompletableFuture.runAsync(() -> { try { + List discernList = new ArrayList<>(); + // socket连接成功返回数据 DataResponse data = SocketUtil.getData(socketModel); - System.out.println(socketModel.getRadarIp() +": "+ data); + SysDiscern sysDiscern = copyDataToDiscern(data); + + System.out.println(socketModel.getRadarIp() + ": " + data); + // 雷达数据返回封装类赋值 ModbusResponse modbusResponse = getModbusResponse(data); String tag = modbusResponse.getTagId(); + // 雷达原始数据对象 PrimaryRadarData primaryRadarData = new PrimaryRadarData(); + // 标识器对象 SysIdentifier sysIdentifier = new SysIdentifier(); + // 拷贝封装类属性到雷达原始数据对象 BeanUtils.copyProperties(modbusResponse, primaryRadarData); + + //判断读取数据中是否携带标签 if (!"0".equals(modbusResponse.getTagId())) { + // 根据标签去数据库查询标签列表 sysIdentifier = identifierService.selectIdentifierByTag(tag); - primaryRadarData.setLadleNumber(sysIdentifier.getLadleNumber()); - primaryRadarData.setRadarLocation(socketModel.getRadarLocation()); - primaryRadarData.setRadarIp(socketModel.getRadarIp()); + //判断数据库查询结果是否有数据 + if (sysIdentifier != null) { + // 有数据将查询到的标识器配置属性放进原始数据对象 + primaryRadarData.setLadleNumber(sysIdentifier.getLadleNumber()); + primaryRadarData.setRadarLocation(socketModel.getRadarLocation()); + primaryRadarData.setRadarIp(socketModel.getRadarIp()); + + if (modbusResponse.getValue4() != 0){ + // 给雷达识别报表赋值 + sysDiscern.setType(sysIdentifier.getType()); + sysDiscern.setRadarLocation(socketModel.getRadarLocation()); + sysDiscern.setLadleNumber(sysIdentifier.getLadleNumber()); + sysDiscern.setCreateTime(new Date()); + + } + + } } else { + // 没有配置过将铁包号置空 primaryRadarData.setLadleNumber(null); primaryRadarData.setRadarLocation(null); primaryRadarData.setRadarIp(socketModel.getRadarIp()); } - if (modbusResponse.getValue4() != null && !"0".equals(modbusResponse.getValue4())) { + if (modbusResponse.getValue4() != null && modbusResponse.getValue4() != 0) { primaryRadarDataService.insertPrimaryRadarData(primaryRadarData); } else { } - RadarStatusWebSocket.sendToAll(JSON.toJSONString(data)); + } catch (Exception e) { } }); } + + + + /** + * 雷达识别报表赋值 + * + * @param data + * @return ModbusResponse + */ + private static SysDiscern copyDataToDiscern(DataResponse data) { + SysDiscern discern = new SysDiscern(); + discern.setTagId(data.getData().get(3).toString()); + discern.setValue4(data.getData().get(7)); + discern.setNumber(data.getData().get(11)); + return discern; + } + + /** + * 雷达数据返回封装类赋值 + * + * @param data + * @return ModbusResponse + */ private static ModbusResponse getModbusResponse(DataResponse data) { ModbusResponse modbusResponse = new ModbusResponse(); modbusResponse.setRadarNum(data.getData().get(0).toString()); diff --git a/ruoyi-admin/src/main/resources/templates/system/identifierStatus/button.html b/ruoyi-admin/src/main/resources/templates/system/identifierStatus/button.html index c5ff154..8d6856f 100644 --- a/ruoyi-admin/src/main/resources/templates/system/identifierStatus/button.html +++ b/ruoyi-admin/src/main/resources/templates/system/identifierStatus/button.html @@ -51,7 +51,7 @@ var editFlag = [[${@permission.hasPermi('system:menu:edit')}]]; var removeFlag = [[${@permission.hasPermi('system:menu:remove')}]]; var datas = [[${@dict.getType('sys_show_hide')}]]; - var prefix = ctx + "system/identifierStatus"; + var prefix = ctx + "system/radarstatus"; $(function() { var options = { diff --git a/ruoyi-admin/src/main/resources/templates/system/identifierStatus/identifierStatus.html b/ruoyi-admin/src/main/resources/templates/system/identifierStatus/identifierStatus.html index 7bb1421..edb876d 100644 --- a/ruoyi-admin/src/main/resources/templates/system/identifierStatus/identifierStatus.html +++ b/ruoyi-admin/src/main/resources/templates/system/identifierStatus/identifierStatus.html @@ -1,114 +1,90 @@ - + - - + + + + + + + + -
-
-
- -
+
+
+
+ image +

{{item.radarIp}}

+

{{item.radarLocation}}

- -
- + + + + \ No newline at end of file diff --git a/ruoyi-common/pom.xml b/ruoyi-common/pom.xml index f5a6be0..f79be2e 100644 --- a/ruoyi-common/pom.xml +++ b/ruoyi-common/pom.xml @@ -16,6 +16,10 @@ + + org.springframework.boot + spring-boot-starter-websocket + org.projectlombok lombok diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/RadarStatusWebSocket.java b/ruoyi-common/src/main/java/com/ruoyi/common/config/RadarStatusWebSocket.java similarity index 83% rename from ruoyi-admin/src/main/java/com/ruoyi/web/core/config/RadarStatusWebSocket.java rename to ruoyi-common/src/main/java/com/ruoyi/common/config/RadarStatusWebSocket.java index 6df13e5..7bc6c8c 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/RadarStatusWebSocket.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/config/RadarStatusWebSocket.java @@ -1,15 +1,11 @@ -package com.ruoyi.web.core.config; +package com.ruoyi.common.config; -import com.ruoyi.common.core.domain.entity.DataResponse; -import com.ruoyi.common.core.domain.entity.PrimaryRadarData; -import com.ruoyi.common.core.page.TableDataInfo; import org.springframework.stereotype.Component; import javax.websocket.*; import javax.websocket.server.ServerEndpoint; import java.io.IOException; import java.util.HashSet; -import java.util.List; import java.util.Set; @ServerEndpoint(value="/websocket",configurator = WebSocketConfig.class) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/WebSocketConfig.java b/ruoyi-common/src/main/java/com/ruoyi/common/config/WebSocketConfig.java similarity index 96% rename from ruoyi-admin/src/main/java/com/ruoyi/web/core/config/WebSocketConfig.java rename to ruoyi-common/src/main/java/com/ruoyi/common/config/WebSocketConfig.java index 3e2668c..d817e03 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/WebSocketConfig.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/config/WebSocketConfig.java @@ -1,4 +1,4 @@ -package com.ruoyi.web.core.config; +package com.ruoyi.common.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/TsanaRadar.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/TsanaRadar.java new file mode 100644 index 0000000..f7a64fc --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/TsanaRadar.java @@ -0,0 +1,34 @@ +package com.ruoyi.common.core.domain.entity; + +import lombok.Data; + +import java.sql.Date; + + +@Data +public class TsanaRadar { + public String radarCode; + + public String labelCode; + + public String locationIp; + + public String labelNum; + + public Date timeBegin; + + public Date timeEnd; + + public Integer timeCount; + + + public TsanaRadar(String radarCode, String labelCode, String locationIp, String labelNum, Date timeBegin, Date timeEnd, Integer timeCount) { + this.radarCode = radarCode; + this.labelCode = labelCode; + this.locationIp = locationIp; + this.labelNum = labelNum; + this.timeBegin = timeBegin; + this.timeEnd = timeEnd; + this.timeCount = timeCount; + } +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/SocketModel.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/SocketModel.java index ad3ff01..bfc2531 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/SocketModel.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/SocketModel.java @@ -3,6 +3,7 @@ package com.ruoyi.common.utils; import lombok.Data; import java.net.Socket; +import java.util.Date; @Data public class SocketModel { @@ -16,5 +17,5 @@ public class SocketModel { private int readCount; - private long lastReceiveTimestamp; + private Date updateTime; } \ No newline at end of file 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 0aaaafe..350edf3 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 @@ -1,5 +1,7 @@ package com.ruoyi.common.utils; +import com.alibaba.fastjson.JSON; +import com.ruoyi.common.config.RadarStatusWebSocket; import com.ruoyi.common.core.domain.entity.DataResponse; import java.io.DataInputStream; @@ -17,14 +19,13 @@ public class SocketUtil { Socket socket = socketModel.getSocket(); String radarLocation = socketModel.getRadarLocation(); String radarIp = socketModel.getRadarIp(); + dataResponse.setRadarIp(radarIp); + dataResponse.setRadarLocation(radarLocation); try { boolean connected = socket.isConnected(); - if (!connected) { - System.out.println(radarLocation+": "+connected); - dataResponse.setRadarIp(radarIp); - dataResponse.setRadarLocation(radarLocation); - dataResponse.setStatus(1); + System.out.println("雷达:" + radarIp + "===" + radarLocation + ": 连接异常:{}" + connected); + dataResponse.setStatus(0); dataResponse.setData(null); return dataResponse; } @@ -43,14 +44,14 @@ public class SocketUtil { decimal.add(s); } dataResponse.setData(decimal); - dataResponse.setRadarIp(radarIp); dataResponse.setStatus(1); - dataResponse.setRadarLocation(radarLocation); + RadarStatusWebSocket.sendToAll(JSON.toJSONString(dataResponse)); return dataResponse; } } catch (Exception e) { - System.out.println("读取数据异常:"+radarIp); + System.out.println("读取数据异常:" + radarIp); } + dataResponse.setRadarIp(radarIp); dataResponse.setRadarLocation(radarLocation); dataResponse.setStatus(0);