Pārlūkot izejas kodu

2023-3-7 一体机消息推送根据传感器类型变化延迟发送。

chaiyunlong 2 gadi atpakaļ
vecāks
revīzija
34faa4a686

+ 18 - 1
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mqtt/service/impl/SubMessageSendManager.java

@@ -5,8 +5,10 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.zd.algorithm.api.speaker.feign.RemoteSpeakService;
 import com.zd.common.core.exception.ServiceException;
+import com.zd.common.core.redis.RedisService;
 import com.zd.common.core.utils.Assert;
 import com.zd.common.core.utils.SpringUtils;
+import com.zd.laboratory.api.entity.SensorFunctionStatus;
 import com.zd.laboratory.api.vo.SubFunction;
 import com.zd.laboratory.domain.LabHardware;
 import com.zd.laboratory.event.LabMessageEvent;
@@ -27,6 +29,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
+import java.util.concurrent.TimeUnit;
 
 /**
  * 实验室消息发送管理 -- 对外使用该类进行操作
@@ -49,6 +52,9 @@ public class SubMessageSendManager {
     @Autowired
     private RemoteSpeakService remoteSpeakService;
 
+    @Autowired
+    private RedisService redisService;
+
     /**
      * 发送疏散线路通知
      *
@@ -117,7 +123,18 @@ public class SubMessageSendManager {
         }
         MessageBody messageBody = getMessageBody(subFunction);
         //仅发送一次
-        commonSend.send(getFunctionSubTopic(subId), messageBody, SendMode.ONCE);
+//        commonSend.send(getFunctionSubTopic(subId), messageBody, SendMode.ONCE);
+        int count = 0;
+        List<SensorFunctionStatus> sensorFunctionStatusList = subFunction.getFunctionStatuses();
+        for (SensorFunctionStatus sensorFunc : sensorFunctionStatusList) {
+            if (redisService.getCacheObject(sensorFunc.getFunNum()+""+sensorFunc.getDescribe())==null){
+                redisService.setCacheObject(sensorFunc.getFunNum()+""+sensorFunc.getDescribe(),sensorFunc.getFunNum(),15L, TimeUnit.SECONDS);
+                count++;
+            }
+        }
+        if(count>0){
+            commonSend.send(getFunctionSubTopic(subId), messageBody, SendMode.ONCE);
+        }
     }
 
     /**