diff --git a/src/main/java/com/ruoyi/device/domain/api/IDeviceDomain.java b/src/main/java/com/ruoyi/device/domain/api/IDeviceDomain.java
index 7dccac0..7067f0b 100644
--- a/src/main/java/com/ruoyi/device/domain/api/IDeviceDomain.java
+++ b/src/main/java/com/ruoyi/device/domain/api/IDeviceDomain.java
@@ -35,6 +35,14 @@ public interface IDeviceDomain
*/
Device selectDeviceByIotDeviceId(String iotDeviceId);
+ /**
+ * 根据设备SN号查询设备
+ *
+ * @param deviceSn 设备SN号
+ * @return 设备
+ */
+ Device selectDeviceByDeviceSn(String deviceSn);
+
/**
* 新增设备
*
diff --git a/src/main/java/com/ruoyi/device/domain/impl/DeviceDomainImpl.java b/src/main/java/com/ruoyi/device/domain/impl/DeviceDomainImpl.java
index a251a4b..d5d1da8 100644
--- a/src/main/java/com/ruoyi/device/domain/impl/DeviceDomainImpl.java
+++ b/src/main/java/com/ruoyi/device/domain/impl/DeviceDomainImpl.java
@@ -47,6 +47,13 @@ public class DeviceDomainImpl implements IDeviceDomain
return DeviceConvert.from(entity);
}
+ @Override
+ public Device selectDeviceByDeviceSn(String deviceSn)
+ {
+ DeviceEntity entity = deviceMapper.selectDeviceByDeviceSn(deviceSn);
+ return DeviceConvert.from(entity);
+ }
+
@Override
public int insertDevice(Device device)
{
diff --git a/src/main/java/com/ruoyi/device/mapper/DeviceMapper.java b/src/main/java/com/ruoyi/device/mapper/DeviceMapper.java
index ccceeff..eece5d5 100644
--- a/src/main/java/com/ruoyi/device/mapper/DeviceMapper.java
+++ b/src/main/java/com/ruoyi/device/mapper/DeviceMapper.java
@@ -27,6 +27,14 @@ public interface DeviceMapper
*/
DeviceEntity selectDeviceByIotDeviceId(String iotDeviceId);
+ /**
+ * 根据设备SN号查询设备
+ *
+ * @param deviceSn 设备SN号
+ * @return 设备信息
+ */
+ DeviceEntity selectDeviceByDeviceSn(String deviceSn);
+
/**
* 查询设备列表
*
diff --git a/src/main/java/com/ruoyi/device/service/impl/DjiService.java b/src/main/java/com/ruoyi/device/service/impl/DjiService.java
index 54d5344..e9be97d 100644
--- a/src/main/java/com/ruoyi/device/service/impl/DjiService.java
+++ b/src/main/java/com/ruoyi/device/service/impl/DjiService.java
@@ -1,5 +1,10 @@
package com.ruoyi.device.service.impl;
+import com.ruoyi.device.domain.api.IAircraftDomain;
+import com.ruoyi.device.domain.api.IDeviceDomain;
+import com.ruoyi.device.domain.api.IDockAircraftDomain;
+import com.ruoyi.device.domain.api.IDockDomain;
+import com.ruoyi.device.domain.impl.DockDomainImpl;
import com.ruoyi.device.domain.impl.djimqtt.callback.IDockDataCallback;
import com.ruoyi.device.domain.impl.djimqtt.callback.IDroneDataCallback;
import com.ruoyi.device.domain.impl.djimqtt.config.DjiMqttClientConfig;
@@ -8,11 +13,19 @@ import com.ruoyi.device.domain.impl.djimqtt.handler.DjiMqttMessageHandler;
import com.ruoyi.device.domain.impl.djimqtt.manager.DjiMqttClientManager;
import com.ruoyi.device.domain.impl.djimqtt.model.DockData;
import com.ruoyi.device.domain.impl.djimqtt.model.DroneData;
+import com.ruoyi.device.domain.model.Aircraft;
+import com.ruoyi.device.domain.model.Device;
+import com.ruoyi.device.domain.model.Dock;
+import com.ruoyi.device.domain.model.DockAircraft;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.Date;
+import java.util.List;
@Service
@Slf4j
@@ -24,6 +37,18 @@ public class DjiService {
@Autowired
private DjiMqttProperties mqttProperties;
+ @Autowired
+ private IDockDomain dockDomain;
+
+ @Autowired
+ private IDeviceDomain deviceDomain;
+
+ @Autowired
+ private IAircraftDomain aircraftDomain;
+
+ @Autowired
+ private IDockAircraftDomain dockAircraftDomain;
+
@EventListener(ApplicationReadyEvent.class)
public void onApplicationReady() {
@@ -52,6 +77,8 @@ public class DjiService {
handler.registerDroneDataCallback(new IDroneDataCallback() {
@Override
public void onDroneData(DroneData droneData) {
+ // 更新 Dock 表的 lastActiveTime
+ // updateDockLastActiveTime(droneData.getDeviceSn());
// log.info("droneData:{}", droneData);
}
});
diff --git a/src/main/resources/db/migration/V2__Create_device_tables.sql b/src/main/resources/db/migration/V2__Create_device_tables.sql
index 068b855..f1c539f 100644
--- a/src/main/resources/db/migration/V2__Create_device_tables.sql
+++ b/src/main/resources/db/migration/V2__Create_device_tables.sql
@@ -32,12 +32,14 @@ CREATE TABLE IF NOT EXISTS device_dock (
dock_name VARCHAR(100) COMMENT '机场名称',
dock_location VARCHAR(200) COMMENT '机场位置',
device_id BIGINT COMMENT '设备表主键',
+ last_active_time DATETIME COMMENT '最后活跃时间',
create_by VARCHAR(64) COMMENT '创建者',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_by VARCHAR(64) COMMENT '更新者',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
remark VARCHAR(500) COMMENT '备注',
- PRIMARY KEY (dock_id)
+ PRIMARY KEY (dock_id),
+ KEY idx_dock_last_active_time (last_active_time)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='机场表';
-- 创建无人机表
diff --git a/src/main/resources/db/migration/V6__Add_last_active_time_to_dock.sql b/src/main/resources/db/migration/V6__Add_last_active_time_to_dock.sql
deleted file mode 100644
index 155986c..0000000
--- a/src/main/resources/db/migration/V6__Add_last_active_time_to_dock.sql
+++ /dev/null
@@ -1,5 +0,0 @@
--- 添加 last_active_time 字段到 dock 表
-ALTER TABLE dock ADD COLUMN last_active_time DATETIME COMMENT '最后活跃时间';
-
--- 为 last_active_time 字段创建索引以提高查询性能
-CREATE INDEX idx_dock_last_active_time ON dock(last_active_time);
diff --git a/src/main/resources/mapper/device/DeviceMapper.xml b/src/main/resources/mapper/device/DeviceMapper.xml
index a175fe2..d9bac45 100644
--- a/src/main/resources/mapper/device/DeviceMapper.xml
+++ b/src/main/resources/mapper/device/DeviceMapper.xml
@@ -37,6 +37,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where iot_device_id = #{iotDeviceId}
+
+