Parcourir la source

feat(增加单台设备统计告警数量函数): 增加单台设备统计告警数量函数

增加单台设备统计告警数量函数
zjian il y a 1 jour
Parent
commit
5e53f35101

+ 16 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/core/alarm/mapper/SensorAlarmMapper.java

@@ -61,4 +61,20 @@ public interface SensorAlarmMapper extends BaseMapper<SensorAlarm> {
                      @Param("startTime") Date startTime,
                      @Param("endTime") Date endTime,
                      @Param("keyword") String keyword);
+
+    /**
+     * 统计单台设别与路数告警数量
+     *
+     * @param orgId       组织ID
+     * @param sensorCode  传感器代码
+     * @param sensorRoute 传感器路线
+     * @param types       类型
+     * @param time        时间
+     * @return {@link Long }
+     */
+    Long countWarning(@Param("orgId") String orgId,
+                            @Param("sensorCode") String sensorCode,
+                            @Param("sensorRoute") Integer sensorRoute,
+                            @Param("types") List<String> types,
+                            @Param("time") Date time);
 }

+ 16 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/core/alarm/mapper/mapping/SensorAlarmMapper.xml

@@ -100,4 +100,20 @@
             OR message LIKE CONCAT('%', #{keyword}, '%'))
         </if>
     </select>
+
+
+    <select id="countWarning" resultType="Long">
+        SELECT
+        COUNT(*)
+        FROM
+        sensor_alarm force index (top10)
+        WHERE
+        create_time > #{time}
+        AND type IN
+        <foreach collection="types" item="type" open="(" separator="," close=")">
+            #{type}
+        </foreach>
+        and sensor_code=#{sensorCode} and sensor_route=#{sensorRoute}
+        AND CREATE_ORG = #{orgId}
+    </select>
 </mapper>

+ 6 - 3
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/app/service/AppDeviceService.java

@@ -37,11 +37,13 @@ import jakarta.annotation.Resource;
 import jakarta.servlet.http.HttpServletResponse;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.time.DateUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 import vip.xiaonuo.auth.core.util.StpLoginUserUtil;
 import vip.xiaonuo.coldchain.core.alarm.bean.SensorAlarm;
 import vip.xiaonuo.coldchain.core.alarm.enums.SensorAlarmType;
+import vip.xiaonuo.coldchain.core.alarm.mapper.SensorAlarmMapper;
 import vip.xiaonuo.coldchain.core.alarm.service.SensorAlarmService;
 import vip.xiaonuo.coldchain.core.alarm.service.delay.DeviceAlertDelayService;
 import vip.xiaonuo.coldchain.core.bean.influxdb.SensorData;
@@ -52,6 +54,7 @@ import vip.xiaonuo.coldchain.modular.app.param.export.AppTrendParam;
 import vip.xiaonuo.coldchain.modular.app.param.export.ExportParam;
 import vip.xiaonuo.coldchain.modular.monitordevice.entity.MonitorDevice;
 import vip.xiaonuo.coldchain.modular.monitordevice.service.MonitorDeviceService;
+import vip.xiaonuo.coldchain.modular.monitorsearchhistory.dto.TopWarningDto;
 import vip.xiaonuo.coldchain.modular.monitortarget.entity.MonitorTarget;
 import vip.xiaonuo.coldchain.modular.monitortarget.param.MonitorTargetPageParam;
 import vip.xiaonuo.coldchain.modular.monitortarget.param.TargetStatus;
@@ -95,7 +98,7 @@ public class AppDeviceService {
     private final MonitorDeviceService monitorDeviceService;
     private final DeviceAlertDelayService delayService;
 
-    private final SensorAlarmService sensorAlarmService;
+    private final SensorAlarmMapper sensorAlarmMapper;
     @Resource
     DevConfigService devConfigService;
 
@@ -1933,8 +1936,8 @@ public class AppDeviceService {
         //在线时长
         SensorData startData = jfcloudSensorDataService.queryFirstDataTimeByDeviceIdAndRoads(startTime, endTime,monitorDevice.getDeviceCode(), Integer.valueOf(roads));
         SensorData endData = jfcloudSensorDataService.queryLatestDataByDeviceIdAndRoads(monitorDevice.getDeviceCode(), Integer.valueOf(roads));
-        //预警次数
-        long alarmCount = 0;
+        //
+        Long alarmCount = sensorAlarmMapper.countWarning(StpLoginUserUtil.getLoginUser().getOrgId(),monitorDevice.getDeviceCode(), Integer.valueOf(roads),List.of(SensorAlarmType.DATA_ALARM.getDeviceCode(), SensorAlarmType.DATA_RESTORE_ALARM.getDeviceCode()), DateUtils.addMonths(new Date(), -1));
         LocalDateTime startUtc = startData.getTime().atZone(ZoneId.of("UTC+8")).toLocalDateTime();
         LocalDateTime endUtc = endData.getTime().atZone(ZoneId.of("UTC+8")).toLocalDateTime();
         JSONObject obj = new JSONObject()