浏览代码

mqtt接收数据3

wwh 1 年之前
父节点
当前提交
7fc36ea1d6

+ 99 - 55
huimv-env-platform/huimv-env-manage/src/main/java/com/huimv/env/manage/saas/controller/EnvDeviceEquipmentController.java

@@ -16,6 +16,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
+import java.text.SimpleDateFormat;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -34,26 +36,31 @@ public class EnvDeviceEquipmentController {
     IEnvTopicService topicService;
 
     @PostMapping("/listByUnit")
-    public Result listByUnit(@RequestBody Map<String, String> map, HttpServletRequest request){
-        return deviceRegisterService.listByUnit(map,request);
+    public Result listByUnit(@RequestBody Map<String, String> map, HttpServletRequest request) {
+        return deviceRegisterService.listByUnit(map, request);
     }
+
     private static final RateLimiter limiter = RateLimiter.create(0.3);
+
     @PostMapping("/update")
-    public Result update(@RequestBody EnvDeviceEquipment envDeviceEquipment){
+    public Result update(@RequestBody EnvDeviceEquipment envDeviceEquipment) {
         try {
+            Date date = new Date();
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            System.out.println("----这个是开始请求的时间:"+sdf.format(date));
             envDeviceEquipmentService.updateById(envDeviceEquipment);
             EnvDeviceEquipment byId = envDeviceEquipmentService.getById(envDeviceEquipment.getId());
             String deviceCode = byId.getDeviceCode();
-            System.out.println("设备"+deviceCode);
+            System.out.println("设备" + deviceCode);
             QueryWrapper<EnvDeviceRegister> queryWrapper = new QueryWrapper<>();
-            queryWrapper.eq("device_code",deviceCode);
+            queryWrapper.eq("device_code", deviceCode);
             EnvDeviceRegister one = deviceRegisterService.getOne(queryWrapper);
             String chipId = one.getChipId();
-            log.info("-------获取设备编码:"+chipId);
+            log.info("-------获取设备编码:" + chipId);
 //            PublishMQTT publishMQTT = new PublishMQTT();
             log.info("-----开始配置消息----");
             QueryWrapper<EnvDeviceEquipment> queryWrapper1 = new QueryWrapper<>();
-            queryWrapper1.eq("device_code",deviceCode).orderByDesc("equipment_port");
+            queryWrapper1.eq("device_code", deviceCode).orderByDesc("equipment_port");
             List<EnvDeviceEquipment> list = envDeviceEquipmentService.list(queryWrapper1);
             StringBuilder deviceStatus = new StringBuilder();
             for (EnvDeviceEquipment envDeviceEquipment1 : list) {
@@ -61,95 +68,132 @@ public class EnvDeviceEquipmentController {
             }
             String s = deviceStatus.toString();
             int i = Integer.parseInt(s, 2);
-            JSONObject jsonObject  =new JSONObject();
-            jsonObject.put("dev_ctrl",i);
-            log.info("消息配置完成开始发送:"+jsonObject.toJSONString());
-            PublishMQTTTree publishMQTTTree  = new PublishMQTTTree();
+            JSONObject jsonObject = new JSONObject();
+            jsonObject.put("dev_ctrl", i);
+            log.info("消息配置完成开始发送:" + jsonObject.toJSONString());
+            PublishMQTTTree publishMQTTTree = new PublishMQTTTree();
             Boolean start = publishMQTTTree.start("tcp://115.238.57.190:1883", "test" + chipId, "admin", "admin", "huimv_down_" + chipId, jsonObject.toJSONString());
-            if (start){
-                return new Result(10000,"修改成功",false);
-            }else {
-                return new Result(10001,"配置失败,请稍后配置",false);
+
+            if (start) {
+                Thread.sleep(2500);//线程等待3秒
+                EnvDeviceEquipment byId1 = envDeviceEquipmentService.getById(envDeviceEquipment.getId());
+                Date updateTime = byId1.getUpdateTime();
+                System.out.println("-----这个是修改后的时间:"+updateTime);
+//                updateTime.setTime(updateTime.getTime()+5*1000);
+                int i1 = updateTime.compareTo(date);
+                if (byId1.getMark() == 1 && i1 > 0) {
+                    QueryWrapper<EnvDeviceEquipment> queryWrapper2 = new QueryWrapper<>();
+                    queryWrapper2.eq("device_code", deviceCode).orderByDesc("equipment_port");
+                    List<EnvDeviceEquipment> list1 = envDeviceEquipmentService.list(queryWrapper2);
+                    for (EnvDeviceEquipment equipment : list1) {
+                        equipment.setMark(0);
+                        envDeviceEquipmentService.updateById(equipment);
+                    }
+                    return new Result(10000, "修改成功", true);
+                } else {
+                    if (envDeviceEquipment.getUploadStart() == 1) {
+                        envDeviceEquipment.setUploadStart(0);
+                    } else {
+                        envDeviceEquipment.setUploadStart(1);
+                    }
+                    envDeviceEquipmentService.updateById(envDeviceEquipment);
+                    return new Result(10001, "设备掉线,请等待设备重连", false);
+                }
+            } else {
+                if (envDeviceEquipment.getUploadStart() == 1) {
+                    envDeviceEquipment.setUploadStart(0);
+                } else {
+                    envDeviceEquipment.setUploadStart(1);
+                }
+                envDeviceEquipmentService.updateById(envDeviceEquipment);
+                return new Result(10001, "网络连接超时,请等待5秒后重试", false);
             }
 
-        }catch (Exception e){
-            System.out.println("22222222222"+e);
-            return new Result(10001,"修改失败",false);
+
+
+
+         /*   if (start){
+                envDeviceEquipmentService.updateById(envDeviceEquipment);
+                return new Result(10000, "修改成功", true);
+            }else {
+                return new Result(10001, "配置失败,请稍后配置", false);
+            }*/
+
+
+        } catch (Exception e) {
+            System.out.println("22222222222" + e);
+            return new Result(10001, "修改失败", false);
         }
 
     }
 
 
     @PostMapping("/remove")
-    public Result remove(@RequestBody Map<String, String> map){
+    public Result remove(@RequestBody Map<String, String> map) {
         try {
             String id = map.get("id");
             envDeviceEquipmentService.removeById(id);
-            return new Result(10000,"删除成功",true);
-        }catch (Exception e){
-            return new Result(10001,"删除失败",false);
+            return new Result(10000, "删除成功", true);
+        } catch (Exception e) {
+            return new Result(10001, "删除失败", false);
         }
 
 
     }
 
     /**
-     * @Method      : getEquipment
+     * @Method : getEquipment
      * @Description :
-     * @Params      : [farmCode,binding]
-     * @Return      : com.huimv.common.utils.Result
-     *
-     * @Author      : ZhuoNing
-     * @Date        : 2022/10/27
-     * @Time        : 17:54
+     * @Params : [farmCode,binding]
+     * @Return : com.huimv.common.utils.Result
+     * @Author : ZhuoNing
+     * @Date : 2022/10/27
+     * @Time : 17:54
      */
     @PostMapping("/getEquipment")
-    public com.huimv.common.utils.Result getEquipment(@RequestBody Map<String,String> paramsMap){
+    public com.huimv.common.utils.Result getEquipment(@RequestBody Map<String, String> paramsMap) {
         return envDeviceEquipmentService.getEquipment(paramsMap);
     }
 
     /**
-     * @Method      : getShowRoomEquipment
+     * @Method : getShowRoomEquipment
      * @Description :
-     * @Params      : [unitId,binding]
-     * @Return      : com.huimv.common.utils.Result
-     *
-     * @Author      : ZhuoNing
-     * @Date        : 2022/10/27
-     * @Time        : 18:09
+     * @Params : [unitId,binding]
+     * @Return : com.huimv.common.utils.Result
+     * @Author : ZhuoNing
+     * @Date : 2022/10/27
+     * @Time : 18:09
      */
     @PostMapping("/getShowRoomEquipment")
-    public com.huimv.common.utils.Result getShowRoomEquipment(@RequestBody Map<String,String> paramsMap){
+    public com.huimv.common.utils.Result getShowRoomEquipment(@RequestBody Map<String, String> paramsMap) {
         return envDeviceEquipmentService.getShowRoomEquipment(paramsMap);
     }
 
     /**
-     * @Method      : setEquipmentStatus
+     * @Method : setEquipmentStatus
      * @Description :
-     * @Params      : [farmCode,deviceCode,port,status]
-     * @Return      : com.huimv.common.utils.Result
-     *
-     * @Author      : ZhuoNing
-     * @Date        : 2022/10/27
-     * @Time        : 17:55
+     * @Params : [farmCode,deviceCode,port,status]
+     * @Return : com.huimv.common.utils.Result
+     * @Author : ZhuoNing
+     * @Date : 2022/10/27
+     * @Time : 17:55
      */
     @PostMapping("/setEquipmentStatus")
-    public com.huimv.common.utils.Result setEquipmentStatus(@RequestBody Map<String,String> paramsMap){
+    public com.huimv.common.utils.Result setEquipmentStatus(@RequestBody Map<String, String> paramsMap) {
         return envDeviceEquipmentService.setEquipmentStatus(paramsMap);
     }
 
     /**
-     * @Method      : setShowRoomEquipmentStatus
-     * @Description : 
-     * @Params      : [id,status]
-     * @Return      : com.huimv.common.utils.Result
-     * 
-     * @Author      : ZhuoNing
-     * @Date        : 2022/10/27       
-     * @Time        : 19:01
+     * @Method : setShowRoomEquipmentStatus
+     * @Description :
+     * @Params : [id,status]
+     * @Return : com.huimv.common.utils.Result
+     * @Author : ZhuoNing
+     * @Date : 2022/10/27
+     * @Time : 19:01
      */
     @PostMapping("/setShowRoomEquipmentStatus")
-    public com.huimv.common.utils.Result setShowRoomEquipmentStatus(@RequestBody Map<String,String> paramsMap){
+    public com.huimv.common.utils.Result setShowRoomEquipmentStatus(@RequestBody Map<String, String> paramsMap) {
         return envDeviceEquipmentService.setShowRoomEquipmentStatus(paramsMap);
     }
 }

+ 6 - 0
huimv-env-platform/huimv-env-manage/src/main/java/com/huimv/env/manage/saas/dao/entity/EnvDeviceEquipment.java

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import java.io.Serializable;
+import java.util.Date;
+
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
@@ -48,5 +50,9 @@ public class EnvDeviceEquipment implements Serializable {
    private Integer   binding;
    private String   deviceAlias;
 
+    private Integer mark;
+
+    private Date updateTime;
+
 
 }

+ 5 - 4
huimv-env-platform/huimv-env-manage/src/main/java/com/huimv/env/manage/saas/mqtt/publish/PublishMQTT.java

@@ -19,15 +19,15 @@ public class PublishMQTT {
 
 //    public static final String HOST = "tcp://115.238.57.190:1883";
 //    private static final String clientid = "publish";
-//    private MqttClient client;
-//    private MqttConnectOptions options;
+    private MqttClient client;
+    private MqttConnectOptions options;
 //
 //    private String userName = "admin";    //非必须
 //    private String passWord = "admin";  //非必须
 
     public void start(String HOST,String clientid,String userName,String passWord,String topic,String message) {
-        MqttClient client;
-        MqttConnectOptions options;
+//        MqttClient client;
+//        MqttConnectOptions options;
 
         try {
             // host为主机名,clientid即连接MQTT的客户端ID,一般以唯一标识符表示,MemoryPersistence设置clientid的保存形式,默认为以内存保存
@@ -56,6 +56,7 @@ public class PublishMQTT {
             mess.setPayload(message.getBytes());
             try {
                 client.publish(topic, mess);
+                client.disconnect();
             } catch (Exception e) {
 //                LOGGER.error(e.getLocalizedMessage());
                 System.out.println("1111111111"+e);

+ 7 - 5
huimv-env-platform/huimv-env-manage/src/main/java/com/huimv/env/manage/saas/mqtt/publish/PublishMQTTTree.java

@@ -15,15 +15,15 @@ public class PublishMQTTTree {
 
 //    public static final String HOST = "tcp://115.238.57.190:1883";
 //    private static final String clientid = "publish";
-//    private MqttClient client;
-//    private MqttConnectOptions options;
+    private MqttClient client;
+    private MqttConnectOptions options;
 //
 //    private String userName = "admin";    //非必须
 //    private String passWord = "admin";  //非必须
 
     public Boolean start(String HOST,String clientid,String userName,String passWord,String topic,String message) {
-        MqttClient client;
-        MqttConnectOptions options;
+//        MqttClient client;
+//        MqttConnectOptions options;
 
         try {
             // host为主机名,clientid即连接MQTT的客户端ID,一般以唯一标识符表示,MemoryPersistence设置clientid的保存形式,默认为以内存保存
@@ -50,6 +50,7 @@ public class PublishMQTTTree {
             mess.setQos(1);
             mess.setRetained(true);
             mess.setPayload(message.getBytes());
+
             return topublish(client,topic,mess);
 
         } catch (Exception e) {
@@ -61,10 +62,11 @@ public class PublishMQTTTree {
     private Boolean topublish(MqttClient client, String topic, MqttMessage mess) {
         try {
             client.publish(topic, mess);
+            client.disconnect();
             return true;
         } catch (Exception e) {
 //                LOGGER.error(e.getLocalizedMessage());
-            System.out.println("1111111111"+e);
+            System.out.println(e.getLocalizedMessage());
             return false;
         }
     }

+ 42 - 1
huimv-env-platform/huimv-env-manage/src/main/java/com/huimv/env/manage/saas/mqtt/subscribe/PushCallback.java

@@ -146,6 +146,24 @@ public class PushCallback implements MqttCallbackExtended {
             publishMQTT.start("tcp://115.238.57.190:1883", "publish", "admin", "admin", "huimv_down_" + chip, jsonObject.toJSONString());
             log.info("---设备控制发送完成---");
         }  else if ("dev_ctrl_suc".equals(messages)) {
+            QueryWrapper<EnvDeviceRegister> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("chip_id", chip);
+            IEnvDeviceRegisterService envDeviceRegisterService = SpringUtil.getBean(IEnvDeviceRegisterService.class);
+            EnvDeviceRegister one = envDeviceRegisterService.getOne(queryWrapper);
+
+            IEnvDeviceEquipmentService envDeviceEquipmentService = SpringUtil.getBean(IEnvDeviceEquipmentService.class);
+            QueryWrapper<EnvDeviceEquipment> queryWrapper1 = new QueryWrapper<>();
+            queryWrapper1.eq("device_code", one.getDeviceCode()).orderByDesc("equipment_port");
+            List<EnvDeviceEquipment> list = envDeviceEquipmentService.list(queryWrapper1);
+            for (EnvDeviceEquipment equipment : list) {
+                equipment.setMark(1);
+                equipment.setUpdateTime(new Date());
+                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                System.out.println("----这个是应答时间:"+sdf.format(new Date()));
+                envDeviceEquipmentService.updateById(equipment);
+                System.out.println("-----收到控制响应后修改标识成功!!");
+            }
+
             System.out.println("收到控制响应");
         } else {
             JSONObject jsonObject = JSON.parseObject(messages);
@@ -207,13 +225,36 @@ public class PushCallback implements MqttCallbackExtended {
                 log.info("---氨气保存成功!----");
             } else if (ObjectUtil.isNotEmpty(jsonObject.get("alarm_event"))) {
                 log.info("----报警信息开始保存---");
-                IEnvAlarmTypeService alarmTypeService = SpringUtil.getBean(IEnvAlarmTypeService.class);
                 JSONObject jsonObject1 = (JSONObject) jsonObject.get("alarm_event");
+                try {
+                    IEnvPushMessgeService pushMessgeService = SpringUtil.getBean(IEnvPushMessgeService.class);
+                    EnvPushMessage envPushMessage = new EnvPushMessage();
+                    envPushMessage.setActType(1);
+                    envPushMessage.setAddTime(new Date());
+                    envPushMessage.setFarmCode("15");
+                    envPushMessage.setDisplay(1);
+                    envPushMessage.setReadStatus(0);
+                    envPushMessage.setDeviceCode("122");
+
+                    Integer type = (Integer) jsonObject1.get("sta");
+                    if (type == 1) {
+                        envPushMessage.setContent("测试二栋一单元的设备断电报警!");
+                    } else {
+                        envPushMessage.setContent("测试二栋一单元设备恢复供电!");
+                    }
+                    pushMessgeService.save(envPushMessage);
+                } catch (Exception e) {
+                    System.out.println("报警信息保存异常!!!");
+                }
+
+                IEnvAlarmTypeService alarmTypeService = SpringUtil.getBean(IEnvAlarmTypeService.class);
+
                 System.out.println(jsonObject1);
                 EnvAlarmType envAlarmType = new EnvAlarmType();
                 try {
                     envAlarmType.setFaultType(jsonObject1.get("type").toString());
                     envAlarmType.setFaultSn((Integer) jsonObject1.get("sta"));
+
                     System.out.println(envAlarmType);
                 } catch (Exception e) {
                     System.out.println(e);