lihui001 3 years ago
parent
commit
1a60e75c3f

+ 15 - 0
zoniot-water/zoniot-water-api/src/main/java/com/bz/zoneiot/water/api/vo/AlarmTypeDetailsEntityVo.java

@@ -5,6 +5,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.apache.commons.lang3.StringUtils;
 
 import java.util.Date;
 
@@ -49,4 +50,18 @@ public class AlarmTypeDetailsEntityVo {
     private Date alarmStartTime;
 
 
+    private String getSceneName(){
+        if (StringUtils.isEmpty(sceneName)) {
+            return "";
+        }
+        String sz [] = sceneName.split("-");
+        if (sz.length == 1) {
+            return sceneName;
+        }
+        if (sz[0].equals(sz[1])) {
+            return sz[0];
+        }
+        return sceneName;
+    }
+
 }

+ 6 - 5
zoniot-water/zoniot-water-core/src/main/java/com/bz/zoneiot/water/core/mapper/OnlineMonitorMapper.xml

@@ -607,15 +607,16 @@
             and t6.device_name like concat('%', #{deviceName},'%')
         </if>
     </select>
+
+
     <!--分页查询管网实时数据列表-->
     <select id="selectPipeNetPage" resultType="com.bz.zoneiot.water.api.vo.OnlineDataVo">
-        select t1.id scene_id,t1.scene_name,t6.id device_id,t6.device_code,t6.device_name,t6.address,if (t7.alarm_count>0, 1, 0) deviceState
+        select t1.id scene_id,t1.scene_name,t6.id device_id,t6.device_code,t6.device_name,t6.address,t6.ENABLE_STATE deviceState
         from sms_scene t1
         <include refid="deviceInnerJoins"/>
-        left join(
-            select a1.scene_id, a1.device_id ,count(1) alarm_count from sms_alarm_details a1 where a1.`status` = 1 and a1.state = 1 group by a1.scene_id, a1.device_id
-        )t7 on t7.scene_id=t2.scene_id and t7.device_id=t2.device_id
-        where t1.parent_scene_id = 0 and t1. status = 1 and t1. enable_state = 1 and t3.scene_type_name = '管网' and t5.scene_type_name = #{onlineDataDto.sceneTypeName}
+        where
+        t1.parent_scene_id = 0 and t1. status = 1 and t1. enable_state = 1 and t3.scene_type_name = '管网'
+        and t5.scene_type_name = #{onlineDataDto.sceneTypeName}
         <if test="onlineDataDto.sceneIds != null and onlineDataDto.sceneIds.size() > 0">
             and t1.id  in
             <foreach collection="onlineDataDto.sceneIds" item="item" open="(" close=")" separator=",">

+ 12 - 6
zoniot-water/zoniot-water-web/src/main/java/com/bz/zoneiot/water/web/service/impl/AlarmTypeDetailsServiceImpl.java

@@ -120,13 +120,19 @@ public class AlarmTypeDetailsServiceImpl implements AlarmTypeDetailsService {
             log.error("【接收告警信息失败】:告警信息为空 ,请求参数:{}", dto.toString());
             return null;
         }
-        DeviceAttributeEntity attributeEntity = deviceAttributeService.findDeviceAttributeById(alarmType.getAttributeId());
-        if (attributeEntity == null) {
-            log.error("【接收告警信息失败】:属性为空 ,请求参数:{}", dto.toString());
-            return null;
-        }
         result = new ArrayList<>();
-        BigDecimal value = new BigDecimal(dto.getData().get(attributeEntity.getIdentifier()).toString());
+        BigDecimal value;
+        // 离线告警
+        if (alarmType.getAlarmCategory() == 2 || alarmType.getAttributeId() == null) {
+            value = new BigDecimal("0");
+        } else {
+            DeviceAttributeEntity attributeEntity = deviceAttributeService.findDeviceAttributeById(alarmType.getAttributeId());
+            if (attributeEntity == null) {
+                log.error("【接收告警信息失败】:属性为空 ,请求参数:{}", dto.toString());
+                return null;
+            }
+            value = new BigDecimal(dto.getData().get(attributeEntity.getIdentifier()).toString());
+        }
         List<DeviceSceneVo> sceneVos = deviceSceneMapper.findSceneByDeviceId(alarmType.getDeviceId());
         for (DeviceSceneVo sceneVo : sceneVos) {
             AlarmDetailsEntity alarmDetailsEntity = new AlarmDetailsEntity();