From 27197f3381f6f9036c06b086c1b5f768fc2fce04 Mon Sep 17 00:00:00 2001 From: wuyuan <15505152113@163.com> Date: Wed, 9 Apr 2025 12:36:37 +0800 Subject: [PATCH] 11 --- .../manage/controller/DeviceController.java | 5 +++-- .../manage/model/param/DeviceQueryParam.java | 2 ++ .../sample/manage/service/IDeviceService.java | 3 ++- .../manage/service/impl/DeviceServiceImpl.java | 4 +++- .../sample/media/model/MediaFileCountDTO.java | 2 ++ .../media/service/impl/MediaServiceImpl.java | 18 +++++++++++++++++- .../service/impl/SDKWaylineService.java | 2 +- 7 files changed, 30 insertions(+), 6 deletions(-) diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceController.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceController.java index 10cf9d1..bd1ca9d 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceController.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceController.java @@ -44,8 +44,9 @@ public class DeviceController { */ @GetMapping("/{workspace_id}/devices") @Operation(summary = "获取一个工作区中所有在线设备的列表。", description = "获取一个工作区中所有在线设备的列表") - public HttpResultResponse> getDevices(@PathVariable("workspace_id") String workspaceId) { - List devicesList = deviceService.getDevicesTopoForWeb(workspaceId); + public HttpResultResponse> getDevices(@PathVariable("workspace_id") String workspaceId, + @RequestParam(name = "nickname",required = false) String nickname) { + List devicesList = deviceService.getDevicesTopoForWeb(workspaceId,nickname); return HttpResultResponse.success(devicesList); } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/param/DeviceQueryParam.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/param/DeviceQueryParam.java index 0b169f8..301b75c 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/param/DeviceQueryParam.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/param/DeviceQueryParam.java @@ -18,6 +18,8 @@ public class DeviceQueryParam { private String deviceSn; + private String nickname; + private String workspaceId; private Integer deviceType; diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceService.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceService.java index b8056a0..0e046a6 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceService.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceService.java @@ -66,7 +66,8 @@ public interface IDeviceService { * @param workspaceId * @return */ - List getDevicesTopoForWeb(String workspaceId); + List getDevicesTopoForWeb(String workspaceId,String nickname); + /** * Set the remote controller and payloads information of the drone. diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java index c1af8c5..1b349ed 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceServiceImpl.java @@ -206,6 +206,8 @@ public class DeviceServiceImpl implements IDeviceService { DeviceEntity::getSubType, param.getSubType()) .eq(StringUtils.hasText(param.getChildSn()), DeviceEntity::getChildSn, param.getChildSn()) + .like(StringUtils.hasText(param.getNickname()), + DeviceEntity::getNickname, param.getNickname()) .and(!CollectionUtils.isEmpty(param.getDomains()), wrapper -> { for (Integer domain : param.getDomains()) { wrapper.eq(DeviceEntity::getDomain, domain).or(); @@ -222,7 +224,7 @@ public class DeviceServiceImpl implements IDeviceService { } @Override - public List getDevicesTopoForWeb(String workspaceId) { + public List getDevicesTopoForWeb(String workspaceId,String nickname) { List devicesList = this.getDevicesByParams( DeviceQueryParam.builder() .workspaceId(workspaceId) diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/media/model/MediaFileCountDTO.java b/dk-modules/sample/src/main/java/org/dromara/sample/media/model/MediaFileCountDTO.java index 44d5fee..d78f227 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/media/model/MediaFileCountDTO.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/media/model/MediaFileCountDTO.java @@ -29,4 +29,6 @@ public class MediaFileCountDTO { private Integer uploadedCount; private String deviceSn; + + private String fileId; } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/MediaServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/MediaServiceImpl.java index 3b27157..a4b0e29 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/MediaServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/MediaServiceImpl.java @@ -1,13 +1,17 @@ package org.dromara.sample.media.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.dromara.common.core.constant.DeviceQrtzConstants; import org.dromara.common.sdk.cloudapi.media.*; import org.dromara.common.sdk.cloudapi.media.api.AbstractMediaService; import org.dromara.common.sdk.mqtt.MqttReply; import org.dromara.common.sdk.mqtt.events.TopicEventsRequest; import org.dromara.common.sdk.mqtt.events.TopicEventsResponse; import org.dromara.common.websocket.dto.BizCodeEnum; +import org.dromara.sample.manage.mapper.IDeviceQrtzFileMapper; import org.dromara.sample.manage.model.dto.DeviceDTO; +import org.dromara.sample.manage.model.entity.DeviceQrtzFileEntity; import org.dromara.sample.manage.model.enums.UserTypeEnum; import org.dromara.sample.manage.service.IDeviceRedisService; import org.dromara.sample.manage.service.IDeviceService; @@ -16,6 +20,7 @@ import org.dromara.sample.media.model.MediaFileDTO; import org.dromara.sample.media.service.IFileService; import org.dromara.sample.media.service.IMediaRedisService; import org.dromara.sample.media.service.IMediaService; +import org.dromara.sample.wayline.mapper.IWaylineFileMapper; import org.dromara.sample.wayline.model.entity.WaylineFileEntity; import org.dromara.sample.wayline.service.IAiCompareQueueService; import org.dromara.sample.wayline.service.IWaylineJobService; @@ -25,6 +30,7 @@ import org.dromara.sample.websocket.service.IWebSocketMessageService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.MessageHeaders; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import java.util.List; @@ -64,6 +70,9 @@ public class MediaServiceImpl extends AbstractMediaService implements IMediaServ @Autowired private IWebSocketMessageService webSocketMessageService; + @Autowired + private IDeviceQrtzFileMapper deviceQrtzFileMapper; + @Override public Boolean fastUpload(String workspaceId, String fingerprint) { return fileService.checkExist(workspaceId, fingerprint); @@ -105,11 +114,18 @@ public class MediaServiceImpl extends AbstractMediaService implements IMediaServ Optional deviceOpt = deviceRedisService.getDeviceOnline(request.getGateway()); MediaFileCountDTO mediaFileCount = mediaRedisService.getMediaCount(request.getGateway(), jobId); + List deviceQrtzFileEntities = deviceQrtzFileMapper.selectList(new LambdaQueryWrapper().eq(DeviceQrtzFileEntity::getDeviceSn, request.getGateway()).eq(DeviceQrtzFileEntity::getStatus, DeviceQrtzConstants.QRTZ_FILE_STATUS_2).eq(DeviceQrtzFileEntity::getWaylineId, mediaFileCount.getFileId())); + // duplicate data if (deviceOpt.isEmpty() || (Objects.nonNull(mediaFileCount) && request.getBid().equals(mediaFileCount.getBid()) && request.getTid().equals(mediaFileCount.getTid()))) { - //WaylineFileEntity waylineFileEntity = waylineFileMapper.selectOne(new LambdaQueryWrapper().eq(WaylineFileEntity::getWaylineId, deviceQrtzFileEntity.getWaylineId())); + if(CollectionUtils.isEmpty(deviceQrtzFileEntities)){ + deviceQrtzFileEntities.stream().forEach(item->{ + item.setStatus(DeviceQrtzConstants.QRTZ_FILE_STATUS_2); + }); + deviceQrtzFileMapper.updateById(deviceQrtzFileEntities,100); + } return new TopicEventsResponse().setData(MqttReply.success()); } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/SDKWaylineService.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/SDKWaylineService.java index aefb7ed..d97d9a9 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/SDKWaylineService.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/SDKWaylineService.java @@ -102,7 +102,7 @@ public class SDKWaylineService extends AbstractWaylineService { if (Objects.nonNull(job.getMediaCount()) && job.getMediaCount() != 0) { mediaRedisService.setMediaCount(response.getGateway(), job.getJobId(), MediaFileCountDTO.builder().deviceSn(deviceOpt.get().getChildDeviceSn()) - .jobId(response.getBid()).mediaCount(job.getMediaCount()).uploadedCount(0).build()); + .jobId(response.getBid()).mediaCount(job.getMediaCount()).uploadedCount(0).fileId(job.getFileId()).build()); } if (FlighttaskStatusEnum.OK != statusEnum) {