优化常用单位、交换机心跳上报优化、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

View File

@@ -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) {

View File

@@ -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;

View File

@@ -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<RmAgentManagement> agentManagements = rmAgentManagementService.selectRmAgentManagementList(query);
if(agentManagements == null || agentManagements.isEmpty()) {
RmAgentManagement insertAgentUpdateData = new RmAgentManagement();
insertAgentUpdateData.setClientId(clientId);
rmAgentManagementService.insertRmAgentManagement(insertAgentUpdateData);
}
}
// 时间戳转换
long timestamp = registerMsg.getTimestamp();

View File

@@ -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<RmAgentManagement> 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<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管理
*

View File

@@ -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);

View File

@@ -46,6 +46,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
)
</if>
</where>
order by create_time desc
</select>
<select id="selectRmMonitorPolicyById" parameterType="Long" resultMap="RmMonitorPolicyResult">