Przeglądaj źródła

第二版,安装bug

suntianwu 3 lat temu
rodzic
commit
557317eaff

+ 42 - 0
src/main/java/com/care/common/enums/InstallDevStatusEnum.java

@@ -0,0 +1,42 @@
+package com.care.common.enums;
+
+
+import cn.hutool.core.util.StrUtil;
+
+/**
+ * @Author:java
+ * @Date: 2021/05/27
+ */
+public enum InstallDevStatusEnum {
+
+    /**
+     *
+     */
+    DOING("0","处理中"),
+    SUCCESS("1","成功"),
+    FAIL("2","失败");
+    private String value;
+    private String name;
+    InstallDevStatusEnum(String value, String name) {
+        this.value = value;
+        this.name = name;
+    }
+    public String getValue() {
+        return value;
+    }
+
+    public static String getCodeToName(String code){
+        if (StrUtil.isEmpty(code)){
+            return null;
+        }
+        if (DOING.getValue().equals(code)){
+            return  DOING.name;
+        }else if (SUCCESS.getValue().equals(code)){
+            return SUCCESS.name;
+        }else if (FAIL.getValue().equals(code)){
+            return FAIL.name;
+        }
+
+        return null;
+    }
+}

+ 5 - 9
src/main/java/com/care/installation/controller/RoomController.java

