523096025 преди 2 години
родител
ревизия
bbef38882a

+ 6 - 0
huimv-env-platform/huimv-env-manage/pom.xml

@@ -183,6 +183,12 @@
             <artifactId>org.eclipse.paho.client.mqttv3</artifactId>
             <artifactId>org.eclipse.paho.client.mqttv3</artifactId>
             <version>1.2.2</version>
             <version>1.2.2</version>
         </dependency>
         </dependency>
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+            <version>30.1-jre</version>
+            <scope>compile</scope>
+        </dependency>
 
 
     </dependencies>
     </dependencies>
 
 

+ 14 - 32
huimv-env-platform/huimv-env-manage/src/main/java/com/huimv/env/manage/saas/controller/EnvDeviceEquipmentController.java

@@ -1,14 +1,12 @@
 package com.huimv.env.manage.saas.controller;
 package com.huimv.env.manage.saas.controller;
 
 
 
 
-import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.google.common.util.concurrent.RateLimiter;
 import com.huimv.env.manage.entity.EnvDeviceRegister;
 import com.huimv.env.manage.entity.EnvDeviceRegister;
-import com.huimv.env.manage.entity.EnvTopic;
 import com.huimv.env.manage.saas.dao.entity.EnvDeviceEquipment;
 import com.huimv.env.manage.saas.dao.entity.EnvDeviceEquipment;
-import com.huimv.env.manage.saas.mqtt.publish.PublishMQTT;
-import com.huimv.env.manage.saas.mqtt.subscribe.ConsumerMQTT;
+import com.huimv.env.manage.saas.mqtt.publish.PublishMQTTTree;
 import com.huimv.env.manage.saas.service.IEnvDeviceEquipmentService;
 import com.huimv.env.manage.saas.service.IEnvDeviceEquipmentService;
 import com.huimv.env.manage.service.IEnvDeviceRegisterService;
 import com.huimv.env.manage.service.IEnvDeviceRegisterService;
 import com.huimv.env.manage.service.IEnvTopicService;
 import com.huimv.env.manage.service.IEnvTopicService;
@@ -21,14 +19,6 @@ import javax.servlet.http.HttpServletRequest;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
 
 
-/**
- * <p>
- * 环控绑定设备 前端控制器
- * </p>
- *
- * @author author
- * @since 2022-10-18
- */
 @RestController
 @RestController
 @RequestMapping("/envDeviceEquipment")
 @RequestMapping("/envDeviceEquipment")
 @CrossOrigin
 @CrossOrigin
@@ -45,10 +35,9 @@ public class EnvDeviceEquipmentController {
 
 
     @PostMapping("/listByUnit")
     @PostMapping("/listByUnit")
     public Result listByUnit(@RequestBody Map<String, String> map, HttpServletRequest request){
     public Result listByUnit(@RequestBody Map<String, String> map, HttpServletRequest request){
-
         return deviceRegisterService.listByUnit(map,request);
         return deviceRegisterService.listByUnit(map,request);
     }
     }
-
+    private static final RateLimiter limiter = RateLimiter.create(0.3);
     @PostMapping("/update")
     @PostMapping("/update")
     public Result update(@RequestBody EnvDeviceEquipment envDeviceEquipment){
     public Result update(@RequestBody EnvDeviceEquipment envDeviceEquipment){
         try {
         try {
@@ -61,35 +50,28 @@ public class EnvDeviceEquipmentController {
             EnvDeviceRegister one = deviceRegisterService.getOne(queryWrapper);
             EnvDeviceRegister one = deviceRegisterService.getOne(queryWrapper);
             String chipId = one.getChipId();
             String chipId = one.getChipId();
             log.info("-------获取设备编码:"+chipId);
             log.info("-------获取设备编码:"+chipId);
-            PublishMQTT publishMQTT = new PublishMQTT();
+//            PublishMQTT publishMQTT = new PublishMQTT();
             log.info("-----开始配置消息----");
             log.info("-----开始配置消息----");
             QueryWrapper<EnvDeviceEquipment> queryWrapper1 = new QueryWrapper<>();
             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);
             List<EnvDeviceEquipment> list = envDeviceEquipmentService.list(queryWrapper1);
-            String deviceStatus = "";
+            StringBuilder deviceStatus = new StringBuilder();
             for (EnvDeviceEquipment envDeviceEquipment1 : list) {
             for (EnvDeviceEquipment envDeviceEquipment1 : list) {
-                deviceStatus = deviceStatus + envDeviceEquipment1.getUploadStart();
+                deviceStatus.append(envDeviceEquipment1.getUploadStart());
             }
             }
-            String s = deviceStatus;
+            String s = deviceStatus.toString();
             int i = Integer.parseInt(s, 2);
             int i = Integer.parseInt(s, 2);
             JSONObject jsonObject  =new JSONObject();
             JSONObject jsonObject  =new JSONObject();
             jsonObject.put("dev_ctrl",i);
             jsonObject.put("dev_ctrl",i);
             log.info("消息配置完成开始发送:"+jsonObject.toJSONString());
             log.info("消息配置完成开始发送:"+jsonObject.toJSONString());
-            publishMQTT.start("tcp://115.238.57.190:1883","test"+chipId,"admin","admin","huimv_down_"+chipId,jsonObject.toJSONString());
-            ConsumerMQTT consumerMQTT = new ConsumerMQTT();
-            consumerMQTT.start("tcp://115.238.57.190:1883","controller","admin","admin","huimv_up_"+chipId);
-
-            QueryWrapper<EnvTopic> topicQueryWrapper = new QueryWrapper<>();
-            topicQueryWrapper.orderByDesc("time").last(" limit 1");
-            EnvTopic topic = topicService.getOne(topicQueryWrapper);
-            if (ObjectUtil.isEmpty(topic)) {
-                return new Result(10000, "操作成功", true);
-            }
-            if (topic.getTopic() == 0) {
-                return new Result(10000, "操作成功", true);
-            } else {
-                return new Result(10001, "操作失败,请重新操作", false);
+            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);
             }
             }
+
         }catch (Exception e){
         }catch (Exception e){
             System.out.println("22222222222"+e);
             System.out.println("22222222222"+e);
             return new Result(10001,"修改失败",false);
             return new Result(10001,"修改失败",false);

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

@@ -60,7 +60,6 @@ public class PublishMQTT {
 //                LOGGER.error(e.getLocalizedMessage());
 //                LOGGER.error(e.getLocalizedMessage());
                 System.out.println("1111111111"+e);
                 System.out.println("1111111111"+e);
             }
             }
-
         } catch (Exception e) {
         } catch (Exception e) {
             e.printStackTrace();
             e.printStackTrace();
         }
         }

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

