diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/UnitChangeUtil.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/UnitChangeUtil.java index 66ee836..1ce7140 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/UnitChangeUtil.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/UnitChangeUtil.java @@ -106,6 +106,9 @@ public class UnitChangeUtil { } try { + if("NaN".equals(numberStr)){ + numberStr = "0"; + } BigDecimal number = new BigDecimal(numberStr); return number.setScale(1, RoundingMode.HALF_UP).toString(); } catch (NumberFormatException e) { diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmAgentManagement.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmAgentManagement.java index 73039c6..d3355c9 100644 --- a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmAgentManagement.java +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/domain/RmAgentManagement.java @@ -65,8 +65,8 @@ public class RmAgentManagement extends BaseEntity private String lastUpdateResult; /** 最后一次更新时间 */ - @JsonFormat(pattern = "yyyy-MM-dd") - @Excel(name = "最后一次更新时间", width = 30, dateFormat = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "最后一次更新时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") private Date lastUpdateTime; /** 生效服务器id */ private String includeIds; diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/handler/MessageHandler.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/handler/MessageHandler.java index 362460b..3a3b861 100644 --- a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/handler/MessageHandler.java +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/handler/MessageHandler.java @@ -356,6 +356,17 @@ public class MessageHandler { if(rows == 2){ // 注册成功,下发优先级为0的策略 rmMonitorPolicyService.issueDefaultPolicyByClientId(message.getClientId()); + // agent更新表插入数据 + // 存储更新结果 + // agent更新结果存储 + RmAgentManagement query = new RmAgentManagement(); + query.setClientId(clientId); + List agentManagements = rmAgentManagementService.selectRmAgentManagementList(query); + if(agentManagements == null || agentManagements.isEmpty()) { + RmAgentManagement insertAgentUpdateData = new RmAgentManagement(); + insertAgentUpdateData.setClientId(clientId); + rmAgentManagementService.insertRmAgentManagement(insertAgentUpdateData); + } } // 时间戳转换 long timestamp = registerMsg.getTimestamp(); diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmAgentManagementServiceImpl.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmAgentManagementServiceImpl.java index 807b05b..e1743b8 100644 --- a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmAgentManagementServiceImpl.java +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/service/impl/RmAgentManagementServiceImpl.java @@ -1,6 +1,8 @@ package com.ruoyi.rocketmq.service.impl; import com.alibaba.fastjson.JSONObject; +import com.ruoyi.common.core.constant.SecurityConstants; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.enums.MsgEnum; import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.rocketmq.domain.DeviceMessage; @@ -15,6 +17,8 @@ import com.ruoyi.rocketmq.mapper.RmNetworkInterfaceMapper; import com.ruoyi.rocketmq.model.ProducerMode; import com.ruoyi.rocketmq.producer.MessageProducer; import com.ruoyi.rocketmq.service.IRmAgentManagementService; +import com.ruoyi.system.api.RemoteRevenueConfigService; +import com.ruoyi.system.api.domain.RmResourceRegistrationRemote; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -39,6 +43,8 @@ public class RmAgentManagementServiceImpl implements IRmAgentManagementService @Autowired private RmAgentManagementMapper rmAgentManagementMapper; @Autowired + private RemoteRevenueConfigService remoteRevenueConfigService; + @Autowired private RmNetworkInterfaceMapper rmNetworkInterfaceMapper; @Value("${fileDictory.filePath}") private String filePath; @@ -57,7 +63,14 @@ public class RmAgentManagementServiceImpl implements IRmAgentManagementService @Override public RmAgentManagement selectRmAgentManagementById(Long id) { - return rmAgentManagementMapper.selectRmAgentManagementById(id); + RmAgentManagement agentManagement = rmAgentManagementMapper.selectRmAgentManagementById(id); + if(agentManagement != null){ + if(agentManagement.getClientId() != null){ + // 赋其他值 + setPropties(agentManagement); + } + } + return agentManagement; } /** @@ -72,24 +85,43 @@ public class RmAgentManagementServiceImpl implements IRmAgentManagementService List managementList = rmAgentManagementMapper.selectRmAgentManagementList(rmAgentManagement); for (RmAgentManagement agentManagement : managementList) { if(agentManagement.getClientId()!=null){ - // 设置管理网公网ip - RmNetworkInterface queryParam = new RmNetworkInterface(); - queryParam.setClientId(agentManagement.getClientId()); - // 使用Optional处理可能的NPE,并筛选bindIp为2或3的接口 - RmNetworkInterface networkInterface = Optional.ofNullable(rmNetworkInterfaceMapper.selectRmNetworkInterfaceList(queryParam)) - .map(list -> list.stream() - .filter(ni -> "2".equals(ni.getBindIp()) || "3".equals(ni.getBindIp())) - .findFirst() - .orElse(null)) - .orElseGet(() -> { - return new RmNetworkInterface(); // 返回空对象避免NPE - }); - agentManagement.setManagePublicIp(networkInterface.getPublicIp()); + // 查询注册表信息赋值 + setPropties(agentManagement); } } return managementList; } + /** + * 根据注册表赋值 + * @param agentManagement + */ + public void setPropties(RmAgentManagement agentManagement){ + String clientId = agentManagement.getClientId(); + // 设置管理网公网ip + RmNetworkInterface queryParam = new RmNetworkInterface(); + queryParam.setClientId(clientId); + // 使用Optional处理可能的NPE,并筛选bindIp为2或3的接口 + RmNetworkInterface networkInterface = Optional.ofNullable(rmNetworkInterfaceMapper.selectRmNetworkInterfaceList(queryParam)) + .map(list -> list.stream() + .filter(ni -> "2".equals(ni.getBindIp()) || "3".equals(ni.getBindIp())) + .findFirst() + .orElse(null)) + .orElseGet(() -> { + return new RmNetworkInterface(); // 返回空对象避免NPE + }); + agentManagement.setManagePublicIp(networkInterface.getPublicIp()); + // 设置其他信息 + RmResourceRegistrationRemote queryRegist = new RmResourceRegistrationRemote(); + queryRegist.setClientId(clientId); + R registMsgR = remoteRevenueConfigService.getListByHardwareSn(queryRegist, SecurityConstants.INNER); + if(registMsgR != null && registMsgR.getData() != null){ + RmResourceRegistrationRemote registMsg = registMsgR.getData(); + agentManagement.setStatus(registMsg.getOnlineStatus()); + agentManagement.setHardwareSn(registMsg.getHardwareSn()); + } + } + /** * 新增Agent管理 * diff --git a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/snmp/scheduler/MultiSwitchCollectionScheduler.java b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/snmp/scheduler/MultiSwitchCollectionScheduler.java index 1fdfdfa..a0ebcf7 100644 --- a/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/snmp/scheduler/MultiSwitchCollectionScheduler.java +++ b/ruoyi-rocketmq/src/main/java/com/ruoyi/rocketmq/snmp/scheduler/MultiSwitchCollectionScheduler.java @@ -286,7 +286,7 @@ public class MultiSwitchCollectionScheduler { // 设置检测时间戳 result.setTimestamp(checkTimestamp); - if(result != null && result.isSuccess()){ + if(result != null && result.isSuccess() && !result.getData().isEmpty()){ // 构建心跳消息 DeviceMessage message = new DeviceMessage(); message.setClientId(clientId); diff --git a/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmMonitorPolicyMapper.xml b/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmMonitorPolicyMapper.xml index a8c3c62..3611164 100644 --- a/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmMonitorPolicyMapper.xml +++ b/ruoyi-rocketmq/src/main/resources/mapper/rocketmq/RmMonitorPolicyMapper.xml @@ -46,6 +46,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ) + order by create_time desc