|  |  | 
 |  |  |     private static Map<String, Sensor> sensors; | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     @PostConstruct | 
 |  |  |     public void init() { | 
 |  |  |         sensors = new HashMap<>(); | 
 |  |  | 
 |  |  |         paramMap.put("regionCode", regionCode); | 
 |  |  |         ParameterUtils.getRegionType4RegionCode(paramMap); | 
 |  |  |         List<Device> deviceList = deviceService.queryDevice(paramMap); | 
 |  |  |         Map<String,Device> deviceMap = new HashMap<>(); | 
 |  |  |  | 
 |  |  |         try { | 
 |  |  |             Connection connection = RabbitMQUtils.getConnection(); | 
 |  |  |             final Channel channel = connection.createChannel(); | 
 |  |  |             //生成临时队列 | 
 |  |  |             String queue = channel.queueDeclare().getQueue(); | 
 |  |  |  | 
 |  |  |             //交换机与队列通过routingKey进行绑定 | 
 |  |  |             String routingKey = ""; | 
 |  |  |             for (Device d : deviceList) { | 
 |  |  |                 deviceMap.put(d.getMac(),d); | 
 |  |  |                 routingKey = orgId + "." + d.getMac(); | 
 |  |  |                 channel.queueBind(queue, exchange, routingKey); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |             //消费消息,手动确认模式。 | 
 |  |  |             channel.basicQos(1);//每次只消费一条数据 | 
 |  |  |             channel.basicQos(30);//预先读取数 | 
 |  |  |             channel.basicConsume(queue, false, new DefaultConsumer(channel) { | 
 |  |  |                 @Override | 
 |  |  |                 public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException { | 
 |  |  | 
 |  |  |                      | 
 |  |  |                     //判断是否接收到客户端发送的mac,如果接收到则返回指定mac设备信息 | 
 |  |  |                     if(mac!=null&&(!mac.equals(0))) | 
 |  |  |                         sendDeviceInfo(message,deviceList); | 
 |  |  |                         sendDeviceInfo(message,deviceMap); | 
 |  |  |                      | 
 |  |  |                     //手动确认 | 
 |  |  |                     channel.basicAck(envelope.getDeliveryTag(), false); | 
 |  |  |                     channel.basicAck(envelope.getDeliveryTag(), true); | 
 |  |  |                      | 
 |  |  |                     //判断socket是否已经断开 | 
 |  |  |                     if (!webSocketMap.containsKey(accountId)) { | 
 |  |  | 
 |  |  |             * @Author: 陈凯裕 | 
 |  |  |             * @Date: 2020/9/30 | 
 |  |  |             */  | 
 |  |  |     private void sendDeviceInfo(Map<String, Object> param,List<Device> deviceList) { | 
 |  |  |     private void sendDeviceInfo(Map<String, Object> param,Map<String,Device> deviceMap) { | 
 |  |  |         String deviceMac = (String) param.get("mac"); | 
 |  |  |         if (mac.equals(deviceMac)) { | 
 |  |  |             try { | 
 |  |  |                 Map<String,Object> sortMap = new LinkedHashMap<>(); | 
 |  |  |                 Map<String, Object> map = new HashMap<>(); | 
 |  |  |  | 
 |  |  |                 //先放名称地址,用于排序 | 
 |  |  |                     Device device =deviceMap.get(mac); | 
 |  |  |                     sortMap.put("名称",device.getName()); | 
 |  |  |                     sortMap.put("地址",device.getAddress()); | 
 |  |  |  | 
 |  |  |  | 
 |  |  |                 //将传感器代号转化为汉字 | 
 |  |  |                 param.forEach((key, value) -> { | 
 |  |  |                     Sensor sensor = sensors.get(key); | 
 |  |  |                     if (!ObjectUtils.isEmpty(sensor)) { | 
 |  |  |                         String unit = ObjectUtils.isEmpty(sensor.getUnit()) ? "" : (String) sensor.getUnit(); | 
 |  |  |                         map.put(sensor.getName(), value + unit); | 
 |  |  |                         sortMap.put(sensor.getName(), value + unit); | 
 |  |  |                     } | 
 |  |  |                 }); | 
 |  |  |                 String mac = (String) param.get("mac"); | 
 |  |  |                 map.put("mac", mac); | 
 |  |  |                 map.put("flag",1); | 
 |  |  |                 for (Device device : deviceList) { | 
 |  |  |                     if(mac.equals(device.getMac())){ | 
 |  |  |                         sortMap.put("名称",device.getName()); | 
 |  |  |                         sortMap.put("地址",device.getAddress()); | 
 |  |  |                         sortMap.putAll(map); | 
 |  |  |                         break; | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |                 sendMessage(JSON.toJSONString(sortMap)); | 
 |  |  |             } catch (IOException e) { | 
 |  |  |                 log.error("根据mac发送设备数据异常"); |