@@ -194,8 +194,8 @@ public class RoomController {
      */
     @PostMapping("commitRoomInfo")
     @ApiOperation(tags = {"设备安装"},value = "提交提交房间信息")
-    public Result<Object> commitRoomInfo(@RequestBody DeviceRoomAllVO vo) {
-        if (this.roomService.commitRoomInfo(vo)){
+    public Result<Object> commitRoomInfo(@RequestParam("devCode") String devCode) {
+        if (this.roomService.commitRoomInfo(devCode)){
             return  Result.success("提交成功");
         } else{
             return  Result.error("提交失败");
@@ -207,12 +207,8 @@ public class RoomController {
      * @return
      */
     @GetMapping("getCommitRoomInfoResult")
-    @ApiOperation(tags = {"设备安装"},value = "查询配置房间信息的结果")
-    public Result<Object> getConfigureRoomInfoResult(@RequestParam("devCode") String devCode) {
-        if (this.roomService.getConfigureRoomInfoResult(devCode)){
-            return  Result.success("配置成功");
-        } else{
-            return  Result.error("配置失败");
-        }
+    @ApiOperation(tags = {"设备安装"},value = "查询配置房间信息的结果,0:处理中,1:成功,2:失败")
+    public Result<String> getConfigureRoomInfoResult(@RequestParam("devCode") String devCode) {
+        return Result.success(this.roomService.getConfigureRoomInfoResult(devCode));
     }
 }

+ 94 - 34
src/main/java/com/care/installation/service/RoomService.java

@@ -4,9 +4,11 @@ package com.care.installation.service;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.care.common.entity.*;
 import com.care.common.enums.DeviceActiveStatusEnum;
 import com.care.common.enums.DeviceStatusEnum;
+import com.care.common.enums.InstallDevStatusEnum;
 import com.care.common.service.*;
 import com.care.common.util.JsonUtil;
 import com.care.installation.vo.*;
@@ -243,15 +245,15 @@ public class RoomService {
     }
     /**
      * 发送Mqtt消息给dmp
-     * @param vo
+     * @param devCode
      * @return
      */
-    public Boolean commitRoomInfo(DeviceRoomAllVO vo) {
+    public Boolean commitRoomInfo(String devCode) {
         try {
-            RoomVO roomVO = vo.getRoomVO();
-            RoomSensorVO roomSensorVO = vo.getRoomSensorVO();
-            List<RoomGateVO> roomGateVOList = vo.getRoomGateVOList();
-            List<RoomRegionVO> roomRegionVOList = vo.getRoomRegionVOList();
+            RoomVO roomVO = getRoomInfo(devCode);
+            RoomSensorVO roomSensorVO = getRoomSensorInfo(devCode);
+            List<RoomGateVO> roomGateVOList = listRoomGateInfo(devCode);
+            List<RoomRegionVO> roomRegionVOList = listRoomRegionInfo(devCode);
             if (roomVO == null || roomSensorVO == null || CollUtil.isEmpty(roomGateVOList)) {
                 return false;
             }
@@ -262,13 +264,35 @@ public class RoomService {
             if (careDevice == null) {
                 return false;
             }
+
+            //把act置为空
+            UpdateWrapper<CareRoom> updateWrapper = new UpdateWrapper<>();
+            updateWrapper.lambda().eq(CareRoom::getRoomId,devCode)
+            .set(CareRoom::getAck,null);
+            careRoomService.update(updateWrapper);
             mqttPublishService.publish(careDevice, getRoomMqttData(roomVO));
+
+            UpdateWrapper<CareRoomSensor> updateWrapper2 = new UpdateWrapper<>();
+            updateWrapper2.lambda().eq(CareRoomSensor::getRoomId,devCode)
+                    .set(CareRoomSensor::getAck,null);
+            careRoomSensorService.update(updateWrapper2);
             mqttPublishService.publish(careDevice, getRoomSensorMqttData(roomSensorVO));
+
+            UpdateWrapper<CareRoomGate> updateWrapper3 = new UpdateWrapper<>();
+            updateWrapper3.lambda().eq(CareRoomGate::getRoomId,devCode)
+                    .set(CareRoomGate::getAck,null);
+            careRoomGateService.update(updateWrapper3);
             mqttPublishService.publish(careDevice, getRoomGateVOMqttData(roomGateVOList));
+
             if (CollUtil.isNotEmpty(roomRegionVOList)){
+                UpdateWrapper<CareRoomRegion> updateWrapper4 = new UpdateWrapper<>();
+                updateWrapper4.lambda().eq(CareRoomRegion::getRoomId,devCode)
+                        .set(CareRoomRegion::getAck,null);
+                careRoomRegionService.update(updateWrapper4);
                 mqttPublishService.publish(careDevice, getRoomRegionVOMqttData(roomRegionVOList));
             }
-            return careDeviceService.updateById(careDevice);
+
+            return true;
         } catch (Exception e) {
             e.printStackTrace();
             return false;
@@ -279,7 +303,7 @@ public class RoomService {
      * 查询配置房间信息的Mqtt返回结果
      * @return
      */
-    public Boolean getConfigureRoomInfoResult(String devCode) {
+    public String getConfigureRoomInfoResult(String devCode) {
         QueryWrapper<CareDevice> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().eq(CareDevice::getDevCode,devCode);
         CareDevice careDevice = careDeviceService.getOne(queryWrapper);
@@ -288,42 +312,81 @@ public class RoomService {
         queryWrapper2.lambda().eq(CareRoom::getRoomId,devCode);
         CareRoom careRoom = careRoomService.getOne(queryWrapper2);
 
-        boolean careRoomBool = careRoom != null && "true".equals(careRoom.getAck());
+        int careRoomResult = 0;
+        if (careRoom == null || (StringUtils.isNotEmpty(careRoom.getAck()) && !"true".equals(careRoom.getAck()))) {
+            careRoomResult = 2;
+        } else if (StringUtils.isEmpty(careRoom.getAck())) {
+            careRoomResult = 0;
+        } else {
+            careRoomResult = 1;
+        }
 
         QueryWrapper<CareRoomSensor> queryWrapper3 = new QueryWrapper<>();
         queryWrapper3.lambda().eq(CareRoomSensor::getRoomId,devCode);
         CareRoomSensor careRoomSensor = careRoomSensorService.getOne(queryWrapper3);
-        boolean careRoomSensorBool = careRoomSensor != null && "true".equals(careRoomSensor.getAck());
+
+        int careRoomSensorResult = 0;
+        if (careRoomSensor == null || (StringUtils.isNotEmpty(careRoomSensor.getAck()) && !"true".equals(careRoomSensor.getAck()))) {
+            careRoomSensorResult = 2;
+        }
+        if (StringUtils.isEmpty(careRoomSensor.getAck())) {
+            careRoomSensorResult = 0;
+        } else {
+            careRoomSensorResult = 1;
+        }
 
         QueryWrapper<CareRoomGate> queryWrapper4 = new QueryWrapper<>();
         queryWrapper4.lambda().eq(CareRoomGate::getRoomId,devCode);
         List<CareRoomGate> careRoomGateList = careRoomGateService.list(queryWrapper4);
-        boolean careRoomGateListBool = true;
+        int careRoomGateResult = 0;
         if(CollUtil.isNotEmpty(careRoomGateList)){
-           for(CareRoomGate careRoomGate : careRoomGateList) {
-               if(!"true".equals(careRoomGate.getAck())){
-                   careRoomGateListBool = false;
-                   break;
-               }
-           }
+            CareRoomGate careRoomGate = careRoomGateList.get(0);
+            if(careRoomGate == null|| (StringUtils.isNotEmpty(careRoomGate.getAck()) && !"true".equals(careRoomGate.getAck()))) {
+                careRoomGateResult = 2;
+            } else if(StringUtils.isEmpty(careRoomGate.getAck())) {
+                careRoomGateResult = 0;
+            } else {
+                careRoomGateResult = 1;
+            }
         } else { //不允许为空
-            careRoomGateListBool = false;
+            careRoomGateResult = 2;
         }
 
+
+
+
         QueryWrapper<CareRoomRegion> queryWrapper5 = new QueryWrapper<>();
         queryWrapper5.lambda().eq(CareRoomRegion::getRoomId,devCode);
         List<CareRoomRegion> careRoomRegionList = careRoomRegionService.list(queryWrapper5);
-        boolean careRoomRegionListBool = true;
+        int careRoomRegionResult = 0;
         if(CollUtil.isNotEmpty(careRoomRegionList)){ //允许为空
-            for(CareRoomRegion careRoomRegion : careRoomRegionList) {
-                if(!"true".equals(careRoomRegion.getAck())){
-                    careRoomRegionListBool = false;
-                    break;
-                }
+            CareRoomRegion careRoomRegion = careRoomRegionList.get(0);
+            if (careRoomRegion == null|| (StringUtils.isNotEmpty(careRoomRegion.getAck()) && !"true".equals(careRoomRegion.getAck()))) {
+                careRoomRegionResult = 2;
+            } else if(StringUtils.isEmpty(careRoomRegion.getAck())) {
+                careRoomRegionResult = 0;
+            } else {
+                careRoomRegionResult = 1;
             }
+        } else {
+            careRoomRegionResult = 1;
         }
 
-        if (careRoomBool && careRoomSensorBool && careRoomGateListBool && careRoomRegionListBool) {
+         if (careRoomResult == 2 || careRoomSensorResult == 2 || careRoomGateResult == 2 || careRoomRegionResult == 2) { //失败
+            //设备离线
+            careDevice.setStatus(DeviceStatusEnum.OFFLINE.getValue());
+            mqttConnectorPoolService.removeOne(careDevice);
+            //未激活
+            careDevice.setActiveStatus(DeviceActiveStatusEnum.NOACTIVE.getValue());
+            careDeviceService.updateById(careDevice);
+
+            //去除publish的客户端监听
+            careDevice.setClientId(careDevice.getClientId() +"_publish");
+            mqttConnectorPoolService.removeOne(careDevice);
+            return InstallDevStatusEnum.FAIL.getValue();
+        } else if (careRoomResult == 0 || careRoomSensorResult == 0 || careRoomGateResult == 0 || careRoomRegionResult == 0){ //处理中
+            return InstallDevStatusEnum.DOING.getValue();
+        }  else { //成功
             //激活
             careDevice.setActiveStatus(DeviceActiveStatusEnum.ACTIVE.getValue());
             //启动通道
@@ -331,20 +394,17 @@ public class RoomService {
             //上线
             careDevice.setStatus(DeviceStatusEnum.ONLINE.getValue());
             careDeviceService.updateById(careDevice);
-            return true;
-        } else {
-            //设备离线
-            careDevice.setStatus(DeviceStatusEnum.OFFLINE.getValue());
+
+            //去除publish的客户端监听
+            careDevice.setClientId(careDevice.getClientId() +"_publish");
             mqttConnectorPoolService.removeOne(careDevice);
-            //未激活
-            careDevice.setActiveStatus(DeviceActiveStatusEnum.NOACTIVE.getValue());
-            careDeviceService.updateById(careDevice);
-            return false;
+
+            return InstallDevStatusEnum.SUCCESS.getValue();
+
         }
     }
 
 
-
     private String getRoomMqttData( RoomVO vo) throws Exception {
         Map<String,Object> data = new HashMap<>();
         data.put("type","RoomVO");

+ 2 - 0
src/main/java/com/care/mqtt/service/MqttPublishService.java

@@ -33,7 +33,9 @@ public class MqttPublishService {
             }
 
             String publishTopic = topic.replace("event","control");
+            String publishCliendId = cliendId + "_publish";
             careDevice.setTopic(publishTopic);
+            careDevice.setTopic(publishCliendId);
 
             MqttDataConnector mqttDataConnector = mqttConnectorPoolService.addOne(careDevice);