优化常用单位、交换机心跳上报优化、agent更新列表优化

This commit is contained in:
gaoyutao
2025-11-05 18:04:06 +08:00
parent d0ac03ffbf
commit b0868dfe2d
6 changed files with 64 additions and 17 deletions
@@ -106,6 +106,9 @@ public class UnitChangeUtil {
} }
try { try {
if("NaN".equals(numberStr)){
numberStr = "0";
}
BigDecimal number = new BigDecimal(numberStr); BigDecimal number = new BigDecimal(numberStr);
return number.setScale(1, RoundingMode.HALF_UP).toString(); return number.setScale(1, RoundingMode.HALF_UP).toString();
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
@@ -65,8 +65,8 @@ public class RmAgentManagement extends BaseEntity
private String lastUpdateResult; private String lastUpdateResult;
/** 最后一次更新时间 */ /** 最后一次更新时间 */
@JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "最后一次更新时间", width = 30, dateFormat = "yyyy-MM-dd") @Excel(name = "最后一次更新时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date lastUpdateTime; private Date lastUpdateTime;
/** 生效服务器id */ /** 生效服务器id */
private String includeIds; private String includeIds;
@@ -356,6 +356,17 @@ public class MessageHandler {
if(rows == 2){ if(rows == 2){
// 注册成功,下发优先级为0的策略 // 注册成功,下发优先级为0的策略
rmMonitorPolicyService.issueDefaultPolicyByClientId(message.getClientId()); rmMonitorPolicyService.issueDefaultPolicyByClientId(message.getClientId());
// agent更新表插入数据
// 存储更新结果
// agent更新结果存储
RmAgentManagement query = new RmAgentManagement();
query.setClientId(clientId);
List<RmAgentManagement> agentManagements = rmAgentManagementService.selectRmAgentManagementList(query);
if(agentManagements == null || agentManagements.isEmpty()) {
RmAgentManagement insertAgentUpdateData = new RmAgentManagement();
insertAgentUpdateData.setClientId(clientId);
rmAgentManagementService.insertRmAgentManagement(insertAgentUpdateData);
}
} }
// 时间戳转换 // 时间戳转换
long timestamp = registerMsg.getTimestamp(); long timestamp = registerMsg.getTimestamp();
@@ -1,6 +1,8 @@
package com.ruoyi.rocketmq.service.impl; package com.ruoyi.rocketmq.service.impl;
import com.alibaba.fastjson.JSONObject; 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.enums.MsgEnum;
import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.rocketmq.domain.DeviceMessage; 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.model.ProducerMode;
import com.ruoyi.rocketmq.producer.MessageProducer; import com.ruoyi.rocketmq.producer.MessageProducer;
import com.ruoyi.rocketmq.service.IRmAgentManagementService; 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 lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -39,6 +43,8 @@ public class RmAgentManagementServiceImpl implements IRmAgentManagementService
@Autowired @Autowired
private RmAgentManagementMapper rmAgentManagementMapper; private RmAgentManagementMapper rmAgentManagementMapper;
@Autowired @Autowired
private RemoteRevenueConfigService remoteRevenueConfigService;
@Autowired
private RmNetworkInterfaceMapper rmNetworkInterfaceMapper; private RmNetworkInterfaceMapper rmNetworkInterfaceMapper;
@Value("${fileDictory.filePath}") @Value("${fileDictory.filePath}")
private String filePath; private String filePath;
@@ -57,7 +63,14 @@ public class RmAgentManagementServiceImpl implements IRmAgentManagementService
@Override @Override
public RmAgentManagement selectRmAgentManagementById(Long id) 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<RmAgentManagement> managementList = rmAgentManagementMapper.selectRmAgentManagementList(rmAgentManagement); List<RmAgentManagement> managementList = rmAgentManagementMapper.selectRmAgentManagementList(rmAgentManagement);
for (RmAgentManagement agentManagement : managementList) { for (RmAgentManagement agentManagement : managementList) {
if(agentManagement.getClientId()!=null){ if(agentManagement.getClientId()!=null){
// 设置管理网公网ip // 查询注册表信息赋值
RmNetworkInterface queryParam = new RmNetworkInterface(); setPropties(agentManagement);
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());
} }
} }
return managementList; 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<RmResourceRegistrationRemote> 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管理 * 新增Agent管理
* *
@@ -286,7 +286,7 @@ public class MultiSwitchCollectionScheduler {
// 设置检测时间戳 // 设置检测时间戳
result.setTimestamp(checkTimestamp); result.setTimestamp(checkTimestamp);
if(result != null && result.isSuccess()){ if(result != null && result.isSuccess() && !result.getData().isEmpty()){
// 构建心跳消息 // 构建心跳消息
DeviceMessage message = new DeviceMessage(); DeviceMessage message = new DeviceMessage();
message.setClientId(clientId); message.setClientId(clientId);
@@ -46,6 +46,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
) )
</if> </if>
</where> </where>
order by create_time desc
</select> </select>
<select id="selectRmMonitorPolicyById" parameterType="Long" resultMap="RmMonitorPolicyResult"> <select id="selectRmMonitorPolicyById" parameterType="Long" resultMap="RmMonitorPolicyResult">