ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarLockServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ard-work/src/main/java/com/ruoyi/utils/qymqtt/AutoMqtt.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ard-work/src/main/java/com/ruoyi/utils/qymqtt/newM/EmqClient.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ard-work/src/main/java/com/ruoyi/utils/qymqtt/newM/MessageCallback.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ard-work/src/main/java/com/ruoyi/utils/qymqtt/newM/QosEnum.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ard-work/src/main/java/com/ruoyi/utils/qymqtt/oldM/MqttCustomerClient.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ard-work/src/main/java/com/ruoyi/utils/qymqtt/oldM/PushCallback.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplPosition.java
@@ -17,7 +17,9 @@ import com.ruoyi.sy.service.*; import com.ruoyi.sy.service.impl.*; import com.ruoyi.utils.gps.GeoTools; import com.ruoyi.utils.qymqtt.MqttCustomerClient; import com.ruoyi.utils.qymqtt.newM.EmqClient; import com.ruoyi.utils.qymqtt.newM.QosEnum; import com.ruoyi.utils.qymqtt.oldM.MqttCustomerClient; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.eclipse.paho.client.mqttv3.MqttException; @@ -453,9 +455,9 @@ 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); EmqClient emqClient = new EmqClient(carId+"mqttPublish"+UUID.randomUUID()); emqClient.connect(); emqClient.publish(ardSyCarRtu.getTopicPublish(),mapString, QosEnum.QoS2,false); log.info("车è¾"+carId+"è§£å°å½ä»¤åéæåï¼"); // mqttOnce.publishCar(carId,ardSyCarRtu.getTopicPublish(),String.valueOf(new JSONObject(map)),"è§£å°"); } @@ -484,9 +486,9 @@ 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); EmqClient emqClient = new EmqClient(carId+"mqttPublish"+UUID.randomUUID()); emqClient.connect(); emqClient.publish(ardSyCarRtu.getTopicPublish(),mapString, QosEnum.QoS2,false); // mqttOnce.publishCar("carId",ardSyCarRtu.getTopicPublish(),String.valueOf(new JSONObject(map)),"å¼éï¼"+currents); while(true){ ArdSyCarLock ardSyCarLock1 = lockService.getCurrentInfo(ardSyCarRtu.getId(),currents); @@ -504,9 +506,9 @@ 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); EmqClient emqClient = new EmqClient(carId+"mqttPublish"+UUID.randomUUID()); emqClient.connect(); emqClient.publish(ardSyCarRtu.getTopicPublish(),mapString, QosEnum.QoS2,false); log.info("车è¾"+carId+"æ½å°å½ä»¤åéæåï¼"); // mqttOnce.publishCar(carId,ardSyCarRtu.getTopicPublish(),String.valueOf(new JSONObject(map)),"æ½å°"); } ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarLockServiceImpl.java
@@ -19,7 +19,9 @@ import com.ruoyi.sy.vo.RtuVo; import com.ruoyi.system.mapper.SysConfigMapper; import com.ruoyi.system.mapper.SysDeptMapper; import com.ruoyi.utils.qymqtt.MqttCustomerClient; import com.ruoyi.utils.qymqtt.newM.EmqClient; import com.ruoyi.utils.qymqtt.newM.QosEnum; import com.ruoyi.utils.qymqtt.oldM.MqttCustomerClient; import lombok.extern.slf4j.Slf4j; import org.eclipse.paho.client.mqttv3.MqttException; import org.springframework.beans.factory.annotation.Autowired; @@ -251,15 +253,11 @@ map.put("A02", 110000);//导é第äºè·¯ç»§çµå¨ map.put("res", String.valueOf(System.currentTimeMillis())); String mapString = JSON.toJSONString(map); try { MqttCustomerClient mqttCustomerClient = new MqttCustomerClient(); mqttCustomerClient.connect(rtuTypeParam.getCarId()+"change"); mqttCustomerClient.pushlish(ardSyCarRtu.getTopicPublish(),mapString); EmqClient emqClient = new EmqClient(rtuTypeParam.getCarId()+"mqttPublish"+UUID.randomUUID()); emqClient.connect(); emqClient.publish(ardSyCarRtu.getTopicPublish(),mapString, QosEnum.QoS2,false); 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); } } //0æ½å° if(rtuTypeParam.getType()==0){ @@ -285,14 +283,10 @@ map.put(key, 0.01); map.put("res", String.valueOf(System.currentTimeMillis())); String mapString = JSON.toJSONString(map); try { MqttCustomerClient mqttCustomerClient = new MqttCustomerClient(); mqttCustomerClient.connect(rtuTypeParam.getCarId()+"change"); mqttCustomerClient.pushlish(ardSyCarRtu.getTopicPublish(),mapString); EmqClient emqClient = new EmqClient(rtuTypeParam.getCarId()+"mqttPublish"+UUID.randomUUID()); emqClient.connect(); emqClient.publish(ardSyCarRtu.getTopicPublish(),mapString, QosEnum.QoS2,false); // 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); Double currentInfo1 = ardSyCarLock1.getCurrentInfo(); @@ -309,15 +303,11 @@ map.put("A02", 100000);//æå¼ç¬¬äºè·¯ç»§çµå¨ map.put("res", String.valueOf(System.currentTimeMillis())); String mapString = JSON.toJSONString(map); try { MqttCustomerClient mqttCustomerClient = new MqttCustomerClient(); mqttCustomerClient.connect(rtuTypeParam.getCarId()+"change"); mqttCustomerClient.pushlish(ardSyCarRtu.getTopicPublish(),mapString); EmqClient emqClient = new EmqClient(rtuTypeParam.getCarId()+"mqttPublish"+UUID.randomUUID()); emqClient.connect(); emqClient.publish(ardSyCarRtu.getTopicPublish(),mapString, QosEnum.QoS2,false); 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); } } } return AjaxResult.success(); @@ -353,50 +343,13 @@ map.put("res", String.valueOf(System.currentTimeMillis())); String mapString = JSON.toJSONString(map); System.out.println(mapString); MqttCustomerClient mqttCustomerClient = new MqttCustomerClient(); mqttCustomerClient.connect(lockTypeParam.getCarId()+"change"+UUID.randomUUID()); mqttCustomerClient.pushlish(ardSyCarRtu.getTopicPublish(),mapString); EmqClient emqClient = new EmqClient(lockTypeParam.getCarId()+"mqttPublish"+UUID.randomUUID()); emqClient.connect(); emqClient.publish(ardSyCarRtu.getTopicPublish(),mapString, QosEnum.QoS2,false); // MqttCustomerClient mqttCustomerClient = new MqttCustomerClient(); // mqttCustomerClient.connect(lockTypeParam.getCarId()+"change"+UUID.randomUUID()); // 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 ard-work/src/main/java/com/ruoyi/utils/qymqtt/AutoMqtt.java
@@ -2,6 +2,8 @@ import com.ruoyi.sy.domain.ArdSyCarRtu; import com.ruoyi.sy.service.ArdSyCarRtuService; import com.ruoyi.utils.qymqtt.newM.EmqClient; import com.ruoyi.utils.qymqtt.newM.QosEnum; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -17,7 +19,7 @@ @Autowired private ArdSyCarRtuService ardSyCarRtuService; // @PostConstruct @PostConstruct public void init() { // ArdSyCarRtuService carRtuService = SpringUtils.getBean(ArdSyCarRtuService.class); // //è·åçµç£éå°å @@ -28,9 +30,13 @@ String carId = rtu.getCarId(); String subscribe = rtu.getTopicSubscribe(); try { MqttCustomerClient mqttCustomerClient = new MqttCustomerClient(); mqttCustomerClient.connect(carId+"mqtt"+ UUID.randomUUID()); mqttCustomerClient.subscribe(subscribe); // MqttCustomerClient mqttCustomerClient = new MqttCustomerClient(); // mqttCustomerClient.connect(carId+"mqtt"+ UUID.randomUUID()); // mqttCustomerClient.subscribe(subscribe); EmqClient emqClient = new EmqClient(carId+"mqttSubscribe"); emqClient.connect(); emqClient.subscribe(subscribe, QosEnum.QoS2); log.info("订é 主é¢ï¼"+subscribe); }catch (Exception e) { e.printStackTrace(); } ard-work/src/main/java/com/ruoyi/utils/qymqtt/newM/EmqClient.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,115 @@ package com.ruoyi.utils.qymqtt.newM; import javax.annotation.PreDestroy; import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.sy.service.ArdSyCarRtuService; import org.eclipse.paho.client.mqttv3.IMqttClient; import org.eclipse.paho.client.mqttv3.MqttClient; import org.eclipse.paho.client.mqttv3.MqttClientPersistence; import org.eclipse.paho.client.mqttv3.MqttConnectOptions; import org.eclipse.paho.client.mqttv3.MqttException; import org.eclipse.paho.client.mqttv3.MqttMessage; import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; public class EmqClient { private IMqttClient mqttClient; private MessageCallback messageCallback; public EmqClient(String clientId){ ArdSyCarRtuService carRtuService = SpringUtils.getBean(ArdSyCarRtuService.class); //è·åçµç£éå°å String mqttUrl = carRtuService.url("ElectromagneticLockUrl"); MqttClientPersistence mempersitence = new MemoryPersistence();//æä¹ åæ¹å¼ try { this.mqttClient = new MqttClient(mqttUrl,clientId,mempersitence);//è®¾ç½®è¿æ¥brokerçhoståclientId this.messageCallback = new MessageCallback(); } catch (MqttException e) { System.out.println("åå§å客æ·ç«¯mqttClient对象失败"); System.out.println("brokerUrl:"+mqttUrl); System.out.println("clientId:"+clientId); e.getMessage(); } } //è¿æ¥broker public void connect(){ MqttConnectOptions options = new MqttConnectOptions(); options.setAutomaticReconnect(true); options.setUserName("admin"); options.setPassword("xzx12345".toCharArray()); options.setCleanSession(true);//设置为临æ¶ä¼è¯ mqttClient.setCallback(messageCallback);//设置åè° try { mqttClient.connect(options); } catch (MqttException e) { System.out.println("mqtt客æ·ç«¯è¿æ¥æå¡ç«¯å¤±è´¥"); e.getMessage(); } } //æå¼è¿æ¥ @PreDestroy//è¯¥æ³¨è§£å¯¹è±¡éæ¯å触å public void disConnect(){ try { mqttClient.disconnect(); } catch (MqttException e) { System.out.println("æå¼è¿æ¥äº§çå¼å¸¸"); e.getMessage(); } } //éè¿ public void reConnect(){ try { mqttClient.reconnect(); } catch (MqttException e) { System.out.println("éè¿å¤±è´¥,失败åå "); e.getMessage(); } } //å叿¶æ¯ ä¼ å为主é¢ï¼æ¶æ¯ï¼ççº§ï¼æ¯å¦ä¿çæ¶æ¯ public void publish(String topic, String msg, QosEnum qos, boolean retain){ MqttMessage mqttMessage = new MqttMessage(); mqttMessage.setPayload(msg.getBytes()); mqttMessage.setQos(qos.value()); mqttMessage.setRetained(retain); try { mqttClient.publish(topic,mqttMessage); mqttClient.disconnect(); } catch (MqttException e) { System.out.println("å叿¶æ¯å¤±è´¥"); System.out.println("主é¢:"+topic); System.out.println("æ¶æ¯:"+msg); System.out.println("qosç级:"+qos.value()); e.getMessage(); } } //订é public void subscribe(String topicFilter,QosEnum qos){ try { mqttClient.subscribe(topicFilter,qos.value()); } catch (MqttException e) { System.out.println("订é 主é¢"+topicFilter+"失败"); System.out.println("qosç级:"+qos.value()); e.getMessage(); } } //åæ¶è®¢é public void unSubscribe(String topicFilter){ try { mqttClient.unsubscribe(topicFilter); } catch (MqttException e) { System.out.println("åæ¶è®¢é 主é¢"+topicFilter+"失败"); e.getMessage(); } } } ard-work/src/main/java/com/ruoyi/utils/qymqtt/newM/MessageCallback.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,104 @@ package com.ruoyi.utils.qymqtt.newM; import java.math.BigDecimal; import java.nio.charset.StandardCharsets; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import java.util.Map; import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.sy.domain.ArdSyCarLock; import com.ruoyi.sy.domain.ArdSyCarRtu; import com.ruoyi.sy.service.ArdSyCarLockService; import com.ruoyi.sy.service.ArdSyCarRtuService; import lombok.extern.slf4j.Slf4j; import org.eclipse.paho.client.mqttv3.IMqttClient; import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken; import org.eclipse.paho.client.mqttv3.MqttCallback; import org.eclipse.paho.client.mqttv3.MqttMessage; import com.alibaba.fastjson.JSON; @Slf4j public class MessageCallback implements MqttCallback { private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //æ³¨å ¥çµåéBean ArdSyCarRtuService carRtuService = SpringUtils.getBean(ArdSyCarRtuService.class); ArdSyCarLockService carLockService = SpringUtils.getBean(ArdSyCarLockService.class); @Override//丢失äºå¯¹æå¡ç«¯çè¿æ¥å触åçåè° public void connectionLost(Throwable arg0) { // èµæºçæ¸ ç éè¿ System.out.println(arg0.getMessage()); arg0.printStackTrace(); System.out.println("丢失äºå¯¹æå¡ç«¯çè¿æ¥"); } @Override //æ¶æ¯åå¸è æ¶æ¯åå¸å®æäº§ççåè° public void deliveryComplete(IMqttDeliveryToken token) { System.out.println("deliveryComplete---------" + token.isComplete()); int messageId = token.getMessageId(); String[] topics = token.getTopics(); String clientId = token.getClient().getClientId(); // byte[] msg = token.getMessage().getPayload(); String topicStr = ""; for(String topic : topics){ topicStr = topicStr + topic + ","; } topicStr = topicStr.substring(0, topicStr.length() - 1); System.out.println("æ¶æ¯åå¸å®æ,messageId="+messageId+",topics="+topicStr+",clientId="+clientId); } @Override//æ¶æ¯è®¢é è æ¶å°æ¶æ¯å触åçåè° public void messageArrived(String topic, MqttMessage message) throws Exception { try { 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 ArdSyCarRtu ardSyCarRtu = carRtuService.subscribeByCarId(topic); String RTU = ardSyCarRtu.getId(); //æ ¹æ®RTUIDæ¥è¯¢é List<ArdSyCarLock> ardSyCarLockList = carLockService.carLock(RTU); for (int i = 0; i < ardSyCarLocks.size(); i++) { ArdSyCarLock ardSyCarLockData = ardSyCarLocks.get(i); String relay = ardSyCarLockData.getRelay(); Integer relayInfo = ardSyCarLockData.getRelayInfo(); String current = ardSyCarLockData.getCurrents(); Double currentInfo = ardSyCarLockData.getCurrentInfo(); for (int j = 0; j < ardSyCarLockList.size(); j++) { ArdSyCarLock lock = ardSyCarLockList.get(j); String relay1 = lock.getRelay(); String current1 = lock.getCurrents(); Integer relayInfo1 = lock.getRelayInfo(); Double currentInfo1 = lock.getCurrentInfo(); Boolean upd = false; if(relay.equals(relay1)){ if(!relayInfo.equals(relayInfo1)){ lock.setRelayInfo(relayInfo); upd = true; } } if(current.equals(current1)){ if(!currentInfo.equals(currentInfo1)){ lock.setCurrentInfo(currentInfo); upd = true; } } if(upd){ int num = carLockService.updLock(lock); // log.debug("ä¿®æ¹"+num+"æ°æ®"); } } } } catch (Exception e) { log.debug("车è¾çµç£éå¤çmqttæ¶æ¯å¼å¸¸:" + e); } } } ard-work/src/main/java/com/ruoyi/utils/qymqtt/newM/QosEnum.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,15 @@ package com.ruoyi.utils.qymqtt.newM; public enum QosEnum { QoS0(0),QoS1(1),QoS2(2); private final int value; QosEnum(int value) { this.value = value; } public int value(){ return this.value; } } ard-work/src/main/java/com/ruoyi/utils/qymqtt/oldM/MqttCustomerClient.java
ÎļþÃû´Ó ard-work/src/main/java/com/ruoyi/utils/qymqtt/MqttCustomerClient.java ÐÞ¸Ä @@ -1,11 +1,10 @@ package com.ruoyi.utils.qymqtt; package com.ruoyi.utils.qymqtt.oldM; import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.sy.service.ArdSyCarRtuService; import lombok.extern.slf4j.Slf4j; import org.eclipse.paho.client.mqttv3.*; import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import javax.annotation.PreDestroy; ard-work/src/main/java/com/ruoyi/utils/qymqtt/oldM/PushCallback.java
ÎļþÃû´Ó ard-work/src/main/java/com/ruoyi/utils/qymqtt/PushCallback.java ÐÞ¸Ä @@ -1,4 +1,4 @@ package com.ruoyi.utils.qymqtt; package com.ruoyi.utils.qymqtt.oldM; import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.sy.domain.ArdSyCarLock;