Browse Source

perf:优化近三天报警趋势
perf:优化预警日志
perf:优化获取报警类型

黄渊昊 4 months ago
parent
commit
61589d3ec0

+ 24 - 4
snowy-plugin/snowy-plugin-coldchain/pom.xml

@@ -78,9 +78,29 @@
             <artifactId>weixin-java-mp</artifactId>
             <version>4.6.0</version>
         </dependency>
-      <dependency>
-        <groupId>vip.xiaonuo</groupId>
-        <artifactId>snowy-plugin-dev</artifactId>
-      </dependency>
+        <dependency>
+            <groupId>vip.xiaonuo</groupId>
+            <artifactId>snowy-plugin-dev</artifactId>
+        </dependency>
+
+        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-integration -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-integration</artifactId>
+            <version>2.5.1</version>
+        </dependency>
+
+        <!-- https://mvnrepository.com/artifact/org.springframework.integration/spring-integration-stream -->
+        <dependency>
+            <groupId>org.springframework.integration</groupId>
+            <artifactId>spring-integration-stream</artifactId>
+            <version>5.5.5</version>
+        </dependency>
+        <!-- https://mvnrepository.com/artifact/org.springframework.integration/spring-integration-mqtt -->
+        <dependency>
+            <groupId>org.springframework.integration</groupId>
+            <artifactId>spring-integration-mqtt</artifactId>
+            <version>5.5.5</version>
+        </dependency>
     </dependencies>
 </project>

+ 40 - 7
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/core/alarm/service/SensorAlarmServiceImpl.java

@@ -2,6 +2,7 @@ package vip.xiaonuo.coldchain.core.alarm.service;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.date.StopWatch;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -24,10 +25,14 @@ import vip.xiaonuo.coldchain.modular.monitorsearchhistory.dto.TopWarningDto;
 import vip.xiaonuo.common.enums.CommonDeleteFlagEnum;
 import vip.xiaonuo.common.page.CommonPageRequest;
 
-import java.util.List;
-import java.util.Objects;
+import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.util.*;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
+import static jakarta.xml.bind.DatatypeConverter.parseTime;
+
 /**
  * @author jackzhou
  * @version 1.0
@@ -101,6 +106,13 @@ public class SensorAlarmServiceImpl extends ServiceImpl<SensorAlarmMapper, Senso
         LambdaQueryWrapper<SensorAlarm> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(SensorAlarm::getCreateOrg, loginUser.getOrgId())
                 .eq(SensorAlarm::getDeleteFlag, CommonDeleteFlagEnum.NOT_DELETE);
+
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(new Date());
+        calendar.add(Calendar.MONTH, -2);
+        queryWrapper.ge(SensorAlarm::getCreateTime,sdf.format(calendar.getTime()));
+
         if (type.equals("system")) {
             queryWrapper.and(q -> q.eq(SensorAlarm::getType, SensorAlarmType.SENSOR_OFF_LINE.getDeviceCode())
                     .or().eq(SensorAlarm::getType, SensorAlarmType.SENSOR_ON_LINE.getDeviceCode()));
@@ -119,20 +131,39 @@ public class SensorAlarmServiceImpl extends ServiceImpl<SensorAlarmMapper, Senso
     }
 
     public Page<SensorAlarm> getSensorAlarmPage(MessagePageParam messagePageParam) {
+
+        StopWatch stopWatch = new StopWatch();
+        stopWatch.start("page查询");
         // 创建查询条件
         QueryWrapper<SensorAlarm> queryWrapper = new QueryWrapper<SensorAlarm>().checkSqlInjection();
         // 获取当前登录用户ID
         String orgId = StpLoginUserUtil.getLoginUser().getOrgId();
         // 查询创建用户为当前用户的记录
         queryWrapper.lambda().eq(SensorAlarm::getCreateOrg, orgId);
-        final String type = messagePageParam.getType();
-        if(StrUtil.isNotBlank(type) && type.trim().equalsIgnoreCase("system")){
+
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(new Date());
+        calendar.add(Calendar.MONTH, -2);
+        queryWrapper.lambda().ge(SensorAlarm::getCreateTime,sdf.format(calendar.getTime()));
+
+        String type;
+        if (StrUtil.isNotBlank(messagePageParam.getType())) {
+            type = messagePageParam.getType();
+        } else {
+            type = "alert";
+        }
+        List<String> typeCodes = type.equalsIgnoreCase("system")
+                ? Arrays.asList(SensorAlarmType.SENSOR_OFF_LINE.getDeviceCode(), SensorAlarmType.SENSOR_ON_LINE.getDeviceCode())
+                : Arrays.asList(SensorAlarmType.DATA_ALARM.getDeviceCode(), SensorAlarmType.DATA_RESTORE_ALARM.getDeviceCode());
+        queryWrapper.lambda().in(SensorAlarm::getType, typeCodes);
+/*        if(StrUtil.isNotBlank(type) && type.trim().equalsIgnoreCase("system")){
             queryWrapper.lambda().and(q -> q.eq(SensorAlarm::getType, SensorAlarmType.SENSOR_OFF_LINE.getDeviceCode())
                     .or().eq(SensorAlarm::getType, SensorAlarmType.SENSOR_ON_LINE.getDeviceCode()));
         }else{
             queryWrapper.lambda().and(q -> q.eq(SensorAlarm::getType, SensorAlarmType.DATA_ALARM.getDeviceCode())
                     .or().eq(SensorAlarm::getType, SensorAlarmType.DATA_RESTORE_ALARM.getDeviceCode()));
-        }
+        }*/
         if(StrUtil.isNotBlank(messagePageParam.getSensorCode())){
             queryWrapper.lambda().eq(SensorAlarm::getSensorCode, messagePageParam.getSensorCode());
         }
