Преглед изворни кода

Merge branch 'dev' of http://192.168.1.43:3000/v2/zd-parents into dev

chaiyunlong пре 3 година
родитељ
комит
4ec733479d

+ 3 - 0
zd-api/zd-algorithm-api/src/main/java/com/zd/algorithm/api/fire/RemoteFireDeviceService.java

@@ -18,4 +18,7 @@ public interface RemoteFireDeviceService {
 
     @GetMapping(value = "/firedevice/addFireLog")
     public R addFireLog(@RequestParam(value = "code", required = true) String code);
+
+    @GetMapping(value = "/firedevice/getDeviceByCode")
+    public R getDeviceByCode(@RequestParam(value = "deviceCode", required = true) String deviceCode);
 }

+ 6 - 0
zd-api/zd-algorithm-api/src/main/java/com/zd/algorithm/api/fire/feign/fallback/RemoteFireDeviceFallbackFactory.java

@@ -24,6 +24,12 @@ public class RemoteFireDeviceFallbackFactory implements FallbackFactory<RemoteFi
                 log.info("灭火日志添加失败:" + cause.getMessage());
                 return R.fail("灭火日志添加失败:"+ cause.getMessage());
             }
+
+            @Override
+            public R getDeviceByCode(String deviceCode) {
+                log.info("根据采集器编码查询灭火设备信息失败:" + cause.getMessage());
+                return R.fail("根据采集器编码查询灭火设备信息失败:"+ cause.getMessage());
+            }
         };
 
     }

+ 2 - 2
zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/entity/OneClickFireDTO.java

