From 2c2580fbf0bd6b28f84ab8f3949e1b5be464bcb3 Mon Sep 17 00:00:00 2001
From: aijinhui <aijinhui>
Date: 星期三, 08 十一月 2023 17:02:14 +0800
Subject: [PATCH] mqtt锁状态

---
 ard-work/src/main/java/com/ruoyi/sy/service/ArdSyCarRtuService.java          |   15 +++++
 ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttOnce.java                    |   32 ++++++++++
 ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java        |   31 ++++++++--
 ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarRtuServiceImpl.java |   41 +++++++++++++
 ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumerCallback.java        |    3 +
 5 files changed, 116 insertions(+), 6 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java b/ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java
index 0c01de8..c5dd1f9 100644
--- a/ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java
+++ b/ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java
@@ -8,19 +8,18 @@
 package com.ruoyi.sy.gps31;
 
 import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
 import com.gps31.push.netty.PushClient;
 import com.gps31.push.netty.PushMsg;
 import com.gps31.push.netty.client.TcpClient;
 import com.gps31.push.util.MapUtil;
 import com.ruoyi.common.utils.spring.SpringUtils;
-import com.ruoyi.sy.domain.ArdAccessFence;
-import com.ruoyi.sy.domain.ArdAccessNum;
-import com.ruoyi.sy.domain.ArdOilWall;
-import com.ruoyi.sy.domain.ArdSyCarLock;
+import com.ruoyi.sy.domain.*;
 import com.ruoyi.sy.service.ArdAccessFenceService;
 import com.ruoyi.sy.service.ArdOilWallService;
 import com.ruoyi.sy.service.impl.*;
 import com.ruoyi.utils.gps.GeoTools;
+import com.ruoyi.utils.mqtt.MqttConsumer;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -183,7 +182,6 @@
                                     break;
                                 }
                             }
