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} + +