aijinhui
2023-11-13 f4e20b2dc544a188d0591c901022383e84fa8e9e
ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttOnceCallback.java
@@ -79,24 +79,60 @@
//            System.out.println("【车辆锁主题】:"+topic+"【车辆锁信息】:"+new String(message.getPayload(), StandardCharsets.UTF_8));
            //出来回调数据
            List<ArdSyCarLock> ardSyCarLocks = carLockService.data(new String(message.getPayload(), StandardCharsets.UTF_8));
            //存入集合
            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());
            //根据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;
                        }
                    }
                    Map<String,List<ArdSyCarLock>> newMap = new HashMap<>();
                    newMap.put("topic",ardSyCarLocks);
                    PositionContainer.setTopicSubscribe(newMap);
                    if(current.equals(current1)){
                        if(!currentInfo.equals(currentInfo1)){
                            lock.setCurrentInfo(currentInfo);
                            upd = true;
                        }
                    }
                    if(upd){
                        int num = carLockService.updLock(lock);
//                        log.debug("修改"+num+"数据");
                    }
                }
            }
            log.debug(String.valueOf(map));
//            //存入集合
//            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);
        }