| | |
| | | package com.ruoyi.utils.mqtt; |
| | | |
| | | import com.ruoyi.alarm.global.service.impl.GlobalAlarmServiceImpl; |
| | | import com.ruoyi.alarm.radar.service.ArdRadarService; |
| | | import com.ruoyi.common.annotation.Log; |
| | | import com.ruoyi.common.utils.spring.SpringUtils; |
| | | import com.ruoyi.statistical.service.StatisticalService; |
| | | import com.ruoyi.storage.minio.service.IStorageMinioEventService; |
| | | import com.ruoyi.sy.domain.ArdSyCarLock; |
| | | import com.ruoyi.sy.domain.ArdSyCarRtu; |
| | | import com.ruoyi.sy.gps31.PositionContainer; |
| | | import com.ruoyi.sy.service.ArdSyCarLockService; |
| | | import com.ruoyi.sy.service.ArdSyCarRtuService; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.eclipse.paho.client.mqttv3.*; |
| | | |
| | | import java.nio.charset.StandardCharsets; |
| | | import java.util.Arrays; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @Description: mqtt回调处理类 |
| | |
| | | private MqttConnectOptions options; |
| | | private String topic; |
| | | private int qos; |
| | | //注入电子锁Bean |
| | | ArdSyCarRtuService carRtuService = SpringUtils.getBean(ArdSyCarRtuService.class); |
| | | ArdSyCarLockService carLockService = SpringUtils.getBean(ArdSyCarLockService.class); |
| | | |
| | | public MqttOnceCallback(MqttClient client, MqttConnectOptions options, String topic, int qos) { |
| | | this.client = client; |
| | |
| | | @Override |
| | | public void messageArrived(String topic, MqttMessage message) { |
| | | 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 |
| | | 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(); |
| | | String relayInfo = ardSyCarLockData.getRelayInfo(); |
| | | String current = ardSyCarLockData.getCurrents(); |
| | | String currentInfo = ardSyCarLockData.getCurrentInfo(); |
| | | for (int j = 0; j < ardSyCarLockList.size(); j++) { |
| | | ArdSyCarLock lock = ardSyCarLockList.get(j); |
| | | String relay1 = lock.getRelay(); |
| | | String current1 = lock.getCurrents(); |
| | | String relayInfo1 = lock.getRelayInfo(); |
| | | String 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+"数据"); |
| | | } |
| | | } |
| | | } |
| | | // //存入集合 |
| | | // Map<String,List<ArdSyCarLock>> map = PositionContainer.getTopicSubscribe(); |
| | | // if(map==null){ |
| | | // Map<String,List<ArdSyCarLock>> newMap = new HashMap<>(); |
| | | // newMap.put("topic",ardSyCarLocks); |
| | | // PositionContainer.setTopicSubscribe(newMap); |
| | | // }else { |
| | | // for(Map.Entry entry : map.entrySet()){ |
| | | // String mapTopic = (String) entry.getKey(); |
| | | // if(topic.equals(mapTopic)){ |
| | | // map.remove(entry.getKey()); |
| | | // } |
| | | // Map<String,List<ArdSyCarLock>> newMap = new HashMap<>(); |
| | | // newMap.put("topic",ardSyCarLocks); |
| | | // PositionContainer.setTopicSubscribe(newMap); |
| | | // } |
| | | // } |
| | | // log.debug(String.valueOf(map)); |
| | | } catch (Exception e) { |
| | | log.debug("车辆电磁锁处理mqtt消息异常:" + e); |
| | | } |