@@ -0,0 +1,113 @@
+package com.huimv.env.manage.saas.mqtt.publish;
+
+import org.eclipse.paho.client.mqttv3.MqttClient;
+import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
+import org.eclipse.paho.client.mqttv3.MqttMessage;
+import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.stereotype.Component;
+
+import java.sql.*;
+
+@Configuration
+@Component
+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 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;
+
+        try {
+            // host为主机名,clientid即连接MQTT的客户端ID,一般以唯一标识符表示,MemoryPersistence设置clientid的保存形式,默认为以内存保存
+            client = new MqttClient(HOST, clientid, new MemoryPersistence());
+            // MQTT的连接设置
+            options = new MqttConnectOptions();
+            // 设置是否清空session,这里如果设置为false表示服务器会保留客户端的连接记录,设置为true表示每次连接到服务器都以新的身份连接
+            options.setCleanSession(true);
+            // 设置连接的用户名
+            options.setUserName(userName);
+            // 设置连接的密码
+            options.setPassword(passWord.toCharArray());
+            // 设置超时时间 单位为秒
+            options.setConnectionTimeout(10);
+            // 设置会话心跳时间 单位为秒 服务器会每隔1.5*20秒的时间向客户端发送个消息判断客户端是否在线,但这个方法并没有重连的机制
+            options.setKeepAliveInterval(20);
+            //设置断开后重新连接
+            options.setAutomaticReconnect(true);
+
+            client.connect(options);
+
+//            pubMessage(client,"list",topic);
+            MqttMessage mess = new MqttMessage();
+            mess.setQos(1);
+            mess.setRetained(true);
+            mess.setPayload(message.getBytes());
+            return topublish(client,topic,mess);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+
+    private Boolean topublish(MqttClient client, String topic, MqttMessage mess) {
+        try {
+            client.publish(topic, mess);
+            return true;
+        } catch (Exception e) {
+//                LOGGER.error(e.getLocalizedMessage());
+            System.out.println("1111111111"+e);
+            return false;
+        }
+    }
+
+    /**
+     * 消息发送
+     * @param message
+     * @param topic
+     */
+    public void pubMessage(MqttClient client,String message,String topic){
+        MqttMessage mess = new MqttMessage();
+        mess.setQos(1);
+        mess.setRetained(true);
+        mess.setPayload(message.getBytes());
+        try {
+            client.publish(topic, mess);
+        } catch (Exception e) {
+            //LOGGER.error(e.getLocalizedMessage());
+        }
+    }
+
+    /*
+     * 连接数据库
+     * */
+    public String Connect(String chipId) throws SQLException, ClassNotFoundException {
+
+
+            //1.加载驱动
+            Class.forName("com.mysql.cj.jdbc.Driver");
+            //2.链接数据库
+            String url = "jdbc:mysql://122.112.224.199:3306/huimv-env-platform-qingshan";
+            Connection conn = DriverManager.getConnection(url, "qingshan", "qingshan@2022");
+            System.out.println("开始连接"+conn);
+            //3.获取statement对象
+            Statement statement = conn.createStatement();
+            String sql = "select chip_id from env_device_register where chip_id=".concat(chipId);
+            //4.获取结果集
+            ResultSet resultSet = statement.executeQuery(sql);
+            resultSet.next();//这个一定不能少,指针取值
+            String deviceCode = resultSet.getString("chip_id");
+            System.out.println(deviceCode);
+
+        return deviceCode;
+    }
+
+}