From f065e0997f11eb3507ea7f97d8879103c47f6785 Mon Sep 17 00:00:00 2001
From: aijinhui <aijinhui>
Date: Wed, 22 Nov 2023 15:54:41 +0800
Subject: [PATCH] 清淤越界处理

---
 ard-work/src/main/java/com/ruoyi/utils/qymqtt/PushCallback.java               |    2 
 ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarLockServiceImpl.java |   10 +-
 ard-work/src/main/java/com/ruoyi/utils/qymqtt/AutoMqtt.java                   |    3 
 ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java         |  119 ++++++++++++++++++++-------------------
 4 files changed, 68 insertions(+), 66 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 cc3d87e..8517bb0 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
@@ -443,74 +443,75 @@
         }else if("施封".equals(type)){
             fengType = 0;
         }
-        //1解封
-        if(fengType==1){
-            //如果不是解封封状态,则发送施封命令
-            if(ardSyCarLocks.get(0).getRelayInfo()==0){
-                Map<String,Object> map = new HashMap<>();
-                map.put("A01", 110000);//导通第一路继电器
-                map.put("A02", 110000);//导通第二路继电器
-                map.put("res", String.valueOf(System.currentTimeMillis()));
-                String mapString = com.alibaba.fastjson.JSON.toJSONString(map);
-                MqttCustomerClient mqttCustomerClient = new MqttCustomerClient();
-                mqttCustomerClient.connect(carId+"change");
-                mqttCustomerClient.pushlish(ardSyCarRtu.getTopicPublish(),mapString);
-                log.info("车辆"+carId+"解封命令发送成功!");
-//                mqttOnce.publishCar(carId,ardSyCarRtu.getTopicPublish(),String.valueOf(new JSONObject(map)),"解封");
-            }
-        }
-        //0施封
-        if(fengType==0){
-            //锁开关状态
-            int lockCloseNum = 0;
-            //如果不是施封状态,则发送施封命令
-            if(ardSyCarLocks.get(0).getRelayInfo()==1){
-                for (int j = 0; j < ardSyCarLocks.size(); j++) {
-                    ArdSyCarLock ardSyCarLock = ardSyCarLocks.get(j);
-                    String currents = ardSyCarLock.getCurrents();
-                    Double currentInfo = ardSyCarLock.getCurrentInfo();
-                    //电流值为4.0是关锁状态
-                    if(currentInfo.equals(4.00) || currentInfo.equals(4)){
-                        lockCloseNum += 1;
-                    }else {
-                        String key = "";
-                        if(currents.equals("C01")){
-                            key = "D03";
-                        }else if(currents.equals("C02")){
-                            key = "D04";
-                        }
-                        Map<String,Object> map = new HashMap();
-                        map.put(key, 0.01);
-                        map.put("res", String.valueOf(System.currentTimeMillis()));
-                        String mapString = com.alibaba.fastjson.JSON.toJSONString(map);
-                        MqttCustomerClient mqttCustomerClient = new MqttCustomerClient();
-                        mqttCustomerClient.connect(carId+"change");
-                        mqttCustomerClient.pushlish(ardSyCarRtu.getTopicPublish(),mapString);
-//                        mqttOnce.publishCar("carId",ardSyCarRtu.getTopicPublish(),String.valueOf(new JSONObject(map)),"开锁:"+currents);
-                        while(true){
-                            ArdSyCarLock ardSyCarLock1 = lockService.getCurrentInfo(ardSyCarRtu.getId(),currents);
-                            Double currentInfo1 = ardSyCarLock1.getCurrentInfo();
-                            if(currentInfo1.equals(4.00) || currentInfo1.equals(4)){
-                                lockCloseNum +=1;
-                                break;
-                            }
-                        }
-                    }
-                }
-                if(lockCloseNum == 2){
+        if(ardSyCarLocks.size()>0){
+            //1解封
+            if(fengType==1){
+                //如果不是解封封状态,则发送施封命令
+                if(ardSyCarLocks.get(0).getRelayInfo()==0){
                     Map<String,Object> map = new HashMap<>();
-                    map.put("A01", 100000);//断开第一路继电器
-                    map.put("A02", 100000);//断开第二路继电器
+                    map.put("A01", 110000);//导通第一路继电器
+                    map.put("A02", 110000);//导通第二路继电器
                     map.put("res", String.valueOf(System.currentTimeMillis()));
                     String mapString = com.alibaba.fastjson.JSON.toJSONString(map);
                     MqttCustomerClient mqttCustomerClient = new MqttCustomerClient();
                     mqttCustomerClient.connect(carId+"change");
                     mqttCustomerClient.pushlish(ardSyCarRtu.getTopicPublish(),mapString);
-                    log.info("车辆"+carId+"施封命令发送成功!");
+                    log.info("车辆"+carId+"解封命令发送成功!");
+//                mqttOnce.publishCar(carId,ardSyCarRtu.getTopicPublish(),String.valueOf(new JSONObject(map)),"解封");
+                }
+            }
+            //0施封
+            if(fengType==0){
+                //锁开关状态
+                int lockCloseNum = 0;
+                //如果不是施封状态,则发送施封命令
+                if(ardSyCarLocks.get(0).getRelayInfo()==1){
+                    for (int j = 0; j < ardSyCarLocks.size(); j++) {
+                        ArdSyCarLock ardSyCarLock = ardSyCarLocks.get(j);
+                        String currents = ardSyCarLock.getCurrents();
+                        Double currentInfo = ardSyCarLock.getCurrentInfo();
+                        //电流值为4.0是关锁状态
+                        if(currentInfo.equals(4.00) || currentInfo.equals(4)){
+                            lockCloseNum += 1;
+                        }else {
+                            String key = "";
+                            if(currents.equals("C01")){
+                                key = "D03";
+                            }else if(currents.equals("C02")){
+                                key = "D04";
+                            }
+                            Map<String,Object> map = new HashMap();
+                            map.put(key, 0.01);
+                            map.put("res", String.valueOf(System.currentTimeMillis()));
+                            String mapString = com.alibaba.fastjson.JSON.toJSONString(map);
+                            MqttCustomerClient mqttCustomerClient = new MqttCustomerClient();
+                            mqttCustomerClient.connect(carId+"change");
+                            mqttCustomerClient.pushlish(ardSyCarRtu.getTopicPublish(),mapString);
+//                        mqttOnce.publishCar("carId",ardSyCarRtu.getTopicPublish(),String.valueOf(new JSONObject(map)),"开锁:"+currents);
+                            while(true){
+                                ArdSyCarLock ardSyCarLock1 = lockService.getCurrentInfo(ardSyCarRtu.getId(),currents);
+                                Double currentInfo1 = ardSyCarLock1.getCurrentInfo();
+                                if(currentInfo1.equals(4.00) || currentInfo1.equals(4)){
+                                    lockCloseNum +=1;
+                                    break;
+                                }
+                            }
+                        }
+                    }
+                    if(lockCloseNum == 2){
+                        Map<String,Object> map = new HashMap<>();
+                        map.put("A01", 100000);//断开第一路继电器
+                        map.put("A02", 100000);//断开第二路继电器
+                        map.put("res", String.valueOf(System.currentTimeMillis()));
+                        String mapString = com.alibaba.fastjson.JSON.toJSONString(map);
+                        MqttCustomerClient mqttCustomerClient = new MqttCustomerClient();
+                        mqttCustomerClient.connect(carId+"change");
+                        mqttCustomerClient.pushlish(ardSyCarRtu.getTopicPublish(),mapString);
+                        log.info("车辆"+carId+"施封命令发送成功!");
 //                    mqttOnce.publishCar(carId,ardSyCarRtu.getTopicPublish(),String.valueOf(new JSONObject(map)),"施封");
+                    }
                 }
             }
         }
     }
-
 }
diff --git a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarLockServiceImpl.java b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarLockServiceImpl.java
index a761b97..7bfbea3 100644
--- a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarLockServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarLockServiceImpl.java
@@ -340,13 +340,13 @@
         }else if(currents.equals("C02")){
             key = "D04";
         }
