From 3488f8638621845763df7099fc826d01f211a46f Mon Sep 17 00:00:00 2001 From: sugus <1020570875@qq.com> Date: Wed, 15 Oct 2025 14:09:01 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E9=A3=9E=E8=A1=8C=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E6=8E=A5=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../utils/enums/AircraftDeviceBrandEnum.java | 2 +- .../aircraft/domain/FNZZAircraftLog.java | 4 +- .../domain/dto/AircraftLogPageDTO.java | 2 + .../domain/vo/AircraftDevicePageVO.java | 3 ++ .../aircraft/service/AircraftLogService.java | 44 +++++++++++-------- .../impl/AbstractAircraftLogServiceImpl.java | 40 ++++++++++++++--- .../impl/AircraftDeviceServiceImpl.java | 12 +++++ 7 files changed, 80 insertions(+), 27 deletions(-) diff --git a/aircraft-common/src/main/java/com/aircraft/utils/enums/AircraftDeviceBrandEnum.java b/aircraft-common/src/main/java/com/aircraft/utils/enums/AircraftDeviceBrandEnum.java index bc125a9..8918791 100644 --- a/aircraft-common/src/main/java/com/aircraft/utils/enums/AircraftDeviceBrandEnum.java +++ b/aircraft-common/src/main/java/com/aircraft/utils/enums/AircraftDeviceBrandEnum.java @@ -16,7 +16,7 @@ public enum AircraftDeviceBrandEnum { SF("SF", "顺丰"), - FNZZ("FNZZ", "蜂鸟制造"), + FNZZ("FNZZ", "蜂鸟智造"), ; diff --git a/aircraft-system/src/main/java/com/aircraft/modules/aircraft/domain/FNZZAircraftLog.java b/aircraft-system/src/main/java/com/aircraft/modules/aircraft/domain/FNZZAircraftLog.java index b5e2660..b1a5e54 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/aircraft/domain/FNZZAircraftLog.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/aircraft/domain/FNZZAircraftLog.java @@ -13,12 +13,12 @@ import org.springframework.data.mongodb.core.mapping.Document; import java.io.Serializable; /** - * 无人机状态信息DTO + * 蜂鸟智造-无人机文本日志 */ @Data @Document(collection = "fnzz_aircraft_log") @CompoundIndex(name = "uavUUID_timestamp_idx", def = "{'uavUUID': 1, 'timestampString': -1}") -@ApiModel(description = "无人机状态信息") +@ApiModel(description = "蜂鸟智造-无人机文本日志") public class FNZZAircraftLog extends AbstractAircraftTextLog implements Serializable { diff --git a/aircraft-system/src/main/java/com/aircraft/modules/aircraft/domain/dto/AircraftLogPageDTO.java b/aircraft-system/src/main/java/com/aircraft/modules/aircraft/domain/dto/AircraftLogPageDTO.java index be3e9ea..25b7d29 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/aircraft/domain/dto/AircraftLogPageDTO.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/aircraft/domain/dto/AircraftLogPageDTO.java @@ -2,11 +2,13 @@ package com.aircraft.modules.aircraft.domain.dto; import com.alibaba.fastjson2.annotation.JSONField; import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; import lombok.Data; import javax.validation.constraints.NotNull; @Data +@Builder public class AircraftLogPageDTO { diff --git a/aircraft-system/src/main/java/com/aircraft/modules/aircraft/domain/vo/AircraftDevicePageVO.java b/aircraft-system/src/main/java/com/aircraft/modules/aircraft/domain/vo/AircraftDevicePageVO.java index bf0235c..3b40e8c 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/aircraft/domain/vo/AircraftDevicePageVO.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/aircraft/domain/vo/AircraftDevicePageVO.java @@ -40,4 +40,7 @@ public class AircraftDevicePageVO extends AircraftDevice { @ApiModelProperty(value = "设备图片(只返回一张)") private String deviceImg; + @ApiModelProperty(value = "无人机状态") + private String state; + } diff --git a/aircraft-system/src/main/java/com/aircraft/modules/aircraft/service/AircraftLogService.java b/aircraft-system/src/main/java/com/aircraft/modules/aircraft/service/AircraftLogService.java index 11a550c..b21f978 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/aircraft/service/AircraftLogService.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/aircraft/service/AircraftLogService.java @@ -19,38 +19,44 @@ public interface AircraftLogService { * * @return */ - abstract boolean support(AircraftDeviceBrandEnum deviceBrandEnum); + boolean support(AircraftDeviceBrandEnum deviceBrandEnum); + + + + /** + * 文本日志接收-统一存到mongodb + */ + void textLogReceive(T aircraftLog); + + + + /** + * 视频日志接收 + */ + void videoLogReceive(T aircraftLog); + /** * 分页查询飞行文本日志列表 * * @param dto * @return */ - abstract PageResult page(AircraftLogPageDTO dto); - - - /** - * 文本日志接收-统一存到mongodb - */ - abstract void textLogReceive(T aircraftLog); - - - - - - /** - * 视频日志接收 - */ - public abstract void videoLogReceive(T aircraftLog); - + PageResult page(AircraftLogPageDTO dto); /** * 根据ID获取文本日志详情 * @param id * @return */ - public Map getTextLogDetailById(String id); + Map getTextLogDetailById(String id); + + /** + * 根据最后一条飞行文本日志获取飞行状态 + * @param dto + * @return + */ + String getStateByTextLog(AircraftLogPageDTO dto); } diff --git a/aircraft-system/src/main/java/com/aircraft/modules/aircraft/service/impl/AbstractAircraftLogServiceImpl.java b/aircraft-system/src/main/java/com/aircraft/modules/aircraft/service/impl/AbstractAircraftLogServiceImpl.java index db55e67..aeaf6c3 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/aircraft/service/impl/AbstractAircraftLogServiceImpl.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/aircraft/service/impl/AbstractAircraftLogServiceImpl.java @@ -20,10 +20,6 @@ import javax.annotation.Resource; import java.beans.PropertyDescriptor; import java.lang.reflect.Field; import java.lang.reflect.Method; -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.time.format.DateTimeFormatter; -import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -54,6 +50,7 @@ public abstract class AbstractAircraftLogServiceImpl content = List.of(); + // 执行查询 + + // 设置分页和排序 + query.with(Sort.by(Sort.Direction.DESC, getTimeKey())); + + + content = mongotemplate.find(query, getEntityClass()); + + + AircraftLogPageVO vo = content.stream() + .map(this::convertToVO) + .toList().stream().findFirst().orElse(null); + if (null != vo) { + return vo.getState(); + } + + + } catch (Exception e) { + //ignore + } + return null; + } + + /** * 应用分页逻辑 */ @@ -115,7 +145,7 @@ public abstract class AbstractAircraftLogServiceImpl 0 && dto.getSize() > 0); } /** diff --git a/aircraft-system/src/main/java/com/aircraft/modules/aircraft/service/impl/AircraftDeviceServiceImpl.java b/aircraft-system/src/main/java/com/aircraft/modules/aircraft/service/impl/AircraftDeviceServiceImpl.java index cc5f284..012111a 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/aircraft/service/impl/AircraftDeviceServiceImpl.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/aircraft/service/impl/AircraftDeviceServiceImpl.java @@ -4,13 +4,17 @@ import com.aircraft.domain.dto.AttachmentMaterialDTO; import com.aircraft.exception.BadRequestException; import com.aircraft.modules.aircraft.domain.AircraftDevice; import com.aircraft.modules.aircraft.domain.dto.AircraftDevicePageDTO; +import com.aircraft.modules.aircraft.domain.dto.AircraftLogPageDTO; import com.aircraft.modules.aircraft.domain.vo.AircraftDevicePageVO; import com.aircraft.modules.aircraft.mapper.AircraftDeviceMapper; import com.aircraft.modules.aircraft.service.AircraftDeviceService; +import com.aircraft.modules.aircraft.service.AircraftLogStrategyFactory; import com.aircraft.modules.system.domain.AttachmentMaterial; import com.aircraft.modules.system.service.IAttachmentMaterialService; import com.aircraft.utils.CommonConstant; +import com.aircraft.utils.PageResult; import com.aircraft.utils.SecurityUtils; +import com.aircraft.utils.enums.AircraftDeviceBrandEnum; import com.aircraft.utils.enums.UserTypeEnum; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -38,6 +42,7 @@ import java.util.List; public class AircraftDeviceServiceImpl extends ServiceImpl implements AircraftDeviceService { private final IAttachmentMaterialService attachmentMaterialService; + private final AircraftLogStrategyFactory aircraftLogStrategyFactory; //todo 枚举? private final String BUSINESS_TYPE = "aircraft_device"; @@ -63,6 +68,13 @@ public class AircraftDeviceServiceImpl extends ServiceImpl aircraftLogService.support(AircraftDeviceBrandEnum.find(item.getBrand()))) + .findFirst() + .map(service -> service.getStateByTextLog(AircraftLogPageDTO.builder().model(item.getModel()).build())) + .ifPresent(item::setState); }); } return iPage;