Commit 1db53c4b by HlQ

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

[feat] 设备离线时间添加时区计算
1 parent 200b981e
...@@ -10,7 +10,6 @@ import vion.dto.monitor.EventDTO; ...@@ -10,7 +10,6 @@ import vion.dto.monitor.EventDTO;
import vion.model.monitor.Event; import vion.model.monitor.Event;
import vion.model.monitor.EventRecord; import vion.model.monitor.EventRecord;
import vion.model.monitor.RAgentEvent; import vion.model.monitor.RAgentEvent;
import vion.service.monitor.IEventRecordService;
import vion.service.monitor.IEventService; import vion.service.monitor.IEventService;
import vion.service.monitor.IRAgentEventService; import vion.service.monitor.IRAgentEventService;
import vion.vo.monitor.EventVO; import vion.vo.monitor.EventVO;
...@@ -27,7 +26,6 @@ public class EventController { ...@@ -27,7 +26,6 @@ public class EventController {
private final IEventService eventService; private final IEventService eventService;
private final IRAgentEventService agentEventService; private final IRAgentEventService agentEventService;
private final IEventRecordService eventRecordService;
@GetMapping @GetMapping
@SaCheckPermission(value = "event:list", orRole = "admin") @SaCheckPermission(value = "event:list", orRole = "admin")
...@@ -94,8 +92,6 @@ public class EventController { ...@@ -94,8 +92,6 @@ public class EventController {
@GetMapping("/rec") @GetMapping("/rec")
@SaCheckPermission(value = "event:rec:list", orRole = "admin") @SaCheckPermission(value = "event:rec:list", orRole = "admin")
public Page<EventRecord> listRec(EventRecord dto) { public Page<EventRecord> listRec(EventRecord dto) {
return eventRecordService.lambdaQuery(dto) return agentEventService.listRec(dto);
.orderByDesc(EventRecord::getCreateTime)
.page(Page.of(dto.getPageNum(), dto.getPageSize()));
} }
} }
...@@ -48,7 +48,7 @@ public class MqttClientMessageListener { ...@@ -48,7 +48,7 @@ public class MqttClientMessageListener {
String agentUid = sendData.getAgentUid(); String agentUid = sendData.getAgentUid();
String type = sendData.getEventType(); String type = sendData.getEventType();
log.info("收到[{}]消息,类型:[{}]", agentUid, type); log.info("收到[{}]消息,类型:[{}]", agentUid, type);
if (CollUtil.isEmpty(sendData.getRecList())) { if (!"REGISTER".equalsIgnoreCase(type) && CollUtil.isEmpty(sendData.getRecList())) {
log.info("[{}]上报的指标记录为空", agentUid); log.info("[{}]上报的指标记录为空", agentUid);
return; return;
} }
......
package vion.service.impl.monitor; package vion.service.impl.monitor;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; 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 com.github.yulichang.base.MPJBaseServiceImpl;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.dromara.hutool.core.collection.CollUtil; 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.lang.Opt;
import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.core.util.ObjUtil; import org.dromara.hutool.core.util.ObjUtil;
...@@ -14,8 +17,10 @@ import org.springframework.stereotype.Service; ...@@ -14,8 +17,10 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import vion.mapper.monitor.MallMapper; import vion.mapper.monitor.MallMapper;
import vion.mapper.monitor.RAgentEventMapper; import vion.mapper.monitor.RAgentEventMapper;
import vion.model.monitor.EventRecord;
import vion.model.monitor.Mall; import vion.model.monitor.Mall;
import vion.model.monitor.RAgentEvent; import vion.model.monitor.RAgentEvent;
import vion.service.monitor.IEventRecordService;
import vion.service.monitor.IRAgentEventService; import vion.service.monitor.IRAgentEventService;
import vion.utils.JsonUtil; import vion.utils.JsonUtil;
import vion.utils.TimeZoneUtil; import vion.utils.TimeZoneUtil;
...@@ -35,6 +40,7 @@ import java.util.stream.Collectors; ...@@ -35,6 +40,7 @@ import java.util.stream.Collectors;
@Slf4j @Slf4j
public class RAgentEventServiceImpl extends MPJBaseServiceImpl<RAgentEventMapper, RAgentEvent> implements IRAgentEventService { public class RAgentEventServiceImpl extends MPJBaseServiceImpl<RAgentEventMapper, RAgentEvent> implements IRAgentEventService {
private final IEventRecordService eventRecordService;
private final MallMapper mallMapper; private final MallMapper mallMapper;
private final MqttClientTemplate client; private final MqttClientTemplate client;
...@@ -175,4 +181,34 @@ public class RAgentEventServiceImpl extends MPJBaseServiceImpl<RAgentEventMapper ...@@ -175,4 +181,34 @@ public class RAgentEventServiceImpl extends MPJBaseServiceImpl<RAgentEventMapper
} }
return "批量绑定成功"; 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; package vion.service.monitor;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.base.MPJBaseService; import com.github.yulichang.base.MPJBaseService;
import vion.model.monitor.EventRecord;
import vion.model.monitor.RAgentEvent; import vion.model.monitor.RAgentEvent;
import java.util.List; import java.util.List;
...@@ -17,4 +19,5 @@ public interface IRAgentEventService extends MPJBaseService<RAgentEvent> { ...@@ -17,4 +19,5 @@ public interface IRAgentEventService extends MPJBaseService<RAgentEvent> {
String bindBatch(String agentUid, RAgentEvent dto); 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!