-        Number lockState = (Number) lockTypeParam.getNum();
-        if(lockState.equals(100)){
+        double lockState = lockTypeParam.getNum();
+        if(lockState==100){
             lockState = 99.99;
-        }else if(lockState.equals(0)){
+        }else if(lockState==0){
             lockState = 0.01;
         }else{
-            lockState = lockState.doubleValue() + 0.01;
+            lockState = lockState + 0.01;
         }
         Map<String,Object> map = new HashMap();
         map.put(key, lockState);//范围是0.01到99.99
@@ -354,7 +354,7 @@
         String mapString = JSON.toJSONString(map);
         System.out.println(mapString);
         MqttCustomerClient mqttCustomerClient = new MqttCustomerClient();
-        mqttCustomerClient.connect(lockTypeParam.getCarId()+"change");
+        mqttCustomerClient.connect(lockTypeParam.getCarId()+"change"+UUID.randomUUID());
         mqttCustomerClient.pushlish(ardSyCarRtu.getTopicPublish(),mapString);
         return AjaxResult.success("开关锁命令发送成功,发送进度为"+lockTypeParam.getNum());
 //        QueryWrapper<SysConfig> queryWrapper1 = new QueryWrapper<>();
diff --git a/ard-work/src/main/java/com/ruoyi/utils/qymqtt/AutoMqtt.java b/ard-work/src/main/java/com/ruoyi/utils/qymqtt/AutoMqtt.java
index 455d8a1..864148a 100644
--- a/ard-work/src/main/java/com/ruoyi/utils/qymqtt/AutoMqtt.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/qymqtt/AutoMqtt.java
@@ -8,6 +8,7 @@
 
 import javax.annotation.PostConstruct;
 import java.util.List;
+import java.util.UUID;
 
 @Slf4j
 @Component
@@ -28,7 +29,7 @@
             String subscribe = rtu.getTopicSubscribe();
             try {
                 MqttCustomerClient mqttCustomerClient = new MqttCustomerClient();
-                mqttCustomerClient.connect(carId+"mqtt");
+                mqttCustomerClient.connect(carId+"mqtt"+ UUID.randomUUID());
                 mqttCustomerClient.subscribe(subscribe);
             }catch (Exception e) {
                 e.printStackTrace();
diff --git a/ard-work/src/main/java/com/ruoyi/utils/qymqtt/PushCallback.java b/ard-work/src/main/java/com/ruoyi/utils/qymqtt/PushCallback.java
index 910d32f..4f9fb64 100644
--- a/ard-work/src/main/java/com/ruoyi/utils/qymqtt/PushCallback.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/qymqtt/PushCallback.java
@@ -46,7 +46,7 @@
     @Override
     public void messageArrived(String topic, MqttMessage message) throws Exception {
         try {
-//            System.out.println("【车辆锁主题】:"+topic+"【车辆锁信息】:"+new String(message.getPayload(), StandardCharsets.UTF_8));
+            System.out.println("【车辆锁主题】:"+topic+"【车辆锁信息】:"+new String(message.getPayload(), StandardCharsets.UTF_8));
             //出来回调数据
             List<ArdSyCarLock> ardSyCarLocks = carLockService.data(new String(message.getPayload(), StandardCharsets.UTF_8));
             //根据topic查询RTUID

--
Gitblit v1.9.3