Browse Source

报警统计和报警数量开发

gao.qiang 3 weeks ago
parent
commit
bf81e055c6

+ 13 - 0
business-service/src/main/java/com/ozs/service/entity/vo/AlarmCountSortVo.java

@@ -0,0 +1,13 @@
+package com.ozs.service.entity.vo;
+
+import lombok.Data;
+
+/**
+ * @author Administrator
+ */
+@Data
+public class AlarmCountSortVo {
+    private Integer cameraCount;
+    private String cameraCode;
+    private String measurePointName;
+}

+ 3 - 4
business-service/src/main/java/com/ozs/service/mapper/BaseCameraManagementMapper.java

@@ -3,10 +3,7 @@ package com.ozs.service.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ozs.service.entity.BaseCameraManagement;
 import com.ozs.service.entity.BaseCameraManagement;
 import com.ozs.service.entity.MsgAlarm;
 import com.ozs.service.entity.MsgAlarm;
-import com.ozs.service.entity.vo.BaseCameraManagementHomeVo;
-import com.ozs.service.entity.vo.BaseCameraManagementVo;
-import com.ozs.service.entity.vo.DeviceStateResp;
-import com.ozs.service.entity.vo.MsgAlarmVo;
+import com.ozs.service.entity.vo.*;
 import org.apache.ibatis.annotations.MapKey;
 import org.apache.ibatis.annotations.MapKey;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
@@ -33,4 +30,6 @@ public interface BaseCameraManagementMapper extends BaseMapper<BaseCameraManagem
     Map<String, Object> getCameraChannelByAlarmId(@Param("alarmId") String alarmId);
     Map<String, Object> getCameraChannelByAlarmId(@Param("alarmId") String alarmId);
 
 
     List<DeviceStateResp> deviceStatePage(DeviceStateResp deviceStateResp);
     List<DeviceStateResp> deviceStatePage(DeviceStateResp deviceStateResp);
+
+    List<AlarmCountSortVo> alarmCountSort();
 }
 }

+ 5 - 0
business-service/src/main/java/com/ozs/service/service/MsgAlarmService.java

@@ -1,6 +1,7 @@
 package com.ozs.service.service;
 package com.ozs.service.service;
 
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.ozs.common.core.domain.AjaxResult;
 import com.ozs.service.entity.BaseCameraManagement;
 import com.ozs.service.entity.BaseCameraManagement;
 import com.ozs.service.entity.MsgAlarm;
 import com.ozs.service.entity.MsgAlarm;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
@@ -60,4 +61,8 @@ public interface MsgAlarmService extends IService<MsgAlarm> {
     void initializationCameraCache();
     void initializationCameraCache();
 
 
     BaseCameraManagement getBaseCameraManagementByCamereCode(String camereCode);
     BaseCameraManagement getBaseCameraManagementByCamereCode(String camereCode);
+
+    AjaxResult alarmStatistics();
+
+    AjaxResult alarmCountSort();
 }
 }

+ 83 - 24
business-service/src/main/java/com/ozs/service/service/impl/MsgAlarmServiceImpl.java

@@ -1,14 +1,18 @@
 package com.ozs.service.service.impl;
 package com.ozs.service.service.impl;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageHelper;
 import com.ozs.common.constant.Constants;
 import com.ozs.common.constant.Constants;
+import com.ozs.common.core.domain.AjaxResult;
 import com.ozs.service.entity.BaseCameraManagement;
 import com.ozs.service.entity.BaseCameraManagement;
+import com.ozs.service.entity.BaseRailwayManagement;
 import com.ozs.service.entity.MsgAlarm;
 import com.ozs.service.entity.MsgAlarm;
 import com.ozs.service.entity.vo.*;
 import com.ozs.service.entity.vo.*;
 import com.ozs.service.mapper.BaseCameraManagementMapper;
 import com.ozs.service.mapper.BaseCameraManagementMapper;
+import com.ozs.service.mapper.BaseRailwayManagementMapper;
 import com.ozs.service.mapper.MsgAlarmMapper;
 import com.ozs.service.mapper.MsgAlarmMapper;
 import com.ozs.service.service.MsgAlarmService;
 import com.ozs.service.service.MsgAlarmService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -16,6 +20,7 @@ import com.ozs.service.service.RedisService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.CollectionUtils;
+import org.springframework.util.ObjectUtils;
 
 
 import java.util.*;
 import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
