diff --git a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/RemoteStatisticsService.java b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/RemoteStatisticsService.java new file mode 100644 index 0000000..5ad0ea4 --- /dev/null +++ b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/RemoteStatisticsService.java @@ -0,0 +1,28 @@ +package com.ruoyi.device.api; + +import com.ruoyi.common.core.constant.SecurityConstants; +import com.ruoyi.common.core.constant.ServiceNameConstants; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.device.api.domain.StatisticsVO; +import com.ruoyi.device.api.factory.RemoteStatisticsFallbackFactory; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.*; + +/** + * 统计服务 + * + * @author ruoyi + * @date 2026-01-23 + */ +@FeignClient(contextId = "remoteStatisticsService", value = ServiceNameConstants.DEVICE_SERVICE, fallbackFactory = RemoteStatisticsFallbackFactory.class) +public interface RemoteStatisticsService +{ + /** + * 获取系统统计信息 + * + * @param source 请求来源 + * @return 统计信息 + */ + @GetMapping("/statistics") + R getStatistics(@RequestHeader(SecurityConstants.FROM_SOURCE) String source); +} \ No newline at end of file diff --git a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/StatisticsVO.java b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/StatisticsVO.java new file mode 100644 index 0000000..387b825 --- /dev/null +++ b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/StatisticsVO.java @@ -0,0 +1,59 @@ +package com.ruoyi.device.api.domain; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 统计信息VO对象 + * + * @author ruoyi + * @date 2026-01-23 + */ +@Data +public class StatisticsVO implements Serializable +{ + private static final long serialVersionUID = 1L; + + // ========== 机场统计 ========== + /** 机场个数 */ + private Integer dockCount; + + /** 空闲机场个数 */ + private Integer idleDockCount; + + /** 任务中机场个数 */ + private Integer workingDockCount; + + /** 调试机场个数 */ + private Integer debuggingDockCount; + + /** 离线机场个数 */ + private Integer offlineDockCount; + + // ========== 无人机统计 ========== + /** 无人机个数 */ + private Integer aircraftCount; + + /** 舱内开机个数 */ + private Integer powerOnInCabinCount; + + /** 舱内关机个数 */ + private Integer powerOffInCabinCount; + + /** 任务中个数 */ + private Integer inMissionCount; + + /** 调试中个数 */ + private Integer debuggingAircraftCount; + + /** 离线个数 */ + private Integer offlineAircraftCount; + + // ========== 挂载统计 ========== + /** 全部挂载个数 */ + private Integer payloadCount; + + /** 离线个数 */ + private Integer offlinePayloadCount; +} \ No newline at end of file diff --git a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/factory/RemoteStatisticsFallbackFactory.java b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/factory/RemoteStatisticsFallbackFactory.java new file mode 100644 index 0000000..68d4e70 --- /dev/null +++ b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/factory/RemoteStatisticsFallbackFactory.java @@ -0,0 +1,35 @@ +package com.ruoyi.device.api.factory; + +import com.ruoyi.common.core.domain.R; +import com.ruoyi.device.api.RemoteStatisticsService; +import com.ruoyi.device.api.domain.StatisticsVO; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.cloud.openfeign.FallbackFactory; +import org.springframework.stereotype.Component; + +/** + * 统计服务降级处理 + * + * @author ruoyi + * @date 2026-01-23 + */ +@Component +public class RemoteStatisticsFallbackFactory implements FallbackFactory +{ + private static final Logger log = LoggerFactory.getLogger(RemoteStatisticsFallbackFactory.class); + + @Override + public RemoteStatisticsService create(Throwable throwable) + { + log.error("统计服务调用失败:{}", throwable.getMessage()); + return new RemoteStatisticsService() + { + @Override + public R getStatistics(String source) + { + return R.fail("获取统计信息失败:" + throwable.getMessage()); + } + }; + } +} \ No newline at end of file diff --git a/ruoyi-modules/tuoheng-device b/ruoyi-modules/tuoheng-device index 7348cf6..8daf7a6 160000 --- a/ruoyi-modules/tuoheng-device +++ b/ruoyi-modules/tuoheng-device @@ -1 +1 @@ -Subproject commit 7348cf68f62ef4950740dd3ea8800109016e54b8 +Subproject commit 8daf7a6d842dad1070246129f0629d7090ab1787