Commit 8fc8bf8d by HlQ

[add]

1.升级所有依赖版本
2.IP 库更新
3.添加 m_event_record 分表定时删除
4.查询 agent 绑定的异常服务,只查询当天
5.查询指标记录只查询当天最新一条记录
1 parent 55fb8bf2
...@@ -8,23 +8,23 @@ ...@@ -8,23 +8,23 @@
<parent> <parent>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId> <artifactId>spring-boot-starter-parent</artifactId>
<version>3.3.2</version> <version>3.4.0</version>
</parent> </parent>
<artifactId>Vion-DevOps</artifactId> <artifactId>Vion-DevOps</artifactId>
<version>1</version> <version>1</version>
<properties> <properties>
<java.version>21</java.version> <java.version>21</java.version>
<hutool.version>6.0.0-M16</hutool.version> <hutool.version>6.0.0-M18</hutool.version>
<redisson.verion>3.32.0</redisson.verion> <redisson.verion>3.40.0</redisson.verion>
<mapstruct-plus.version>1.4.3</mapstruct-plus.version> <mapstruct-plus.version>1.4.6</mapstruct-plus.version>
<mp.version>3.5.7</mp.version> <mp.version>3.5.9</mp.version>
<mp-join.version>1.5.1</mp-join.version> <mp-join.version>1.5.2</mp-join.version>
<wx-mp.version>4.6.2.B</wx-mp.version> <wx-mp.version>4.6.8.B</wx-mp.version>
<sa-token.verion>1.38.0</sa-token.verion> <sa-token.verion>1.39.0</sa-token.verion>
<myexcel.version>4.5.2</myexcel.version> <myexcel.version>4.5.6</myexcel.version>
<maxmind.version>4.2.0</maxmind.version> <maxmind.version>4.2.1</maxmind.version>
<mica.mqtt.version>2.3.7</mica.mqtt.version> <mica.mqtt.version>2.4.0-M2</mica.mqtt.version>
</properties> </properties>
<dependencies> <dependencies>
...@@ -66,6 +66,11 @@ ...@@ -66,6 +66,11 @@
<version>${mp.version}</version> <version>${mp.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-jsqlparser</artifactId>
<version>${mp.version}</version>
</dependency>
<dependency>
<groupId>com.github.yulichang</groupId> <groupId>com.github.yulichang</groupId>
<artifactId>mybatis-plus-join-boot-starter</artifactId> <artifactId>mybatis-plus-join-boot-starter</artifactId>
<version>${mp-join.version}</version> <version>${mp-join.version}</version>
...@@ -101,7 +106,7 @@ ...@@ -101,7 +106,7 @@
<version>${maxmind.version}</version> <version>${maxmind.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>net.dreamlu</groupId> <groupId>org.dromara.mica-mqtt</groupId>
<artifactId>mica-mqtt-client-spring-boot-starter</artifactId> <artifactId>mica-mqtt-client-spring-boot-starter</artifactId>
<version>${mica.mqtt.version}</version> <version>${mica.mqtt.version}</version>
</dependency> </dependency>
......
package vion.config; package vion.config;
import net.dreamlu.iot.mqtt.spring.client.MqttClientCustomizer; import org.dromara.mica.mqtt.spring.client.MqttClientCustomizer;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
......
...@@ -8,7 +8,7 @@ public class MqttTopic { ...@@ -8,7 +8,7 @@ public class MqttTopic {
//store agent 服务列表监听 //store agent 服务列表监听
public final static String STORE_SERVICE_TOPIC = "/SA/{}/service/push"; public final static String STORE_SERVICE_TOPIC = "/SA/{}/service/push";
//所有 store agent 统一升级 //所有 store agent 统一升级
public final static String STORE_ALL_OTA_TOPIC = "/SA/all/ota"; public final static String STORE_ALL_OTA_TOPIC = "/SA/ota";
//mall agent 事件监听 //mall agent 事件监听
public final static String MALL_EVENT_TOPIC = "/MA/{}/event/push"; public final static String MALL_EVENT_TOPIC = "/MA/{}/event/push";
//mall agent 升级监听 //mall agent 升级监听
...@@ -16,5 +16,5 @@ public class MqttTopic { ...@@ -16,5 +16,5 @@ public class MqttTopic {
//mall agent 服务列表监听 //mall agent 服务列表监听
public final static String MALL_SERVICE_TOPIC = "/MA/{}/service/push"; public final static String MALL_SERVICE_TOPIC = "/MA/{}/service/push";
//所有 mall agent 统一升级 //所有 mall agent 统一升级
public final static String MALL_ALL_OTA_TOPIC = "/MA/all/ota"; public final static String MALL_ALL_OTA_TOPIC = "/MA/ota";
} }
package vion.cron.monitor;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.hutool.core.date.TimeUtil;
import org.postgresql.util.PGobject;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* m_event_record 定时删除分表
*/
@Component
@RequiredArgsConstructor
@Slf4j
public class SubTableRunner {
private final JdbcTemplate jdbcTemplate;
@Scheduled(cron = "50 0 0 * * ?")
public void deleteEventRecord() {
log.info("删除m_event_record分表");
var partList = jdbcTemplate.queryForList("select * FROM pathman_partition_list");
List<String> tableNames = new ArrayList<>();
for (Map<String, Object> map : partList) {
var startTime = TimeUtil.parseByISO((String) map.get("range_min"));
if (startTime.isBefore(LocalDateTime.of(LocalDate.now(), LocalTime.MIN).minusDays(30))) {
var o = (PGobject) map.get("partition");
tableNames.add(o.getValue());
}
}
for (String tableName : tableNames) {
jdbcTemplate.execute("drop table " + tableName);
}
log.info("删除m_event_record分表完成");
}
}
...@@ -3,13 +3,13 @@ package vion.event.mqtt; ...@@ -3,13 +3,13 @@ package vion.event.mqtt;
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.JsonNode;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.dreamlu.iot.mqtt.codec.MqttQoS;
import net.dreamlu.iot.mqtt.spring.client.MqttClientSubscribe;
import net.dreamlu.iot.mqtt.spring.client.MqttClientTemplate;
import org.dromara.hutool.core.collection.CollUtil; import org.dromara.hutool.core.collection.CollUtil;
import org.dromara.hutool.core.collection.ListUtil; import org.dromara.hutool.core.collection.ListUtil;
import org.dromara.hutool.core.text.StrUtil; import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.core.thread.ThreadUtil; import org.dromara.hutool.core.thread.ThreadUtil;
import org.dromara.mica.mqtt.codec.MqttQoS;
import org.dromara.mica.mqtt.spring.client.MqttClientSubscribe;
import org.dromara.mica.mqtt.spring.client.MqttClientTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import vion.constant.MqttMessageType; import vion.constant.MqttMessageType;
import vion.model.monitor.RAgentEvent; import vion.model.monitor.RAgentEvent;
......
...@@ -75,14 +75,14 @@ import java.util.List; ...@@ -75,14 +75,14 @@ import java.util.List;
/** /**
* 事件建立者 * 事件建立者
*/ */
@TableField(value = "create_by") @TableField(value = "create_by", fill = FieldFill.INSERT)
private String createBy; private String createBy;
/** /**
* 事件更新者 * 事件更新者
*/ */
@TableField(value = "udpate_by") @TableField(value = "update_by", fill = FieldFill.INSERT_UPDATE)
private String udpateBy; private String updateBy;
@TableField(value = "create_time", fill = FieldFill.INSERT) @TableField(value = "create_time", fill = FieldFill.INSERT)
private LocalDateTime createTime; private LocalDateTime createTime;
...@@ -92,4 +92,7 @@ import java.util.List; ...@@ -92,4 +92,7 @@ import java.util.List;
@TableField(exist = false) @TableField(exist = false)
private List<String> mallUidList; private List<String> mallUidList;
@TableField(exist = false)
private String description;
} }
\ No newline at end of file \ No newline at end of file
...@@ -9,8 +9,6 @@ import com.github.yulichang.wrapper.MPJLambdaWrapper; ...@@ -9,8 +9,6 @@ import com.github.yulichang.wrapper.MPJLambdaWrapper;
import io.github.linpeilie.Converter; import io.github.linpeilie.Converter;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.dreamlu.iot.mqtt.codec.MqttQoS;
import net.dreamlu.iot.mqtt.spring.client.MqttClientTemplate;
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.date.TimeUtil;
import org.dromara.hutool.core.lang.Opt; import org.dromara.hutool.core.lang.Opt;
...@@ -18,6 +16,8 @@ import org.dromara.hutool.core.text.StrUtil; ...@@ -18,6 +16,8 @@ import org.dromara.hutool.core.text.StrUtil;
import org.dromara.hutool.core.text.split.SplitUtil; import org.dromara.hutool.core.text.split.SplitUtil;
import org.dromara.hutool.core.util.ObjUtil; import org.dromara.hutool.core.util.ObjUtil;
import org.dromara.hutool.core.util.RandomUtil; import org.dromara.hutool.core.util.RandomUtil;
import org.dromara.mica.mqtt.codec.MqttQoS;
import org.dromara.mica.mqtt.spring.client.MqttClientTemplate;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
...@@ -34,7 +34,9 @@ import vion.utils.TopicUtil; ...@@ -34,7 +34,9 @@ import vion.utils.TopicUtil;
import vion.utils.ip.IPUtil; import vion.utils.ip.IPUtil;
import vion.vo.monitor.AgentVO; import vion.vo.monitor.AgentVO;
import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -88,6 +90,8 @@ public class AgentServiceImpl extends MPJBaseServiceImpl<AgentMapper, Agent> imp ...@@ -88,6 +90,8 @@ public class AgentServiceImpl extends MPJBaseServiceImpl<AgentMapper, Agent> imp
.selectAs("si", ServiceInfo::getName, ServiceRecord::getName) .selectAs("si", ServiceInfo::getName, ServiceRecord::getName)
.leftJoin(ServiceInfo.class, "si", ServiceInfo::getUid, "t", ServiceRecord::getServiceUid) .leftJoin(ServiceInfo.class, "si", ServiceInfo::getUid, "t", ServiceRecord::getServiceUid)
.in(ServiceRecord::getAgentUid, agentUidList) .in(ServiceRecord::getAgentUid, agentUidList)
.between(ServiceRecord::getMonitorTime, LocalDateTime.of(LocalDate.now(), LocalTime.MIN),
LocalDateTime.of(LocalDate.now(), LocalTime.MAX))
.orderByDesc(ServiceRecord::getAgentUid, ServiceRecord::getServiceUid, ServiceRecord::getMonitorTime); .orderByDesc(ServiceRecord::getAgentUid, ServiceRecord::getServiceUid, ServiceRecord::getMonitorTime);
var serviceRecordList = serviceRecordService.selectJoinList(ServiceRecord.class, serviceRecordWrapper); var serviceRecordList = serviceRecordService.selectJoinList(ServiceRecord.class, serviceRecordWrapper);
......
...@@ -7,13 +7,13 @@ import com.github.yulichang.wrapper.MPJLambdaWrapper; ...@@ -7,13 +7,13 @@ import com.github.yulichang.wrapper.MPJLambdaWrapper;
import io.github.linpeilie.Converter; import io.github.linpeilie.Converter;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.dreamlu.iot.mqtt.codec.MqttQoS;
import net.dreamlu.iot.mqtt.spring.client.MqttClientTemplate;
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.date.TimeUtil;
import org.dromara.hutool.core.lang.Assert; import org.dromara.hutool.core.lang.Assert;
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.mica.mqtt.codec.MqttQoS;
import org.dromara.mica.mqtt.spring.client.MqttClientTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import vion.dto.monitor.MallDTO; import vion.dto.monitor.MallDTO;
...@@ -26,6 +26,8 @@ import vion.utils.TopicUtil; ...@@ -26,6 +26,8 @@ import vion.utils.TopicUtil;
import vion.vo.monitor.MallVO; import vion.vo.monitor.MallVO;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.Comparator; import java.util.Comparator;
import java.util.List; import java.util.List;
import java.util.function.Function; import java.util.function.Function;
...@@ -94,7 +96,7 @@ public class MallServiceImpl extends MPJBaseServiceImpl<MallMapper, Mall> implem ...@@ -94,7 +96,7 @@ public class MallServiceImpl extends MPJBaseServiceImpl<MallMapper, Mall> implem
.leftJoin(MAccount.class, MAccount::getUid, Mall::getAccountUid) .leftJoin(MAccount.class, MAccount::getUid, Mall::getAccountUid)
.leftJoin(Agent.class, Agent::getUid, Mall::getAgentUid) .leftJoin(Agent.class, Agent::getUid, Mall::getAgentUid)
.eq(Mall::getAttention, 1) .eq(Mall::getAttention, 1)
.orderByDesc(Mall::getUid, Mall::getUpdateTime); .orderByDesc(Mall::getAccountUid, Mall::getName);
var mallVOPage = this.selectJoinListPage(Page.of(dto.getPageNum(), dto.getPageSize()), MallVO.class, wrapper); var mallVOPage = this.selectJoinListPage(Page.of(dto.getPageNum(), dto.getPageSize()), MallVO.class, wrapper);
Opt.ofEmptyAble(mallVOPage.getRecords()) Opt.ofEmptyAble(mallVOPage.getRecords())
.ifPresent(r -> { .ifPresent(r -> {
...@@ -103,7 +105,7 @@ public class MallServiceImpl extends MPJBaseServiceImpl<MallMapper, Mall> implem ...@@ -103,7 +105,7 @@ public class MallServiceImpl extends MPJBaseServiceImpl<MallMapper, Mall> implem
var eventRecWrapper = Wrappers.<EventRecord>query() var eventRecWrapper = Wrappers.<EventRecord>query()
.select("DISTINCT on (mall_uid,event_type) *") .select("DISTINCT on (mall_uid,event_type) *")
.in("mall_uid", mallUidList) .in("mall_uid", mallUidList)
.in(CollUtil.isNotEmpty(dto.getEventUidList()), "event_uid", dto.getEventUidList()) .ge("create_time", LocalDateTime.of(LocalDate.now(), LocalTime.MIN))
.orderByDesc("mall_uid", "event_type", "create_time"); .orderByDesc("mall_uid", "event_type", "create_time");
var eventRecordList = eventRecordService.list(eventRecWrapper); var eventRecordList = eventRecordService.list(eventRecWrapper);
var mallUid2RecMap = eventRecordList.stream().collect(Collectors.groupingBy(EventRecord::getMallUid)); var mallUid2RecMap = eventRecordList.stream().collect(Collectors.groupingBy(EventRecord::getMallUid));
...@@ -127,7 +129,7 @@ public class MallServiceImpl extends MPJBaseServiceImpl<MallMapper, Mall> implem ...@@ -127,7 +129,7 @@ public class MallServiceImpl extends MPJBaseServiceImpl<MallMapper, Mall> implem
.leftJoin(Agent.class, Agent::getUid, RAgentEvent::getAgentUid) .leftJoin(Agent.class, Agent::getUid, RAgentEvent::getAgentUid)
.in(RAgentEvent::getEventUid, dto.getEventUidList()) .in(RAgentEvent::getEventUid, dto.getEventUidList())
.eq(Agent::getType, dto.getAgentType()) .eq(Agent::getType, dto.getAgentType())
.orderByDesc(RAgentEvent::getCreateTime); .orderByDesc(RAgentEvent::getAccountUid, RAgentEvent::getMallUid);
var agentEventList = agentEventService.selectJoinList(RAgentEvent.class, agentEventWrapper); var agentEventList = agentEventService.selectJoinList(RAgentEvent.class, agentEventWrapper);
if (CollUtil.isEmpty(agentEventList)) { if (CollUtil.isEmpty(agentEventList)) {
return new Page<>(); return new Page<>();
...@@ -150,7 +152,7 @@ public class MallServiceImpl extends MPJBaseServiceImpl<MallMapper, Mall> implem ...@@ -150,7 +152,7 @@ public class MallServiceImpl extends MPJBaseServiceImpl<MallMapper, Mall> implem
var eventRecWrapper = Wrappers.<EventRecord>query() var eventRecWrapper = Wrappers.<EventRecord>query()
.select("DISTINCT on (mall_uid,event_type) *") .select("DISTINCT on (mall_uid,event_type) *")
.in("mall_uid", tmpMallUidList) .in("mall_uid", tmpMallUidList)
.ge("create_time", TimeUtil.beginOfDay(LocalDate.now().minusDays(3))) .ge("create_time", LocalDateTime.of(LocalDate.now(), LocalTime.MIN))
.orderByDesc("mall_uid", "event_type", "create_time"); .orderByDesc("mall_uid", "event_type", "create_time");
var eventRecordList = eventRecordService.list(eventRecWrapper); var eventRecordList = eventRecordService.list(eventRecWrapper);
var mallUid2RecMap = eventRecordList.stream().collect(Collectors.groupingBy(EventRecord::getMallUid)); var mallUid2RecMap = eventRecordList.stream().collect(Collectors.groupingBy(EventRecord::getMallUid));
...@@ -158,7 +160,11 @@ public class MallServiceImpl extends MPJBaseServiceImpl<MallMapper, Mall> implem ...@@ -158,7 +160,11 @@ public class MallServiceImpl extends MPJBaseServiceImpl<MallMapper, Mall> implem
var remarkList = mallRemarkService.lambdaQuery().in(RMallRemark::getMallUid, mallUidList).list(); var remarkList = mallRemarkService.lambdaQuery().in(RMallRemark::getMallUid, mallUidList).list();
var mallUid2RemarkMap = remarkList.stream().sorted(Comparator.comparing(RMallRemark::getRemarkDate).reversed().thenComparing(Comparator.comparing(RMallRemark::getCreateTime).reversed())).collect(Collectors.toMap(RMallRemark::getMallUid, Function.identity(), (r1, r2) -> r1)); var mallUid2RemarkMap = remarkList.stream().sorted(Comparator.comparing(RMallRemark::getRemarkDate).reversed().thenComparing(Comparator.comparing(RMallRemark::getCreateTime).reversed())).collect(Collectors.toMap(RMallRemark::getMallUid, Function.identity(), (r1, r2) -> r1));
var tmpAgentEventList = agentEventService.lambdaQuery().in(RAgentEvent::getMallUid, mallUidList).list(); var tmpWrapper = new MPJLambdaWrapper<RAgentEvent>()
.selectAs(Event::getDescription, RAgentEvent::getDescription)
.leftJoin(Event.class, Event::getUid, RAgentEvent::getEventUid)
.in(RAgentEvent::getMallUid, mallUidList);
var tmpAgentEventList = agentEventService.selectJoinList(RAgentEvent.class, tmpWrapper);
var mallUid2AgentEventMap = tmpAgentEventList.stream().collect(Collectors.groupingBy(RAgentEvent::getMallUid)); var mallUid2AgentEventMap = tmpAgentEventList.stream().collect(Collectors.groupingBy(RAgentEvent::getMallUid));
r.forEach(tmp -> { r.forEach(tmp -> {
...@@ -175,7 +181,7 @@ public class MallServiceImpl extends MPJBaseServiceImpl<MallMapper, Mall> implem ...@@ -175,7 +181,7 @@ public class MallServiceImpl extends MPJBaseServiceImpl<MallMapper, Mall> implem
public Page<MallVO> listErrorAttention(MallDTO dto) { public Page<MallVO> listErrorAttention(MallDTO dto) {
var eventRecWrapper = Wrappers.<EventRecord>query() var eventRecWrapper = Wrappers.<EventRecord>query()
.select("DISTINCT on (mall_uid,event_type) *") .select("DISTINCT on (mall_uid,event_type) *")
.gt("create_time", TimeUtil.beginOfDay(LocalDate.now().minusDays(3))) .ge("create_time", LocalDateTime.of(LocalDate.now(), LocalTime.MIN))
.eq("agent_type", dto.getAgentType()) .eq("agent_type", dto.getAgentType())
.eq("status", 0) .eq("status", 0)
.in(CollUtil.isNotEmpty(dto.getEventUidList()), "event_uid", dto.getEventUidList()) .in(CollUtil.isNotEmpty(dto.getEventUidList()), "event_uid", dto.getEventUidList())
......
...@@ -4,11 +4,11 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; ...@@ -4,11 +4,11 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
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 net.dreamlu.iot.mqtt.codec.MqttQoS;
import net.dreamlu.iot.mqtt.spring.client.MqttClientTemplate;
import org.dromara.hutool.core.collection.CollUtil; import org.dromara.hutool.core.collection.CollUtil;
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;
import org.dromara.mica.mqtt.codec.MqttQoS;
import org.dromara.mica.mqtt.spring.client.MqttClientTemplate;
import org.springframework.stereotype.Service; 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;
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!