@@ -147,7 +178,7 @@ public class SensorAlarmServiceImpl extends ServiceImpl<SensorAlarmMapper, Senso
         if (StrUtil.isNotBlank(messagePageParam.getStartTime())) {
             queryWrapper.lambda().ge(SensorAlarm::getCreateTime, DateUtil.parse(messagePageParam.getStartTime(), "yyyy-MM-dd HH:mm:ss"));  // greater than or equal to start time
         }
-        if (StrUtil.isNotBlank(messagePageParam.getStartTime())) {
+        if (StrUtil.isNotBlank(messagePageParam.getEndTime())) {
             queryWrapper.lambda().le(SensorAlarm::getCreateTime, DateUtil.parse(messagePageParam.getEndTime(), "yyyy-MM-dd HH:mm:ss"));  // greater than or equal to start time
         }
         if (StrUtil.isNotBlank(messagePageParam.getAlarmType())) {
@@ -156,7 +187,9 @@ public class SensorAlarmServiceImpl extends ServiceImpl<SensorAlarmMapper, Senso
         // 按创建时间降序排序
         queryWrapper.lambda().orderByDesc(SensorAlarm::getCreateTime);
         // 执行查询,传入分页对象
-        Page<SensorAlarm> sensorAlarmPage = this.page(CommonPageRequest.defaultPage(), queryWrapper);
+        Page<SensorAlarm> sensorAlarmPage = this.page(CommonPageRequest.defaultPage(), queryWrapper).setOptimizeCountSql(false);
+        stopWatch.stop();
+        log.info(stopWatch.prettyPrint(TimeUnit.MILLISECONDS));
         return sensorAlarmPage;
     }
 

+ 1 - 4
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitornotice/mapper/MonitorNoticeMapper.java

@@ -26,8 +26,5 @@ import java.util.Set;
  * @date  2024/11/25 10:58
  **/
 public interface MonitorNoticeMapper extends BaseMapper<MonitorNotice> {
-    Integer getDayBeforeYesterday(String day, String startTime, String endTime,String orgId);
-    Integer getYesterday(String day, String startTime, String endTime,String orgId);
-    Integer getToDay(String day, String startTime, String endTime,String orgId);
-
+    Integer getCountByDate(String day, String startTime, String endTime,String orgId);
 }

+ 3 - 24
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitornotice/mapper/mapping/MonitorNoticeMapper.xml

@@ -1,32 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="vip.xiaonuo.coldchain.modular.monitornotice.mapper.MonitorNoticeMapper">
-    <select id="getDayBeforeYesterday" resultType="Integer">
+    <select id="getCountByDate" resultType="Integer">
         SELECT COUNT(*)
         FROM sensor_alarm
-        WHERE CREATE_TIME like #{day}
-          AND (
-            DATE_FORMAT(CREATE_TIME, '%H:%i:%S') between #{startTime} and #{endTime}
-            )
-          AND DELETE_FLAG = 'NOT_DELETE'
-          AND CREATE_ORG = #{orgId}
-    </select>
-
-    <select id="getYesterday" resultType="Integer">
-        SELECT COUNT(*)
-        FROM sensor_alarm
-        WHERE DATEDIFF(CREATE_TIME, Now()) = -1
-          AND (
-            DATE_FORMAT(CREATE_TIME, '%H:%i:%S') between #{startTime} and #{endTime}
-            )
-          AND DELETE_FLAG = 'NOT_DELETE'
-          AND CREATE_ORG = #{orgId}
-    </select>
-
-    <select id="getToDay" resultType="Integer">
-        SELECT COUNT(*)
-        FROM sensor_alarm
-        where to_days(CREATE_TIME) = to_days(now())
+        WHERE CREATE_TIME > '${day} 00:00:00'
+          AND CREATE_TIME like #{day}
           AND (
             DATE_FORMAT(CREATE_TIME, '%H:%i:%S') between #{startTime} and #{endTime}
             )

+ 3 - 3
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitornotice/service/impl/MonitorNoticeServiceImpl.java

@@ -74,7 +74,7 @@ public class MonitorNoticeServiceImpl extends ServiceImpl<MonitorNoticeMapper, M
             timeFlag = timeFlag + STP - 1;
             String endTimeStr = getEndTimeStr(timeFlag);
             timePeriodList.add(startTimeStr + "-" + endTimeStr);
-            Integer toDay = monitorNoticeMapper.getToDay(day, startTimeStr, endTimeStr, orgId);
+            Integer toDay = monitorNoticeMapper.getCountByDate(day + "%", startTimeStr, endTimeStr, orgId);
             countList.add(toDay);
         }
         CountWithTime countWithTime = new CountWithTime();
