diff --git a/src/main/java/com/ruoyi/device/domain/impl/machine/vendor/tuoheng/TuohengVendorConfig.java b/src/main/java/com/ruoyi/device/domain/impl/machine/vendor/tuoheng/TuohengVendorConfig.java index 525ef8f..5e67d6c 100644 --- a/src/main/java/com/ruoyi/device/domain/impl/machine/vendor/tuoheng/TuohengVendorConfig.java +++ b/src/main/java/com/ruoyi/device/domain/impl/machine/vendor/tuoheng/TuohengVendorConfig.java @@ -63,6 +63,11 @@ public class TuohengVendorConfig implements VendorConfig { // DroneState.POWER_OFF 需要关机; AirportState.ONLINE 判断来自于 /topic/v1/heartbeat/{sn}/message return droneState == DroneState.POWER_OFF && airportState == AirportState.ONLINE; + case CLOSE_COVER: + // 这边缺控制,后面要加 + return true; + + case RETURN_HOME: // 返航前置条件:无人机飞行中 return true; diff --git a/src/main/java/com/ruoyi/device/websocket/PreCheckLogWebSocket.java b/src/main/java/com/ruoyi/device/websocket/PreCheckLogWebSocket.java index e8126b7..347727d 100644 --- a/src/main/java/com/ruoyi/device/websocket/PreCheckLogWebSocket.java +++ b/src/main/java/com/ruoyi/device/websocket/PreCheckLogWebSocket.java @@ -1,9 +1,14 @@ package com.ruoyi.device.websocket; import com.alibaba.fastjson2.JSON; +import com.ruoyi.common.core.constant.SecurityConstants; +import com.ruoyi.common.core.domain.R; import com.ruoyi.device.mapper.entity.FlightLogEntity; import com.ruoyi.device.mapper.entity.PreCheckLogEntity; import com.ruoyi.device.service.FlightService; +import com.ruoyi.task.api.RemoteTaskService; +import com.ruoyi.task.api.domain.TaskVO; +import com.ruoyi.task.api.enums.StatusEnum; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; @@ -15,6 +20,7 @@ import jakarta.websocket.server.ServerEndpoint; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CopyOnWriteArraySet; @@ -38,6 +44,9 @@ public class PreCheckLogWebSocket { private static FlightService flightService; + @Autowired + private RemoteTaskService remoteTaskService; + @Autowired public void setFlightService(FlightService flightService) { PreCheckLogWebSocket.flightService = flightService; @@ -87,6 +96,22 @@ public class PreCheckLogWebSocket { @Scheduled(fixedRate = 3000) public void broadcast() { for (PreCheckLogWebSocket ws : sessions) { + + R taskVOR = remoteTaskService.getCurrentTaskByUavId(ws.deviceSn, SecurityConstants.INNER); + + if(Objects.nonNull(taskVOR) && Objects.nonNull(taskVOR.getData())){ + TaskVO taskVO = taskVOR.getData(); + if(Objects.equals(true,taskVO.getRecovery())){ + continue; + } + + if(taskVO.getStatus() == StatusEnum.PENDING || taskVO.getStatus() == StatusEnum.CANCELED + || taskVO.getStatus() == StatusEnum.COMPLETED){ + continue; + } + + } + Map flightData = flightService.getLatestFlightWithLogs(ws.deviceSn); if (flightData == null) { continue;