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 7c6773a..7d0b7d7 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 @@ -1,6 +1,7 @@ package com.ruoyi.web.controller.system; +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; @@ -34,13 +35,12 @@ import java.util.concurrent.CompletableFuture; /** * 雷达状态 - * + * * @author ruoyi */ @Controller @RequestMapping("/system/radarStatus") -public class RadarStatusController -{ +public class RadarStatusController { private static final Logger log = LoggerFactory.getLogger(RadarStatusController.class); @Autowired @@ -59,15 +59,13 @@ public class RadarStatusController * 按钮页 */ @GetMapping() - public String button() - { + public String button() { return prefix + "/radarStatus"; } @PostMapping("/list") @ResponseBody - public TableDataInfo list(SysRadar sysRadar) - { + public TableDataInfo list(SysRadar sysRadar) { TableDataInfo rspData = new TableDataInfo(); List radarList = service.selectRadarList(sysRadar); // 异步连接硬件 @@ -80,39 +78,49 @@ public class RadarStatusController @Override public void run() { try { - for (SysRadar radar : radarList) { + for (SysRadar radar : radarList) { // ModbusResponse modbusResponse = new ModbusResponse(); - ModbusMaster master = ModbusUtils.getSlave(radar.getRadarIp(), 23); - System.out.println(radar.getRadarIp()); - ModbusResponse modbusResponse = ModbusUtils.holdingRegister(); - connectionStatus.connected= true; + ModbusMaster master = ModbusUtils.getSlave(radar.getRadarIp(), 23); + DataResponse dataResponse = new DataResponse(); + dataResponse.setRadarIp(radar.getRadarIp()); + System.out.println(radar.getRadarIp()); + ModbusResponse modbusResponse = ModbusUtils.holdingRegister(); + if (modbusResponse == null){ + dataResponse.setStatus("0"); + } System.out.println(modbusResponse); String tag = modbusResponse.getTagId(); - PrimaryRadarData primaryRadarData = new PrimaryRadarData(); - SysIdentifier sysIdentifier = new SysIdentifier(); - BeanUtils.copyProperties(modbusResponse,primaryRadarData); - if (!"0".equals(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.setRadarLocation(radar.getRadarLocation()); + primaryRadarData.setRadarIp(radar.getRadarIp()); + } else { primaryRadarData.setLadleNumber(null); - primaryRadarData.setRadarLocation(null); - primaryRadarData.setRadarIp(radar.getRadarIp()); + primaryRadarData.setRadarLocation(null); + primaryRadarData.setRadarIp(radar.getRadarIp()); + } + dataResponse.setRadarLocation(primaryRadarData.getRadarLocation()); + String ip = Inet4Address.getLocalHost().getHostAddress(); + if (modbusResponse.getValue4() != null && !"0".equals(modbusResponse.getValue4())) { + primaryRadarDataService.insertPrimaryRadarData(primaryRadarData); + dataResponse.setStatus("1"); + dataResponse.setRadarLocation(primaryRadarData.getRadarLocation()); + } else { + dataResponse.setStatus("0"); + } + RadarStatusWebSocket.sendToAll(dataResponse.toString()); } - String ip = Inet4Address.getLocalHost().getHostAddress(); - if (modbusResponse.getValue4()!=null && !"0".equals(modbusResponse.getValue4())) { - primaryRadarDataService.insertPrimaryRadarData(primaryRadarData); - } - RadarStatusWebSocket.sendToAll(modbusResponse.toString()); - } - } catch (Exception e) { + } catch (Exception e) { if (e.equals("java.net.SocketTimeoutException: connect timed out")) { System.err.println("从串口读取失败:" + "连接超时"); } +// RadarStatusWebSocket.sendToAll(dataResponse.toString()); e.printStackTrace(); - } + } } }; timer.scheduleAtFixedRate(task, 1, 1000); @@ -120,16 +128,14 @@ public class RadarStatusController return responses; }); PageDomain pageDomain = TableSupport.buildPageRequest(); - if (null == pageDomain.getPageNum() || null == pageDomain.getPageSize()) - { + if (null == pageDomain.getPageNum() || null == pageDomain.getPageSize()) { rspData.setRows(radarList); rspData.setTotal(radarList.size()); return rspData; } Integer pageNum = (pageDomain.getPageNum() - 1) * 10; Integer pageSize = pageDomain.getPageNum() * 10; - if (pageSize > radarList.size()) - { + if (pageSize > radarList.size()) { pageSize = radarList.size(); } rspData.setRows(radarList.subList(pageNum, pageSize)); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/BaseModelEncoder.java b/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/BaseModelEncoder.java new file mode 100644 index 0000000..e2294e5 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/BaseModelEncoder.java @@ -0,0 +1,40 @@ +package com.ruoyi.web.core.config; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.json.JsonMapper; +import com.ruoyi.common.core.page.TableDataInfo; + +import javax.websocket.EncodeException; +import javax.websocket.Encoder; +import javax.websocket.EndpointConfig; + +/** + * @author YUSHENGDADA + * @title: BaseModelEncoder + * @projectName v2_lab + * @description: 实体编码器 + * @date 2022/8/22 0022下午 14:15 + */ +public class BaseModelEncoder implements Encoder.Text { + @Override + public String encode(TableDataInfo baseResponseMessage) throws EncodeException { + try { + JsonMapper jsonMapper = new JsonMapper(); + return jsonMapper.writeValueAsString(baseResponseMessage); + + } catch (JsonProcessingException e) { + e.printStackTrace(); + } + return null; + } + + @Override + public void init(EndpointConfig endpointConfig) { + + } + + @Override + public void destroy() { + + } +} \ No newline at end of file diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/RadarStatusWebSocket.java b/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/RadarStatusWebSocket.java index 2d86b85..6cf2883 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/RadarStatusWebSocket.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/RadarStatusWebSocket.java @@ -12,7 +12,7 @@ import java.util.HashSet; import java.util.List; import java.util.Set; -@ServerEndpoint(value="/websocket",configurator = WebSocketConfig.class) +@ServerEndpoint(value="/websocket",configurator = WebSocketConfig.class,encoders = {BaseModelEncoder.class}) @Component public class RadarStatusWebSocket { diff --git a/ruoyi-admin/src/main/resources/templates/system/user/profile/profile.html b/ruoyi-admin/src/main/resources/templates/system/user/profile/profile.html index 850537b..c7912c8 100644 --- a/ruoyi-admin/src/main/resources/templates/system/user/profile/profile.html +++ b/ruoyi-admin/src/main/resources/templates/system/user/profile/profile.html @@ -22,7 +22,7 @@ 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 64f7d0a..52283fe 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 @@ -17,6 +17,6 @@ public class DataResponse { /** * 雷达连接状态 */ - private String status; + private String status = "0" ; }