-                            ((ArdAccessFenceServiceImpl)SpringUtils.getBean("ArdAccessFenceServiceImpl")).updAccess(ardAccessFence);
                         }else {
                             //濡傛灉鏈夎繘鍏ュ洿鏍廔D锛屽垽鏂槸鍚﹀紑鍑鸿娌圭偣
                             String out = ardAccessFence.getOutShipmentId();
@@ -212,9 +210,10 @@
                                 //濡傛灉unload涓虹┖锛屽垽鏂槸鍚﹁繘鍏ュ嵏娌圭偣
                                 if (unload == null) {
                                     //杞﹁締鏈繘鍏ュ嵏娌圭偣
-                                    List<ArdOilWall> ardOilWallUpload = SpringUtils.getBean(ArdOilWallService.class).uploadAll();
+                                    List<ArdOilWall> ardOilWallUpload = ((ArdOilWallServiceImpl)SpringUtils.getBean("ArdOilWallServiceImpl")).uploadAll();
                                     //鏄惁鍦ㄨ矾涓�
                                     Boolean isRoad = true;
+                                    //鍒ゆ柇鏄惁杩涘幓鍗告补鐐�
                                     for (int i = 0; i < ardOilWallUpload.size(); i++) {
                                         pts.clear();
                                         ArdOilWall ardOilWall = ardOilWallUpload.get(i);
@@ -231,6 +230,17 @@
                                             ardAccessFence.setNowWallName(ardOilWall.getName());
                                             ardAccessFence.setLastTime(time);
                                             ((ArdAccessFenceServiceImpl) SpringUtils.getBean("ArdAccessFenceServiceImpl")).updAccess(ardAccessFence);
+                                            //鍙戦�佽В灏佹寚浠�
+                                            ArdSyCarRtu ardSyCarRtu = ((ArdSyCarRtuServiceImpl) SpringUtils.getBean("ArdSyCarRtuServiceImpl")).one(carId);
+                                            if(ardSyCarRtu!=null){
+                                                Map<String,Object> map = new HashMap<>();
+                                                map.put("A01", 110000);//瀵奸�氱涓�璺户鐢靛櫒
+//                                                map.put("A02", 110000);//瀵奸�氱浜岃矾缁х數鍣�
+                                                map.put("res", String.valueOf(System.currentTimeMillis()));
+                                                MqttConsumer.publish(ardSyCarRtu.getTopicSubscribe(), String.valueOf(new JSONObject(map)));
+                                            }else {
+                                                log.error("杞﹁締"+carId+"鏃犻攣鐘舵��");
+                                            }
                                             //宸茬粡杩涘叆鍗告补鐐癸紝涓嶅湪璺笂涓嶉渶瑕佸仠杞︽姤璀�
                                             isRoad = false;
                                             break;
@@ -273,6 +283,15 @@
                                     }
                                     if (!GeoTools.IsPtInPoly(point, pts)) {
                                         //寮�鍑轰簡鍗告补鐐瑰洿鏍忥紝鍒犻櫎璇ユ潯杞﹁締鏁版嵁
+                                        //鍙戦�佽В灏佹寚浠�
+                                        ArdSyCarRtu ardSyCarRtu = ((ArdSyCarRtuServiceImpl) SpringUtils.getBean("ArdSyCarRtuServiceImpl")).one(carId);
+                                        if(ardSyCarRtu!=null) {
+                                            Map<String, Object> map = new HashMap<>();
+                                            map.put("A01", 100000);//鏂紑绗竴璺户鐢靛櫒
+//                                            map.put("A02", 100000);//鏂紑绗簩璺户鐢靛櫒
+                                            map.put("res", String.valueOf(System.currentTimeMillis()));
+                                            MqttConsumer.publish(ardSyCarRtu.getTopicSubscribe(), String.valueOf(new JSONObject(map)));
+                                        }
                                         ((ArdAccessFenceServiceImpl) SpringUtils.getBean("ArdAccessFenceServiceImpl")).delAccess(carId);
                                     }else {
                                         //鏈紑鍑哄嵏娌圭偣锛屾洿鏂扮粡绾害淇濆瓨
diff --git a/ard-work/src/main/java/com/ruoyi/sy/service/ArdSyCarRtuService.java b/ard-work/src/main/java/com/ruoyi/sy/service/ArdSyCarRtuService.java
new file mode 100644
index 0000000..2c37a81
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/sy/service/ArdSyCarRtuService.java
@@ -0,0 +1,15 @@
+package com.ruoyi.sy.service;
+
+import com.ruoyi.sy.domain.ArdSyCarRtu;
+
+import java.util.List;
+
+/**
+ * @author Administrator
+ */
+public interface ArdSyCarRtuService {
+
+    String allCarTopic();
+
+    ArdSyCarRtu one(String carId);
+}
diff --git a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarRtuServiceImpl.java b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarRtuServiceImpl.java
new file mode 100644
index 0000000..9536d9b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarRtuServiceImpl.java
@@ -0,0 +1,41 @@
+package com.ruoyi.sy.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.ruoyi.sy.domain.ArdSyCarRtu;
+import com.ruoyi.sy.mapper.ArdSyCarRtuMapper;
+import com.ruoyi.sy.service.ArdSyCarRtuService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * @author Administrator
+ */
+@Service
+public class ArdSyCarRtuServiceImpl implements ArdSyCarRtuService {
+
+    @Autowired
+    private ArdSyCarRtuMapper ardSyCarRtuMapper;
+
+    @Override
+    public String allCarTopic() {
+        List<ArdSyCarRtu> carRtus = ardSyCarRtuMapper.selectList(null);
+        List<String> list = new ArrayList<>();
+        for (int i = 0; i < carRtus.size(); i++) {
+            list.add(carRtus.get(i).getTopicPublish());
+        }
+        String[] topicArray = list.toArray(new String[list.size()]);
+        return Arrays.toString(topicArray);
+    }
+
+    @Override
+    public ArdSyCarRtu one(String carId) {
+        QueryWrapper<ArdSyCarRtu> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("car_id",carId);
+        return ardSyCarRtuMapper.selectOne(queryWrapper);
+    }
+
+}
diff --git a/ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumerCallback.java b/ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumerCallback.java
index 29965fa..b172d0e 100644
--- a/ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumerCallback.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumerCallback.java
@@ -91,6 +91,9 @@
                 ArdRadarService ardRadarService = SpringUtils.getBean(ArdRadarService.class);
                 ardRadarService.forceGuide(new String(message.getPayload(), StandardCharsets.UTF_8));
             }
+            if(topic.contains("/p")){
+                System.out.println(new String(message.getPayload(), StandardCharsets.UTF_8));
+            }
         } catch (Exception e) {
             log.debug("澶勭悊mqtt娑堟伅寮傚父:" + e);
         }
diff --git a/ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttOnce.java b/ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttOnce.java
new file mode 100644
index 0000000..567b852
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttOnce.java
@@ -0,0 +1,32 @@
+package com.ruoyi.utils.mqtt;
+
+import com.ruoyi.sy.domain.ArdSyCarRtu;
+import com.ruoyi.sy.mapper.ArdSyCarRtuMapper;
+import com.ruoyi.sy.service.ArdSyCarRtuService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * @author Administrator
+ */
+@Slf4j
+@Component
+public class MqttOnce implements CommandLineRunner {
+
+    @Autowired
+    private ArdSyCarRtuService ardSyCarRtuService;
+
+    @Override
+    public void run(String... args) throws Exception {
+        String topic = ardSyCarRtuService.allCarTopic();
+        MqttConsumer mqttConsumer = new MqttConsumer();
+        mqttConsumer.subscribe(topic,2);
+        log.info("mqtt璁㈤槄娓呮筏杞﹁締閿佷俊鎭細"+topic);
+    }
+}

--
Gitblit v1.9.3