@@ -12,8 +12,8 @@ import lombok.Data;
 @Data
 public class OneClickFireDTO {
 
-    @ApiModelProperty("硬件编号")
-    private String hardwareNum;
+    @ApiModelProperty("采集器编号")
+    private String deviceCode;
 
     @ApiModelProperty("是否火灾 0否 1是")
     private Integer ifFire;

+ 1 - 1
zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/feign/RemoteLaboratoryService.java

@@ -467,6 +467,6 @@ public interface RemoteLaboratoryService {
     R<Integer> update(@RequestParam("operate") HardwareOperate operate, @RequestParam("ipAddress") String ipAddress);
 
     @ApiOperation(value = "一件灭火接受火焰预警")
-    @PutMapping("/plan/oneClickFire")
+    @PostMapping("/plan/oneClickFire")
     ResultData oneClickFire(@RequestBody OneClickFireDTO oneClickFireDTO);
 }

+ 7 - 7
zd-model/src/main/java/com/zd/model/enums/RiskPlanLevelEnum.java

@@ -13,18 +13,18 @@ import lombok.Getter;
 @Getter
 public enum RiskPlanLevelEnum {
 
-    RISKPLANLEVELONE(1,"低风险"),
-    RISKPLANLEVELTWO(2,"中风险"),
-    RISKPLANLEVELTHREE(3,"较高风险"),
-    RISKPLANLEVELFOUR(4,"高风险");
+    RISK_PLAN_LEVEL_ONE(1,"低风险"),
+    RISK_PLAN_LEVEL_TWO(2,"中风险"),
+    RISK_PLAN_LEVEL_THREE(3,"较高风险"),
+    RISK_PLAN_LEVEL_FOUR(4,"高风险");
 
     private Integer code;
-    private String name;
+    private String value;
 
     public static String getValue(Integer code) {
-        for (RiskPlanLevelEnum riskPlanLevelEnum : values()) {
+        for (RiskPlanLevelEnum riskPlanLevelEnum : RiskPlanLevelEnum.values()) {
             if (riskPlanLevelEnum.getCode().equals(code)) {
-                return riskPlanLevelEnum.name();
+                return riskPlanLevelEnum.getValue();
             }
         }
         return null;

+ 5 - 8
zd-modules/zd-algorithm/src/main/java/com/zd/alg/fire/controller/FireDeviceController.java

@@ -370,7 +370,7 @@ public class FireDeviceController extends BaseController {
             }
             map.put("online", online);
 
-            logger.info("=========PC端开始一键灭火=======");
+            logger.info("=========开始一键灭火=======");
             //执行灭火指令
             try {
                 map = outFireCom(subjectId,map);
@@ -385,8 +385,6 @@ public class FireDeviceController extends BaseController {
      * @return
      */
     public Map<String,Object> outFireCom(Long subjectId,Map<String, Object> map) throws InterruptedException {
-        //Map<String, Object> map = new HashMap<>();
-        map.put("check","");
         //查询实验室下的硬件
         RemoteLabHardware hd = new RemoteLabHardware();
         //实验室id
@@ -395,12 +393,12 @@ public class FireDeviceController extends BaseController {
         hd.setIsPcfire(1);
         List<RemoteLabHardware> hdlist = remoteLaboratoryService.remoteList(hd).getData();
         if (hdlist.size() == 0) {
-            //return ResultData.fail("该实验室尚未配置关联硬件!");
-            map.put("check","该实验室尚未配置关联硬件!");
+            logger.info("该实验室尚未配置关联硬件!");
+            //map.put("check","该实验室尚未配置关联硬件!");
             return  map;
         } else if (hdlist.size() != 2) {
-            //return ResultData.fail("该实验室尚未配置2路控制器!");
-            map.put("check","该实验室尚未配置2路控制器!");
+            logger.info("该实验室尚未配置2路控制器!");
+            //map.put("check","该实验室尚未配置2路控制器!");
             return map;
         }
 
@@ -588,7 +586,6 @@ public class FireDeviceController extends BaseController {
      */
     @GetMapping(value = "/getDeviceByCode")
     public ResultData getDeviceByCode(String deviceCode) {
-        // fireDeviceService.selectHardwareFireDeviceList();
         HardwareFireDeviceVO vo = new HardwareFireDeviceVO();
         vo.setDeviceCode(deviceCode);
         List<HardwareFireDeviceVO> list = fireDeviceService.selectHardwareFireDeviceList(vo);

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

@@ -74,6 +74,7 @@ public class FireDeviceStatusTask {
                 //获取灭火主机最后一次响应时间,判断响应是否超时
                 Long timeJson = redisService.getCacheObject(CacheConstants.FIRE_DEVICE_RESPOND_TIME+list.get(0).getDeviceCode());
                 if (StringUtils.isNull(timeJson)) {
+                    logger.info("设备掉线");
                     //离线
                     mqttSend.send(MqttConstants.TOPIC_FIRE_DEVICE_ONLINE+list.get(0).getDeviceCode(), "0");
                 }else{

+ 32 - 18
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabRiskPlanController.java

@@ -1,7 +1,10 @@
 package com.zd.laboratory.controller;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.zd.algorithm.api.fire.RemoteFireDeviceService;
+import com.zd.algorithm.api.fire.entity.vo.HardwareFireDeviceVO;
 import com.zd.algorithm.api.rfid.domain.entity.HardwareRfid;
 import com.zd.common.core.annotation.Log;
 import com.zd.common.core.annotation.PreAuthorize;
@@ -11,7 +14,7 @@ import com.zd.common.core.utils.ExcelUtil;
 import com.zd.common.core.utils.StringUtils;
 import com.zd.common.core.web.controller.BaseController;
 import com.zd.laboratory.api.constant.RiskPlanConstants;
-import com.zd.laboratory.api.entity.BasicFunctionStatus;
+import com.zd.laboratory.api.entity.OneClickFireDTO;
 import com.zd.laboratory.api.entity.SensorFunctionStatus;
 import com.zd.laboratory.api.vo.SubFunction;
 import com.zd.laboratory.domain.LabRiskPlan;
@@ -19,7 +22,6 @@ import com.zd.laboratory.domain.LabRiskPlanAbnormalGroup;
 import com.zd.laboratory.domain.LabRiskPlanAbnormalLog;
 import com.zd.laboratory.domain.LabRiskPlanjoinsub;
 import com.zd.laboratory.domain.dto.LabRiskPlanDTO;
-import com.zd.laboratory.domain.dto.OneClickFireDTO;
 import com.zd.laboratory.domain.vo.LabRiskPlanSubVo;
 import com.zd.laboratory.domain.vo.LabRiskPlanSubVoInfo;
 import com.zd.laboratory.domain.vo.LabSubjectVO;
@@ -29,6 +31,8 @@ import com.zd.laboratory.service.ILabHardwareService;
 import com.zd.laboratory.service.ILabRiskPlanAbnormalLogService;
 import com.zd.laboratory.service.ILabRiskPlanService;
 import com.zd.laboratory.service.ILabSubjectService;
+import com.zd.model.constant.HttpStatus;
+import com.zd.model.domain.R;
 import com.zd.model.domain.ResultData;
 import com.zd.model.domain.per.PerFun;
 import com.zd.model.domain.per.PerPrefix;
@@ -69,6 +73,9 @@ public class LabRiskPlanController extends BaseController {
     @Autowired
     private LabRiskPlanjoinsubMapper LabRiskPlanjoinsubMapper;
 
+    @Autowired
+    private RemoteFireDeviceService remoteFireDeviceService;
+
 
     /**
      * 查询风险预案列表
@@ -243,25 +250,32 @@ public class LabRiskPlanController extends BaseController {
     @Log(title = "一件灭火触发火焰预警")
     @PostMapping("/oneClickFire")
     public ResultData oneClickFire(@RequestBody OneClickFireDTO oneClickFireDTO){
-        logger.info("一件灭火触发火焰预警,入参={}",oneClickFireDTO.toString());
-        if (StringUtils.isNotBlank(oneClickFireDTO.getHardwareNum())) {
+        if (!Objects.isNull(oneClickFireDTO)) {
+            logger.info("一件灭火触发火焰预警,入参={}", JSON.toJSONString(oneClickFireDTO));
             if (oneClickFireDTO.getIfFire() == 1) {
-                Long subId = labHardwareService.querySubIdByNum(oneClickFireDTO.getHardwareNum());
-                SubFunction subFunction = new SubFunction();
-                List<BasicFunctionStatus> basicFunctionStatuses = new ArrayList<>();
-                BasicFunctionStatus basicFunctionStatus = new BasicFunctionStatus();
-                basicFunctionStatus.setFuncName("火焰");
-                basicFunctionStatus.setHardwareNum(oneClickFireDTO.getHardwareNum());
-                basicFunctionStatus.setFunNum("huoyan");
-                basicFunctionStatus.setDescribe("火焰");
-                basicFunctionStatuses.add(basicFunctionStatus);
-                subFunction.setSubId(subId);
-                subFunction.setFunctionStatuses(basicFunctionStatuses);
-                triggerRiskPlan(subFunction);
-                return ResultData.success();
+                R deviceByCode = remoteFireDeviceService.getDeviceByCode(oneClickFireDTO.getDeviceCode());
+                if (deviceByCode.getCode()!=(HttpStatus.SUCCESS)){
+                    return ResultData.fail("查询一键灭火设备信息失败!");
+                }
+                HardwareFireDeviceVO hardwareFireDeviceVO = JSON.parseObject(JSON.toJSONString(deviceByCode.getData()), HardwareFireDeviceVO.class);
+                if (hardwareFireDeviceVO.getSubjectId() != null){
+                    SubFunction subFunction = new SubFunction();
+                    List<SensorFunctionStatus> sensorFunctionStatuses = new ArrayList<>();
+                    SensorFunctionStatus sensorFunctionStatus = new SensorFunctionStatus();
+                    sensorFunctionStatus.setVal("1");
+                    sensorFunctionStatus.setFunNum("火焰");
+                    sensorFunctionStatus.setHardwareNum(oneClickFireDTO.getDeviceCode());
+                    sensorFunctionStatus.setDescribe("火焰");
+                    sensorFunctionStatuses.add(sensorFunctionStatus);
+                    subFunction.setSubId(hardwareFireDeviceVO.getSubjectId());
+                    subFunction.setFunctionStatuses(sensorFunctionStatuses);
+                    triggerRiskPlan(subFunction);
+                    return ResultData.success();
+                }
+                return ResultData.fail("查询一键灭火实验室信息失败!");
             }
         }
-        return ResultData.fail("设备编号为空!");
+        return ResultData.fail("传入参数为空!");
     }
 
     /**

+ 0 - 20
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/domain/dto/OneClickFireDTO.java

@@ -1,20 +0,0 @@
-package com.zd.laboratory.domain.dto;
-
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-/**
- * @Description 一键灭火传输类
- * @Author hzw
- * @Date 2022/12/12 16:52
- * @Version 2.0
- */
-@Data
-public class OneClickFireDTO {
-
-    @ApiModelProperty("硬件编号")
-    private String hardwareNum;
-
-    @ApiModelProperty("是否火灾 0否 1是")
-    private Integer ifFire;
-}

+ 6 - 1
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mqtt/config/MqttConfig.java

@@ -33,6 +33,7 @@ import org.springframework.integration.mqtt.support.MqttHeaders;
 import org.springframework.messaging.*;
 
 import javax.annotation.Resource;
+import java.nio.charset.StandardCharsets;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
@@ -268,6 +269,8 @@ public class MqttConfig {
                             TerminalRouter.routerMap.get("HxpLockService").offLine(relayCode);
                         }
                 }}else if(receivedTopic.startsWith(MqttConstants.TOPIC_FIRE_DEVICE_RECEIVE)){
+                    String messageStrTest = byte2Hex(message.getPayload().toString().getBytes(StandardCharsets.UTF_8));
+                    logger.info("灭火消息返回,"+messageStrTest);
                     logger.info("灭火消息消费,receivedTopic:" + receivedTopic + " messageStr:" + messageStr);
                     //返回非指令时不向下执行
                     if(receivedTopic!=null && receivedTopic.length()<30){
@@ -282,7 +285,8 @@ public class MqttConfig {
                     //redis存值 采集器编号:主机状态json
                     redisService.setCacheObject(receivedTopic, jsonObject, 1L, TimeUnit.MINUTES);
                     //redis存值 灭火主机响应时间
-                    redisService.setCacheObject(CacheConstants.FIRE_DEVICE_RESPOND_TIME, System.currentTimeMillis(), 1L, TimeUnit.MINUTES);
+                    redisService.setCacheObject(CacheConstants.FIRE_DEVICE_RESPOND_TIME+receivedTopic, System.currentTimeMillis(), 1L, TimeUnit.MINUTES);
+                    logger.info("灭火消息,redis存值完毕========");
 
                     Integer fireNumber = Integer.valueOf(jsonObject.get("fireNumber").toString());
                     //灭火主机发生预警
@@ -319,6 +323,7 @@ public class MqttConfig {
     }
 
     public static String byte2Hex(byte[] bytes) {
+        logger.info("byte长度:"+bytes.length);
         StringBuilder builder = new StringBuilder();
         String temp;
         for (byte aByte : bytes) {