xuxiaofei лет назад: 3
Родитель
Сommit
27a63c13fb

+ 1 - 1
zd-model/src/main/java/com/zd/model/constant/MqttConstants.java

@@ -87,5 +87,5 @@ public interface MqttConstants {
     String TOPIC_FIRE_DEVICE_RECEIVE = "alarm/receiveFire/";
 
     //灭火设备异常通知预案topic
-    String TOPIC_FIRE_DEVICE_WARN = "alarm/fireDevice/Warn";
+    String TOPIC_FIRE_DEVICE_WARN = "alarm/fireDevice/Warn/";
 }

+ 101 - 48
zd-modules/zd-algorithm/src/main/java/com/zd/alg/fire/controller/FireDeviceController.java

@@ -9,7 +9,6 @@ import com.zd.algorithm.api.fire.entity.HardwareFireDeviceLog;
 import com.zd.algorithm.api.fire.entity.vo.HardwareFireDeviceVO;
 import com.zd.common.core.annotation.Log;
 import com.zd.common.core.annotation.PreAuthorize;
-import com.zd.common.core.exception.ServiceException;
 import com.zd.common.core.log.BusinessType;
 import com.zd.common.core.redis.RedisService;
 import com.zd.common.core.utils.StringUtils;
@@ -67,26 +66,23 @@ public class FireDeviceController extends BaseController {
     @GetMapping(value = "/getStatus")
     public ResultData getStatus(Long subjectId) {
         Map<String, Object> map = new HashMap<>();
-        boolean smoke = false;//烟雾
-        boolean temperature = false;//温度
-        boolean fire = false;//火焰
-        boolean online = false;//是否在线
-        boolean isexist = false;//是否配置灭火设备
+        //烟雾
+        boolean smoke = false;
+        //温度
+        boolean temperature = false;
+        //火焰
+        boolean fire = false;
+        //是否在线
+        boolean online = false;
+        //是否配置灭火设备
+        boolean isexist = false;
+        //是否灭火中
+        boolean outfireing =false;
 
         if (StringUtils.isNull(subjectId)) {
             return ResultData.fail("实验室id参数为空");
         }
 
-        //获取灭火主机最后一次响应时间,判断响应是否超时
-        Long timeJson = redisService.getCacheObject(FireDeviceStatusTask.TOPIC_FD_RESPOND_TIME);
-        if (StringUtils.isNotNull(timeJson)) {
-            Long timeDiff = (System.currentTimeMillis() - timeJson) / 1000;
-            //时间差 在设置时间内
-            if (timeDiff < onlineTime) {
-                online = true;
-            }
-        }
-
         //查询实验室是否配置灭火设备
         HardwareFireDeviceVO vo = new HardwareFireDeviceVO();
         vo.setSubjectId(subjectId);
@@ -99,33 +95,46 @@ public class FireDeviceController extends BaseController {
             return ResultData.success(map);
         } else {
             isexist = true;
-        }
+            //获取灭火主机最后一次响应时间,判断响应是否超时
+            Long timeJson = redisService.getCacheObject(FireDeviceStatusTask.TOPIC_FD_RESPOND_TIME+list.get(0).getDeviceCode());
+            if (StringUtils.isNotNull(timeJson)) {
+                Long timeDiff = (System.currentTimeMillis() - timeJson) / 1000;
+                //时间差 在设置时间内
+                if (timeDiff < onlineTime) {
+                    online = true;
+                }
+            }
 
-        //根据编码从redis获取该设备状态
-        //String str = "{\"msg\":\"NO:5号设备故障 NO:10号设备火警 \",\"fireNumber\":1,\"fireStatus\":true,\"startSpray\":\"0\",\"gasSpray\":\"0\"}";
-        //JSONObject strJson = JSONObject.parseObject(str);
-        JSONObject strJson = redisService.getCacheObject(list.get(0).getDeviceCode());
-        if (StringUtils.isNotNull(strJson)) {
-            Integer fireNumber = (Integer) strJson.get("fireNumber");
-            if (fireNumber == 1) {
-                temperature = true;
-            } else if (fireNumber == 2) {
-                smoke = true;
-                temperature = true;
+            //根据编码从redis获取该设备状态
+            //String str = "{\"msg\":\"NO:5号设备故障 NO:10号设备火警 \",\"fireNumber\":1,\"fireStatus\":true,\"startSpray\":\"0\",\"gasSpray\":\"0\"}";
+            //JSONObject strJson = JSONObject.parseObject(str);
+            JSONObject strJson = redisService.getCacheObject(list.get(0).getDeviceCode());
+            if (StringUtils.isNotNull(strJson)) {
+                Integer fireNumber = (Integer) strJson.get("fireNumber");
+                if (fireNumber == 1) {
+                    temperature = true;
+                } else if (fireNumber == 2) {
+                    smoke = true;
+                    temperature = true;
+                }
+                //启动喷洒状态 :1是启动 0未启动
+                Integer startSpray = Integer.valueOf(strJson.get("startSpray").toString());
+                outfireing = startSpray==1?true:false;
             }
-        }
 
-        //查询该实验室是否存在火焰摄像头报警
-        JSONObject fireJson = redisService.getCacheObject("/lab/fire/85");
-        if (StringUtils.isNotNull(fireJson)) {
-            fire = true;
+            //查询该实验室是否存在火焰摄像头报警
+            JSONObject fireJson = redisService.getCacheObject("/lab/fire/85");
+            if (StringUtils.isNotNull(fireJson)) {
+                fire = true;
+            }
         }
         map.put("smoke", smoke);
         map.put("temperature", temperature);
         map.put("fire", fire);
         map.put("online", online);
         map.put("isexist", isexist);
-        map.put("deviceCode", list.get(0).getDeviceCode());
+        map.put("outfireing", outfireing);
+        map.put("fireDevice", list.get(0));
         return ResultData.success(map);
     }
 
@@ -138,17 +147,23 @@ public class FireDeviceController extends BaseController {
     @GetMapping(value = "/getStatusDetails")
     public ResultData getStatus(String deviceCode) {
         Map<String, Object> map = new HashMap<>();
-        boolean smoke = false;//烟雾
-        boolean temperature = false;//温度
-        boolean fire = false;//火焰
-        boolean online = false;//是否在线
+        //烟雾
+        boolean smoke = false;
+        //温度
+        boolean temperature = false;
+        //火焰
+        boolean fire = false;
+        //是否在线
+        boolean online = false;
+        //是否灭火中
+        boolean outfireing =false;
 
         if (StringUtils.isNull(deviceCode)) {
-            throw new ServiceException("设备编号参数为空");
+            ResultData.fail("设备编号参数为空");
         }
 
         //获取灭火主机最后一次响应时间,判断响应是否超时
-        Long timeJson = redisService.getCacheObject(FireDeviceStatusTask.TOPIC_FD_RESPOND_TIME);
+        Long timeJson = redisService.getCacheObject(FireDeviceStatusTask.TOPIC_FD_RESPOND_TIME+deviceCode);
         if (StringUtils.isNotNull(timeJson)) {
             Long timeDiff = (System.currentTimeMillis() - timeJson) / 1000;
             //时间差 在设置时间内
@@ -169,6 +184,9 @@ public class FireDeviceController extends BaseController {
                 smoke = true;
                 temperature = true;
             }
+            //启动喷洒状态 :1是启动 0未启动
+            Integer startSpray = Integer.valueOf(strJson.get("startSpray").toString());
+            outfireing = startSpray==1?true:false;
         }
 
         //查询该实验室是否存在火焰摄像头报警
@@ -180,16 +198,49 @@ public class FireDeviceController extends BaseController {
         map.put("temperature", temperature);
         map.put("fire", fire);
         map.put("online", online);
+        map.put("outfireing", outfireing);
         return ResultData.success(map);
     }
 
     /***
-     * 发送灭火请求
+     * 发送灭火请求-小程序
      * @return
      */
-    @GetMapping(value = "/outfire")
+    @GetMapping(value = "/outfireapp")
     public ResultData outFire(Long subjectId) throws InterruptedException {
-        logger.info("=========开始一键灭火=======");
+        logger.info("=========小程序端开始一键灭火=======");
+        Map<String, Object> map = outFireCom(subjectId);
+        if(StringUtils.isNotNull(map.get("check"))){
+            return ResultData.fail(map.get("check").toString());
+        }
+        return ResultData.success(map);
+    }
+
+    /***
+     *发送灭火请求-PC
+     * @param subjectId
+     * @return
+     * @throws InterruptedException
+     */
+    @GetMapping(value = "/outfirepc")
+    public ResultData outFirePc(Long subjectId) throws InterruptedException {
+        logger.info("=========PC端开始一键灭火=======");
+        //执行灭火指令
+        Map<String, Object> map = outFireCom(subjectId);
+        if(StringUtils.isNotNull(map.get("check"))){
+            return ResultData.fail(map.get("check").toString());
+        }
+        return ResultData.success(map);
+    }
+
+    /***
+     *灭火指令发送方法
+     * @param subjectId
+     * @return
+     */
+    public Map<String,Object> outFireCom(Long subjectId) throws InterruptedException {
+        Map<String, Object> map = new HashMap<>();
+        map.put("check","");
         //查询实验室下的硬件
         RemoteLabHardware hd = new RemoteLabHardware();
         //实验室id
@@ -198,13 +249,15 @@ public class FireDeviceController extends BaseController {
         hd.setType(10);
         List<RemoteLabHardware> hdlist = remoteLaboratoryService.remoteList(hd).getData();
         if (hdlist.size() == 0) {
-            return ResultData.fail("该实验室尚未配置关联硬件!");
+            //return ResultData.fail("该实验室尚未配置关联硬件!");
+            map.put("check","该实验室尚未配置关联硬件!");
+            return  map;
         } else if (hdlist.size() != 2) {
-            return ResultData.fail("该实验室尚未配置2路控制器!");
+            //return ResultData.fail("该实验室尚未配置2路控制器!");
+            map.put("check","该实验室尚未配置2路控制器!");
+            return map;
         }
 
-
-        Map<String, Object> map = new HashMap<>();
         //获取当前实验室下灭火设备状态
         HardwareFireDeviceVO fireDeviceVO = new HardwareFireDeviceVO();
         fireDeviceVO.setSubjectId(subjectId);
@@ -238,7 +291,7 @@ public class FireDeviceController extends BaseController {
         fireDeviceLog.setRunResult(map.toString());
         fireDeviceLog.setCreateTime(new Date());
         fireDeviceLogService.insertFireDeviceLog(fireDeviceLog);
-        return ResultData.success(map);
+        return map;
     }
 
     /**

+ 6 - 6
zd-modules/zd-algorithm/src/main/java/com/zd/alg/fire/mapper/FireDeviceLogMapper.java

@@ -20,7 +20,7 @@ public interface FireDeviceLogMapper
      * @param labFireDeviceLog 灭火设备日志
      * @return 灭火设备日志
      */
-    public List<HardwareFireDeviceLog> selectLabFireDeviceLogList(HardwareFireDeviceLog labFireDeviceLog);
+    List<HardwareFireDeviceLog> selectLabFireDeviceLogList(HardwareFireDeviceLog labFireDeviceLog);
 
 
     /****
@@ -28,7 +28,7 @@ public interface FireDeviceLogMapper
      * @param id
      * @return
      */
-    public HardwareFireDeviceLog selectLabFireDeviceLogById(Long id);
+    HardwareFireDeviceLog selectLabFireDeviceLogById(Long id);
 
     /**
      * 新增灭火设备日志
@@ -36,7 +36,7 @@ public interface FireDeviceLogMapper
      * @param labFireDeviceLog 灭火设备日志
      * @return 结果
      */
-    public int insertLabFireDeviceLog(HardwareFireDeviceLog labFireDeviceLog);
+    int insertLabFireDeviceLog(HardwareFireDeviceLog labFireDeviceLog);
 
     /**
      * 修改灭火设备日志
@@ -44,7 +44,7 @@ public interface FireDeviceLogMapper
      * @param labFireDeviceLog 灭火设备日志
      * @return 结果
      */
-    public int updateLabFireDeviceLog(HardwareFireDeviceLog labFireDeviceLog);
+    int updateLabFireDeviceLog(HardwareFireDeviceLog labFireDeviceLog);
 
     /**
      * 删除灭火设备日志
@@ -52,7 +52,7 @@ public interface FireDeviceLogMapper
      * @param id 灭火设备日志主键
      * @return 结果
      */
-    public int deleteLabFireDeviceLogById(Long id);
+    int deleteLabFireDeviceLogById(Long id);
 
     /**
      * 批量删除灭火设备日志
@@ -60,5 +60,5 @@ public interface FireDeviceLogMapper
      * @param ids 需要删除的数据主键集合
      * @return 结果
      */
-    public int deleteLabFireDeviceLogByIds(Long[] ids);
+    int deleteLabFireDeviceLogByIds(Long[] ids);
 }

+ 6 - 6
zd-modules/zd-algorithm/src/main/java/com/zd/alg/fire/mapper/FireDeviceMapper.java

@@ -20,7 +20,7 @@ public interface FireDeviceMapper
      * @param fireDeviceVO 灭火设备
      * @return 灭火设备
      */
-    public List<HardwareFireDeviceVO> selectHardwareFireDeviceList(HardwareFireDeviceVO fireDeviceVO);
+    List<HardwareFireDeviceVO> selectHardwareFireDeviceList(HardwareFireDeviceVO fireDeviceVO);
 
 
     /****
@@ -28,7 +28,7 @@ public interface FireDeviceMapper
      * @param id
      * @return
      */
-    public HardwareFireDeviceVO selectHardwareFireDeviceById(Long id);
+    HardwareFireDeviceVO selectHardwareFireDeviceById(Long id);
 
     /**
      * 新增灭火设备
@@ -36,7 +36,7 @@ public interface FireDeviceMapper
      * @param fireDevice 灭火设备
      * @return 结果
      */
-    public int insertHardwareFireDevice(HardwareFireDevice fireDevice);
+    int insertHardwareFireDevice(HardwareFireDevice fireDevice);
 
     /**
      * 修改灭火设备
@@ -44,7 +44,7 @@ public interface FireDeviceMapper
      * @param labFireDevice 灭火设备
      * @return 结果
      */
-    public int updateHardwareFireDevice(HardwareFireDevice labFireDevice);
+    int updateHardwareFireDevice(HardwareFireDevice labFireDevice);
 
     /**
      * 删除灭火设备
@@ -52,7 +52,7 @@ public interface FireDeviceMapper
      * @param id 灭火设备主键
      * @return 结果
      */
-    public int deleteHardwareFireDeviceById(Long id);
+    int deleteHardwareFireDeviceById(Long id);
 
     /**
      * 批量删除灭火设备
@@ -60,5 +60,5 @@ public interface FireDeviceMapper
      * @param ids 需要删除的数据主键集合
      * @return 结果
      */
-    public int deleteHardwareFireDeviceByIds(Long[] ids);
+    int deleteHardwareFireDeviceByIds(Long[] ids);
 }

+ 8 - 9
zd-modules/zd-algorithm/src/main/java/com/zd/alg/fire/service/IFireDeviceLogService.java

@@ -10,15 +10,14 @@ import java.util.List;
  * @author xxf
  * @date 2022-11-24
  */
-public interface IFireDeviceLogService
-{
+public interface IFireDeviceLogService {
     /**
      * 查询实验室灭火设备日志
      *
      * @param fireDeviceLog 灭火设备日志
      * @return 灭火设备日志
      */
-    public List<HardwareFireDeviceLog> selectFireDeviceLogList(HardwareFireDeviceLog fireDeviceLog);
+    List<HardwareFireDeviceLog> selectFireDeviceLogList(HardwareFireDeviceLog fireDeviceLog);
 
 
     /****
@@ -26,7 +25,7 @@ public interface IFireDeviceLogService
      * @param id
      * @return
      */
-    public HardwareFireDeviceLog selectFireDeviceLogById(Long id);
+    HardwareFireDeviceLog selectFireDeviceLogById(Long id);
 
     /**
      * 新增灭火设备日志
@@ -34,7 +33,7 @@ public interface IFireDeviceLogService
      * @param fireDeviceLog 灭火设备日志
      * @return 结果
      */
-    public int insertFireDeviceLog(HardwareFireDeviceLog fireDeviceLog);
+    int insertFireDeviceLog(HardwareFireDeviceLog fireDeviceLog);
 
     /**
      * 修改灭火设备日志
@@ -42,7 +41,7 @@ public interface IFireDeviceLogService
      * @param fireDeviceLog 灭火设备日志
      * @return 结果
      */
-    public int updateFireDeviceLog(HardwareFireDeviceLog fireDeviceLog);
+    int updateFireDeviceLog(HardwareFireDeviceLog fireDeviceLog);
 
     /**
      * 删除灭火设备日志
@@ -50,7 +49,7 @@ public interface IFireDeviceLogService
      * @param id 灭火设备日志主键
      * @return 结果
      */
-    public int deleteFireDeviceLogById(Long id);
+    int deleteFireDeviceLogById(Long id);
 
     /**
      * 批量删除灭火设备日志
@@ -58,12 +57,12 @@ public interface IFireDeviceLogService
      * @param ids 需要删除的数据主键集合
      * @return 结果
      */
-    public int deleteFireDeviceLogByIds(Long[] ids);
+    int deleteFireDeviceLogByIds(Long[] ids);
 
     /***
      * 自动灭火日志添加
      * @param code 继电器编号
      * @return
      */
-    public String insertFireAutomatic(String code);
+    String insertFireAutomatic(String code);
 }

+ 7 - 8
zd-modules/zd-algorithm/src/main/java/com/zd/alg/fire/service/IFireDeviceService.java

@@ -11,15 +11,14 @@ import java.util.List;
  * @author xxf
  * @date 2022-11-24
  */
-public interface IFireDeviceService
-{
+public interface IFireDeviceService {
     /**
      * 查询实验室灭火设备
      *
      * @param fireDeviceVO 灭火设备
      * @return 灭火设备
      */
-    public List<HardwareFireDeviceVO> selectHardwareFireDeviceList(HardwareFireDeviceVO fireDeviceVO);
+    List<HardwareFireDeviceVO> selectHardwareFireDeviceList(HardwareFireDeviceVO fireDeviceVO);
 
 
     /****
@@ -27,7 +26,7 @@ public interface IFireDeviceService
      * @param id
      * @return
      */
-    public HardwareFireDeviceVO selectHardwareFireDeviceById(Long id);
+    HardwareFireDeviceVO selectHardwareFireDeviceById(Long id);
 
     /**
      * 新增灭火设备
@@ -35,7 +34,7 @@ public interface IFireDeviceService
      * @param fireDevice 灭火设备
      * @return 结果
      */
-    public int insertHardwareFireDevice(HardwareFireDevice fireDevice);
+    int insertHardwareFireDevice(HardwareFireDevice fireDevice);
 
     /**
      * 修改灭火设备
@@ -43,7 +42,7 @@ public interface IFireDeviceService
      * @param fireDevice 灭火设备
      * @return 结果
      */
-    public int updateHardwareFireDevice(HardwareFireDevice fireDevice);
+    int updateHardwareFireDevice(HardwareFireDevice fireDevice);
 
     /**
      * 删除灭火设备
@@ -51,7 +50,7 @@ public interface IFireDeviceService
      * @param id 灭火设备主键
      * @return 结果
      */
-    public int deleteHardwareFireDeviceById(Long id);
+    int deleteHardwareFireDeviceById(Long id);
 
     /**
      * 批量删除灭火设备
@@ -59,5 +58,5 @@ public interface IFireDeviceService
      * @param ids 需要删除的数据主键集合
      * @return 结果
      */
-    public int deleteHardwareFireDeviceByIds(Long[] ids);
+    int deleteHardwareFireDeviceByIds(Long[] ids);
 }

+ 2 - 1
zd-modules/zd-algorithm/src/main/java/com/zd/alg/fire/utils/FireDeviceStatusTask.java

@@ -9,6 +9,7 @@ import com.zd.model.constant.MqttConstants;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
@@ -52,7 +53,7 @@ public class FireDeviceStatusTask {
      * 定时更新灭火装置状态
      *
      */
-    //@Scheduled(cron = "0/20 * * * * ?")
+    @Scheduled(cron = "0/20 * * * * ?")
     public void getFireDeviceStatus() {
         //redis取值
         List<HardwareFireDeviceVO> list = JSON.parseArray(redisService.getCacheObject(REDIS_TASK_FIRE_DEVICE_LIST) + "", HardwareFireDeviceVO.class);

+ 4 - 7
zd-modules/zd-algorithm/src/main/java/com/zd/alg/mqtt/MqttConfig.java

@@ -1,5 +1,6 @@
 package com.zd.alg.mqtt;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.zd.alg.fire.service.IFireDeviceLogService;
 import com.zd.alg.fire.utils.FireDeviceStatusTask;
@@ -25,12 +26,7 @@ import org.springframework.integration.mqtt.support.DefaultPahoMessageConverter;
 import org.springframework.integration.mqtt.support.MqttHeaders;
 import org.springframework.messaging.*;
 
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
 import java.util.concurrent.TimeUnit;
-import java.util.stream.Collectors;
 
 /**
  * mqtt配置
@@ -61,7 +57,7 @@ public class MqttConfig {
     public static final String MQTT_INBOUND_CHANNEL = "mqttInboundChannel";
 
 
-    public static final String MQTT_OUTBOUND_CHANNEL = "mqttInboundChannel";
+    public static final String MQTT_OUTBOUND_CHANNEL = "mqttOutboundChannel";
 
     @Value("${mqtt.username}")
     private String username;
@@ -196,7 +192,8 @@ public class MqttConfig {
                 //灭火主机发生预警
                 if (fireNumber > 0) {
                     logger.info("灭火设备传感器异常,通知预案,状态:" + jsonObject.toJSONString());
-                    mqttSend.send(MqttConstants.TOPIC_FIRE_DEVICE_WARN,jsonObject.toJSONString());
+                    //redis取值
+                    mqttSend.send(MqttConstants.TOPIC_FIRE_DEVICE_WARN+receivedTopic,jsonObject.toJSONString());
                     //自动灭火
                     if (fireNumber == 2) {
                         //redis中是否已存在日志已添加标识

+ 1 - 0
zd-modules/zd-algorithm/src/main/resources/mapper/fire/FireDeviceMapper.xml

@@ -58,6 +58,7 @@
             <if test="deviceUrl != null and deviceUrl != ''">and fd.device_url = #{deviceUrl}</if>
             <if test="deviceCountDown != null ">and fd.device_count_down =#{deviceCountDown}</if>
             <if test="deviceStatus != null ">and fd.device_status = #{deviceStatus}</if>
+            <if test="subjectId != null ">and fd.subject_id = #{subjectId}</if>
             ${params.dataScope}
         </where>
         order by fd.create_time desc