From 2e4ac7fdffa9b18951aa334ea15cc208124f4243 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=AB=98=E5=A4=A7?= <1504665037@qq.com>
Date: Thu, 22 Jan 2026 19:12:28 +0800
Subject: [PATCH 01/18] =?UTF-8?q?=E5=A2=9E=E5=8A=A0ExBaseEntity?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
ruoyi-common/ruoyi-common-core/pom.xml | 5 +++
.../common/core/web/domain/ExBaseEntity.java | 35 +++++++++++++++++++
2 files changed, 40 insertions(+)
create mode 100644 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/ExBaseEntity.java
diff --git a/ruoyi-common/ruoyi-common-core/pom.xml b/ruoyi-common/ruoyi-common-core/pom.xml
index f18f263..e4e0b6e 100644
--- a/ruoyi-common/ruoyi-common-core/pom.xml
+++ b/ruoyi-common/ruoyi-common-core/pom.xml
@@ -119,6 +119,11 @@
jakarta.servlet
jakarta.servlet-api
+
+ org.projectlombok
+ lombok
+ provided
+
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/ExBaseEntity.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/ExBaseEntity.java
new file mode 100644
index 0000000..a6db59a
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/ExBaseEntity.java
@@ -0,0 +1,35 @@
+package com.ruoyi.common.core.web.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * ExEntity, 在ExBaseEntity基础上增加了软删除标识
+ *
+ * @author ruoyi
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class ExBaseEntity extends BaseEntity {
+
+ /**
+ * 删除标识,0.未删除(默认);1,已删除
+ */
+ private Long delFlag;
+
+ /**
+ * 更新者
+ */
+ private String deletedBy;
+
+ /**
+ * 更新时间
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date deletedTime;
+
+
+}
From 52913b72f4191769544d376ae7409bfb4680785f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=AD=99=E5=B0=8F=E4=BA=91?=
Date: Fri, 23 Jan 2026 09:23:40 +0800
Subject: [PATCH 02/18] =?UTF-8?q?=20=E6=B7=BB=E5=8A=A0group/docks/2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../main/java/com/ruoyi/device/api/domain/DockWithGPSVO.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockWithGPSVO.java b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockWithGPSVO.java
index 7ab4238..5f7abfc 100644
--- a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockWithGPSVO.java
+++ b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockWithGPSVO.java
@@ -73,9 +73,9 @@ public class DockWithGPSVO implements Serializable {
private List payloadList;
/** 纬度 */
- private String latitude;
+ private Double latitude;
/** 经度 */
- private String longitude;
+ private Double longitude;
}
From cbc30a5c1337ae7a2de35c6ce09fda2fe6e8ecf1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=AD=99=E5=B0=8F=E4=BA=91?=
Date: Fri, 23 Jan 2026 09:39:36 +0800
Subject: [PATCH 03/18] =?UTF-8?q?=20=E6=B7=BB=E5=8A=A0group/docks/2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
ruoyi-modules/tuoheng-device | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ruoyi-modules/tuoheng-device b/ruoyi-modules/tuoheng-device
index c57f66e..6a48c2a 160000
--- a/ruoyi-modules/tuoheng-device
+++ b/ruoyi-modules/tuoheng-device
@@ -1 +1 @@
-Subproject commit c57f66e0b7e793bba93fbd697fcb8bc556c8ff4d
+Subproject commit 6a48c2a3b6329a87abffff6d00fc584d7c53bac7
From b2e8cf1c3328e849534ec9cc5e1c6d3475b42f73 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=AD=99=E5=B0=8F=E4=BA=91?=
Date: Fri, 23 Jan 2026 09:43:00 +0800
Subject: [PATCH 04/18] =?UTF-8?q?=20=E6=B7=BB=E5=8A=A0group/docks/2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../main/java/com/ruoyi/device/api/domain/DockDetailVO.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockDetailVO.java b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockDetailVO.java
index 46af66f..286ccf1 100644
--- a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockDetailVO.java
+++ b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockDetailVO.java
@@ -180,11 +180,11 @@ public class DockDetailVO extends DockVO {
/**
*纬度
*/
- private String latitude;
+ private Double latitude;
/**
* 经度
*/
- private String longitude;
+ private Double longitude;
}
From c3548ea38c570e57f777c9d6531a4d2b4e0062e6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=AD=99=E5=B0=8F=E4=BA=91?=
Date: Fri, 23 Jan 2026 09:44:58 +0800
Subject: [PATCH 05/18] =?UTF-8?q?=20=E6=B7=BB=E5=8A=A0group/docks/2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
ruoyi-modules/tuoheng-device | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ruoyi-modules/tuoheng-device b/ruoyi-modules/tuoheng-device
index 6a48c2a..7348cf6 160000
--- a/ruoyi-modules/tuoheng-device
+++ b/ruoyi-modules/tuoheng-device
@@ -1 +1 @@
-Subproject commit 6a48c2a3b6329a87abffff6d00fc584d7c53bac7
+Subproject commit 7348cf68f62ef4950740dd3ea8800109016e54b8
From 7e9cba4e338edceed8893644b917e640f126ec0c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=AD=99=E5=B0=8F=E4=BA=91?=
Date: Fri, 23 Jan 2026 10:22:07 +0800
Subject: [PATCH 06/18] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=BB=9F=E8=AE=A1?=
=?UTF-8?q?=E6=8E=A5=E5=8F=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../device/api/RemoteStatisticsService.java | 28 +++++++++
.../ruoyi/device/api/domain/StatisticsVO.java | 59 +++++++++++++++++++
.../RemoteStatisticsFallbackFactory.java | 35 +++++++++++
ruoyi-modules/tuoheng-device | 2 +-
4 files changed, 123 insertions(+), 1 deletion(-)
create mode 100644 ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/RemoteStatisticsService.java
create mode 100644 ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/StatisticsVO.java
create mode 100644 ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/factory/RemoteStatisticsFallbackFactory.java
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
From e80cfe9e2b8cb13170902abc4e5ed3c2493350b5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=AD=99=E5=B0=8F=E4=BA=91?=
Date: Fri, 23 Jan 2026 14:20:00 +0800
Subject: [PATCH 07/18] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=BB=9F=E8=AE=A1?=
=?UTF-8?q?=E6=8E=A5=E5=8F=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../java/com/ruoyi/device/api/enums/DockStatusEnum.java | 8 +++++++-
ruoyi-modules/tuoheng-device | 2 +-
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/enums/DockStatusEnum.java b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/enums/DockStatusEnum.java
index fe12a71..ddf797e 100644
--- a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/enums/DockStatusEnum.java
+++ b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/enums/DockStatusEnum.java
@@ -31,7 +31,13 @@ public enum DockStatusEnum {
/**
* 待标定/未知
*/
- UNKNOWN("UNKNOWN", "待标定");
+ UNKNOWN("UNKNOWN", "待标定"),
+
+ /**
+ * 待标定/未知
+ */
+ OFFLINE("OFFLINE", "离线");
+
private final String code;
private final String description;
diff --git a/ruoyi-modules/tuoheng-device b/ruoyi-modules/tuoheng-device
index 8daf7a6..b559487 160000
--- a/ruoyi-modules/tuoheng-device
+++ b/ruoyi-modules/tuoheng-device
@@ -1 +1 @@
-Subproject commit 8daf7a6d842dad1070246129f0629d7090ab1787
+Subproject commit b559487474c37573edfff43bc44ac60fcf6a7ace
From b3e1e68b70adb759220f52882f72c587db0716d6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=AD=99=E5=B0=8F=E4=BA=91?=
Date: Fri, 23 Jan 2026 15:11:23 +0800
Subject: [PATCH 08/18] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=8E=A5=E5=8F=A3?=
=?UTF-8?q?=E5=AD=97=E6=AE=B5=E5=AE=9A=E4=B9=89?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
ruoyi-api/tuoheng-api-device/pom.xml | 7 ++++
.../device/api/domain/AircraftDetailVO.java | 18 ++++++++++
.../ruoyi/device/api/domain/AircraftVO.java | 9 +++++
.../ruoyi/device/api/domain/DeviceTempVO.java | 3 ++
.../ruoyi/device/api/domain/DockDetailVO.java | 29 ++++++++++++++++
.../com/ruoyi/device/api/domain/DockVO.java | 16 +++++++++
.../device/api/domain/DockWithGPSVO.java | 34 ++++++++++---------
.../com/ruoyi/device/api/domain/GroupVO.java | 6 ++++
.../ruoyi/device/api/domain/NetworkVO.java | 4 +++
.../device/api/domain/PayloadDetailVO.java | 6 ++++
.../ruoyi/device/api/domain/PayloadVO.java | 6 ++++
.../ruoyi/device/api/domain/StatisticsVO.java | 28 ++++++++-------
12 files changed, 137 insertions(+), 29 deletions(-)
diff --git a/ruoyi-api/tuoheng-api-device/pom.xml b/ruoyi-api/tuoheng-api-device/pom.xml
index 1633a34..0272e9d 100644
--- a/ruoyi-api/tuoheng-api-device/pom.xml
+++ b/ruoyi-api/tuoheng-api-device/pom.xml
@@ -28,6 +28,13 @@
provided
+
+
+ org.springdoc
+ springdoc-openapi-starter-webmvc-ui
+ provided
+
+
\ No newline at end of file
diff --git a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/AircraftDetailVO.java b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/AircraftDetailVO.java
index 6187208..1fb630e 100644
--- a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/AircraftDetailVO.java
+++ b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/AircraftDetailVO.java
@@ -2,6 +2,7 @@ package com.ruoyi.device.api.domain;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.web.domain.BaseEntity;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
@@ -14,77 +15,94 @@ import java.util.List;
* @date 2026-01-20
*/
@Data
+@Schema(description = "无人机详情VO对象")
public class AircraftDetailVO extends AircraftVO {
private static final long serialVersionUID = 1L;
// ========== 基本信息区域 ==========
/** 无人机版本 */
+ @Schema(description = "无人机版本")
@Excel(name = "无人机版本")
private String aircraftVersion;
/** 无人机SN号 */
+ @Schema(description = "无人机SN号")
@Excel(name = "无人机SN号")
private String snNumber;
/** 电池SN号 */
+ @Schema(description = "电池SN号")
@Excel(name = "电池SN号")
private String batterySn;
/** 绑定时间 */
+ @Schema(description = "绑定时间")
@Excel(name = "绑定时间")
private Long bindTime;
/** 运维剩余天数 */
+ @Schema(description = "运维剩余天数")
@Excel(name = "运维剩余天数")
private Integer maintenanceDays;
// ========== 统计信息区域 ==========
/** 飞行时长 */
+ @Schema(description = "飞行时长")
@Excel(name = "飞行时长")
private Integer flightDuration;
/** 作业架次 */
+ @Schema(description = "作业架次")
@Excel(name = "作业架次")
private Integer missionCount;
// ========== 网络列表 ==========
/** 网络列表 */
+ @Schema(description = "网络列表")
private List networkList;
// ========== 遥测数据区域 ==========
/** RTK信号 */
+ @Schema(description = "RTK信号")
@Excel(name = "RTK信号")
private Double rtkSignal;
/** 限高 */
+ @Schema(description = "限高")
@Excel(name = "限高")
private Integer maxAltitude;
/** 限远 */
+ @Schema(description = "限远")
@Excel(name = "限远")
private Integer maxDistance;
/** 电压 */
+ @Schema(description = "电压")
@Excel(name = "电压")
private Integer voltage;
/** 电量 */
+ @Schema(description = "电量")
@Excel(name = "电量")
private Integer batteryLevel;
/** 续航 */
+ @Schema(description = "续航")
@Excel(name = "续航")
private Integer flightTimeRemaining;
/** 电池温度 */
+ @Schema(description = "电池温度")
@Excel(name = "电池温度")
private Double batteryTemperature;
/** 循环次数 */
+ @Schema(description = "循环次数")
@Excel(name = "循环次数")
private Integer cycleCount;
diff --git a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/AircraftVO.java b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/AircraftVO.java
index 0284704..414870d 100644
--- a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/AircraftVO.java
+++ b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/AircraftVO.java
@@ -2,6 +2,7 @@ package com.ruoyi.device.api.domain;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.web.domain.BaseEntity;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
@@ -14,35 +15,43 @@ import java.util.List;
* @date 2026-01-20
*/
@Data
+@Schema(description = "无人机VO对象")
public class AircraftVO implements Serializable {
private static final long serialVersionUID = 1L;
/** 无人机ID */
+ @Schema(description = "无人机ID")
@Excel(name = "无人机ID")
private Long aircraftId;
/** 无人机IOT ID */
+ @Schema(description = "无人机IOT ID")
@Excel(name = "无人机IOT ID")
private String aircraftIotId;
/** 无人机名称 */
+ @Schema(description = "无人机名称")
@Excel(name = "无人机名称")
private String aircraftName;
/** 无人机厂商 */
+ @Schema(description = "无人机厂商")
@Excel(name = "无人机厂商")
private String aircraftManufacturer;
/** 无人机型号 */
+ @Schema(description = "无人机型号")
@Excel(name = "无人机型号")
private String aircraftModel;
/** 无人机状态 */
+ @Schema(description = "无人机状态")
@Excel(name = "无人机状态")
private String aircraftStatus;
/** 挂载列表 */
+ @Schema(description = "挂载列表")
private List payloadList;
diff --git a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DeviceTempVO.java b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DeviceTempVO.java
index bd1b1f4..82a3960 100644
--- a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DeviceTempVO.java
+++ b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DeviceTempVO.java
@@ -1,6 +1,7 @@
package com.ruoyi.device.api.domain;
import com.ruoyi.common.core.web.domain.BaseEntity;
+import io.swagger.v3.oas.annotations.media.Schema;
/**
* 设备临时表对象 tuoheng_device_temp
@@ -8,11 +9,13 @@ import com.ruoyi.common.core.web.domain.BaseEntity;
* @author ruoyi
* @date 2026-01-15
*/
+@Schema(description = "设备临时表对象")
public class DeviceTempVO extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 主键ID */
+ @Schema(description = "主键ID")
private String id;
public String getId()
diff --git a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockDetailVO.java b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockDetailVO.java
index 286ccf1..221dfb8 100644
--- a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockDetailVO.java
+++ b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockDetailVO.java
@@ -2,6 +2,7 @@ package com.ruoyi.device.api.domain;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.web.domain.BaseEntity;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
@@ -13,6 +14,7 @@ import java.io.Serializable;
* @date 2026-01-20
*/
@Data
+@Schema(description = "机场详情VO对象")
public class DockDetailVO extends DockVO {
private static final long serialVersionUID = 1L;
@@ -22,24 +24,28 @@ public class DockDetailVO extends DockVO {
/**
* 固件版本
*/
+ @Schema(description = "固件版本")
@Excel(name = "固件版本")
private String firmwareVersion;
/**
* SN号
*/
+ @Schema(description = "SN号")
@Excel(name = "SN号")
private String snNumber;
/**
* 绑定时间
*/
+ @Schema(description = "绑定时间")
@Excel(name = "绑定时间")
private Long bindTime;
/**
* 运维剩余天数
*/
+ @Schema(description = "运维剩余天数")
@Excel(name = "运维剩余天数")
private Integer maintenanceDays;
@@ -48,12 +54,14 @@ public class DockDetailVO extends DockVO {
/**
* 备降点坐标(经度)
*/
+ @Schema(description = "备降点经度")
@Excel(name = "备降点经度")
private Double backupLongitude;
/**
* 备降点坐标(纬度)
*/
+ @Schema(description = "备降点纬度")
@Excel(name = "备降点纬度")
private Double backupLatitude;
@@ -62,36 +70,42 @@ public class DockDetailVO extends DockVO {
/**
* 运行时长
*/
+ @Schema(description = "运行时长")
@Excel(name = "运行时长")
private Integer runningDuration;
/**
* 作业架次
*/
+ @Schema(description = "作业架次")
@Excel(name = "作业架次")
private Integer missionCount;
/**
* 环境风速
*/
+ @Schema(description = "环境风速")
@Excel(name = "环境风速")
private Double windSpeed;
/**
* 环境雨量
*/
+ @Schema(description = "环境雨量")
@Excel(name = "环境雨量")
private Double rainfall;
/**
* 环境温度
*/
+ @Schema(description = "环境温度")
@Excel(name = "环境温度")
private Double environmentTemperature;
/**
* 环境湿度
*/
+ @Schema(description = "环境湿度")
@Excel(name = "环境湿度")
private Double environmentHumidity;
@@ -100,12 +114,14 @@ public class DockDetailVO extends DockVO {
/**
* 网络类型
*/
+ @Schema(description = "网络类型")
@Excel(name = "网络类型")
private String networkType;
/**
* 网络延迟
*/
+ @Schema(description = "网络延迟")
@Excel(name = "网络延迟")
private Integer networkDelay;
@@ -114,76 +130,89 @@ public class DockDetailVO extends DockVO {
/**
* 空调状态
*/
+ @Schema(description = "空调状态")
@Excel(name = "空调状态")
private String airConditionerStatus;
/**
* 舱门状态
*/
+ @Schema(description = "舱门状态")
@Excel(name = "舱门状态")
private String cabinDoorStatus;
/**
* 机场状态
*/
+ @Schema(description = "机场运行状态")
@Excel(name = "机场运行状态")
private String dockRunStatus;
/**
* 舱内摄像头
*/
+ @Schema(description = "舱内摄像头")
@Excel(name = "舱内摄像头")
private String internalCamera;
/**
* 舱外摄像头
*/
+ @Schema(description = "舱外摄像头")
@Excel(name = "舱外摄像头")
private String externalCamera;
/**
* 充放电状态
*/
+ @Schema(description = "充放电状态")
@Excel(name = "充放电状态")
private String chargingStatus;
/**
* 舱内温度
*/
+ @Schema(description = "舱内温度")
@Excel(name = "舱内温度")
private Double cabinTemperature;
/**
* 舱内湿度
*/
+ @Schema(description = "舱内湿度")
@Excel(name = "舱内湿度")
private Double cabinHumidity;
/**
* 升降架位置
*/
+ @Schema(description = "升降架位置")
@Excel(name = "升降架位置")
private String elevatorPosition;
/**
* X轴夹状态
*/
+ @Schema(description = "X轴夹状态")
@Excel(name = "X轴夹状态")
private String xAxisClampStatus;
/**
* Y轴夹状态
*/
+ @Schema(description = "Y轴夹状态")
@Excel(name = "Y轴夹状态")
private String yAxisClampStatus;
/**
*纬度
*/
+ @Schema(description = "纬度")
private Double latitude;
/**
* 经度
*/
+ @Schema(description = "经度")
private Double longitude;
diff --git a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockVO.java b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockVO.java
index d41a01f..e4cd20b 100644
--- a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockVO.java
+++ b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockVO.java
@@ -2,6 +2,7 @@ package com.ruoyi.device.api.domain;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.web.domain.BaseEntity;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
@@ -14,63 +15,78 @@ import java.util.List;
* @date 2026-01-20
*/
@Data
+@Schema(description = "机场VO对象")
public class DockVO implements Serializable {
private static final long serialVersionUID = 1L;
/** 机场ID */
+ @Schema(description = "机场ID")
@Excel(name = "机场ID")
private Long dockId;
/** 机场IOT ID */
+ @Schema(description = "机场IOT ID")
@Excel(name = "机场IOT ID")
private String dockIotId;
/** 机场名称 */
+ @Schema(description = "机场名称")
@Excel(name = "机场名称")
private String dockName;
/** 机场位置 */
+ @Schema(description = "机场位置")
@Excel(name = "机场位置")
private String dockLocation;
/** 机场厂商 */
+ @Schema(description = "机场厂商")
@Excel(name = "机场厂商")
private String dockManufacturer;
/** 机场型号 */
+ @Schema(description = "机场型号")
@Excel(name = "机场型号")
private String dockModel;
/** 机场状态 */
+ @Schema(description = "机场状态")
@Excel(name = "机场状态")
private String dockStatus;
/** 无人机ID */
+ @Schema(description = "无人机ID")
@Excel(name = "无人机ID")
private Long aircraftId;
/** 无人机IOT ID */
+ @Schema(description = "无人机IOT ID")
@Excel(name = "无人机IOT ID")
private String aircraftIotId;
/** 无人机名称 */
+ @Schema(description = "无人机名称")
@Excel(name = "无人机名称")
private String aircraftName;
/** 无人机厂商 */
+ @Schema(description = "无人机厂商")
@Excel(name = "无人机厂商")
private String aircraftManufacturer;
/** 无人机型号 */
+ @Schema(description = "无人机型号")
@Excel(name = "无人机型号")
private String aircraftModel;
/** 无人机状态 */
+ @Schema(description = "无人机状态")
@Excel(name = "无人机状态")
private String aircraftStatus;
/** 挂载列表 */
+ @Schema(description = "挂载列表")
private List payloadList;
}
diff --git a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockWithGPSVO.java b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockWithGPSVO.java
index 5f7abfc..044faba 100644
--- a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockWithGPSVO.java
+++ b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockWithGPSVO.java
@@ -1,6 +1,7 @@
package com.ruoyi.device.api.domain;
import com.ruoyi.common.core.annotation.Excel;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
@@ -13,69 +14,70 @@ import java.util.List;
* @date 2026-01-20
*/
@Data
+@Schema(description = "机场信息(含GPS坐标)")
public class DockWithGPSVO implements Serializable {
private static final long serialVersionUID = 1L;
- /** 机场ID */
+ @Schema(description = "机场ID")
@Excel(name = "机场ID")
private Long dockId;
- /** 机场IOT ID */
+ @Schema(description = "机场IOT ID")
@Excel(name = "机场IOT ID")
private String dockIotId;
- /** 机场名称 */
+ @Schema(description = "机场名称")
@Excel(name = "机场名称")
private String dockName;
- /** 机场位置 */
+ @Schema(description = "机场位置")
@Excel(name = "机场位置")
private String dockLocation;
- /** 机场厂商 */
+ @Schema(description = "机场厂商")
@Excel(name = "机场厂商")
private String dockManufacturer;
- /** 机场型号 */
+ @Schema(description = "机场型号")
@Excel(name = "机场型号")
private String dockModel;
- /** 机场状态 */
+ @Schema(description = "机场状态")
@Excel(name = "机场状态")
private String dockStatus;
- /** 无人机ID */
+ @Schema(description = "无人机ID")
@Excel(name = "无人机ID")
private Long aircraftId;
- /** 无人机IOT ID */
+ @Schema(description = "无人机IOT ID")
@Excel(name = "无人机IOT ID")
private String aircraftIotId;
- /** 无人机名称 */
+ @Schema(description = "无人机名称")
@Excel(name = "无人机名称")
private String aircraftName;
- /** 无人机厂商 */
+ @Schema(description = "无人机厂商")
@Excel(name = "无人机厂商")
private String aircraftManufacturer;
- /** 无人机型号 */
+ @Schema(description = "无人机型号")
@Excel(name = "无人机型号")
private String aircraftModel;
- /** 无人机状态 */
+ @Schema(description = "无人机状态")
@Excel(name = "无人机状态")
private String aircraftStatus;
- /** 挂载列表 */
+ @Schema(description = "挂载列表")
private List payloadList;
- /** 纬度 */
+ @Schema(description = "纬度")
private Double latitude;
- /** 经度 */
+ @Schema(description = "经度")
private Double longitude;
}
diff --git a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/GroupVO.java b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/GroupVO.java
index d78ef11..3d53591 100644
--- a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/GroupVO.java
+++ b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/GroupVO.java
@@ -1,6 +1,7 @@
package com.ruoyi.device.api.domain;
import com.ruoyi.common.core.annotation.Excel;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
@@ -13,24 +14,29 @@ import java.util.List;
* @date 2026-01-20
*/
@Data
+@Schema(description = "分组VO对象")
public class GroupVO implements Serializable
{
private static final long serialVersionUID = 1L;
/** 分组ID */
+ @Schema(description = "分组ID")
@Excel(name = "分组ID")
private Long groupId;
/** 分组名称 */
+ @Schema(description = "分组名称")
@Excel(name = "分组名称")
private String groupName;
/** 无人机个数 */
+ @Schema(description = "机场个数")
@Excel(name = "机场个数")
private Integer dockCount;
/** 机场列表 */
+ @Schema(description = "机场列表")
private List dockList;
diff --git a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/NetworkVO.java b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/NetworkVO.java
index 483b901..0a3b702 100644
--- a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/NetworkVO.java
+++ b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/NetworkVO.java
@@ -2,6 +2,7 @@ package com.ruoyi.device.api.domain;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.web.domain.BaseEntity;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
@@ -13,15 +14,18 @@ import java.io.Serializable;
* @date 2026-01-20
*/
@Data
+@Schema(description = "网络信息VO对象")
public class NetworkVO implements Serializable
{
private static final long serialVersionUID = 1L;
/** 网络类型 */
+ @Schema(description = "网络类型")
@Excel(name = "网络类型")
private String networkType;
/** 网络延迟 */
+ @Schema(description = "网络延迟")
@Excel(name = "网络延迟")
private Integer networkDelay;
diff --git a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/PayloadDetailVO.java b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/PayloadDetailVO.java
index 9849dba..0c717c2 100644
--- a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/PayloadDetailVO.java
+++ b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/PayloadDetailVO.java
@@ -2,6 +2,7 @@ package com.ruoyi.device.api.domain;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.web.domain.BaseEntity;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
@@ -13,23 +14,28 @@ import java.io.Serializable;
* @date 2026-01-20
*/
@Data
+@Schema(description = "挂载详情VO对象")
public class PayloadDetailVO implements Serializable
{
private static final long serialVersionUID = 1L;
/** 挂载类型 */
+ @Schema(description = "挂载类型")
@Excel(name = "挂载类型")
private String payloadType;
/** 挂载型号 */
+ @Schema(description = "挂载型号")
@Excel(name = "挂载型号")
private String payloadModel;
/** 固件版本 */
+ @Schema(description = "固件版本")
@Excel(name = "固件版本")
private String firmwareVersion;
/** 是否在线 */
+ @Schema(description = "是否在线")
@Excel(name = "是否在线")
private String onlineStatus;
diff --git a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/PayloadVO.java b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/PayloadVO.java
index b0e61f4..6dae4e8 100644
--- a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/PayloadVO.java
+++ b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/PayloadVO.java
@@ -2,6 +2,7 @@ package com.ruoyi.device.api.domain;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.web.domain.BaseEntity;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
@@ -13,23 +14,28 @@ import java.io.Serializable;
* @date 2026-01-20
*/
@Data
+@Schema(description = "挂载VO对象")
public class PayloadVO implements Serializable
{
private static final long serialVersionUID = 1L;
/** 挂载ID */
+ @Schema(description = "挂载ID")
@Excel(name = "挂载ID")
private Long payloadId;
/** 挂载名称 */
+ @Schema(description = "挂载名称")
@Excel(name = "挂载名称")
private String payloadName;
/** 挂载类型 */
+ @Schema(description = "挂载类型")
@Excel(name = "挂载类型")
private String payloadType;
/** 挂载状态 */
+ @Schema(description = "挂载状态")
@Excel(name = "挂载状态")
private String payloadStatus;
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
index 387b825..c83718e 100644
--- 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
@@ -1,5 +1,6 @@
package com.ruoyi.device.api.domain;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
@@ -11,49 +12,50 @@ import java.io.Serializable;
* @date 2026-01-23
*/
@Data
+@Schema(description = "统计信息")
public class StatisticsVO implements Serializable
{
private static final long serialVersionUID = 1L;
// ========== 机场统计 ==========
- /** 机场个数 */
+ @Schema(description = "机场个数")
private Integer dockCount;
- /** 空闲机场个数 */
+ @Schema(description = "空闲机场个数")
private Integer idleDockCount;
- /** 任务中机场个数 */
+ @Schema(description = "任务中机场个数")
private Integer workingDockCount;
- /** 调试机场个数 */
+ @Schema(description = "调试机场个数")
private Integer debuggingDockCount;
- /** 离线机场个数 */
+ @Schema(description = "离线机场个数")
private Integer offlineDockCount;
// ========== 无人机统计 ==========
- /** 无人机个数 */
+ @Schema(description = "无人机个数")
private Integer aircraftCount;
- /** 舱内开机个数 */
+ @Schema(description = "舱内开机个数")
private Integer powerOnInCabinCount;
- /** 舱内关机个数 */
+ @Schema(description = "舱内关机个数")
private Integer powerOffInCabinCount;
- /** 任务中个数 */
+ @Schema(description = "任务中个数")
private Integer inMissionCount;
- /** 调试中个数 */
+ @Schema(description = "调试中个数")
private Integer debuggingAircraftCount;
- /** 离线个数 */
+ @Schema(description = "离线个数")
private Integer offlineAircraftCount;
// ========== 挂载统计 ==========
- /** 全部挂载个数 */
+ @Schema(description = "全部挂载个数")
private Integer payloadCount;
- /** 离线个数 */
+ @Schema(description = "离线挂载个数")
private Integer offlinePayloadCount;
}
\ No newline at end of file
From 6fdeda531519ab186c69830f17c817247dc8b517 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=AD=99=E5=B0=8F=E4=BA=91?=
Date: Fri, 23 Jan 2026 15:15:38 +0800
Subject: [PATCH 09/18] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=8E=A5=E5=8F=A3?=
=?UTF-8?q?=E5=AD=97=E6=AE=B5=E5=AE=9A=E4=B9=89?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/main/java/com/ruoyi/device/api/domain/AircraftVO.java | 2 +-
.../src/main/java/com/ruoyi/device/api/domain/DockVO.java | 4 ++--
.../main/java/com/ruoyi/device/api/domain/DockWithGPSVO.java | 4 ++--
.../src/main/java/com/ruoyi/device/api/domain/PayloadVO.java | 2 +-
4 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/AircraftVO.java b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/AircraftVO.java
index 414870d..f43de7c 100644
--- a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/AircraftVO.java
+++ b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/AircraftVO.java
@@ -46,7 +46,7 @@ public class AircraftVO implements Serializable {
private String aircraftModel;
/** 无人机状态 */
- @Schema(description = "无人机状态")
+ @Schema(description = "无人机状态:POWER_ON_IN_CABIN-舱内开机, POWER_OFF_IN_CABIN-舱内关机, POWER_ON_OUT_CABIN-舱外开机, POWER_OFF_OUT_CABIN-舱外关机, IN_MISSION-任务中, DEBUGGING-调试, OFFLINE-离线")
@Excel(name = "无人机状态")
private String aircraftStatus;
diff --git a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockVO.java b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockVO.java
index e4cd20b..977d038 100644
--- a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockVO.java
+++ b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockVO.java
@@ -51,7 +51,7 @@ public class DockVO implements Serializable {
private String dockModel;
/** 机场状态 */
- @Schema(description = "机场状态")
+ @Schema(description = "机场状态:IDLE-空闲中, Debugging-调试, Upgrading-固件升级中, Working-作业中, UNKNOWN-待标定, OFFLINE-离线")
@Excel(name = "机场状态")
private String dockStatus;
@@ -81,7 +81,7 @@ public class DockVO implements Serializable {
private String aircraftModel;
/** 无人机状态 */
- @Schema(description = "无人机状态")
+ @Schema(description = "无人机状态:POWER_ON_IN_CABIN-舱内开机, POWER_OFF_IN_CABIN-舱内关机, POWER_ON_OUT_CABIN-舱外开机, POWER_OFF_OUT_CABIN-舱外关机, IN_MISSION-任务中, DEBUGGING-调试, OFFLINE-离线")
@Excel(name = "无人机状态")
private String aircraftStatus;
diff --git a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockWithGPSVO.java b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockWithGPSVO.java
index 044faba..e6b7143 100644
--- a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockWithGPSVO.java
+++ b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockWithGPSVO.java
@@ -43,7 +43,7 @@ public class DockWithGPSVO implements Serializable {
@Excel(name = "机场型号")
private String dockModel;
- @Schema(description = "机场状态")
+ @Schema(description = "机场状态:IDLE-空闲中, Debugging-调试, Upgrading-固件升级中, Working-作业中, UNKNOWN-待标定, OFFLINE-离线")
@Excel(name = "机场状态")
private String dockStatus;
@@ -67,7 +67,7 @@ public class DockWithGPSVO implements Serializable {
@Excel(name = "无人机型号")
private String aircraftModel;
- @Schema(description = "无人机状态")
+ @Schema(description = "无人机状态:POWER_ON_IN_CABIN-舱内开机, POWER_OFF_IN_CABIN-舱内关机, POWER_ON_OUT_CABIN-舱外开机, POWER_OFF_OUT_CABIN-舱外关机, IN_MISSION-任务中, DEBUGGING-调试, OFFLINE-离线")
@Excel(name = "无人机状态")
private String aircraftStatus;
diff --git a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/PayloadVO.java b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/PayloadVO.java
index 6dae4e8..e407868 100644
--- a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/PayloadVO.java
+++ b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/PayloadVO.java
@@ -35,7 +35,7 @@ public class PayloadVO implements Serializable
private String payloadType;
/** 挂载状态 */
- @Schema(description = "挂载状态")
+ @Schema(description = "挂载状态:ONLINE-在线, OFFLINE-离线")
@Excel(name = "挂载状态")
private String payloadStatus;
From 24299d7d2533f9c51a12fc56a736e2d0aac70336 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=AD=99=E5=B0=8F=E4=BA=91?=
Date: Fri, 23 Jan 2026 16:19:47 +0800
Subject: [PATCH 10/18] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=BB=9F=E8=AE=A1?=
=?UTF-8?q?=E6=8E=A5=E5=8F=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../device/api/RemoteStatisticsService.java | 18 ++++++++++++++++++
.../RemoteStatisticsFallbackFactory.java | 10 ++++++++++
ruoyi-modules/tuoheng-device | 2 +-
3 files changed, 29 insertions(+), 1 deletion(-)
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
index 5ad0ea4..2769d3a 100644
--- 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
@@ -25,4 +25,22 @@ public interface RemoteStatisticsService
*/
@GetMapping("/statistics")
R getStatistics(@RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+
+ /**
+ * 获取系统统计信息
+ *
+ * @param source 请求来源
+ * @return 统计信息
+ */
+ @GetMapping("/statistics/dji")
+ R getDjiStatistics(@RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+
+ /**
+ * 获取系统统计信息
+ *
+ * @param source 请求来源
+ * @return 统计信息
+ */
+ @GetMapping("/statistics/th")
+ R getThStatistics(@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/factory/RemoteStatisticsFallbackFactory.java b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/factory/RemoteStatisticsFallbackFactory.java
index 68d4e70..d2512cd 100644
--- 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
@@ -30,6 +30,16 @@ public class RemoteStatisticsFallbackFactory implements FallbackFactory getDjiStatistics(String source) {
+ return R.fail("获取统计信息失败:" + throwable.getMessage());
+ }
+
+ @Override
+ public R getThStatistics(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 b559487..603b62c 160000
--- a/ruoyi-modules/tuoheng-device
+++ b/ruoyi-modules/tuoheng-device
@@ -1 +1 @@
-Subproject commit b559487474c37573edfff43bc44ac60fcf6a7ace
+Subproject commit 603b62cf212313eb63355c9562457d5975f5bafc
From e942018c3fcea7f976b82aee000ad77ce93999d9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=AD=99=E5=B0=8F=E4=BA=91?=
Date: Fri, 23 Jan 2026 16:40:19 +0800
Subject: [PATCH 11/18] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=9E=9A=E4=B8=BE?=
=?UTF-8?q?=E8=A7=A3=E9=87=8A?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../main/java/com/ruoyi/device/api/domain/DockDetailVO.java | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockDetailVO.java b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockDetailVO.java
index 221dfb8..e657628 100644
--- a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockDetailVO.java
+++ b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockDetailVO.java
@@ -130,14 +130,16 @@ public class DockDetailVO extends DockVO {
/**
* 空调状态
*/
- @Schema(description = "空调状态")
+ @Schema(description = "空调状态: IDLE-空闲模式, COOLING-制冷模式, HEATING-制热模式, DEHUMIDIFYING-除湿模式",
+ allowableValues = {"IDLE", "COOLING", "HEATING", "DEHUMIDIFYING"})
@Excel(name = "空调状态")
private String airConditionerStatus;
/**
* 舱门状态
*/
- @Schema(description = "舱门状态")
+ @Schema(description = "舱门状态: CLOSED-关闭, OPEN-打开, HALF_OPEN-半开, ABNORMAL-舱盖状态异常",
+ allowableValues = {"CLOSED", "OPEN", "HALF_OPEN", "ABNORMAL"})
@Excel(name = "舱门状态")
private String cabinDoorStatus;
From 8371f1ae1641e30fb88c6b1506f8c92c59e4fc67 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=AD=99=E5=B0=8F=E4=BA=91?=
Date: Fri, 23 Jan 2026 17:03:01 +0800
Subject: [PATCH 12/18] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=9E=9A=E4=B8=BE?=
=?UTF-8?q?=E8=A7=A3=E9=87=8A?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../com/ruoyi/device/api/domain/DockDetailVO.java | 15 ++++++++++-----
ruoyi-modules/tuoheng-device | 2 +-
2 files changed, 11 insertions(+), 6 deletions(-)
diff --git a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockDetailVO.java b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockDetailVO.java
index e657628..c948853 100644
--- a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockDetailVO.java
+++ b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockDetailVO.java
@@ -114,7 +114,8 @@ public class DockDetailVO extends DockVO {
/**
* 网络类型
*/
- @Schema(description = "网络类型")
+ @Schema(description = "网络类型: FOUR_G-4G, ETHERNET-以太网, WIRED-有线, FIVE_G-5G, TWO_POINT_FOUR_G-2.4G",
+ allowableValues = {"FOUR_G", "ETHERNET", "WIRED", "FIVE_G", "TWO_POINT_FOUR_G"})
@Excel(name = "网络类型")
private String networkType;
@@ -146,7 +147,8 @@ public class DockDetailVO extends DockVO {
/**
* 机场状态
*/
- @Schema(description = "机场运行状态")
+ @Schema(description = "机场运行状态: IDLE-空闲中, Debugging-现场调试/远程调试, Upgrading-固件升级中, Working-作业中, UNKNOWN-待标定, OFFLINE-离线",
+ allowableValues = {"IDLE", "Debugging", "Upgrading", "Working", "UNKNOWN", "OFFLINE"})
@Excel(name = "机场运行状态")
private String dockRunStatus;
@@ -188,21 +190,24 @@ public class DockDetailVO extends DockVO {
/**
* 升降架位置
*/
- @Schema(description = "升降架位置")
+ @Schema(description = "升降架位置: BOTTOM-底部, TOP-顶部",
+ allowableValues = {"BOTTOM", "TOP"})
@Excel(name = "升降架位置")
private String elevatorPosition;
/**
* X轴夹状态
*/
- @Schema(description = "X轴夹状态")
+ @Schema(description = "X轴夹状态: OPEN-开启, CLOSE-关闭",
+ allowableValues = {"OPEN", "CLOSE"})
@Excel(name = "X轴夹状态")
private String xAxisClampStatus;
/**
* Y轴夹状态
*/
- @Schema(description = "Y轴夹状态")
+ @Schema(description = "Y轴夹状态: OPEN-开启, CLOSE-关闭",
+ allowableValues = {"OPEN", "CLOSE"})
@Excel(name = "Y轴夹状态")
private String yAxisClampStatus;
diff --git a/ruoyi-modules/tuoheng-device b/ruoyi-modules/tuoheng-device
index 603b62c..1cf8217 160000
--- a/ruoyi-modules/tuoheng-device
+++ b/ruoyi-modules/tuoheng-device
@@ -1 +1 @@
-Subproject commit 603b62cf212313eb63355c9562457d5975f5bafc
+Subproject commit 1cf82176a79864bccb39122a68dc455f28b4a9c5
From 7e17d1e8efc82fee1c6f010a756acbdc6b29d771 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=AD=99=E5=B0=8F=E4=BA=91?=
Date: Fri, 23 Jan 2026 17:22:34 +0800
Subject: [PATCH 13/18] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=9E=9A=E4=B8=BE?=
=?UTF-8?q?=E8=A7=A3=E9=87=8A?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../main/java/com/ruoyi/device/api/domain/AircraftVO.java | 3 ++-
.../src/main/java/com/ruoyi/device/api/domain/DockVO.java | 6 ++++--
.../java/com/ruoyi/device/api/domain/DockWithGPSVO.java | 6 ++++--
.../main/java/com/ruoyi/device/api/domain/NetworkVO.java | 3 ++-
.../java/com/ruoyi/device/api/domain/PayloadDetailVO.java | 3 ++-
.../main/java/com/ruoyi/device/api/domain/PayloadVO.java | 6 ++++--
6 files changed, 18 insertions(+), 9 deletions(-)
diff --git a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/AircraftVO.java b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/AircraftVO.java
index f43de7c..8006bcd 100644
--- a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/AircraftVO.java
+++ b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/AircraftVO.java
@@ -46,7 +46,8 @@ public class AircraftVO implements Serializable {
private String aircraftModel;
/** 无人机状态 */
- @Schema(description = "无人机状态:POWER_ON_IN_CABIN-舱内开机, POWER_OFF_IN_CABIN-舱内关机, POWER_ON_OUT_CABIN-舱外开机, POWER_OFF_OUT_CABIN-舱外关机, IN_MISSION-任务中, DEBUGGING-调试, OFFLINE-离线")
+ @Schema(description = "无人机状态: POWER_ON_IN_CABIN-舱内开机, POWER_OFF_IN_CABIN-舱内关机, POWER_ON_OUT_CABIN-舱外开机, POWER_OFF_OUT_CABIN-舱外关机, IN_MISSION-任务中, DEBUGGING-调试, OFFLINE-离线",
+ allowableValues = {"POWER_ON_IN_CABIN", "POWER_OFF_IN_CABIN", "POWER_ON_OUT_CABIN", "POWER_OFF_OUT_CABIN", "IN_MISSION", "DEBUGGING", "OFFLINE"})
@Excel(name = "无人机状态")
private String aircraftStatus;
diff --git a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockVO.java b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockVO.java
index 977d038..df147f6 100644
--- a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockVO.java
+++ b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockVO.java
@@ -51,7 +51,8 @@ public class DockVO implements Serializable {
private String dockModel;
/** 机场状态 */
- @Schema(description = "机场状态:IDLE-空闲中, Debugging-调试, Upgrading-固件升级中, Working-作业中, UNKNOWN-待标定, OFFLINE-离线")
+ @Schema(description = "机场状态: IDLE-空闲中, Debugging-现场调试/远程调试, Upgrading-固件升级中, Working-作业中, UNKNOWN-待标定, OFFLINE-离线",
+ allowableValues = {"IDLE", "Debugging", "Upgrading", "Working", "UNKNOWN", "OFFLINE"})
@Excel(name = "机场状态")
private String dockStatus;
@@ -81,7 +82,8 @@ public class DockVO implements Serializable {
private String aircraftModel;
/** 无人机状态 */
- @Schema(description = "无人机状态:POWER_ON_IN_CABIN-舱内开机, POWER_OFF_IN_CABIN-舱内关机, POWER_ON_OUT_CABIN-舱外开机, POWER_OFF_OUT_CABIN-舱外关机, IN_MISSION-任务中, DEBUGGING-调试, OFFLINE-离线")
+ @Schema(description = "无人机状态: POWER_ON_IN_CABIN-舱内开机, POWER_OFF_IN_CABIN-舱内关机, POWER_ON_OUT_CABIN-舱外开机, POWER_OFF_OUT_CABIN-舱外关机, IN_MISSION-任务中, DEBUGGING-调试, OFFLINE-离线",
+ allowableValues = {"POWER_ON_IN_CABIN", "POWER_OFF_IN_CABIN", "POWER_ON_OUT_CABIN", "POWER_OFF_OUT_CABIN", "IN_MISSION", "DEBUGGING", "OFFLINE"})
@Excel(name = "无人机状态")
private String aircraftStatus;
diff --git a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockWithGPSVO.java b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockWithGPSVO.java
index e6b7143..aee5382 100644
--- a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockWithGPSVO.java
+++ b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/DockWithGPSVO.java
@@ -43,7 +43,8 @@ public class DockWithGPSVO implements Serializable {
@Excel(name = "机场型号")
private String dockModel;
- @Schema(description = "机场状态:IDLE-空闲中, Debugging-调试, Upgrading-固件升级中, Working-作业中, UNKNOWN-待标定, OFFLINE-离线")
+ @Schema(description = "机场状态: IDLE-空闲中, Debugging-现场调试/远程调试, Upgrading-固件升级中, Working-作业中, UNKNOWN-待标定, OFFLINE-离线",
+ allowableValues = {"IDLE", "Debugging", "Upgrading", "Working", "UNKNOWN", "OFFLINE"})
@Excel(name = "机场状态")
private String dockStatus;
@@ -67,7 +68,8 @@ public class DockWithGPSVO implements Serializable {
@Excel(name = "无人机型号")
private String aircraftModel;
- @Schema(description = "无人机状态:POWER_ON_IN_CABIN-舱内开机, POWER_OFF_IN_CABIN-舱内关机, POWER_ON_OUT_CABIN-舱外开机, POWER_OFF_OUT_CABIN-舱外关机, IN_MISSION-任务中, DEBUGGING-调试, OFFLINE-离线")
+ @Schema(description = "无人机状态: POWER_ON_IN_CABIN-舱内开机, POWER_OFF_IN_CABIN-舱内关机, POWER_ON_OUT_CABIN-舱外开机, POWER_OFF_OUT_CABIN-舱外关机, IN_MISSION-任务中, DEBUGGING-调试, OFFLINE-离线",
+ allowableValues = {"POWER_ON_IN_CABIN", "POWER_OFF_IN_CABIN", "POWER_ON_OUT_CABIN", "POWER_OFF_OUT_CABIN", "IN_MISSION", "DEBUGGING", "OFFLINE"})
@Excel(name = "无人机状态")
private String aircraftStatus;
diff --git a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/NetworkVO.java b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/NetworkVO.java
index 0a3b702..f95ae09 100644
--- a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/NetworkVO.java
+++ b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/NetworkVO.java
@@ -20,7 +20,8 @@ public class NetworkVO implements Serializable
private static final long serialVersionUID = 1L;
/** 网络类型 */
- @Schema(description = "网络类型")
+ @Schema(description = "网络类型: FOUR_G-4G, ETHERNET-以太网, WIRED-有线, FIVE_G-5G, TWO_POINT_FOUR_G-2.4G",
+ allowableValues = {"FOUR_G", "ETHERNET", "WIRED", "FIVE_G", "TWO_POINT_FOUR_G"})
@Excel(name = "网络类型")
private String networkType;
diff --git a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/PayloadDetailVO.java b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/PayloadDetailVO.java
index 0c717c2..4b83a6a 100644
--- a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/PayloadDetailVO.java
+++ b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/PayloadDetailVO.java
@@ -20,7 +20,8 @@ public class PayloadDetailVO implements Serializable
private static final long serialVersionUID = 1L;
/** 挂载类型 */
- @Schema(description = "挂载类型")
+ @Schema(description = "挂载类型: SPEAKER-喊话器, CAMERA-相机, OTHER-其他",
+ allowableValues = {"SPEAKER", "CAMERA", "OTHER"})
@Excel(name = "挂载类型")
private String payloadType;
diff --git a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/PayloadVO.java b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/PayloadVO.java
index e407868..bc3a3fc 100644
--- a/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/PayloadVO.java
+++ b/ruoyi-api/tuoheng-api-device/src/main/java/com/ruoyi/device/api/domain/PayloadVO.java
@@ -30,12 +30,14 @@ public class PayloadVO implements Serializable
private String payloadName;
/** 挂载类型 */
- @Schema(description = "挂载类型")
+ @Schema(description = "挂载类型: SPEAKER-喊话器, CAMERA-相机, OTHER-其他",
+ allowableValues = {"SPEAKER", "CAMERA", "OTHER"})
@Excel(name = "挂载类型")
private String payloadType;
/** 挂载状态 */
- @Schema(description = "挂载状态:ONLINE-在线, OFFLINE-离线")
+ @Schema(description = "挂载状态: ONLINE-在线, OFFLINE-离线",
+ allowableValues = {"ONLINE", "OFFLINE"})
@Excel(name = "挂载状态")
private String payloadStatus;
From 83f0226d11dc8693eb58bbfb7b4d83b71021b873 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=AD=99=E5=B0=8F=E4=BA=91?=
Date: Sat, 24 Jan 2026 09:27:09 +0800
Subject: [PATCH 14/18] xx
---
docker/thingsboard/reademe.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/docker/thingsboard/reademe.md b/docker/thingsboard/reademe.md
index 4074ab8..614033d 100644
--- a/docker/thingsboard/reademe.md
+++ b/docker/thingsboard/reademe.md
@@ -21,3 +21,5 @@ docker-compose up -d
- 用户名:sysadmin@thingsboard.org
- 密码:sysadmin
+
+# 网关脚本的镜像需要修改为 registry.t-aaron.com/thingsboard/tb-gateway:3.7.8.1
\ No newline at end of file
From f77d71f2028c56547f05ea7320c16300ba59173d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=AD=99=E5=B0=8F=E4=BA=91?=
Date: Sat, 24 Jan 2026 09:32:20 +0800
Subject: [PATCH 15/18] push
---
docker/thingsboard/dji.conf | 349 ++++++++++++++++++++++++++++++++++++
1 file changed, 349 insertions(+)
create mode 100644 docker/thingsboard/dji.conf
diff --git a/docker/thingsboard/dji.conf b/docker/thingsboard/dji.conf
new file mode 100644
index 0000000..9419699
--- /dev/null
+++ b/docker/thingsboard/dji.conf
@@ -0,0 +1,349 @@
+{
+ "broker": {
+ "host": "mqtt.t-aaron.com",
+ "port": 10883,
+ "version": 5,
+ "clientId": "ThingsBoard_gateway",
+ "security": {
+ "type": "basic",
+ "username": "admin",
+ "password": "admin"
+ },
+ "maxNumberOfWorkers": 100,
+ "maxMessageNumberPerWorker": 10
+ },
+ "mapping": [
+ {
+ "topicFilter": "thing/product/7C+/osd",
+ "subscriptionQos": 0,
+ "converter": {
+ "type": "json",
+ "deviceInfo": {
+ "deviceNameExpression": "(?<=thing/product/)[^/]+(?=/osd)",
+ "deviceNameExpressionSource": "topic",
+ "deviceProfileExpressionSource": "message",
+ "deviceProfileExpression": "default"
+ },
+ "attributes": [
+ {
+ "key": "dock_sn",
+ "type": "string",
+ "value": "${gateway}"
+ },
+ {
+ "key": "sub_device.device_sn",
+ "type": "string",
+ "value": "${data.sub_device.device_sn}"
+ },
+ {
+ "key": "mode_code",
+ "type": "integer",
+ "value": "${data.mode_code}"
+ },
+ {
+ "key": "firmware_version",
+ "type": "string",
+ "value": "${data.firmware_version}"
+ },
+ {
+ "key": "latitude",
+ "type": "double",
+ "value": "${data.latitude}"
+ },
+ {
+ "key": "longitude",
+ "type": "double",
+ "value": "${data.longitude}"
+ }
+ ],
+ "timeseries": [
+ {
+ "key": "air_conditioner.air_conditioner_state",
+ "type": "string",
+ "value": "${data.air_conditioner.air_conditioner_state}"
+ },
+ {
+ "key": "flighttask_step_code",
+ "type": "integer",
+ "value": "${data.flighttask_step_code}"
+ },
+ {
+ "key": "drone_in_dock",
+ "type": "string",
+ "value": "${data.drone_in_dock}"
+ },
+ {
+ "key": "sub_device.device_online_status",
+ "type": "integer",
+ "value": "${data.sub_device.device_online_status}"
+ },
+ {
+ "key": "drone_charge_state.state",
+ "type": "integer",
+ "value": "${data.drone_charge_state.state}"
+ },
+ {
+ "key": "air_conditioner.air_conditioner_state",
+ "type": "integer",
+ "value": "${data.air_conditioner.air_conditioner_state}"
+ },
+ {
+ "key": "humidity",
+ "type": "double",
+ "value": "${data.humidity}"
+ },
+ {
+ "key": "temperature",
+ "type": "double",
+ "value": "${data.temperature}"
+ },
+ {
+ "key": "acc_time",
+ "type": "integer",
+ "value": "${data.acc_time}"
+ },
+ {
+ "key": "network_state.type",
+ "type": "integer",
+ "value": "${data.network_state.type}"
+ },
+ {
+ "key": "wind_speed",
+ "type": "double",
+ "value": "${data.wind_speed}"
+ },
+ {
+ "key": "rainfall",
+ "type": "integer",
+ "value": "${data.rainfall}"
+ },
+ {
+ "key": "position_state.rtk_number",
+ "type": "integer",
+ "value": "${data.position_state.rtk_number}"
+ },
+ {
+ "key": "alternate_land_point.longitude",
+ "type": "double",
+ "value": "${data.alternate_land_point.longitude}"
+ },
+ {
+ "key": "alternate_land_point.latitude",
+ "type": "double",
+ "value": "${data.alternate_land_point.latitude}"
+ },
+ {
+ "key": "environment_temperature",
+ "type": "double",
+ "value": "${data.environment_temperature}"
+ },
+ {
+ "key": "network_state.rate",
+ "type": "double",
+ "value": "${data.network_state.rate}"
+ },
+ {
+ "key": "cover_state",
+ "type": "integer",
+ "value": "${data.cover_state}"
+ }
+ ]
+ }
+ },
+ {
+ "topicFilter": "thing/product/158+/osd",
+ "subscriptionQos": 0,
+ "converter": {
+ "type": "json",
+ "deviceInfo": {
+ "deviceNameExpression": "(?<=thing/product/)[^/]+(?=/osd)",
+ "deviceNameExpressionSource": "topic",
+ "deviceProfileExpressionSource": "message",
+ "deviceProfileExpression": "default"
+ },
+ "attributes": [
+ {
+ "key": "mode_code",
+ "type": "integer",
+ "value": "${data.mode_code}"
+ },
+ {
+ "key": "dock_sn",
+ "type": "string",
+ "value": "${gateway}"
+ }
+ ],
+ "timeseries": [
+ {
+ "key": "total_flight_sorties",
+ "type": "string",
+ "value": "${data.total_flight_sorties}"
+ },
+ {
+ "key": "height_limit",
+ "type": "integer",
+ "value": "${data.height_limit}"
+ },
+ {
+ "key": "distance_limit_status.distance_limit",
+ "type": "integer",
+ "value": "${distance_limit_status.distance_limit}"
+ },
+ {
+ "key": "battery",
+ "type": "string",
+ "value": "${data.battery}"
+ }
+ ]
+ }
+ },
+ {
+ "topicFilter": "thing/product/7C+/state",
+ "subscriptionQos": 0,
+ "converter": {
+ "type": "json",
+ "deviceInfo": {
+ "deviceNameExpression": "(?<=thing/product/)[^/]+(?=/state)",
+ "deviceNameExpressionSource": "topic",
+ "deviceProfileExpressionSource": "constant",
+ "deviceProfileExpression": "default"
+ },
+ "attributes": [
+ {
+ "key": "firmware_version",
+ "type": "string",
+ "value": "${data.firmware_version}"
+ }
+ ],
+ "timeseries": []
+ }
+ },
+ {
+ "topicFilter": "thing/product/158+/state",
+ "subscriptionQos": 0,
+ "converter": {
+ "type": "json",
+ "deviceInfo": {
+ "deviceNameExpression": "(?<=thing/product/)[^/]+(?=/state)",
+ "deviceNameExpressionSource": "topic",
+ "deviceProfileExpressionSource": "constant",
+ "deviceProfileExpression": "default"
+ },
+ "attributes": [
+ {
+ "key": "firmware_version",
+ "type": "string",
+ "value": "${data.firmware_version}"
+ }
+ ],
+ "timeseries": [
+ {
+ "key": "psdk_widget_values",
+ "type": "string",
+ "value": "${data.psdk_widget_values}"
+ },
+ {
+ "key": "home_latitude",
+ "type": "double",
+ "value": "${data.home_latitude}"
+ },
+ {
+ "key": "home_longitude",
+ "type": "double",
+ "value": "${data.home_longitude}"
+ },
+ {
+ "key": "total_flight_time",
+ "type": "integer",
+ "value": "${data.total_flight_time}"
+ }
+ ]
+ }
+ }
+ ],
+ "requestsMapping": {
+ "connectRequests": [
+ {
+ "topicFilter": "sensor/connect",
+ "deviceInfo": {
+ "deviceNameExpressionSource": "message",
+ "deviceNameExpression": "${serialNumber}",
+ "deviceProfileExpressionSource": "constant",
+ "deviceProfileExpression": "Thermometer"
+ }
+ },
+ {
+ "topicFilter": "sensor/+/connect",
+ "deviceInfo": {
+ "deviceNameExpressionSource": "topic",
+ "deviceNameExpression": "(?<=sensor/)(.*?)(?=/connect)",
+ "deviceProfileExpressionSource": "constant",
+ "deviceProfileExpression": "Thermometer"
+ }
+ }
+ ],
+ "disconnectRequests": [
+ {
+ "topicFilter": "sensor/disconnect",
+ "deviceInfo": {
+ "deviceNameExpressionSource": "message",
+ "deviceNameExpression": "${serialNumber}"
+ }
+ },
+ {
+ "topicFilter": "sensor/+/disconnect",
+ "deviceInfo": {
+ "deviceNameExpressionSource": "topic",
+ "deviceNameExpression": "(?<=sensor/)(.*?)(?=/connect)"
+ }
+ }
+ ],
+ "attributeRequests": [
+ {
+ "retain": false,
+ "topicFilter": "v1/devices/me/attributes/request",
+ "deviceInfo": {
+ "deviceNameExpressionSource": "message",
+ "deviceNameExpression": "${serialNumber}"
+ },
+ "attributeNameExpressionSource": "message",
+ "attributeNameExpression": "${versionAttribute}, ${pduAttribute}",
+ "topicExpression": "devices/${deviceName}/attrs",
+ "valueExpression": "${attributeKey}: ${attributeValue}"
+ }
+ ],
+ "attributeUpdates": [
+ {
+ "retain": true,
+ "deviceNameFilter": ".*",
+ "attributeFilter": "firmwareVersion",
+ "topicExpression": "sensor/${deviceName}/${attributeKey}",
+ "valueExpression": "{\"${attributeKey}\":\"${attributeValue}\"}"
+ }
+ ],
+ "serverSideRpc": [
+ {
+ "type": "twoWay",
+ "deviceNameFilter": ".*",
+ "methodFilter": "echo",
+ "requestTopicExpression": "sensor/${deviceName}/request/${methodName}/${requestId}",
+ "responseTopicExpression": "sensor/${deviceName}/response/${methodName}/${requestId}",
+ "responseTopicQoS": 1,
+ "responseTimeout": 10000,
+ "valueExpression": "${params}"
+ },
+ {
+ "type": "oneWay",
+ "deviceNameFilter": ".*",
+ "methodFilter": "no-reply",
+ "requestTopicExpression": "sensor/${deviceName}/request/${methodName}/${requestId}",
+ "valueExpression": "${params}"
+ }
+ ]
+ },
+ "name": "DOCK",
+ "id": "28239240-5e44-4fb8-9f66-c29c638903ae",
+ "logLevel": "INFO",
+ "enableRemoteLogging": false,
+ "configVersion": "3.7.8"
+}
\ No newline at end of file
From 1d5a1468ef694af47b155c4c4bb0658c87dfd47c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=AD=99=E5=B0=8F=E4=BA=91?=
Date: Sat, 24 Jan 2026 10:33:51 +0800
Subject: [PATCH 16/18] xx
---
.gitignore | 2 ++
1 file changed, 2 insertions(+)
diff --git a/.gitignore b/.gitignore
index 2d9c6b3..5a886e4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -52,6 +52,8 @@ docker/mysql/data/
docker/mysql/db/*.sql
docker/nacos/logs/
docker/redis/data/
+docker/minio/data/
+docker/minio/config/
docker/nginx/html/dist/*
!docker/nginx/html/dist/.gitkeep
runtime/*
From fbbd6734cb39a33805111e5463814c23ee68285e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=AD=99=E5=B0=8F=E4=BA=91?=
Date: Sat, 24 Jan 2026 10:59:56 +0800
Subject: [PATCH 17/18] =?UTF-8?q?=E6=B7=BB=E5=8A=A0minio=E7=9A=84=E5=9C=B0?=
=?UTF-8?q?=E5=9D=80=E8=BD=AC=E5=8F=91=E5=92=8Cminio=E7=9A=84=E9=95=9C?=
=?UTF-8?q?=E5=83=8F=E6=8B=89=E8=B5=B7?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docker/a_th_web/conf/nginx.conf | 12 ++++++++++++
docker/docker-compose.yml | 15 +++++++++++++++
2 files changed, 27 insertions(+)
diff --git a/docker/a_th_web/conf/nginx.conf b/docker/a_th_web/conf/nginx.conf
index 8102642..5c1a9e8 100644
--- a/docker/a_th_web/conf/nginx.conf
+++ b/docker/a_th_web/conf/nginx.conf
@@ -28,6 +28,18 @@ http {
proxy_pass http://ruoyi-gateway:8080/;
}
+ location /minio/ {
+ proxy_set_header Host $http_host;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Forwarded-Proto $scheme;
+ proxy_connect_timeout 300;
+ proxy_http_version 1.1;
+ proxy_set_header Connection "";
+ chunked_transfer_encoding off;
+ proxy_pass http://ruoyi-minio:9000/;
+ }
+
# 避免actuator暴露
if ($uri ~ "/actuator") {
return 403;
diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml
index 66895c6..8dbc33b 100644
--- a/docker/docker-compose.yml
+++ b/docker/docker-compose.yml
@@ -52,6 +52,21 @@ services:
volumes:
- ./redis/conf/redis.conf:/home/ruoyi/redis/redis.conf
command: redis-server /home/ruoyi/redis/redis.conf
+ ruoyi-minio:
+ container_name: ruoyi-minio
+ image: registry.t-aaron.com/minio/minio:RELEASE.2024-12-18T13-15-44Z
+ environment:
+ - MINIO_ROOT_USER=minioadmin
+ - MINIO_ROOT_PASSWORD=minioadmin
+ - TZ=Asia/Shanghai
+ ports:
+ - "9000:9000"
+ - "9001:9001"
+ volumes:
+ - ./minio/data:/data
+ - ./minio/config:/root/.minio
+ command: server /data --console-address ":9001"
+ restart: unless-stopped
ruoyi-nginx:
container_name: ruoyi-nginx
image: nginx-runtime
From 40961ce7fbc83b92ecf5d84d6ba0f627b8262889 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=AD=99=E5=B0=8F=E4=BA=91?=
Date: Sat, 24 Jan 2026 11:03:15 +0800
Subject: [PATCH 18/18] xx
---
docker/deploy.sh | 1 +
1 file changed, 1 insertion(+)
diff --git a/docker/deploy.sh b/docker/deploy.sh
index abe4d97..afaede9 100644
--- a/docker/deploy.sh
+++ b/docker/deploy.sh
@@ -34,6 +34,7 @@ port(){
docker-compose build --no-cache ruoyi-mysql && docker-compose up -d ruoyi-mysql
docker-compose build --no-cache ruoyi-redis && docker-compose up -d ruoyi-redis
docker-compose build --no-cache ruoyi-nacos && docker-compose up -d ruoyi-nacos
+docker-compose build --no-cache ruoyi-minio && docker-compose up -d ruoyi-minio
docker-compose build --no-cache ruoyi-gateway && docker-compose up -d ruoyi-gateway
docker-compose build --no-cache ruoyi-nginx && docker-compose up -d ruoyi-nginx
docker-compose build --no-cache ruoyi-hyf && docker-compose up -d ruoyi-hyf