From 9fe361cfff6d17360e5d987019d26800d2001343 Mon Sep 17 00:00:00 2001 From: chen_xi <276999030@qq.com> Date: Wed, 19 Oct 2022 15:50:51 +0800 Subject: [PATCH] 走航车socket --- /dev/null | 119 --------------------------------------- screen-api/src/main/java/com/moral/api/websocket/CruiserWebSocketServer.java | 8 ++ 2 files changed, 8 insertions(+), 119 deletions(-) diff --git a/screen-api/src/main/java/com/moral/api/kafka/consumer/CruiserSecondDataConsumer.java b/screen-api/src/main/java/com/moral/api/kafka/consumer/CruiserSecondDataConsumer.java deleted file mode 100644 index 8b88755..0000000 --- a/screen-api/src/main/java/com/moral/api/kafka/consumer/CruiserSecondDataConsumer.java +++ /dev/null @@ -1,119 +0,0 @@ -package com.moral.api.kafka.consumer; - -import com.alibaba.fastjson.JSON; -import com.moral.api.entity.Device; -import com.moral.api.entity.Sensor; -import com.moral.api.entity.UnitConversion; -import com.moral.api.utils.AdjustDataUtils; -import com.moral.api.utils.UnitConvertUtils; -import com.moral.api.websocket.SingleDeviceServer; -import com.moral.constant.KafkaConstants; -import lombok.extern.slf4j.Slf4j; -import org.apache.kafka.clients.consumer.Consumer; -import org.apache.kafka.clients.consumer.ConsumerRecord; -import org.apache.kafka.common.TopicPartition; -import org.springframework.kafka.annotation.KafkaListener; -import org.springframework.kafka.listener.ConsumerSeekAware; -import org.springframework.stereotype.Component; -import org.springframework.util.ObjectUtils; - -import java.math.BigDecimal; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.concurrent.CopyOnWriteArraySet; - -/** - * @ClassName SecondsDataConsumer1 - * @Description TODO - * @Author ��������� - * @Date 2022/10/18 14:49 - * @Version TODO - **/ -@Component -@Slf4j -public class CruiserSecondDataConsumer implements ConsumerSeekAware { - - @KafkaListener(topics = KafkaConstants.CRUISER_TOPIC_SECOND, containerFactory = "cruiserDataListenerFactory") - public void listen(ConsumerRecord<String, String> record, Consumer consumer) throws Exception { - String messageStr = record.value(); - Map<String, Object> message = (Map<String, Object>) JSON.parse(messageStr); - CopyOnWriteArraySet<SingleDeviceServer> sockets = SingleDeviceServer.sockets; - for (SingleDeviceServer socket : sockets) { - //���������������������������socket - String messageMac = (String) message.get("mac"); - String mac = socket.getMac(); - if (!mac.equalsIgnoreCase(messageMac)) - continue; - //������������������ - Device device = socket.getDeviceAlarmInfo(); - Map<String, Object> adjustFormula = socket.getAdjustFormula(); - Map<String, Object> regionAqi = socket.getRegionAqi(); - //������������ - if(adjustFormula!=null) - message = AdjustDataUtils.adjust(message,adjustFormula,regionAqi); - //������������������������ - Map<String, Object> resultMessgae = new HashMap<>(); - //������������ - List<Sensor> sensors = device.getVersion().getSensors();//������������������������������ - for (Sensor sensor : sensors) { - String code = sensor.getCode(); - String showUnit = sensor.getShowUnit(); - String showUnitKey = sensor.getShowUnitKey(); - String unitKey = sensor.getUnitKey(); - String unit = sensor.getUnit(); - Object value = message.get(code); - if(value==null) - continue; - Double sourceDataD = Double.valueOf(String.valueOf(value)); - BigDecimal bg = new BigDecimal(sourceDataD); - bg = bg.setScale(2, BigDecimal.ROUND_FLOOR); - String sourceData = bg.toString(); - //������������ - if (!unitKey.equals(showUnitKey)) {//������������������������������������������������������������ - String formula = sensor.getFormula(); - //������sensor��������������������������������������������� - if (ObjectUtils.isEmpty(formula)) { - List<UnitConversion> unitConversions = socket.getUnitConversions(); - for (UnitConversion unitConversion : unitConversions) { - if (unitConversion.getOriginalUnitKey().equals(unitKey) && unitConversion.getTargetUnitKey().equals(showUnitKey)) - formula = unitConversion.getFormula(); - } - } - //������������ - String resultData = UnitConvertUtils.calculate(sourceData, formula); - if (resultData != null) { - resultData += showUnit; - } else {//���������������������������null��������������������������������������������������������������� - resultData = sourceData + unit; - } - resultMessgae.put(sensor.getCode(), resultData); - } else { - //������������ - if(!showUnit.equals("���������")) - sourceData = sourceData + " " + showUnit; - resultMessgae.put(sensor.getCode(), sourceData); - } - } - socket.sendMessage(JSON.toJSONString(resultMessgae)); - } - } - - @Override - public void registerSeekCallback(ConsumerSeekCallback consumerSeekCallback) { - - } - - //consumer���������������������������������offset������������ - @Override - public void onPartitionsAssigned(Map<TopicPartition, Long> map, ConsumerSeekCallback consumerSeekCallback) { - map.forEach((t, o) -> consumerSeekCallback.seekToEnd(t.topic(), t.partition())); - } - - @Override - public void onIdleContainer(Map<TopicPartition, Long> map, ConsumerSeekCallback consumerSeekCallback) { - - } - -} - diff --git a/screen-api/src/main/java/com/moral/api/websocket/CruiserWebSocketServer.java b/screen-api/src/main/java/com/moral/api/websocket/CruiserWebSocketServer.java index 65f9a72..c11968f 100644 --- a/screen-api/src/main/java/com/moral/api/websocket/CruiserWebSocketServer.java +++ b/screen-api/src/main/java/com/moral/api/websocket/CruiserWebSocketServer.java @@ -1,5 +1,6 @@ package com.moral.api.websocket; +import com.moral.api.entity.Device; import lombok.Data; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; @@ -37,6 +38,10 @@ private String mac; + private SpecialDevice deviceAlarmInfo; + + private Map<String, Object> adjustFormula; + private SpecialDevice specialDevice; private Map<String, Object> regionAqi; @@ -47,6 +52,9 @@ public void onOpen(Session session, @PathParam("mac") String mac) { this.session = session; this.mac = mac; + this.deviceAlarmInfo = (SpecialDevice) redisTemplate.opsForHash().get(RedisConstants.SPECIAL_DEVICE_INFO, mac); + this.unitConversions = redisTemplate.opsForList().range(RedisConstants.UNIT_CONVERSION, 0, -1); + this.adjustFormula = redisTemplate.opsForHash().entries("adjust_"+mac); this.specialDevice = (SpecialDevice) redisTemplate.opsForHash().get(RedisConstants.SPECIAL_DEVICE_INFO, mac); try { //������������������ -- Gitblit v1.8.0