From a2ab48f60c56611cee0d57634706c71ef08b2f8d Mon Sep 17 00:00:00 2001
From: aijinhui <aijinhui>
Date: 星期三, 22 十一月 2023 11:57:59 +0800
Subject: [PATCH] 获取电磁锁地址

---
 ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarLockServiceImpl.java |  141 +++++++++++++++++++++++++++++++++++-----------
 1 files changed, 106 insertions(+), 35 deletions(-)

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 6f80f7c..a761b97 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
@@ -1,5 +1,6 @@
 package com.ruoyi.sy.service.impl;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.ruoyi.common.core.domain.AjaxResult;
@@ -12,17 +13,18 @@
 import com.ruoyi.sy.mapper.ArdSyCarRtuMapper;
 import com.ruoyi.sy.param.AddRtuParam;
 import com.ruoyi.sy.param.LockTypeParam;
+import com.ruoyi.sy.param.RtuTypeParam;
 import com.ruoyi.sy.service.ArdSyCarLockService;
 import com.ruoyi.sy.vo.CarVo;
 import com.ruoyi.sy.vo.RtuVo;
+import com.ruoyi.system.mapper.SysConfigMapper;
 import com.ruoyi.system.mapper.SysDeptMapper;
-import com.ruoyi.utils.mqtt.MqttOnce;
+import com.ruoyi.utils.qymqtt.MqttCustomerClient;
 import lombok.extern.slf4j.Slf4j;
 import org.eclipse.paho.client.mqttv3.MqttException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.text.DecimalFormat;
 import java.util.*;
 
 /**
@@ -40,6 +42,8 @@
     private ArdSyCarRtuMapper rtuMapper;
     @Autowired
     private ArdSyCarLockMapper lockMapper;
+    @Autowired
+    private SysConfigMapper configMapper;
 
 
     @Override
@@ -73,8 +77,9 @@
         ArdSyCar ardSyCar = ardSyCarMapper.selectOne(queryWrapper);
         ardSyCar.setReserved1(ardSyCarRtu.getId());
         ardSyCarMapper.updateById(ardSyCar);
-        MqttOnce mqttOnce = new MqttOnce();
-        mqttOnce.subscribeCar(ardSyCarRtu);
+        MqttCustomerClient mqttCustomerClient = new MqttCustomerClient();
+        mqttCustomerClient.connect(addRtuParam.getCarId()+"mqtt");
+        mqttCustomerClient.subscribe(ardSyCarRtu.getTopicSubscribe());
         return num;
     }
 
@@ -88,6 +93,11 @@
 
     @Override
     public int delCar(String id) {
+        ArdSyCarRtu ardSyCarRtu = rtuMapper.selectById(id);
+        String subscribe = ardSyCarRtu.getTopicSubscribe();
+        MqttCustomerClient mqttCustomerClient = new MqttCustomerClient();
+        mqttCustomerClient.connect(ardSyCarRtu.getCarId()+"del");
+        mqttCustomerClient.unSubscribe(subscribe);
         rtuMapper.deleteById(id);
         QueryWrapper<ArdSyCarLock> queryWrapper1 = new QueryWrapper<>();
         queryWrapper1.eq("rtu_id",id);
@@ -196,21 +206,23 @@
 
     @Override
     public List<ArdSyCarLock> data(String msg) {
-        String pattern = "0.00"; // 鎸囧畾淇濈暀涓や綅灏忔暟鐨勬牸寮�
-        DecimalFormat decimalFormat = new DecimalFormat(pattern); //
+//        String pattern = "0.00"; // 鎸囧畾淇濈暀涓や綅灏忔暟鐨勬牸寮�
+//        DecimalFormat decimalFormat = new DecimalFormat(pattern); //
         JSONObject jsonObject = JSONObject.parseObject(msg);
         List<ArdSyCarLock> lockList = new ArrayList<>();
         ArdSyCarLock ardSyCarLock1 = new ArdSyCarLock();
         ardSyCarLock1.setRelay("A01");
-        ardSyCarLock1.setRelayInfo(String.valueOf(jsonObject.getInteger("A01")));
+//        ardSyCarLock1.setRelayInfo(String.valueOf(jsonObject.getInteger("A01")));
+        ardSyCarLock1.setRelayInfo(jsonObject.getInteger("A01"));
         ardSyCarLock1.setCurrents("C01");
-        ardSyCarLock1.setCurrentInfo(decimalFormat.format(jsonObject.getDouble("C01")));
+//        ardSyCarLock1.setCurrentInfo(decimalFormat.format(jsonObject.getDouble("C01")));
+        ardSyCarLock1.setCurrentInfo(jsonObject.getDouble("C01"));
         lockList.add(ardSyCarLock1);
         ArdSyCarLock ardSyCarLock2 = new ArdSyCarLock();
         ardSyCarLock2.setRelay("A02");
-        ardSyCarLock2.setRelayInfo(String.valueOf(jsonObject.getInteger("A02")));
+        ardSyCarLock2.setRelayInfo(jsonObject.getInteger("A02"));
         ardSyCarLock2.setCurrents("C02");
-        ardSyCarLock2.setCurrentInfo(decimalFormat.format(jsonObject.getDouble("C02")));
+        ardSyCarLock2.setCurrentInfo(jsonObject.getDouble("C02"));
         lockList.add(ardSyCarLock2);
         return lockList;
     }
@@ -228,25 +240,29 @@
     }
 
     @Override
-    public AjaxResult seal(LockTypeParam lockTypeParam) {
+    public AjaxResult seal(RtuTypeParam rtuTypeParam) {
         QueryWrapper<ArdSyCarRtu> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("carId",lockTypeParam.getCarId());
+        queryWrapper.eq("carId",rtuTypeParam.getCarId());
         ArdSyCarRtu ardSyCarRtu = rtuMapper.selectOne(queryWrapper);
-        MqttOnce mqttOnce = new MqttOnce();
         //1瑙e皝
-        if(lockTypeParam.getType()==1){
+        if(rtuTypeParam.getType()==1){
             Map<String,Object> map = new HashMap<>();
             map.put("A01", 110000);//瀵奸�氱涓�璺户鐢靛櫒
             map.put("A02", 110000);//瀵奸�氱浜岃矾缁х數鍣�
             map.put("res", String.valueOf(System.currentTimeMillis()));
+            String mapString = JSON.toJSONString(map);
             try {
-                return AjaxResult.success(mqttOnce.publishCar(lockTypeParam.getCarId(),ardSyCarRtu.getTopicPublish(),String.valueOf(new com.alibaba.fastjson2.JSONObject(map)),"瑙e皝"));
+                MqttCustomerClient mqttCustomerClient = new MqttCustomerClient();
+                mqttCustomerClient.connect(rtuTypeParam.getCarId()+"change");
+                mqttCustomerClient.pushlish(ardSyCarRtu.getTopicPublish(),mapString);
+                return AjaxResult.success("瑙e皝鍛戒护鍙戦�佹垚鍔燂紒");
+//                return AjaxResult.success(mqttOnce.publishCar(rtuTypeParam.getCarId(),ardSyCarRtu.getTopicPublish(),String.valueOf(new com.alibaba.fastjson2.JSONObject(map)),"瑙e皝"));
             } catch (MqttException e) {
                 log.debug("瑙e皝鎸囦护鍙戠敓澶辫触"+e);
             }
         }
         //0鏂藉皝
-        if(lockTypeParam.getType()==0){
+        if(rtuTypeParam.getType()==0){
             //閿佸紑鍏崇姸鎬�
             int lockCloseNum = 0;
             //鏌ヨ閿佷俊鎭�
@@ -254,9 +270,9 @@
             for (int j = 0; j < ardSyCarLocks.size(); j++) {
                 ArdSyCarLock ardSyCarLock = ardSyCarLocks.get(j);
                 String currents = ardSyCarLock.getCurrents();
-                String currentInfo = ardSyCarLock.getCurrentInfo();
+                Double currentInfo = ardSyCarLock.getCurrentInfo();
                 //鐢垫祦鍊间负4.0鏄叧閿佺姸鎬�
-                if(currentInfo.equals(4.00)){
+                if(currentInfo.equals(4.00) || currentInfo.equals(4)){
                     lockCloseNum += 1;
                 }else {
                     String key = "";
@@ -268,15 +284,19 @@
                     Map<String,Object> map = new HashMap();
                     map.put(key, 0.01);
                     map.put("res", String.valueOf(System.currentTimeMillis()));
+                    String mapString = JSON.toJSONString(map);
                     try {
-                        mqttOnce.publishCar("carId",ardSyCarRtu.getTopicPublish(),String.valueOf(new com.alibaba.fastjson2.JSONObject(map)),"寮�閿侊細"+currents);
+                        MqttCustomerClient mqttCustomerClient = new MqttCustomerClient();
+                        mqttCustomerClient.connect(rtuTypeParam.getCarId()+"change");
+                        mqttCustomerClient.pushlish(ardSyCarRtu.getTopicPublish(),mapString);
+//                        mqttOnce.publishCar("carId",ardSyCarRtu.getTopicPublish(),String.valueOf(new com.alibaba.fastjson2.JSONObject(map)),"寮�閿侊細"+currents);
                     } catch (MqttException e) {
                         log.debug("寮�閿佹寚浠ゅ彂鐢熷け璐�"+e);
                     }
                     while(true){
                         ArdSyCarLock ardSyCarLock1 = getCurrentInfo(ardSyCarRtu.getId(),currents);
-                        String currentInfo1 = ardSyCarLock1.getCurrentInfo();
-                        if(currentInfo1.equals(4.00)){
+                        Double currentInfo1 = ardSyCarLock1.getCurrentInfo();
+                        if(currentInfo1.equals(4.00) || currentInfo1.equals(4)){
                             lockCloseNum +=1;
                             break;
                         }
@@ -288,8 +308,13 @@
                 map.put("A01", 100000);//鏂紑绗竴璺户鐢靛櫒
                 map.put("A02", 100000);//鏂紑绗簩璺户鐢靛櫒
                 map.put("res", String.valueOf(System.currentTimeMillis()));
+                String mapString = JSON.toJSONString(map);
                 try {
-                    return AjaxResult.success(mqttOnce.publishCar(lockTypeParam.getCarId(),ardSyCarRtu.getTopicPublish(),String.valueOf(new com.alibaba.fastjson2.JSONObject(map)),"鏂藉皝"));
+                    MqttCustomerClient mqttCustomerClient = new MqttCustomerClient();
+                    mqttCustomerClient.connect(rtuTypeParam.getCarId()+"change");
+                    mqttCustomerClient.pushlish(ardSyCarRtu.getTopicPublish(),mapString);
+                    return AjaxResult.success("鏂藉皝鍛戒护鍙戠敓鎴愬姛锛�");
+//                    return AjaxResult.success(mqttOnce.publishCar(rtuTypeParam.getCarId(),ardSyCarRtu.getTopicPublish(),String.valueOf(new com.alibaba.fastjson2.JSONObject(map)),"鏂藉皝"));
                 } catch (MqttException e) {
                     log.debug("鏂藉皝鎸囦护鍙戠敓澶辫触"+e);
                 }
@@ -299,20 +324,20 @@
     }
 
     @Override
-    public AjaxResult onOff(LockTypeParam lockTypeParam) {
+    public AjaxResult onOff(LockTypeParam lockTypeParam) throws MqttException {
         QueryWrapper<ArdSyCarRtu> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("car_id",lockTypeParam.getCarId());
         ArdSyCarRtu ardSyCarRtu = rtuMapper.selectOne(queryWrapper);
         ArdSyCarLock ardSyCarLock = lockMapper.selectById(lockTypeParam.getLockId());
-        String relay = ardSyCarLock.getRelayInfo();
+        Integer relay = ardSyCarLock.getRelayInfo();
         if(relay.equals("1")){
             AjaxResult.error(0,"璇ラ攣澶勪簬瑙e皝鐘舵��,杩滅▼鏃犳硶鎿嶆帶,璇峰厛鎵ц鏂藉皝鎿嶄綔!");
         }
         String key = "";
-        String currentInfo = ardSyCarLock.getCurrentInfo();
-        if(currentInfo.equals("C01")){
+        String currents = ardSyCarLock.getCurrents();
+        if(currents.equals("C01")){
             key = "D03";
-        }else if(currentInfo.equals("C02")){
+        }else if(currents.equals("C02")){
             key = "D04";
         }
         Number lockState = (Number) lockTypeParam.getNum();
@@ -326,13 +351,52 @@
         Map<String,Object> map = new HashMap();
         map.put(key, lockState);//鑼冨洿鏄�0.01鍒�99.99
         map.put("res", String.valueOf(System.currentTimeMillis()));
-        MqttOnce mqttOnce = new MqttOnce();
-        try {
-            return AjaxResult.success(mqttOnce.publishCar("carId",ardSyCarRtu.getTopicPublish(),String.valueOf(new com.alibaba.fastjson2.JSONObject(map)),"寮�鍏抽攣鎸囦护"+lockState));
-        } catch (MqttException e) {
-            log.debug("寮�鍏抽攣鎸囦护鍙戦�佸け璐�"+e);
-        }
-        return AjaxResult.success();
+        String mapString = JSON.toJSONString(map);
+        System.out.println(mapString);
+        MqttCustomerClient mqttCustomerClient = new MqttCustomerClient();
+        mqttCustomerClient.connect(lockTypeParam.getCarId()+"change");
+        mqttCustomerClient.pushlish(ardSyCarRtu.getTopicPublish(),mapString);
+        return AjaxResult.success("寮�鍏抽攣鍛戒护鍙戦�佹垚鍔�,鍙戦�佽繘搴︿负"+lockTypeParam.getNum());
+//        QueryWrapper<SysConfig> queryWrapper1 = new QueryWrapper<>();
+//        queryWrapper1.eq("config_key","ElectromagneticLockUrl");
+//        SysConfig sysConfig = configMapper.selectOne(queryWrapper1);
+//        String url = "";
+//        if(sysConfig!=null){
+//            url = sysConfig.getConfigValue();
+//        }else {
+//            return AjaxResult.error("閰嶇疆琛ㄦ棤鍦板潃鏁版嵁");
+//        }
+//        MqttConsumer mqttConsumer = new MqttConsumer();
+//        mqttConsumer.getClientCar(url,lockTypeParam.getCarId());
+//        mqttConsumer.publishCar(1,false,ardSyCarRtu.getTopicPublish(),mapString);
+//        mqttConsumer.disConnect();
+//        return AjaxResult.success();
+        //MqttOnce瀹㈡埛绔�-----寮�濮�
+//        MqttOnce mqttOnce = new MqttOnce();
+//        return AjaxResult.success(mqttOnce.publishCar("carId",ardSyCarRtu.getTopicPublish(), mapString,"寮�鍏抽攣鎸囦护"+lockTypeParam.getNum()));
+        //MqttOnce瀹㈡埛绔�-----缁撴潫
+        //EmqClient瀹㈡埛绔�-----寮�濮�
+//        EmqClient emqClient = new EmqClient("tcp://112.98.126.2:1883",String.valueOf(UUID.randomUUID()));
+//        emqClient.connect("admin","xzx12345");
+//        log.info("涓婚锛�"+ardSyCarRtu.getTopicPublish());
+//        emqClient.publish(ardSyCarRtu.getTopicPublish(),mapString, QosEnum.QoS2,false);
+//        System.out.println("////////////////////");
+//        System.out.println(mapString);
+//        emqClient.disConnect();
+//        return AjaxResult.success(ardSyCarRtu.getTopicPublish()+"寮�鍏抽攣鎸囦护"+lockTypeParam.getNum()+"鍙戝竷鎴愬姛锛�");
+        //EmqClient瀹㈡埛绔�-----缁撴潫
+        //demo------寮�濮�
+//        EmqClient emqClient = new EmqClient("tcp://112.98.126.2:1883","mqttTestp");
+//        emqClient.connect("admin","xzx12345");
+//        Map<String,Object> map = new HashMap();
+//        map.put("D03", 99.99);//鑼冨洿鏄�0.01鍒�99.99
+//        map.put("res", String.valueOf(new Date().getTime()));
+//        System.out.println(map);
+//        String msg = JSON.toJSONString(map);
+//        emqClient.publish("/p14/set/",msg,QosEnum.QoS2,false);
+//        emqClient.disConnect();
+//        return AjaxResult.success();
+        //demo----缁撴潫
     }
 
     @Override
@@ -340,7 +404,14 @@
         QueryWrapper<ArdSyCarRtu> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("car_id",carId);
         ArdSyCarRtu ardSyCarRtu = rtuMapper.selectOne(queryWrapper);
-        return lockMapper.lockList(ardSyCarRtu.getId());
+        List<ArdSyCarLock> locks = lockMapper.lockList(ardSyCarRtu.getId());
+        for (int i = 0; i < locks.size(); i++) {
+            ArdSyCarLock ardSyCarLock = locks.get(i);
+            double info = ardSyCarLock.getCurrentInfo();
+            int d = (int) ((int)(info*150/138.3 - 4)/0.16);
+            ardSyCarLock.setCurrentInfo((double) d);
+        }
+        return locks;
     }
 
 

--
Gitblit v1.9.3