@@ -98,7 +98,7 @@ public class MonitorNoticeServiceImpl extends ServiceImpl<MonitorNoticeMapper, M
             timeFlag = timeFlag + STP;
             String endTimeStr = getEndTimeStr(timeFlag);
             timePeriodList.add(startTimeStr + "-" + endTimeStr);
-            Integer yesterday = monitorNoticeMapper.getYesterday(day, startTimeStr, endTimeStr, orgId);
+            Integer yesterday = monitorNoticeMapper.getCountByDate(day + "%", startTimeStr, endTimeStr, orgId);
             countList.add(yesterday);
         }
         CountWithTime countWithTime = new CountWithTime();
@@ -122,7 +122,7 @@ public class MonitorNoticeServiceImpl extends ServiceImpl<MonitorNoticeMapper, M
             timeFlag = timeFlag + STP;
             String endTimeStr = getEndTimeStr(timeFlag);
             timePeriodList.add(startTimeStr + "-" + endTimeStr);
-            Integer dayBeforeYesterday = monitorNoticeMapper.getDayBeforeYesterday(day, startTimeStr, endTimeStr, orgId);
+            Integer dayBeforeYesterday = monitorNoticeMapper.getCountByDate(day + "%", startTimeStr, endTimeStr, orgId);
             countList.add(dayBeforeYesterday);
         }
         CountWithTime countWithTime = new CountWithTime();