Ver código fonte

代码合并

gao.qiang 4 semanas atrás
pai
commit
440fca6c90

+ 4 - 0
business-service/src/main/java/com/ozs/service/mapper/MsgAlarmCloudMapper.java

@@ -7,6 +7,7 @@ import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -47,4 +48,7 @@ public interface MsgAlarmCloudMapper extends BaseMapper<MsgAlarmCloud> {
     List<MsgAlarmCloud> queryAlarmInfoByAfterTenMinute();
 
     List<MsgAlarmCloud> selectMsgAlarmListHome(MsgAlarmVo msgAlarmVo);
+
+    // 新的方法,直接查询统计结果
+    Map<String, Integer> selectAlarmStatistics(MsgAlarmVo msgAlarmVo);
 }

+ 17 - 47
business-service/src/main/java/com/ozs/service/service/impl/MsgAlarmCloudServiceImpl.java

@@ -235,55 +235,25 @@ public class MsgAlarmCloudServiceImpl extends ServiceImpl<MsgAlarmCloudMapper, M
 
     @Override
     public AjaxResult alarmStatistics(MsgAlarmVo msgAlarmVo1) {
-        int count = 0;
-        int unresolvedCount = 0;
-        //找出所有报警数据
-        List<MsgAlarmCloud> list = msgAlarmCloudMapper.selectMsgAlarmList(msgAlarmVo1);
-        //未解除的报警
-        msgAlarmVo1.setIsLock(2);
-        List<MsgAlarmCloud> alarmList = msgAlarmCloudMapper.selectMsgAlarmList(msgAlarmVo1);
-        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.getCameraCode())))
-                    .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);
-        } else {
-            map.put("highAlarmCount", 0);
-            map.put("puAlarmCount", 0);
-        }
-        if (!ObjectUtils.isEmpty(alarmList)) {
-            //获取所有报警的相机编码
-            //找出所有未解除报警数据 1=高铁的数量
-            unresolvedCount = (int) alarmList.stream()
-                    .map(base -> baseCameraManagementMapper.selectOne(new LambdaQueryWrapper<BaseCameraManagement>()
-                            .eq(BaseCameraManagement::getCameraCode, base.getCameraCode())))
-                    .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);
+        // 执行合并查询以获取统计结果
+        Map<String, Integer> statistics = msgAlarmCloudMapper.selectAlarmStatistics(msgAlarmVo1);
+
+        // 创建返回结果的 map
+        Map<String, Integer> results = new HashMap<>();
+        if (statistics != null) {
+            results.put("highAlarmCount", statistics.get("highAlarmCount"));
+            results.put("puAlarmCount", statistics.get("puAlarmCount"));
+            results.put("highUnresolvedCount", statistics.get("highUnresolvedCount"));
+            results.put("puUnresolvedCount", statistics.get("puUnresolvedCount"));
         } else {
-            map.put("highUnresolvedCount", 0);
-            map.put("puUnresolvedCount", 0);
+            // 处理statistics为空的情况,设置默认值或空值
+            results.put("highAlarmCount", 0);
+            results.put("puAlarmCount", 0);
+            results.put("highUnresolvedCount", 0);
+            results.put("puUnresolvedCount", 0);
         }
-        return AjaxResult.success(map);
+
+        return AjaxResult.success(results);
     }
 
     @Override

+ 39 - 0
business-service/src/main/resources/mapper/service/MsgAlarmCloudMapper.xml

@@ -558,4 +558,43 @@
           and a.released_url is null
           and a.alarm_time &lt;= DATE_SUB(NOW(), INTERVAL 10 MINUTE)
     </select>
+    <select id="selectAlarmStatistics" resultType="java.util.HashMap">
+        SELECT
+        SUM(CASE WHEN rm.railway_type = 1 THEN 1 ELSE 0 END) AS highAlarmCount,
+        SUM(CASE WHEN rm.railway_type &lt;&gt; 1 THEN 1 ELSE 0 END) AS puAlarmCount,
+        SUM(CASE WHEN am.is_lock = 2 AND rm.railway_type = 1 THEN 1 ELSE 0 END) AS highUnresolvedCount,
+        SUM(CASE WHEN am.is_lock = 2 AND rm.railway_type &lt;&gt; 1 THEN 1 ELSE 0 END) AS puUnresolvedCount
+        FROM
+        msg_alarm_cloud am
+        JOIN
+        base_camera_management cm ON am.camera_code = cm.camera_code
+        JOIN
+        base_railway_management rm ON cm.railway_code = rm.railway_code
+        <where>
+            am.is_lock IN (1, 2)
+            <if test="ids != null and ids.size>0">
+                and a.id in
+                <foreach item="items" collection="ids" separator="," open="(" close=")" index="">
+                    #{items}
+                </foreach>
+            </if>
+            <if test="!dsFlay">
+                and
+                <trim prefix="(" prefixOverrides="or" suffix=")">
+                    <if test="dsUserId != null and dsUserId != ''">
+                        or am.create_by=#{dsUserId}
+                    </if>
+                    <if test="dsDeptId != null and dsDeptId != 0">
+                        or cm.dept_id=#{dsDeptId}
+                    </if>
+                    <if test="dsDeptIds != null">
+                        or cm.dept_id in
+                        <foreach item="item" collection="dsDeptIds" separator="," open="(" close=")" index="">
+                            #{item}
+                        </foreach>
+                    </if>
+                </trim>
+            </if>
+        </where>
+    </select>
 </mapper>