@@ -36,6 +41,8 @@ public class MsgAlarmServiceImpl extends ServiceImpl<MsgAlarmMapper, MsgAlarm> i
     private BaseCameraManagementMapper baseCameraManagementMapper;
     private BaseCameraManagementMapper baseCameraManagementMapper;
     @Autowired
     @Autowired
     private RedisService redisService;
     private RedisService redisService;
+    @Autowired
+    private BaseRailwayManagementMapper baseRailwayManagementMapper;
 
 
 
 
     public IPage listToPage(List list, int pageNum, int pageSize) {
     public IPage listToPage(List list, int pageNum, int pageSize) {
@@ -158,22 +165,22 @@ public class MsgAlarmServiceImpl extends ServiceImpl<MsgAlarmMapper, MsgAlarm> i
     @Override
     @Override
     public void getNormalBaseCameraManagementsCache(String setType) {
     public void getNormalBaseCameraManagementsCache(String setType) {
         Set<BaseCameraVO> alarmSet = redisService.getSetMembers(Constants.ALARM_SET);
         Set<BaseCameraVO> alarmSet = redisService.getSetMembers(Constants.ALARM_SET);
-        if(!CollectionUtils.isEmpty(alarmSet)) {
-        Set<String> cameraCodeSet = alarmSet.stream()
-                .map(BaseCameraVO::getCameraCode)
-                .collect(Collectors.toSet());
-        QueryWrapper<BaseCameraManagement> queryWrapper = new QueryWrapper<>();
-        if(Constants.ALARM_SET.equals(setType)) {
-            // 使用QueryWrapper和notin方法根据cameraCode列表查询BaseCameraManagement数据
-            queryWrapper.notIn("camera_code", cameraCodeSet);
-            Set<BaseCameraManagement> set = baseCameraManagementMapper.selectList(queryWrapper).stream().collect(Collectors.toSet());
-            set.forEach(item -> {
-                BaseCameraVO baseCameraVO = new BaseCameraVO();
-                baseCameraVO.setCameraCode(item.getCameraCode());
-                baseCameraVO.setChannel(item.getChannel());
-                redisService.addToSet(Constants.NORMAL_SET, baseCameraVO);
-            });
-        }
+        if (!CollectionUtils.isEmpty(alarmSet)) {
+            Set<String> cameraCodeSet = alarmSet.stream()
+                    .map(BaseCameraVO::getCameraCode)
+                    .collect(Collectors.toSet());
+            QueryWrapper<BaseCameraManagement> queryWrapper = new QueryWrapper<>();
+            if (Constants.ALARM_SET.equals(setType)) {
+                // 使用QueryWrapper和notin方法根据cameraCode列表查询BaseCameraManagement数据
+                queryWrapper.notIn("camera_code", cameraCodeSet);
+                Set<BaseCameraManagement> set = baseCameraManagementMapper.selectList(queryWrapper).stream().collect(Collectors.toSet());
+                set.forEach(item -> {
+                    BaseCameraVO baseCameraVO = new BaseCameraVO();
+                    baseCameraVO.setCameraCode(item.getCameraCode());
+                    baseCameraVO.setChannel(item.getChannel());
+                    redisService.addToSet(Constants.NORMAL_SET, baseCameraVO);
+                });
+            }
         }
         }
     }
     }
 
 
@@ -182,21 +189,21 @@ public class MsgAlarmServiceImpl extends ServiceImpl<MsgAlarmMapper, MsgAlarm> i
         List<MsgAlarm> lockedMsgAlarms = msgAlarmMapper.selectList(new QueryWrapper<MsgAlarm>().eq("is_lock", 2));
         List<MsgAlarm> lockedMsgAlarms = msgAlarmMapper.selectList(new QueryWrapper<MsgAlarm>().eq("is_lock", 2));
         if (lockedMsgAlarms.isEmpty()) {
         if (lockedMsgAlarms.isEmpty()) {
             Set<BaseCameraManagement> normalSet = baseCameraManagementMapper.selectList(null).stream().collect(Collectors.toSet());
             Set<BaseCameraManagement> normalSet = baseCameraManagementMapper.selectList(null).stream().collect(Collectors.toSet());
-            normalSet.forEach(item ->{
-                BaseCameraVO  baseCameraVO=new BaseCameraVO();
+            normalSet.forEach(item -> {
+                BaseCameraVO baseCameraVO = new BaseCameraVO();
                 baseCameraVO.setCameraCode(item.getCameraCode());
                 baseCameraVO.setCameraCode(item.getCameraCode());
                 baseCameraVO.setChannel(item.getChannel());
                 baseCameraVO.setChannel(item.getChannel());
-                redisService.addToSet(Constants.NORMAL_SET,baseCameraVO);
+                redisService.addToSet(Constants.NORMAL_SET, baseCameraVO);
             });
             });
-            redisService.addToSet(Constants.ALARM_SET,null);
+            redisService.addToSet(Constants.ALARM_SET, null);
         }
         }
         // 提取cameraCode列表
         // 提取cameraCode列表
         Set<String> cameraCodeSet = lockedMsgAlarms.stream().map(MsgAlarm::getCameraCode).collect(Collectors.toSet());
         Set<String> cameraCodeSet = lockedMsgAlarms.stream().map(MsgAlarm::getCameraCode).collect(Collectors.toSet());
         QueryWrapper<BaseCameraManagement> queryWrapperAlarm = new QueryWrapper<>();
         QueryWrapper<BaseCameraManagement> queryWrapperAlarm = new QueryWrapper<>();
         queryWrapperAlarm.in("camera_code", cameraCodeSet);
         queryWrapperAlarm.in("camera_code", cameraCodeSet);
         Set<BaseCameraManagement> alarmSet = baseCameraManagementMapper.selectList(queryWrapperAlarm).stream().collect(Collectors.toSet());
         Set<BaseCameraManagement> alarmSet = baseCameraManagementMapper.selectList(queryWrapperAlarm).stream().collect(Collectors.toSet());
-        alarmSet.forEach(item->{
-            BaseCameraVO  baseCameraVO=new BaseCameraVO();
+        alarmSet.forEach(item -> {
+            BaseCameraVO baseCameraVO = new BaseCameraVO();
             baseCameraVO.setCameraCode(item.getCameraCode());
             baseCameraVO.setCameraCode(item.getCameraCode());
             baseCameraVO.setChannel(item.getChannel());
             baseCameraVO.setChannel(item.getChannel());
             redisService.addToSet(Constants.ALARM_SET, baseCameraVO);
             redisService.addToSet(Constants.ALARM_SET, baseCameraVO);
@@ -204,8 +211,8 @@ public class MsgAlarmServiceImpl extends ServiceImpl<MsgAlarmMapper, MsgAlarm> i
         QueryWrapper<BaseCameraManagement> queryWrapperNormal = new QueryWrapper<>();
         QueryWrapper<BaseCameraManagement> queryWrapperNormal = new QueryWrapper<>();
         queryWrapperNormal.notIn("camera_code", cameraCodeSet);
         queryWrapperNormal.notIn("camera_code", cameraCodeSet);
         Set<BaseCameraManagement> normalSet = baseCameraManagementMapper.selectList(queryWrapperNormal).stream().collect(Collectors.toSet());
         Set<BaseCameraManagement> normalSet = baseCameraManagementMapper.selectList(queryWrapperNormal).stream().collect(Collectors.toSet());
-        normalSet.forEach(item->{
-            BaseCameraVO  baseCameraVO=new BaseCameraVO();
+        normalSet.forEach(item -> {
+            BaseCameraVO baseCameraVO = new BaseCameraVO();
             baseCameraVO.setCameraCode(item.getCameraCode());
             baseCameraVO.setCameraCode(item.getCameraCode());
             baseCameraVO.setChannel(item.getChannel());
             baseCameraVO.setChannel(item.getChannel());
             redisService.addToSet(Constants.NORMAL_SET, baseCameraVO);
             redisService.addToSet(Constants.NORMAL_SET, baseCameraVO);
@@ -219,4 +226,56 @@ public class MsgAlarmServiceImpl extends ServiceImpl<MsgAlarmMapper, MsgAlarm> i
         BaseCameraManagement baseCameraManagement = baseCameraManagementMapper.selectOne(queryWrapper);
         BaseCameraManagement baseCameraManagement = baseCameraManagementMapper.selectOne(queryWrapper);
         return baseCameraManagement;
         return baseCameraManagement;
     }
     }
+
+    @Override
+    public AjaxResult alarmStatistics() {
+        int count;
+        int unresolvedCount;
+        //找出所有报警数据
+        List<MsgAlarm> list = this.list();
+        //未解除的报警
+        List<MsgAlarm> alarmList = this.list(new LambdaQueryWrapper<MsgAlarm>()
+                .eq(MsgAlarm::getIsLock, 1));
+        HashMap<String, Integer> map = new HashMap<>();
+        if (!ObjectUtils.isEmpty(list)) {
+            //获取所有报警的相机编码
+            //找出所有报警数据 1=高铁的数量
+            count = (int) list.stream()
+                    .map(base -> baseCameraManagementMapper.selectOne(new LambdaQueryWrapper<BaseCameraManagement>()
+                            .eq(BaseCameraManagement::getCameraCode, base)))
+                    .filter(Objects::nonNull)  // 确保 management 不是 null
+                    .map(management -> baseRailwayManagementMapper.selectOne(new LambdaQueryWrapper<BaseRailwayManagement>()
+                            .eq(BaseRailwayManagement::getRailwayCode, management.getRailwayCode()))) // 确保管理信息不是空的
+                    .filter(Objects::nonNull) // 确保 baseRailwayManagement 不是 null
+                    .filter(baseRailwayManagement -> baseRailwayManagement.getRailwayType() == 1)
+                    .count();
+            //普铁的数量
+            int pu = list.size() - count;
+            map.put("highAlarmCount", count);
+            map.put("puAlarmCount", pu);
+        }
+        if (!ObjectUtils.isEmpty(alarmList)) {
+            //获取所有报警的相机编码
+            //找出所有已解除报警数据 1=高铁的数量
+            unresolvedCount = (int) alarmList.stream()
+                    .map(base -> baseCameraManagementMapper.selectOne(new LambdaQueryWrapper<BaseCameraManagement>()
+                            .eq(BaseCameraManagement::getCameraCode, base)))
+                    .filter(Objects::nonNull)
+                    .map(management -> baseRailwayManagementMapper.selectOne(new LambdaQueryWrapper<BaseRailwayManagement>()
+                            .eq(BaseRailwayManagement::getRailwayCode, management.getRailwayCode()))) // 确保管理信息不是空的
+                    .filter(Objects::nonNull) // 确保 baseRailwayManagement 不是 null
+                    .filter(baseRailwayManagement -> baseRailwayManagement.getRailwayType() == 1)
+                    .count();
+            //普铁的数量
+            int puUnresolvedCount = alarmList.size() - unresolvedCount;
+            map.put("highUnresolvedCount", unresolvedCount);
+            map.put("puUnresolvedCount", puUnresolvedCount);
+        }
+        return AjaxResult.success(map);
+    }
+
+    @Override
+    public AjaxResult alarmCountSort() {
+        return AjaxResult.success(baseCameraManagementMapper.alarmCountSort());
+    }
 }
 }

+ 6 - 0
business-service/src/main/resources/mapper/service/BaseCameraManagementMapper.xml

@@ -197,4 +197,10 @@
         ORDER BY
         ORDER BY
         man.electricity
         man.electricity
     </select>
     </select>
+    <select id="alarmCountSort" resultType="com.ozs.service.entity.vo.AlarmCountSortVo">
+        SELECT COUNT(m.camera_code) AS cameraCount,c.camera_code AS cameraCode,c.measure_point_name AS measurePointName
+        FROM msg_alarm  m JOIN base_camera_management  c ON m.camera_code=c.camera_code
+        GROUP BY m.camera_code
+        ORDER BY cameraCount DESC
+    </select>
 </mapper>
 </mapper>

+ 14 - 0
hazard-admin/src/main/java/com/ozs/web/controller/accountmanagment/MsgAlarmController.java

@@ -818,5 +818,19 @@ public class MsgAlarmController extends BaseController {
         ExcelUtil<AlarmStatisticMonthDto> util = new ExcelUtil<>(AlarmStatisticMonthDto.class);
         ExcelUtil<AlarmStatisticMonthDto> util = new ExcelUtil<>(AlarmStatisticMonthDto.class);
         util.exportExcel(response, list, sheetName);
         util.exportExcel(response, list, sheetName);
     }
     }
+
+
+    @GetMapping(value = "/alarmStatistics")
+    @Log(title = "报警信息管理", businessType = BusinessType.SELECT)
+    public AjaxResult alarmStatistics() {
+      return   msgAlarmService.alarmStatistics();
+    }
+
+    @GetMapping(value = "/alarmCountSort")
+    @Log(title = "报警信息管理", businessType = BusinessType.SELECT)
+    public AjaxResult alarmCountSort() {
+        return   msgAlarmService.alarmCountSort();
+    }
+
 }
 }