Browse Source

标签增加报警判断

wangyangyang 4 years ago
parent
commit
aff1cd5e89

+ 1 - 1
sms_water/src/main/java/com/huaxu/config/ResourceServerConfig.java

@@ -17,7 +17,7 @@ public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
                 .and()
                 .authorizeRequests()
                 .antMatchers("/swagger-ui.html","/webjars/**", "/webjars/**", "/swagger-resources/**",
-                       "/v2/**","/devicetype/**")
+                       "/v2/**","/devicetype/**","/monitorinfo/**")
                 .permitAll() //配置不需要身份认证的请求路径
                 .anyRequest().authenticated() //其他所有访问路径都需要身份认证
                 .and()

+ 17 - 5
sms_water/src/main/java/com/huaxu/controller/MonitorInfoController.java

@@ -1,5 +1,6 @@
 package com.huaxu.controller;
 
+import com.huaxu.dto.AlarmDetailsDto;
 import com.huaxu.dto.DeviceDto;
 import com.huaxu.dto.MonitorDataDto;
 import com.huaxu.dto.ReportDto;
@@ -7,9 +8,7 @@ import com.huaxu.entity.*;
 import com.huaxu.model.AjaxMessage;
 import com.huaxu.model.LoginUser;
 import com.huaxu.model.ResultStatus;
-import com.huaxu.service.DeviceParmService;
-import com.huaxu.service.DeviceService;
-import com.huaxu.service.SceneService;
+import com.huaxu.service.*;
 import com.huaxu.util.ByteArrayUtils;
 import com.huaxu.util.RedisUtil;
 import com.huaxu.util.UserUtil;
@@ -25,7 +24,6 @@ import java.util.*;
 import java.util.stream.Collectors;
 
 import org.springframework.web.bind.annotation.*;
-import com.huaxu.service.MonitorInfoService;
 
 import javax.jws.Oneway;
 
@@ -49,6 +47,8 @@ public class MonitorInfoController {
     private SceneService sceneService;
     @Autowired
     private DeviceService deviceService;
+    @Autowired
+    private AlarmDetailsService alarmDetailsService;
 
     @ApiOperation(value = "按场景ID查询供水量出水量耗药量耗电量")
     @RequestMapping(value = "/findTotalUsageBySceneId",method = RequestMethod.GET)
@@ -116,7 +116,14 @@ public class MonitorInfoController {
         }
         List<MonitorInfoEntity> page = monitorInfoService.findList(monitorInfoEntity);
         for (MonitorInfoEntity item : page) {
-            if(item.getMonitorType().equals(0L)) {
+            if (item.getMonitorType().equals(0L)) {
+                //查询报警信息
+                List<AlarmDetailsDto> alarmDetailsDtos = alarmDetailsService.selectByDeviceId(item.getDeviceId().intValue());
+                Map<Integer, AlarmDetailsDto> mapAlarm = new HashMap<>();
+                //将缓存中的实时数据放到map中方便进行遍历
+                for (AlarmDetailsDto alarmDetailsDto : alarmDetailsDtos) {
+                    mapAlarm.put(alarmDetailsDto.getAttributeId(), alarmDetailsDto);
+                }
                 byte[] bytes = redisUtil.get(("sms_water_" + item.getDeviceCode()).getBytes());
                 if (bytes != null && bytes.length > 0) {
                     MonitorDataEntity monitorDataEntity = (MonitorDataEntity) ByteArrayUtils.bytesToObject(bytes).get();
@@ -129,6 +136,11 @@ public class MonitorInfoController {
                     if (item.getMonitorType().equals(0L))//标签
                     {
                         item.setMonitorValue(map.get(item.getAttributeId()).getDataValue() + map.get(item.getAttributeId()).getUnit());
+                        //判断是否报警
+                        if (mapAlarm.containsKey(item.getAttributeId()))
+                            item.setIsAlarm(1);
+                        else
+                            item.setIsAlarm(0);
                     }
                 }
             }

+ 8 - 0
sms_water/src/main/java/com/huaxu/dao/AlarmDetailMapper.java

@@ -25,6 +25,14 @@ public interface AlarmDetailMapper {
      */
     AlarmDetailsDto selectById(Integer id);
 
+    /**
+     * 按设备ID查询报警信息
+     * @param deviceId
+     * @return
+     */
+    List<AlarmDetailsDto> selectByDeviceId(Integer deviceId);
+
+
     /**
      * 查询设备报警
      * @return

+ 6 - 0
sms_water/src/main/java/com/huaxu/service/AlarmDetailsService.java

@@ -20,6 +20,12 @@ public interface AlarmDetailsService {
      * @return
      */
     AlarmDetailsDto selectById(Integer id);
+
+    /**
+     * 查询单个设备
+     * @return
+     */
+    List<AlarmDetailsDto> selectByDeviceId(Integer deviceId);
     /**
      * 查询设备
      * @return

+ 5 - 0
sms_water/src/main/java/com/huaxu/service/impl/AlarmDetailsServiceImpl.java

@@ -34,6 +34,11 @@ public class AlarmDetailsServiceImpl implements AlarmDetailsService {
         return alarmDetailMapper.selectById(id);
     }
 
+    @Override
+    public List<AlarmDetailsDto> selectByDeviceId(Integer deviceId) {
+        return alarmDetailMapper.selectByDeviceId(deviceId);
+    }
+
     @Override
     public List<AlarmDetailsRealTimeDto> selectRealTimeByIds(List<Integer> ids) {
         return alarmDetailMapper.selectRealTimeByIds(ids);

+ 9 - 0
sms_water/src/main/resources/mapper/AlarmDetailMapper.xml

@@ -657,4 +657,13 @@
     <update id="udpateLastUpdateTime">
         update sms_device set LAST_UPDATE_TIME =#{lastUpdateTime} where id=#{deviceId}
     </update>
+
+    <select id="selectByDeviceId" resultType="com.huaxu.dto.AlarmDetailsDto">
+        select
+        <include refid="Base_Column_List"/>
+        from sms_alarm_details a
+        <include refid="alarmDetailJoins"/>
+        where a.`STATUS` = 1
+        and a.DEVICE_ID=#{deviceId} and a.state=1
+    </select>
 </mapper>