Commit 1db53c4b by HlQ

[fix] 修复 Agent 上报注册消息时,指标不下发的问题

[feat] 设备离线时间添加时区计算
1 parent 200b981e
......@@ -10,7 +10,6 @@ import vion.dto.monitor.EventDTO;
import vion.model.monitor.Event;
import vion.model.monitor.EventRecord;
import vion.model.monitor.RAgentEvent;
import vion.service.monitor.IEventRecordService;
import vion.service.monitor.IEventService;
import vion.service.monitor.IRAgentEventService;
import vion.vo.monitor.EventVO;
......@@ -27,7 +26,6 @@ public class EventController {
private final IEventService eventService;
private final IRAgentEventService agentEventService;
private final IEventRecordService eventRecordService;
@GetMapping
@SaCheckPermission(value = "event:list", orRole = "admin")
......@@ -94,8 +92,6 @@ public class EventController {
@GetMapping("/rec")
@SaCheckPermission(value = "event:rec:list", orRole = "admin")
public Page<EventRecord> listRec(EventRecord dto) {
return eventRecordService.lambdaQuery(dto)
.orderByDesc(EventRecord::getCreateTime)
.page(Page.of(dto.getPageNum(), dto.getPageSize()));
return agentEventService.listRec(dto);
}
}
......@@ -48,7 +48,7 @@ public class MqttClientMessageListener {
String agentUid = sendData.getAgentUid();
String type = sendData.getEventType();
log.info("收到[{}]消息,类型:[{}]", agentUid, type);
if (CollUtil.isEmpty(sendData.getRecList())) {
if (!"REGISTER".equalsIgnoreCase(type) && CollUtil.isEmpty(sendData.getRecList())) {
log.info("[{}]上报的指标记录为空", agentUid);
return;
}
......
package vion.service.impl.monitor;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.github.yulichang.base.MPJBaseServiceImpl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.hutool.core.collection.CollUtil;
import org.dromara.hutool.core.date.TimeUtil;
import org.dromara.hutool.core.lang.Opt;
import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.core.util.ObjUtil;
......@@ -14,8 +17,10 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import vion.mapper.monitor.MallMapper;
import vion.mapper.monitor.RAgentEventMapper;
import vion.model.monitor.EventRecord;
import vion.model.monitor.Mall;
import vion.model.monitor.RAgentEvent;
import vion.service.monitor.IEventRecordService;
import vion.service.monitor.IRAgentEventService;
import vion.utils.JsonUtil;
import vion.utils.TimeZoneUtil;
......@@ -35,6 +40,7 @@ import java.util.stream.Collectors;
@Slf4j
public class RAgentEventServiceImpl extends MPJBaseServiceImpl<RAgentEventMapper, RAgentEvent> implements IRAgentEventService {
private final IEventRecordService eventRecordService;
private final MallMapper mallMapper;
private final MqttClientTemplate client;
......@@ -175,4 +181,34 @@ public class RAgentEventServiceImpl extends MPJBaseServiceImpl<RAgentEventMapper
}
return "批量绑定成功";
}
@Override
public Page<EventRecord> listRec(EventRecord dto) {
var page = eventRecordService.lambdaQuery(dto)
.orderByDesc(EventRecord::getCreateTime)
.page(Page.of(dto.getPageNum(), dto.getPageSize()));
// 设备离线时区处理设备离线时间
if ("BqCXCrwKgnvR12dvIaJ_".equals(dto.getEventUid())) {
var mall = mallMapper.selectOne(Wrappers.<Mall>lambdaQuery().eq(Mall::getUid, dto.getMallUid()));
if (StrUtil.isNotBlank(mall.getTimeZone())) {
page.getRecords().forEach(er -> {
if (ObjUtil.isNotNull(er.getData())) {
var offsetMinute = TimeZoneUtil.getOffsetMinute(mall.getTimeZone());
var res = JsonUtil.createArr();
for (var jsonNode : JsonUtil.parseTree(JsonUtil.toJsonString(er.getData()))) {
var offlineTime = jsonNode.get("offlineTime").asText();
var offsetOfflineTime = TimeUtil.parse(offlineTime, "yyyy-MM-dd HH:mm:ss")
.minusMinutes(offsetMinute);
((ObjectNode) jsonNode).put("offsetOfflineTime", TimeUtil.formatNormal(offsetOfflineTime))
.put("timeZone", mall.getTimeZone());
res.addPOJO(jsonNode);
}
er.setData(res);
}
});
}
}
return page;
}
}
package vion.service.monitor;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.base.MPJBaseService;
import vion.model.monitor.EventRecord;
import vion.model.monitor.RAgentEvent;
import java.util.List;
......@@ -17,4 +19,5 @@ public interface IRAgentEventService extends MPJBaseService<RAgentEvent> {
String bindBatch(String agentUid, RAgentEvent dto);
Page<EventRecord> listRec(EventRecord dto);
}
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!