Bläddra i källkod

fix:http心跳返回可执行任务,收到Netty任务接收则清理缓存

lihao16 3 månader sedan
förälder
incheckning
324e8d7ac6

+ 1 - 1
smsb-modules/smsb-device/src/main/java/com/inspur/device/domain/constants/DeviceTaskConstants.java

@@ -9,7 +9,7 @@ public class DeviceTaskConstants {
     /**
      * 设备任务记录缓存key
      */
-    public static final String GLOBAL_DEVICE_TASK_KEY_RECORD_KEY = "global:device:task:record:";
+    public static final String GLOBAL_DEVICE_TASK_KEY_RECORD_KEY = "global:device:task:";
 
     /**
      * 设备任务超时时间

+ 8 - 1
smsb-modules/smsb-device/src/main/java/com/inspur/device/service/impl/SmsbDeviceServiceImpl.java

@@ -443,7 +443,14 @@ public class SmsbDeviceServiceImpl implements ISmsbDeviceService {
         RedisUtils.setCacheObject(DeviceConstants.REDIS_DEVICE_RUN_INFO_KEY + requestParam.getIdentifier(), deviceRunInfo, Duration.ofMinutes(1));
         // 返回当前设备的Redis缓存的任务中心任务
         String taskCache = RedisUtils.getCacheObject(DeviceTaskConstants.GLOBAL_DEVICE_TASK_KEY_RECORD_KEY + requestParam.getIdentifier());
-        return StringUtils.isEmpty(taskCache) ? R.ok() : R.ok(taskCache);
+        HttpHeartbeatRspVo rspVo = new HttpHeartbeatRspVo();
+        if (StringUtils.isEmpty(taskCache)) {
+            return R.ok(rspVo);
+        }
+        JSONObject rspJson = new JSONObject();
+        rspJson.set("taskInfo", taskCache);
+        rspVo.setMessage(rspJson.toString());
+        return R.ok(rspVo);
     }
 
     @Override

+ 3 - 1
smsb-modules/smsb-device/src/main/java/com/inspur/device/service/impl/SmsbDeviceTaskServiceImpl.java

@@ -15,12 +15,12 @@ import com.inspur.device.mapper.SmsbDeviceTaskMapper;
 import com.inspur.device.service.ISmsbDeviceService;
 import com.inspur.device.service.ISmsbDeviceTaskService;
 import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.dromara.common.core.domain.R;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
-import org.dromara.common.redis.config.RedisConfig;
 import org.dromara.common.redis.utils.RedisUtils;
 import org.springframework.stereotype.Service;
 
@@ -37,6 +37,7 @@ import java.util.Map;
  */
 @RequiredArgsConstructor
 @Service
+@Slf4j
 public class SmsbDeviceTaskServiceImpl implements ISmsbDeviceTaskService {
 
     private final SmsbDeviceTaskMapper baseMapper;
@@ -80,6 +81,7 @@ public class SmsbDeviceTaskServiceImpl implements ISmsbDeviceTaskService {
         smsbDeviceTask.setIsEnd(0);
         baseMapper.insert(smsbDeviceTask);
         // 缓存Redis key
+        log.info("cache task record key : " + DeviceTaskConstants.GLOBAL_DEVICE_TASK_KEY_RECORD_KEY + deviceVo.getIdentifier());
         String redisValue = taskType + "/" + smsbDeviceTask.getId();
         String redisKey = DeviceTaskConstants.GLOBAL_DEVICE_TASK_KEY_RECORD_KEY + deviceVo.getIdentifier();
         RedisUtils.setCacheObject(redisKey, redisValue, Duration.ofSeconds(DeviceTaskConstants.DEVICE_TASK_TIME_OUT));

+ 3 - 1
smsb-modules/smsb-netty/src/main/java/com/inspur/netty/handler/TaskBrightSetHandler.java

@@ -16,6 +16,7 @@ import io.netty.channel.ChannelHandlerContext;
 import io.netty.channel.ChannelInboundHandlerAdapter;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.common.core.utils.SpringUtils;
+import org.dromara.common.redis.utils.RedisUtils;
 
 /**
  * 亮度设置回复
@@ -60,7 +61,8 @@ public class TaskBrightSetHandler extends ChannelInboundHandlerAdapter {
             taskDetail.setTaskStatus(DeviceTaskConstants.DEVICE_TASK_STATUS_INIT);
             taskDetail.setTenantId(smsbDeviceVo.getTenantId());
             smsbDeviceTaskDetailMapper.insert(taskDetail);
-
+            // 3、清除缓存中的任务
+            RedisUtils.deleteObject(DeviceTaskConstants.GLOBAL_DEVICE_TASK_KEY_RECORD_KEY + identifier);
         } else {
             ctx.fireChannelRead(message);
         }

+ 3 - 0
smsb-modules/smsb-netty/src/main/java/com/inspur/netty/handler/TaskLogPushStartHandler.java

@@ -18,6 +18,7 @@ import io.netty.channel.ChannelHandlerContext;
 import io.netty.channel.ChannelInboundHandlerAdapter;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.common.core.utils.SpringUtils;
+import org.dromara.common.redis.utils.RedisUtils;
 
 /**
  * 日志开始抓取回复
@@ -66,6 +67,8 @@ public class TaskLogPushStartHandler extends ChannelInboundHandlerAdapter {
                 .eq(SmsbDeviceLogPush::getDeviceId, smsbDeviceVo.getId()).orderByDesc(SmsbDeviceLogPush::getId).last("limit 1"));
             lastLogPush.setLogStatus(1);
             smsbDeviceLogPushMapper.updateById(lastLogPush);
+            // 4、清除缓存中的任务
+            RedisUtils.deleteObject(DeviceTaskConstants.GLOBAL_DEVICE_TASK_KEY_RECORD_KEY + identifier);
         } else {
             ctx.fireChannelRead(message);
         }

+ 4 - 1
smsb-modules/smsb-netty/src/main/java/com/inspur/netty/handler/TaskOtaHandler.java

@@ -20,9 +20,10 @@ import io.netty.channel.ChannelHandlerContext;
 import io.netty.channel.ChannelInboundHandlerAdapter;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.common.core.utils.SpringUtils;
+import org.dromara.common.redis.utils.RedisUtils;
 
 /**
- * 音量设置回复
+ * OTA回复
  *
  * @author lihao16
  */
@@ -72,6 +73,8 @@ public class TaskOtaHandler extends ChannelInboundHandlerAdapter {
             SmsbOtaRecord update = new SmsbOtaRecord();
             update.setId(smsbOtaRecordVo.getId());
             update.setOtaStatus(DeviceConstants.DEVICE_OTA_STATUS_1);
+            // 4、清除缓存中的任务
+            RedisUtils.deleteObject(DeviceTaskConstants.GLOBAL_DEVICE_TASK_KEY_RECORD_KEY + identifier);
         } else {
             ctx.fireChannelRead(message);
         }

+ 3 - 0
smsb-modules/smsb-netty/src/main/java/com/inspur/netty/handler/TaskPlayControlHandler.java

@@ -16,6 +16,7 @@ import io.netty.channel.ChannelHandlerContext;
 import io.netty.channel.ChannelInboundHandlerAdapter;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.common.core.utils.SpringUtils;
+import org.dromara.common.redis.utils.RedisUtils;
 
 /**
  * 播放控制 包括上一个下一个
@@ -65,6 +66,8 @@ public class TaskPlayControlHandler extends ChannelInboundHandlerAdapter {
             taskDetail.setTaskStatus(DeviceTaskConstants.DEVICE_TASK_STATUS_INIT);
             taskDetail.setTenantId(smsbDeviceVo.getTenantId());
             smsbDeviceTaskDetailMapper.insert(taskDetail);
+            // 3、清除缓存中的任务
+            RedisUtils.deleteObject(DeviceTaskConstants.GLOBAL_DEVICE_TASK_KEY_RECORD_KEY + identifier);
         } else {
             ctx.fireChannelRead(message);
         }

+ 3 - 1
smsb-modules/smsb-netty/src/main/java/com/inspur/netty/handler/TaskRestartAppHandler.java

@@ -16,6 +16,7 @@ import io.netty.channel.ChannelHandlerContext;
 import io.netty.channel.ChannelInboundHandlerAdapter;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.common.core.utils.SpringUtils;
+import org.dromara.common.redis.utils.RedisUtils;
 
 /**
  * APP 重启回复
@@ -60,7 +61,8 @@ public class TaskRestartAppHandler extends ChannelInboundHandlerAdapter {
             taskDetail.setTaskStatus(DeviceTaskConstants.DEVICE_TASK_STATUS_INIT);
             taskDetail.setTenantId(smsbDeviceVo.getTenantId());
             smsbDeviceTaskDetailMapper.insert(taskDetail);
-
+            // 3、清除缓存中的任务
+            RedisUtils.deleteObject(DeviceTaskConstants.GLOBAL_DEVICE_TASK_KEY_RECORD_KEY + identifier);
         } else {
             ctx.fireChannelRead(message);
         }

+ 3 - 1
smsb-modules/smsb-netty/src/main/java/com/inspur/netty/handler/TaskRestartDeviceHandler.java

@@ -16,6 +16,7 @@ import io.netty.channel.ChannelHandlerContext;
 import io.netty.channel.ChannelInboundHandlerAdapter;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.common.core.utils.SpringUtils;
+import org.dromara.common.redis.utils.RedisUtils;
 
 /**
  * 设备重启回复
@@ -60,7 +61,8 @@ public class TaskRestartDeviceHandler extends ChannelInboundHandlerAdapter {
             taskDetail.setTaskStatus(DeviceTaskConstants.DEVICE_TASK_STATUS_INIT);
             taskDetail.setTenantId(smsbDeviceVo.getTenantId());
             smsbDeviceTaskDetailMapper.insert(taskDetail);
-
+            // 3、清除缓存中的任务
+            RedisUtils.deleteObject(DeviceTaskConstants.GLOBAL_DEVICE_TASK_KEY_RECORD_KEY + identifier);
         } else {
             ctx.fireChannelRead(message);
         }

+ 3 - 1
smsb-modules/smsb-netty/src/main/java/com/inspur/netty/handler/TaskScreenshotHandler.java

@@ -16,6 +16,7 @@ import io.netty.channel.ChannelHandlerContext;
 import io.netty.channel.ChannelInboundHandlerAdapter;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.common.core.utils.SpringUtils;
+import org.dromara.common.redis.utils.RedisUtils;
 
 /**
  * 截屏回复
@@ -60,7 +61,8 @@ public class TaskScreenshotHandler extends ChannelInboundHandlerAdapter {
             taskDetail.setTaskStatus(DeviceTaskConstants.DEVICE_TASK_STATUS_INIT);
             taskDetail.setTenantId(smsbDeviceVo.getTenantId());
             smsbDeviceTaskDetailMapper.insert(taskDetail);
-
+            // 3、清除缓存中的任务
+            RedisUtils.deleteObject(DeviceTaskConstants.GLOBAL_DEVICE_TASK_KEY_RECORD_KEY + identifier);
         } else {
             ctx.fireChannelRead(message);
         }

+ 3 - 1
smsb-modules/smsb-netty/src/main/java/com/inspur/netty/handler/TaskStandbyHandler.java

@@ -16,6 +16,7 @@ import io.netty.channel.ChannelHandlerContext;
 import io.netty.channel.ChannelInboundHandlerAdapter;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.common.core.utils.SpringUtils;
+import org.dromara.common.redis.utils.RedisUtils;
 
 /**
  * 设备待机 息屏亮屏回复
@@ -60,7 +61,8 @@ public class TaskStandbyHandler extends ChannelInboundHandlerAdapter {
             taskDetail.setTaskStatus(DeviceTaskConstants.DEVICE_TASK_STATUS_INIT);
             taskDetail.setTenantId(smsbDeviceVo.getTenantId());
             smsbDeviceTaskDetailMapper.insert(taskDetail);
-
+            // 3、清除缓存中的任务
+            RedisUtils.deleteObject(DeviceTaskConstants.GLOBAL_DEVICE_TASK_KEY_RECORD_KEY + identifier);
         } else {
             ctx.fireChannelRead(message);
         }

+ 3 - 1
smsb-modules/smsb-netty/src/main/java/com/inspur/netty/handler/TaskStreamStartHandler.java

@@ -16,6 +16,7 @@ import io.netty.channel.ChannelHandlerContext;
 import io.netty.channel.ChannelInboundHandlerAdapter;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.common.core.utils.SpringUtils;
+import org.dromara.common.redis.utils.RedisUtils;
 
 /**
  * 开始推流回复
@@ -60,7 +61,8 @@ public class TaskStreamStartHandler extends ChannelInboundHandlerAdapter {
             taskDetail.setTaskStatus(DeviceTaskConstants.DEVICE_TASK_STATUS_INIT);
             taskDetail.setTenantId(smsbDeviceVo.getTenantId());
             smsbDeviceTaskDetailMapper.insert(taskDetail);
-
+            // 3、清除缓存中的任务
+            RedisUtils.deleteObject(DeviceTaskConstants.GLOBAL_DEVICE_TASK_KEY_RECORD_KEY + identifier);
         } else {
             ctx.fireChannelRead(message);
         }

+ 3 - 1
smsb-modules/smsb-netty/src/main/java/com/inspur/netty/handler/TaskStreamStopHandler.java

@@ -16,6 +16,7 @@ import io.netty.channel.ChannelHandlerContext;
 import io.netty.channel.ChannelInboundHandlerAdapter;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.common.core.utils.SpringUtils;
+import org.dromara.common.redis.utils.RedisUtils;
 
 /**
  * 开始推流回复
@@ -60,7 +61,8 @@ public class TaskStreamStopHandler extends ChannelInboundHandlerAdapter {
             taskDetail.setTaskStatus(DeviceTaskConstants.DEVICE_TASK_STATUS_INIT);
             taskDetail.setTenantId(smsbDeviceVo.getTenantId());
             smsbDeviceTaskDetailMapper.insert(taskDetail);
-
+            // 3、清除缓存中的任务
+            RedisUtils.deleteObject(DeviceTaskConstants.GLOBAL_DEVICE_TASK_KEY_RECORD_KEY + identifier);
         } else {
             ctx.fireChannelRead(message);
         }

+ 3 - 1
smsb-modules/smsb-netty/src/main/java/com/inspur/netty/handler/TaskVolumeSetHandler.java

@@ -16,6 +16,7 @@ import io.netty.channel.ChannelHandlerContext;
 import io.netty.channel.ChannelInboundHandlerAdapter;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.common.core.utils.SpringUtils;
+import org.dromara.common.redis.utils.RedisUtils;
 
 /**
  * 音量设置回复
@@ -60,7 +61,8 @@ public class TaskVolumeSetHandler extends ChannelInboundHandlerAdapter {
             taskDetail.setTaskStatus(DeviceTaskConstants.DEVICE_TASK_STATUS_INIT);
             taskDetail.setTenantId(smsbDeviceVo.getTenantId());
             smsbDeviceTaskDetailMapper.insert(taskDetail);
-
+            // 3、清除缓存中的任务
+            RedisUtils.deleteObject(DeviceTaskConstants.GLOBAL_DEVICE_TASK_KEY_RECORD_KEY + identifier);
         } else {
             ctx.fireChannelRead(message);
         }