From c2502536b2d29a4b37e7c9bbfe9809de3718cf92 Mon Sep 17 00:00:00 2001 From: wuyuan <15505152113@163.com> Date: Wed, 26 Mar 2025 19:45:30 +0800 Subject: [PATCH 01/10] 1 --- .../sdk/cloudapi/device/DeviceEnum.java | 10 +++- .../common/sdk/cloudapi/device/OsdDock.java | 2 + .../cloudapi/media/FileUploadCallback.java | 12 +++++ .../media/FileUploadCallbackFile.java | 11 ++++ .../sdk/cloudapi/media/FilghtTypeEnum.java | 36 +++++++++++++ .../common/sdk/cloudapi/media/FlightTask.java | 54 +++++++++++++++++++ .../cloudapi/media/MediaFileExtension.java | 2 - .../sdk/cloudapi/media/MediaFileMetadata.java | 7 +-- .../media/MediaUploadCallbackRequest.java | 15 +++++- .../media/UploadCallbackFileMetadata.java | 8 +-- .../websocket/utils/WebSocketUtils.java | 12 +++-- .../manage/model/entity/DeviceHmsEntity.java | 3 -- .../service/impl/DeviceHmsServiceImpl.java | 8 +-- .../sample/media/model/MediaFileEntity.java | 45 ++++++++++++++++ .../sample/media/service/IFileService.java | 3 +- .../media/service/impl/FileServiceImpl.java | 27 ++++++++-- .../media/service/impl/MediaServiceImpl.java | 8 +-- pom.xml | 2 +- 18 files changed, 231 insertions(+), 34 deletions(-) create mode 100644 dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/media/FilghtTypeEnum.java create mode 100644 dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/media/FlightTask.java diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DeviceEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DeviceEnum.java index c3b8806..d63bcc3 100644 --- a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DeviceEnum.java +++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DeviceEnum.java @@ -3,6 +3,7 @@ package org.dromara.common.sdk.cloudapi.device; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; import io.swagger.v3.oas.annotations.media.Schema; +import org.dromara.common.core.utils.StringUtils; import org.dromara.common.sdk.exception.CloudSDKException; import java.util.Arrays; @@ -133,7 +134,12 @@ public enum DeviceEnum { @JsonCreator public static DeviceEnum find(String key) { - return Arrays.stream(values()).filter(device -> device.getDevice().equals(key)) - .findAny().orElseThrow(() -> new CloudSDKException(DeviceEnum.class, key)); + if(StringUtils.isEmpty(key)){ + key = DeviceEnum.M3TD.getDevice(); + } + String finalKey = key; + String finalKey1 = key; + return Arrays.stream(values()).filter(device -> device.getDevice().equals(finalKey)) + .findAny().orElseThrow(() -> new CloudSDKException(DeviceEnum.class, finalKey1)); } } diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/OsdDock.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/OsdDock.java index 42b5e8d..f8b1f73 100644 --- a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/OsdDock.java +++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/OsdDock.java @@ -86,6 +86,8 @@ public class OsdDock { private DrcStateEnum drcState; + + /** * User experience improvement program */ diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/media/FileUploadCallback.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/media/FileUploadCallback.java index 59a44a2..8639886 100644 --- a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/media/FileUploadCallback.java +++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/media/FileUploadCallback.java @@ -13,6 +13,9 @@ public class FileUploadCallback { private FileUploadCallbackFile file; + private FlightTask flightTask; + + public FileUploadCallback() { } @@ -22,6 +25,7 @@ public class FileUploadCallback { "result=" + result + ", progress=" + progress + ", file=" + file + + ", flightTask =" + flightTask + '}'; } @@ -51,4 +55,12 @@ public class FileUploadCallback { this.file = file; return this; } + + public FlightTask getFlightTask() { + return flightTask; + } + + public void setFlightTask(FlightTask flightTask) { + this.flightTask = flightTask; + } } diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/media/FileUploadCallbackFile.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/media/FileUploadCallbackFile.java index 1062730..ac0216f 100644 --- a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/media/FileUploadCallbackFile.java +++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/media/FileUploadCallbackFile.java @@ -16,6 +16,7 @@ public class FileUploadCallbackFile { private String objectKey; private UploadCallbackFileMetadata metadata; + private String cloudToCloudId; public FileUploadCallbackFile() { } @@ -28,6 +29,7 @@ public class FileUploadCallbackFile { ", path='" + path + '\'' + ", objectKey='" + objectKey + '\'' + ", metadata=" + metadata + + ", cloudToCloudId= " + cloudToCloudId + '}'; } @@ -75,4 +77,13 @@ public class FileUploadCallbackFile { this.metadata = metadata; return this; } + + public String getCloudToCloudId() { + return cloudToCloudId; + } + + public FileUploadCallbackFile setCloudToCloudId(String cloudToCloudId) { + this.cloudToCloudId = cloudToCloudId; + return this; + } } diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/media/FilghtTypeEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/media/FilghtTypeEnum.java new file mode 100644 index 0000000..388b98b --- /dev/null +++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/media/FilghtTypeEnum.java @@ -0,0 +1,36 @@ +package org.dromara.common.sdk.cloudapi.media; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; +import org.dromara.common.sdk.exception.CloudSDKException; + +import java.util.Arrays; + +/** + * @author sean + * @version 1.3 + * @date 2022/11/14 + */ +public enum FilghtTypeEnum { + + ROUTE(0), + + ONECLIKE(1); + + private final int type; + + FilghtTypeEnum(int type) { + this.type = type; + } + + @JsonValue + public int getType() { + return type; + } + + @JsonCreator + public static FilghtTypeEnum find(int type) { + return Arrays.stream(values()).filter(subFile -> subFile.type == type).findAny() + .orElseThrow(() -> new CloudSDKException(MediaSubFileTypeEnum.class, type)); + } +} diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/media/FlightTask.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/media/FlightTask.java new file mode 100644 index 0000000..688c6c4 --- /dev/null +++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/media/FlightTask.java @@ -0,0 +1,54 @@ +package org.dromara.common.sdk.cloudapi.media; + +/** + * @author sean + * @version 1.1 + * @date 2022/6/9 + */ +public class FlightTask { + + private Integer uploadedFileCount; + + private Integer expectedFileCount; + + private FilghtTypeEnum flightType; + + + public FlightTask() { + } + + @Override + public String toString() { + return "FlightTask{" + + "uploadedFileCount=" + uploadedFileCount + + ", expectedFileCount=" + expectedFileCount + + ", flightType=" + flightType + + '}'; + } + + public Integer getUploadedFileCount() { + return uploadedFileCount; + } + + public void setUploadedFileCount(Integer uploadedFileCount) { + this.uploadedFileCount = uploadedFileCount; + } + + public Integer getExpectedFileCount() { + return expectedFileCount; + } + + public void setExpectedFileCount(Integer expectedFileCount) { + this.expectedFileCount = expectedFileCount; + } + + public FilghtTypeEnum getFlightType() { + return flightType; + } + + public void setFlightType(FilghtTypeEnum flightType) { + this.flightType = flightType; + } + + +} diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/media/MediaFileExtension.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/media/MediaFileExtension.java index 1f2b168..49e53bf 100644 --- a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/media/MediaFileExtension.java +++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/media/MediaFileExtension.java @@ -19,13 +19,11 @@ public class MediaFileExtension { @Schema(description = "drone device product enum") private DeviceEnum droneModelKey; - @NotNull @JsonProperty("file_group_id") @Schema(description = "If the media file was shot during the wayline, this value will not be null.", format = "uuid") private String fileGroupId; @JsonProperty("is_original") - @NotNull @Schema(description = "Whether the image is the original image.") private Boolean original; diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/media/MediaFileMetadata.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/media/MediaFileMetadata.java index 1d072aa..f2e092a 100644 --- a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/media/MediaFileMetadata.java +++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/media/MediaFileMetadata.java @@ -7,6 +7,7 @@ import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; import java.time.LocalDateTime; +import java.util.Date; /** * @author sean @@ -25,7 +26,7 @@ public class MediaFileMetadata { @NotNull @Schema(description = "media create time", example = "2023-01-01T20:00:00+08:00") @JsonProperty("created_time") - private LocalDateTime createdTime; + private Date createdTime; @NotNull @JsonProperty("gimbal_yaw_degree") @@ -66,11 +67,11 @@ public class MediaFileMetadata { return this; } - public LocalDateTime getCreatedTime() { + public Date getCreatedTime() { return createdTime; } - public MediaFileMetadata setCreatedTime(LocalDateTime createdTime) { + public MediaFileMetadata setCreatedTime(Date createdTime) { this.createdTime = createdTime; return this; } diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/media/MediaUploadCallbackRequest.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/media/MediaUploadCallbackRequest.java index ca2de94..a3a6bf7 100644 --- a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/media/MediaUploadCallbackRequest.java +++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/media/MediaUploadCallbackRequest.java @@ -43,6 +43,9 @@ public class MediaUploadCallbackRequest { @NotNull private MediaFileMetadata metadata; + + private String cloudToCloudId; + public MediaUploadCallbackRequest() { } @@ -56,7 +59,8 @@ public class MediaUploadCallbackRequest { ", objectKey='" + objectKey + '\'' + ", subFileType=" + subFileType + ", metadata=" + metadata + - '}'; + ", cloudToCloudId= " + cloudToCloudId + + "}"; } public MediaFileExtension getExt() { @@ -121,4 +125,13 @@ public class MediaUploadCallbackRequest { this.metadata = metadata; return this; } + + public String getCloudToCloudId() { + return cloudToCloudId; + } + + public MediaUploadCallbackRequest setCloudToCloudId(String cloudToCloudId) { + this.cloudToCloudId = cloudToCloudId; + return this; + } } diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/media/UploadCallbackFileMetadata.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/media/UploadCallbackFileMetadata.java index 4440af8..1889849 100644 --- a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/media/UploadCallbackFileMetadata.java +++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/media/UploadCallbackFileMetadata.java @@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import java.time.LocalDateTime; +import java.util.Date; /** * @author sean @@ -15,8 +16,7 @@ public class UploadCallbackFileMetadata { private Double absoluteAltitude; - @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ssVV") - private LocalDateTime createdTime; + private Date createdTime; private Double gimbalYawDegree; @@ -47,11 +47,11 @@ public class UploadCallbackFileMetadata { return this; } - public LocalDateTime getCreatedTime() { + public Date getCreatedTime() { return createdTime; } - public UploadCallbackFileMetadata setCreatedTime(LocalDateTime createdTime) { + public UploadCallbackFileMetadata setCreatedTime(Date createdTime) { this.createdTime = createdTime; return this; } diff --git a/dk-common/common-websocket/src/main/java/org/dromara/common/websocket/utils/WebSocketUtils.java b/dk-common/common-websocket/src/main/java/org/dromara/common/websocket/utils/WebSocketUtils.java index bf6b127..c7e9c95 100644 --- a/dk-common/common-websocket/src/main/java/org/dromara/common/websocket/utils/WebSocketUtils.java +++ b/dk-common/common-websocket/src/main/java/org/dromara/common/websocket/utils/WebSocketUtils.java @@ -98,11 +98,15 @@ public class WebSocketUtils { ObjectMapper mapper = new ObjectMapper(); mapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE); mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); - String jsonString = mapper.writeValueAsString(message); - WebSocketSessionHolder.getSessionsAll().forEach(key -> { - WebSocketSession session = WebSocketSessionHolder.getSessions(key); - sendMessage(session, jsonString); + WebSocketMessageDto broadcastMessage = new WebSocketMessageDto(); + broadcastMessage.setMessage(mapper.writeValueAsString(message)); + RedisUtils.publish(WEB_SOCKET_TOPIC, broadcastMessage, consumer -> { + log.info("WebSocket发送主题订阅消息topic:{} message:{}", WEB_SOCKET_TOPIC, message); }); +// WebSocketSessionHolder.getSessionsAll().forEach(key -> { +// WebSocketSession session = WebSocketSessionHolder.getSessions(key); +// sendMessage(session, jsonString); +// }); }catch (Exception e) { e.printStackTrace(); } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceHmsEntity.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceHmsEntity.java index 8f0f83d..8340f37 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceHmsEntity.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceHmsEntity.java @@ -59,8 +59,6 @@ public class DeviceHmsEntity implements Serializable, Cloneable { @TableField("create_time") private Date createTime; - @TableField("update_time") - private Date updateTime; @Override public DeviceHmsEntity clone() { @@ -71,7 +69,6 @@ public class DeviceHmsEntity implements Serializable, Cloneable { .bid(this.getBid()) .tid(this.getTid()) .createTime(this.getCreateTime()) - .updateTime(this.getUpdateTime()) .sn(this.getSn()) .build(); } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceHmsServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceHmsServiceImpl.java index a1eedb0..924bd64 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceHmsServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceHmsServiceImpl.java @@ -74,7 +74,6 @@ public class DeviceHmsServiceImpl extends AbstractHmsService implements IDeviceH .bid(response.getBid()) .tid(response.getTid()) .createTime(new Date(response.getTimestamp())) - .updateTime(null) .sn(sn) .build(); // Query all unread hms messages of the device in redis. @@ -113,7 +112,6 @@ public class DeviceHmsServiceImpl extends AbstractHmsService implements IDeviceH .and(wrapper -> param.getDeviceSn().forEach(sn -> wrapper.eq(DeviceHmsEntity::getSn, sn).or())) .between(param.getBeginTime() != null && param.getEndTime() != null, DeviceHmsEntity::getCreateTime, param.getBeginTime(), param.getEndTime()) - .eq(param.getUpdateTime() != null, DeviceHmsEntity::getUpdateTime, param.getUpdateTime()) .eq(param.getLevel() != null, DeviceHmsEntity::getLevel, param.getLevel()) .like(StringUtils.hasText(param.getMessage()) && HmsMessageLanguageEnum.ZH.getLanguage().equals(param.getLanguage()), @@ -136,10 +134,9 @@ public class DeviceHmsServiceImpl extends AbstractHmsService implements IDeviceH @Override public void updateUnreadHms(String deviceSn) { - mapper.update(DeviceHmsEntity.builder().updateTime(new Date()).build(), + mapper.update(DeviceHmsEntity.builder().build(), new LambdaUpdateWrapper() - .eq(DeviceHmsEntity::getSn, deviceSn) - .eq(DeviceHmsEntity::getUpdateTime, 0L)); + .eq(DeviceHmsEntity::getSn, deviceSn)); // Delete unread messages cached in redis. deviceRedisService.delHmsKeysBySn(deviceSn); } @@ -152,7 +149,6 @@ public class DeviceHmsServiceImpl extends AbstractHmsService implements IDeviceH .bid(entity.getBid()) .tid(entity.getTid()) .createTime(entity.getCreateTime()) - .updateTime(entity.getUpdateTime()) .sn(entity.getSn()) .hmsId(entity.getHmsId()) .key(entity.getHmsKey()) diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/media/model/MediaFileEntity.java b/dk-modules/sample/src/main/java/org/dromara/sample/media/model/MediaFileEntity.java index e86035e..d24b1bf 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/media/model/MediaFileEntity.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/media/model/MediaFileEntity.java @@ -7,6 +7,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; +import java.time.LocalDateTime; import java.util.Date; /** @@ -65,5 +66,49 @@ public class MediaFileEntity implements Serializable { @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE) private Date updateTime; + + @TableField("lat") + private Double lat; + + @TableField("lng") + private Double lng; + + @TableField("absolute_altitude") + private Double absoluteAltitude; + + @TableField("relative_altitude") + private Double relativeAltitude; + + @TableField("shoot_time") + private Date shootTime; + + @TableField("gimbal_yaw_degree") + private Double gimbalYawDegree; + + @TableField("cloud_to_cloud_id") + private String cloudToCloudId; + + @TableField("uploaded_file_count") + private Integer uploadedFileCount; + + @TableField("expected_file_count") + private Integer expectedFileCount; + + @TableField("flight_type") + private Integer flightType; + + /** + * 文件类型jpeg、mp4、RTK、OBS、NAV、MRK、DAT + */ + @TableField("file_type") + private String fileType; + + /** + * 后缀类型广角 W、广角 V、红外 T、变焦 Z、RTCM文件 D 、PPK + */ + @TableField("file_status") + private String fileStatus; + + private Integer fileIndex; } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/media/service/IFileService.java b/dk-modules/sample/src/main/java/org/dromara/sample/media/service/IFileService.java index 63fa171..eaeb25d 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/media/service/IFileService.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/media/service/IFileService.java @@ -1,5 +1,6 @@ package org.dromara.sample.media.service; +import org.dromara.common.sdk.cloudapi.media.FlightTask; import org.dromara.common.sdk.cloudapi.media.MediaUploadCallbackRequest; import org.dromara.common.sdk.common.PaginationData; import org.dromara.sample.media.model.MediaFileDTO; @@ -28,7 +29,7 @@ public interface IFileService { * @param file * @return */ - Integer saveFile(String workspaceId, MediaUploadCallbackRequest file); + Integer saveFile(String workspaceId, MediaUploadCallbackRequest file, FlightTask flightTask); /** * Query information about all files in this workspace based on the workspace id. diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/FileServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/FileServiceImpl.java index b288c68..9ce41f7 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/FileServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/FileServiceImpl.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.dromara.common.oss.core.OssClient; import org.dromara.common.oss.factory.OssFactory; import org.dromara.common.sdk.cloudapi.device.DeviceEnum; +import org.dromara.common.sdk.cloudapi.media.FlightTask; import org.dromara.common.sdk.cloudapi.media.MediaSubFileTypeEnum; import org.dromara.common.sdk.cloudapi.media.MediaUploadCallbackRequest; import org.dromara.common.sdk.common.Pagination; @@ -20,9 +21,11 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.net.URL; +import java.sql.Time; import java.time.Instant; import java.time.LocalDateTime; import java.time.ZoneId; +import java.util.Date; import java.util.List; import java.util.Optional; import java.util.UUID; @@ -65,10 +68,16 @@ public class FileServiceImpl implements IFileService { } @Override - public Integer saveFile(String workspaceId, MediaUploadCallbackRequest file) { - MediaFileEntity fileEntity = this.fileUploadConvertToEntity(file); + public Integer saveFile(String workspaceId, MediaUploadCallbackRequest file, FlightTask flightTask) { + MediaFileEntity fileEntity = this.fileUploadConvertToEntity(file,flightTask); fileEntity.setWorkspaceId(workspaceId); fileEntity.setFileId(UUID.randomUUID().toString()); + fileEntity.setFileType(fileEntity.getFileName().substring( fileEntity.getFileName().lastIndexOf(".")+1)); + fileEntity.setFileStatus(fileEntity.getFileName().substring( fileEntity.getFileName().lastIndexOf("_")+1, fileEntity.getFileName().lastIndexOf("."));); + int firstUnderscore = fileEntity.getFileName().indexOf("_"); + int secondUnderscore = fileEntity.getFileName().indexOf("_", firstUnderscore + 1); + int thirdUnderscore = fileEntity.getFileName().indexOf("_", secondUnderscore + 1); + fileEntity.setFileIndex(Integer.parseInt(fileEntity.getFileName().substring(secondUnderscore+1,thirdUnderscore))); return mapper.insert(fileEntity); } @@ -120,7 +129,7 @@ public class FileServiceImpl implements IFileService { * @param file * @return */ - private MediaFileEntity fileUploadConvertToEntity(MediaUploadCallbackRequest file) { + private MediaFileEntity fileUploadConvertToEntity(MediaUploadCallbackRequest file,FlightTask flightTask) { MediaFileEntity.MediaFileEntityBuilder builder = MediaFileEntity.builder(); if (file != null) { @@ -133,7 +142,17 @@ public class FileServiceImpl implements IFileService { .jobId(file.getExt().getFileGroupId()) .drone(file.getExt().getSn()) .tinnyFingerprint(file.getExt().getTinnyFingerprint()) - .payload(file.getExt().getPayloadModelKey().getDevice()); + .payload(file.getExt().getPayloadModelKey().getDevice()) + .lat(file.getMetadata().getShootPosition().getLat()) + .lng(file.getMetadata().getShootPosition().getLng()) + .gimbalYawDegree(file.getMetadata().getGimbalYawDegree()) + .absoluteAltitude(file.getMetadata().getAbsoluteAltitude()) + .relativeAltitude(file.getMetadata().getRelativeAltitude()) + .shootTime(file.getMetadata().getCreatedTime()) + .cloudToCloudId(file.getCloudToCloudId()) + .flightType(flightTask.getFlightType().getType()) + .uploadedFileCount(flightTask != null ? flightTask.getUploadedFileCount() : null) + .expectedFileCount(flightTask != null ? flightTask.getExpectedFileCount() : null); // domain-type-subType DeviceEnum payloadModelKey = file.getExt().getPayloadModelKey(); 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 d95693a..81880ee 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 @@ -64,7 +64,7 @@ public class MediaServiceImpl extends AbstractMediaService implements IMediaServ @Override public Integer saveMediaFile(String workspaceId, MediaUploadCallbackRequest file) { - return fileService.saveFile(workspaceId, file); + return fileService.saveFile(workspaceId, file,null); } @Override @@ -156,8 +156,9 @@ public class MediaServiceImpl extends AbstractMediaService implements IMediaServ file.setPath(objectKey.substring(Optional.of(objectKey.indexOf("mediafile")) .filter(index -> index > 0).map(index -> index++).orElse(0), objectKey.lastIndexOf("/"))); + Integer fileFlag = fileService.saveFile(device.getWorkspaceId(), file, callback.getFlightTask()); - return fileService.saveFile(device.getWorkspaceId(), file) > 0; + return fileFlag> 0; } private void notifyUploadedCount(MediaFileCountDTO mediaFileCount, TopicEventsRequest request, String jobId, DeviceDTO dock) { @@ -208,6 +209,7 @@ public class MediaServiceImpl extends AbstractMediaService implements IMediaServ .get()) .setName(file.getName()) .setObjectKey(file.getObjectKey()) - .setPath(file.getPath()); + .setPath(file.getPath()) + .setCloudToCloudId(file.getCloudToCloudId()); } } diff --git a/pom.xml b/pom.xml index 63a9d40..e2c75c9 100644 --- a/pom.xml +++ b/pom.xml @@ -85,7 +85,7 @@ dev - dev + wuyuan 127.0.0.1:8848 DEFAULT_GROUP DEFAULT_GROUP From bb994e2fdf92a822715758dedcf20ce271935ee1 Mon Sep 17 00:00:00 2001 From: wuyuan <15505152113@163.com> Date: Wed, 26 Mar 2025 19:55:20 +0800 Subject: [PATCH 02/10] =?UTF-8?q?=E5=8E=86=E5=8F=B2=E6=98=A0=E5=83=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/sample/media/service/impl/FileServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/FileServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/FileServiceImpl.java index 9ce41f7..a150e93 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/FileServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/media/service/impl/FileServiceImpl.java @@ -73,7 +73,7 @@ public class FileServiceImpl implements IFileService { fileEntity.setWorkspaceId(workspaceId); fileEntity.setFileId(UUID.randomUUID().toString()); fileEntity.setFileType(fileEntity.getFileName().substring( fileEntity.getFileName().lastIndexOf(".")+1)); - fileEntity.setFileStatus(fileEntity.getFileName().substring( fileEntity.getFileName().lastIndexOf("_")+1, fileEntity.getFileName().lastIndexOf("."));); + fileEntity.setFileStatus(fileEntity.getFileName().substring( fileEntity.getFileName().lastIndexOf("_")+1, fileEntity.getFileName().lastIndexOf("."))); int firstUnderscore = fileEntity.getFileName().indexOf("_"); int secondUnderscore = fileEntity.getFileName().indexOf("_", firstUnderscore + 1); int thirdUnderscore = fileEntity.getFileName().indexOf("_", secondUnderscore + 1); From 6429cfb3b9a213df01047f3e0cdab748cd84546c Mon Sep 17 00:00:00 2001 From: yangwei <867012372@qq.com> Date: Wed, 26 Mar 2025 20:42:08 +0800 Subject: [PATCH 03/10] =?UTF-8?q?[fix]=201=E3=80=81=E9=9B=86=E6=88=90rocke?= =?UTF-8?q?tmq=202=E3=80=81=E5=BC=80=E5=8F=91=E9=A6=96=E9=A1=B5=E9=A2=84?= =?UTF-8?q?=E8=AD=A6=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/RemoteRocketmqMessageService.java | 12 ++++ .../api/domain/vo/RemoteProductMessageVo.java | 12 ++++ dk-api/pom.xml | 1 + .../BusinessAlertStatisticsController.java | 12 +++- .../business/mapper/BusinessAlertMapper.java | 10 ++-- .../IBusinessAlertStatisticsService.java | 3 + .../BusinessAlertStatisticsServiceImpl.java | 56 ++++++++++++++++++- .../mapper/business/BusinessAlertMapper.xml | 9 +++ dk-visual/rocketmq/pom.xml | 28 ++++++++++ .../RemoteRocketmqMessageServiceImpl.java | 32 +++++++++++ 10 files changed, 168 insertions(+), 7 deletions(-) create mode 100644 dk-api/api-rocketmq/src/main/java/org/dromara/rocketmq/api/RemoteRocketmqMessageService.java create mode 100644 dk-api/api-rocketmq/src/main/java/org/dromara/rocketmq/api/domain/vo/RemoteProductMessageVo.java create mode 100644 dk-visual/rocketmq/src/main/java/com/ruoyi/rocketmq/dubbo/RemoteRocketmqMessageServiceImpl.java diff --git a/dk-api/api-rocketmq/src/main/java/org/dromara/rocketmq/api/RemoteRocketmqMessageService.java b/dk-api/api-rocketmq/src/main/java/org/dromara/rocketmq/api/RemoteRocketmqMessageService.java new file mode 100644 index 0000000..813c8a2 --- /dev/null +++ b/dk-api/api-rocketmq/src/main/java/org/dromara/rocketmq/api/RemoteRocketmqMessageService.java @@ -0,0 +1,12 @@ +package org.dromara.rocketmq.api; + + +import org.dromara.rocketmq.api.domain.vo.RemoteProductMessageVo; + +import java.util.Map; + +public interface RemoteRocketmqMessageService { + + Map sendSynchronizeMessage(RemoteProductMessageVo remoteProductMessageVo); + +} diff --git a/dk-api/api-rocketmq/src/main/java/org/dromara/rocketmq/api/domain/vo/RemoteProductMessageVo.java b/dk-api/api-rocketmq/src/main/java/org/dromara/rocketmq/api/domain/vo/RemoteProductMessageVo.java new file mode 100644 index 0000000..3466c0a --- /dev/null +++ b/dk-api/api-rocketmq/src/main/java/org/dromara/rocketmq/api/domain/vo/RemoteProductMessageVo.java @@ -0,0 +1,12 @@ +package org.dromara.rocketmq.api.domain.vo; + +import lombok.Data; + +@Data +public class RemoteProductMessageVo { + + private String topic; + + private String message; + +} diff --git a/dk-api/pom.xml b/dk-api/pom.xml index 273f93e..b68ef7c 100644 --- a/dk-api/pom.xml +++ b/dk-api/pom.xml @@ -14,6 +14,7 @@ api-resource api-workflow api-business + api-rocketmq dk-api diff --git a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java index c5b490e..279dbd9 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java +++ b/dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertStatisticsController.java @@ -1,5 +1,6 @@ package org.dromara.business.controller; +import cn.hutool.core.lang.Dict; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; @@ -80,7 +81,16 @@ public class BusinessAlertStatisticsController extends BaseController { } - + /** + * 出警效率 + * @param businessAlertBo + * @return + */ + @Operation(summary="出警效率", description="出警效率") + @GetMapping(value = "/handler/rate") + public R> handlerRate(BusinessAlertBo businessAlertBo,Dict dict) { + return R.ok(statisticsService.handlerRate(businessAlertBo)); + } diff --git a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java index 58392b0..335f53a 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java +++ b/dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java @@ -69,11 +69,13 @@ public interface BusinessAlertMapper extends BaseMapperPlus> countAlertTypeCompare(@Param("param") BusinessAlertBo businessAlertBo); - Integer countFromOldToCurrent(BusinessAlertBo businessAlertBo); + Integer countFromOldToCurrent(@Param("param") BusinessAlertBo businessAlertBo); - Map countCurrentAlert(BusinessAlertBo businessAlertBo); + Map countCurrentAlert(@Param("param") BusinessAlertBo businessAlertBo); - Map countMonthAlert(BusinessAlertBo businessAlertBo); + Map countMonthAlert(@Param("param") BusinessAlertBo businessAlertBo); - Map countCurrentDayAlert(BusinessAlertBo businessAlertBo); + Map countCurrentDayAlert(@Param("param") BusinessAlertBo businessAlertBo); + + Map handlerRate(@Param("param") BusinessAlertBo businessAlertBo,@Param("month") String month); } diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertStatisticsService.java b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertStatisticsService.java index 95b6d9e..11b8a2c 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertStatisticsService.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertStatisticsService.java @@ -29,4 +29,7 @@ public interface IBusinessAlertStatisticsService { Map countPostDayAlert(BusinessAlertBo businessAlertBo); List countPostAlert(BusinessAlertBo businessAlertBo); + + List handlerRate(BusinessAlertBo businessAlertBo); + } diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java index bcb4690..5736142 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java @@ -19,6 +19,8 @@ import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.math.RoundingMode; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -222,7 +224,7 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist } postVoList.forEach(postVo -> { - List labelList = getAiLabel(businessAlertBo.getPostCode()); + List labelList = getAiLabel(postVo.getPostCode()); businessAlertBo.setAiLabelEnList(labelList); Map dayMap = this.baseMapper.countCurrentDayAlert(businessAlertBo); result.put(postVo.getPostName(), dayMap.get("total")); @@ -248,7 +250,7 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist } postVoList.forEach(postVo -> { - List labelList = getAiLabel(businessAlertBo.getPostCode()); + List labelList = getAiLabel(postVo.getPostCode()); businessAlertBo.setAiLabelEnList(labelList); Map dateMap = switch (businessAlertBo.getDateType()) { case 1 -> baseMapper.countCurrentAlert(businessAlertBo); @@ -269,6 +271,56 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist return result; } + /** + * 出警效率 + * @param businessAlertBo + * @return + */ + @Override + public List handlerRate(BusinessAlertBo businessAlertBo) { + //查询所有的职能岗位 + List postVoList = remotePostService.listPost(); + + List monthList = getLastSixMonths(); + + List result = new ArrayList<>(); + + monthList.forEach(month -> { + StatObj statObj = new StatObj(); + statObj.setStatKey(month); + List statObjs = new ArrayList<>(); + postVoList.forEach(postVo -> { + List labelList = getAiLabel(postVo.getPostCode()); + businessAlertBo.setAiLabelEnList(labelList); + Map rateMap = baseMapper.handlerRate(businessAlertBo,month); + StatObj statObj1 = new StatObj(); + statObj1.setStatKey(postVo.getPostName()); + statObj1.setStatVal(rateMap.get("avgInfo")); + statObjs.add(statObj1); + }); + statObj.setNextStatList(statObjs); + + result.add(statObj); + }); + return result; + } + + /** + * 获取近6个月的月份集合(格式:yyyy-MM) + */ + public static List getLastSixMonths() { + List months = new ArrayList<>(6); + LocalDate currentDate = LocalDate.now(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM"); + + for (int i = 0; i < 6; i++) { + LocalDate date = currentDate.minusMonths(i); + months.add(date.format(formatter)); + } + + return months; + } + private List buildDateList(BusinessAlertBo businessAlertBo) { List resultList = new ArrayList<>(); String currentYear = String.valueOf(Calendar.getInstance().get(Calendar.YEAR)); diff --git a/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml b/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml index 353353d..9009c93 100644 --- a/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml +++ b/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml @@ -428,4 +428,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + diff --git a/dk-visual/rocketmq/pom.xml b/dk-visual/rocketmq/pom.xml index 9252d69..d222fc2 100644 --- a/dk-visual/rocketmq/pom.xml +++ b/dk-visual/rocketmq/pom.xml @@ -62,6 +62,34 @@ org.dromara common-web + + + org.dromara + common-dubbo + + + + org.dromara + common-seata + + + + org.dromara + api-workflow + + + + org.dromara + api-resource + + + org.dromara + api-rocketmq + 2.2.2 + compile + + + diff --git a/dk-visual/rocketmq/src/main/java/com/ruoyi/rocketmq/dubbo/RemoteRocketmqMessageServiceImpl.java b/dk-visual/rocketmq/src/main/java/com/ruoyi/rocketmq/dubbo/RemoteRocketmqMessageServiceImpl.java new file mode 100644 index 0000000..1a88289 --- /dev/null +++ b/dk-visual/rocketmq/src/main/java/com/ruoyi/rocketmq/dubbo/RemoteRocketmqMessageServiceImpl.java @@ -0,0 +1,32 @@ +package com.ruoyi.rocketmq.dubbo; + +import com.ruoyi.rocketmq.producer.MessageProducer; +import lombok.RequiredArgsConstructor; +import org.apache.dubbo.config.annotation.DubboService; +import org.apache.rocketmq.client.producer.SendResult; +import org.dromara.rocketmq.api.RemoteRocketmqMessageService; +import org.dromara.rocketmq.api.domain.vo.RemoteProductMessageVo; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.Map; + +@DubboService +@Service +@RequiredArgsConstructor +public class RemoteRocketmqMessageServiceImpl implements RemoteRocketmqMessageService { + + /** + * + * @return + */ + @Override + public Map sendSynchronizeMessage(RemoteProductMessageVo remoteProductMessageVo){ + MessageProducer messageProducer = new MessageProducer(); + //调用MessageProducer配置好的消息方法 + SendResult sendResult = messageProducer.sendSynchronizeMessage(remoteProductMessageVo.getTopic(),"order_message_tag","title",remoteProductMessageVo.getMessage()); + Map result = new HashMap<>(); + result.put("data",sendResult); + return result; + } +} From 32fc2be92a0e5a575a345c472c2bc95a4478599f Mon Sep 17 00:00:00 2001 From: wuyuan <15505152113@163.com> Date: Wed, 26 Mar 2025 20:44:04 +0800 Subject: [PATCH 04/10] =?UTF-8?q?=E5=8E=86=E5=8F=B2=E6=98=A0=E5=83=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dk-api/api-sample/pom.xml | 26 +++++++++++++++++++ .../api/RemoteBusinessAlertService.java | 19 ++++++++++++++ .../api/RemoteBusinessTaskService.java | 17 ++++++++++++ dk-api/pom.xml | 1 + 4 files changed, 63 insertions(+) create mode 100644 dk-api/api-sample/pom.xml create mode 100644 dk-api/api-sample/src/main/java/org/dromara/business/api/RemoteBusinessAlertService.java create mode 100644 dk-api/api-sample/src/main/java/org/dromara/business/api/RemoteBusinessTaskService.java diff --git a/dk-api/api-sample/pom.xml b/dk-api/api-sample/pom.xml new file mode 100644 index 0000000..156e0ac --- /dev/null +++ b/dk-api/api-sample/pom.xml @@ -0,0 +1,26 @@ + + + + org.dromara + dk-api + ${revision} + + 4.0.0 + + api-sample + + api-sample无人机接口模块 + + + + + + + org.dromara + common-core + + + + diff --git a/dk-api/api-sample/src/main/java/org/dromara/business/api/RemoteBusinessAlertService.java b/dk-api/api-sample/src/main/java/org/dromara/business/api/RemoteBusinessAlertService.java new file mode 100644 index 0000000..88b19c7 --- /dev/null +++ b/dk-api/api-sample/src/main/java/org/dromara/business/api/RemoteBusinessAlertService.java @@ -0,0 +1,19 @@ +package org.dromara.business.api; + + + +/** + * 预警服务 + * + * @author Lion Li + */ +public interface RemoteBusinessAlertService { + + + /** + * 更新此条预警审批时候的状态 + * @param businessId 业务id(预警、工单) + * @param flowStatus 流程状态 + */ + void updateAlertStatus(String businessId, String flowStatus,Boolean isIllegal,String alertType,String message,String assignName); +} diff --git a/dk-api/api-sample/src/main/java/org/dromara/business/api/RemoteBusinessTaskService.java b/dk-api/api-sample/src/main/java/org/dromara/business/api/RemoteBusinessTaskService.java new file mode 100644 index 0000000..c0780ec --- /dev/null +++ b/dk-api/api-sample/src/main/java/org/dromara/business/api/RemoteBusinessTaskService.java @@ -0,0 +1,17 @@ +package org.dromara.business.api; + +/** + * @auther yq + * @data 2025/3/18 + */ +public interface RemoteBusinessTaskService { + + + /** + * 更新预约工单状态 + * @param fileId 航线id + * @param jobId 飞行记录id + * @param isJobStatus 飞行状态 + */ + void updateTaskStatus(String fileId, String jobId,Boolean isJobStatus); +} diff --git a/dk-api/pom.xml b/dk-api/pom.xml index 273f93e..99bd3ac 100644 --- a/dk-api/pom.xml +++ b/dk-api/pom.xml @@ -14,6 +14,7 @@ api-resource api-workflow api-business + api-business dk-api From ebbd514d5d58e139e3aa16cfc7590c7e69a9a497 Mon Sep 17 00:00:00 2001 From: yq183 <645046984@qq.com> Date: Wed, 26 Mar 2025 20:57:46 +0800 Subject: [PATCH 05/10] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dk-common/common-bus/pom.xml | 18 +++++------ .../controller/DeviceQrtzController.java | 12 +++---- .../manage/model/entity/DeviceQrtzEntity.java | 1 - .../model/entity/DeviceQrtzFileEntity.java | 13 +++++++- .../manage/service/IDeviceQrtzService.java | 5 ++- .../service/impl/DeviceQrtzServiceImpl.java | 32 +++++++++++++++---- 6 files changed, 56 insertions(+), 25 deletions(-) diff --git a/dk-common/common-bus/pom.xml b/dk-common/common-bus/pom.xml index a22b19c..4a04b67 100644 --- a/dk-common/common-bus/pom.xml +++ b/dk-common/common-bus/pom.xml @@ -16,20 +16,20 @@ - - - org.springframework.cloud - spring-cloud-starter-bus-amqp - + + + + + - - - - + + com.alibaba.cloud + spring-cloud-starter-bus-rocketmq + diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceQrtzController.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceQrtzController.java index 79cabc0..45d94af 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceQrtzController.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceQrtzController.java @@ -97,7 +97,7 @@ public class DeviceQrtzController extends BaseController { @SaCheckPermission("devict:qrtz:edit") @Log(title = "自动飞行任务启停", businessType = BusinessType.UPDATE) @RepeatSubmit() - @PostMapping("status") + @GetMapping("status") public R status(@Validated@NotNull(message = "任务id不能为空") Long id ,@NotNull(message = "状态不能为空") Integer status) { return toAjax(deviceQrtzService.update(id,status)); } @@ -133,16 +133,16 @@ public class DeviceQrtzController extends BaseController { @Log(title = "自动飞行新增航线", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping("/addFileList") - public R addFileList(@Validated(AddGroup.class) @RequestBody DeviceQrtzFileDTO deviceQrtzFileDTO) { - return toAjax(deviceQrtzService.addFileList(deviceQrtzFileDTO)); + public R addFileList(@RequestBody Mapmap) { + return toAjax(deviceQrtzService.addFileList(map)); } /** 自动飞行-复制航线*/ @SaCheckPermission("devict:qrtz:copy") - @Log(title = "自动飞行新增航线", businessType = BusinessType.INSERT) + @Log(title = "自动飞行复制航线", businessType = BusinessType.INSERT) @RepeatSubmit() - @PostMapping("/copy") + @GetMapping("/copy") public R copy(@Validated@NotNull(message = "任务id不能为空") Long qrtzId ,@NotNull(message = "请选择原来的时间") String starDate,@NotNull(message ="请选择新的时间") String endDate) { return toAjax(deviceQrtzService.copy(qrtzId,starDate,endDate)); } @@ -169,7 +169,7 @@ public class DeviceQrtzController extends BaseController { @SaCheckPermission("devict:qrtz:edit") @Log(title = "自动飞行编辑航线排序", businessType = BusinessType.UPDATE) @RepeatSubmit() - @PostMapping("/fileSort") + @GetMapping("/fileSort") public R fileSort(@Validated@NotNull(message = "主键id不能为空") Long id ,@NotNull(message = "排序") Integer sort) { return toAjax(deviceQrtzService.fileSort(id,sort)); } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceQrtzEntity.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceQrtzEntity.java index 61bb001..9c7cd82 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceQrtzEntity.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceQrtzEntity.java @@ -28,7 +28,6 @@ import java.util.List; @Builder @NoArgsConstructor @AllArgsConstructor -@JsonNaming() // 设置为驼峰命名风格 public class DeviceQrtzEntity extends BaseEntity { @TableId(type = IdType.AUTO) diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceQrtzFileEntity.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceQrtzFileEntity.java index 6f43149..e3df59e 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceQrtzFileEntity.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceQrtzFileEntity.java @@ -64,7 +64,7 @@ public class DeviceQrtzFileEntity implements Serializable { */ - private String createBy; + private Long createBy; /** * 创建时间 @@ -83,6 +83,17 @@ public class DeviceQrtzFileEntity implements Serializable { private Date updateTime; + private Long createDept; + /** + * 部门名称 */ + + private String deptName; + + + /** + * 用户名称 */ + + private String nickName; /** * 删除 0 正常 1已删除 */ diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceQrtzService.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceQrtzService.java index bcd2f01..86acb27 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceQrtzService.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceQrtzService.java @@ -47,8 +47,11 @@ public interface IDeviceQrtzService { Boolean add( DeviceQrtzDTO deviceQrtzDTO); Boolean deleteIds(Collection ids); Boolean fileRemove(Long id); - Boolean addFileList(DeviceQrtzFileDTO deviceQrtzFileDTO); + Boolean addFileList(Mapmap); Boolean copy(Long qrtzId ,String starDate,String endDate); Boolean fileSort(Long id ,Integer sort); + + //通知启用飞行任务 + DeviceQrtzFileEntity getDeviceQrtzFileEntity(Long id); } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceQrtzServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceQrtzServiceImpl.java index ba62b61..36a3ab8 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceQrtzServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceQrtzServiceImpl.java @@ -174,29 +174,36 @@ public class DeviceQrtzServiceImpl implements IDeviceQrtzService { } @Override - public Boolean addFileList(DeviceQrtzFileDTO deviceQrtzFileDTO) { + public Boolean addFileList(Mapmap) { int sort=1; + Long qrtzId = Convert.toLong(map.get("qrtzId")); + Date execDate = Convert.toDate(map.get("execDate")); + String waylineIdStr = Convert.toStr(map.get("waylineIdStr")); List selectList = deviceQrtzFileMapper.selectList(new QueryWrapper() - .eq("qrtz_id", deviceQrtzFileDTO.getQrtzId()).eq("exec_date",deviceQrtzFileDTO.getExecDate()) - .orderByDesc("sort")); + .eq("qrtz_id", qrtzId).eq("exec_date",execDate).orderByDesc("sort")); if(!CollectionUtils.isEmpty(selectList)){ Integer number =selectList.get(0).getSort(); if(ObjectUtil.isNotEmpty(number)){ sort=number+1; } } - for (String waylineId : deviceQrtzFileDTO.getWaylineIdStr().split(",")) { + for (String waylineId : waylineIdStr.split(",")) { DeviceQrtzFileEntity entity = new DeviceQrtzFileEntity(); QueryWrapper queryWrapper = new QueryWrapper().eq("wayline_id", waylineId); WaylineFileEntity fileEntity = waylineFileMapper.selectOne(queryWrapper); - entity.setQrtzId(deviceQrtzFileDTO.getQrtzId()); + entity.setQrtzId(qrtzId); entity.setWaylineId(waylineId); entity.setWaylineName(fileEntity.getName()); try { entity.setSort(sort); entity.setStatus(DeviceQrtzConstants.QRTZ_FILE_STATUS_1); - entity.setExecDate(deviceQrtzFileDTO.getExecDate()); - + entity.setExecDate(execDate); + LoginUser loginUser = LoginHelper.getLoginUser(); + entity.setCreateBy(loginUser.getUserId()); + entity.setCreateTime(new Date()); + entity.setNickName(loginUser.getNickname()); + entity.setCreateDept(loginUser.getDeptId()); + entity.setDeptName(loginUser.getDeptName()); sort=sort+1; deviceQrtzFileMapper.insert(entity); }catch (Exception e){ @@ -220,6 +227,12 @@ public class DeviceQrtzServiceImpl implements IDeviceQrtzService { entity.setSort(e.getSort()); entity.setStatus(DeviceQrtzConstants.QRTZ_FILE_STATUS_1); entity.setExecDate(Convert.toDate(endDate)); + LoginUser loginUser = LoginHelper.getLoginUser(); + entity.setCreateBy(loginUser.getUserId()); + entity.setCreateTime(new Date()); + entity.setNickName(loginUser.getNickname()); + entity.setCreateDept(loginUser.getDeptId()); + entity.setDeptName(loginUser.getDeptName()); return entity; }).toList(); return deviceQrtzFileMapper.insert(entityList).size()>0; @@ -236,4 +249,9 @@ public class DeviceQrtzServiceImpl implements IDeviceQrtzService { entity.setId(id); return deviceQrtzFileMapper.updateById(entity)>0; } + + @Override + public DeviceQrtzFileEntity getDeviceQrtzFileEntity(Long id) { + return null; + } } From e6b8661e9e7cfd694baf25ea0b106a73fb84418a Mon Sep 17 00:00:00 2001 From: wuyuan <15505152113@163.com> Date: Wed, 26 Mar 2025 21:00:01 +0800 Subject: [PATCH 06/10] =?UTF-8?q?=E5=8E=86=E5=8F=B2=E6=98=A0=E5=83=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sample/manage/service/IDeviceQrtzService.java | 2 +- .../manage/service/impl/DeviceQrtzServiceImpl.java | 2 +- .../manage/service/impl/SDKDeviceService.java | 13 +++++++++---- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceQrtzService.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceQrtzService.java index 86acb27..f40df20 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceQrtzService.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceQrtzService.java @@ -53,5 +53,5 @@ public interface IDeviceQrtzService { Boolean fileSort(Long id ,Integer sort); //通知启用飞行任务 - DeviceQrtzFileEntity getDeviceQrtzFileEntity(Long id); + DeviceQrtzFileEntity getDeviceQrtzFileEntity(String deviceSn); } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceQrtzServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceQrtzServiceImpl.java index 36a3ab8..bb24788 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceQrtzServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceQrtzServiceImpl.java @@ -251,7 +251,7 @@ public class DeviceQrtzServiceImpl implements IDeviceQrtzService { } @Override - public DeviceQrtzFileEntity getDeviceQrtzFileEntity(Long id) { + public DeviceQrtzFileEntity getDeviceQrtzFileEntity(String deviceSn) { return null; } } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java index 38f62fa..ff6d83d 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java @@ -16,10 +16,7 @@ import org.dromara.sample.manage.model.dto.DeviceDTO; import org.dromara.sample.manage.model.dto.DevicePayloadReceiver; import org.dromara.sample.manage.model.enums.DeviceFirmwareStatusEnum; import org.dromara.sample.manage.model.param.DeviceQueryParam; -import org.dromara.sample.manage.service.IDeviceDictionaryService; -import org.dromara.sample.manage.service.IDevicePayloadService; -import org.dromara.sample.manage.service.IDeviceRedisService; -import org.dromara.sample.manage.service.IDeviceService; +import org.dromara.sample.manage.service.*; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.MessageHeaders; @@ -53,6 +50,9 @@ public class SDKDeviceService extends AbstractDeviceService { @Autowired private IDevicePayloadService devicePayloadService; + @Autowired + private IDeviceQrtzService deviceQrtzService; + @Override public TopicStatusResponse updateTopoOnline(TopicStatusRequest request, MessageHeaders headers) { UpdateTopoSubDevice updateTopoSubDevice = request.getData().getSubDevices().get(0); @@ -147,6 +147,11 @@ public class SDKDeviceService extends AbstractDeviceService { if (StringUtils.hasText(device.getChildDeviceSn())) { deviceService.getDeviceBySn(device.getChildDeviceSn()).ifPresent(device::setChildren); } + if(request.getData().getDroneChargeState() != null + && request.getData().getDroneChargeState().getState() == false + && request.getData().getDroneChargeState().getCapacityPercent() >= 80){ + deviceQrtzService.getDeviceQrtzFileEntity(device.getDeviceSn()); + } deviceRedisService.setDeviceOnline(device); fillDockOsd(from, request.getData()); From b725463a09193f689795201854a237d269299163 Mon Sep 17 00:00:00 2001 From: yq183 <645046984@qq.com> Date: Wed, 26 Mar 2025 21:12:28 +0800 Subject: [PATCH 07/10] =?UTF-8?q?=E6=8F=90u=E5=8F=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sample/manage/model/entity/DeviceQrtzFileEntity.java | 3 +-- .../org/dromara/sample/manage/service/IDeviceQrtzService.java | 2 +- .../sample/manage/service/impl/DeviceQrtzServiceImpl.java | 3 ++- .../dromara/sample/wayline/model/entity/WaylineFileEntity.java | 2 ++ 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceQrtzFileEntity.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceQrtzFileEntity.java index e3df59e..77a4773 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceQrtzFileEntity.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceQrtzFileEntity.java @@ -44,8 +44,7 @@ public class DeviceQrtzFileEntity implements Serializable { private Integer status; - - + private String deviceSn; /** * 飞行时间 diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceQrtzService.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceQrtzService.java index 86acb27..f40df20 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceQrtzService.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceQrtzService.java @@ -53,5 +53,5 @@ public interface IDeviceQrtzService { Boolean fileSort(Long id ,Integer sort); //通知启用飞行任务 - DeviceQrtzFileEntity getDeviceQrtzFileEntity(Long id); + DeviceQrtzFileEntity getDeviceQrtzFileEntity(String deviceSn); } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceQrtzServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceQrtzServiceImpl.java index 36a3ab8..3585a50 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceQrtzServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceQrtzServiceImpl.java @@ -191,6 +191,7 @@ public class DeviceQrtzServiceImpl implements IDeviceQrtzService { DeviceQrtzFileEntity entity = new DeviceQrtzFileEntity(); QueryWrapper queryWrapper = new QueryWrapper().eq("wayline_id", waylineId); WaylineFileEntity fileEntity = waylineFileMapper.selectOne(queryWrapper); + entity.setDeviceSn(fileEntity.getDeviceSn()); entity.setQrtzId(qrtzId); entity.setWaylineId(waylineId); entity.setWaylineName(fileEntity.getName()); @@ -251,7 +252,7 @@ public class DeviceQrtzServiceImpl implements IDeviceQrtzService { } @Override - public DeviceQrtzFileEntity getDeviceQrtzFileEntity(Long id) { + public DeviceQrtzFileEntity getDeviceQrtzFileEntity(String deviceSn) { return null; } } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/entity/WaylineFileEntity.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/entity/WaylineFileEntity.java index 81b6221..9df75d7 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/entity/WaylineFileEntity.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/entity/WaylineFileEntity.java @@ -30,6 +30,8 @@ public class WaylineFileEntity implements Serializable { @TableField("wayline_id") private String waylineId; + @TableField("device_sn") + private String deviceSn; @TableField("drone_model_key") private String droneModelKey; From ff32d7575752417c84f56ed6bd6fed24df3a7f05 Mon Sep 17 00:00:00 2001 From: yq183 <645046984@qq.com> Date: Wed, 26 Mar 2025 22:09:46 +0800 Subject: [PATCH 08/10] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/DeviceQrtzController.java | 5 +-- .../service/impl/DeviceQrtzServiceImpl.java | 45 ++++++++++++++++--- 2 files changed, 42 insertions(+), 8 deletions(-) diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceQrtzController.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceQrtzController.java index 45d94af..ec7273a 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceQrtzController.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceQrtzController.java @@ -154,9 +154,8 @@ public class DeviceQrtzController extends BaseController { */ @SaCheckPermission("devict:qrtz:remove") @Log(title = "自动飞行航线删除", businessType = BusinessType.DELETE) - @DeleteMapping("/fileRemove/{id}") - public R fileRemove(@NotEmpty(message = "主键不能为空") - @PathVariable Long id) { + @DeleteMapping("/fileRemove") + public R fileRemove(@NotNull(message = "主键不能为空")Long id) { return toAjax(deviceQrtzService.fileRemove(id)); } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceQrtzServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceQrtzServiceImpl.java index 3585a50..b7b2827 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceQrtzServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceQrtzServiceImpl.java @@ -4,13 +4,13 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; + import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.dromara.common.core.constant.DeviceQrtzConstants; -import org.dromara.common.core.utils.MapstructUtils; + import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.satoken.utils.LoginHelper; -import org.dromara.sample.manage.mapper.IDeviceMapper; + import org.dromara.sample.manage.mapper.IDeviceQrtzDateMapper; import org.dromara.sample.manage.mapper.IDeviceQrtzFileMapper; import org.dromara.sample.manage.mapper.IDeviceQrtzMapper; @@ -21,9 +21,9 @@ import org.dromara.sample.manage.model.entity.DeviceQrtzDateEntity; import org.dromara.sample.manage.model.entity.DeviceQrtzEntity; import org.dromara.sample.manage.model.entity.DeviceQrtzFileEntity; import org.dromara.sample.manage.service.IDeviceQrtzDateService; -import org.dromara.sample.manage.service.IDeviceQrtzFileService; + import org.dromara.sample.manage.service.IDeviceQrtzService; -import org.dromara.sample.manage.service.IDeviceService; + import org.dromara.sample.wayline.mapper.IWaylineFileMapper; import org.dromara.sample.wayline.model.entity.WaylineFileEntity; import org.dromara.system.api.model.LoginUser; @@ -32,6 +32,10 @@ import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.text.ParseException; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.format.DateTimeFormatter; import java.util.Collection; import java.util.Date; import java.util.List; @@ -251,8 +255,39 @@ public class DeviceQrtzServiceImpl implements IDeviceQrtzService { return deviceQrtzFileMapper.updateById(entity)>0; } + @Override public DeviceQrtzFileEntity getDeviceQrtzFileEntity(String deviceSn) { + if(StrUtil.isNotEmpty(deviceSn)){ + // 获取当前日期 + LocalDate currentDate = LocalDate.now(); + + // 定义日期格式 + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + + // 格式化当前日期 + String formattedDate = currentDate.format(formatter); + List qrtzFileEntityList = deviceQrtzFileMapper.selectList(new QueryWrapper().eq("device_sn", deviceSn).eq("exec_date", formattedDate).eq("status", DeviceQrtzConstants.QRTZ_FILE_STATUS_1).orderByAsc("sort")); + if(!qrtzFileEntityList.isEmpty()){ + DeviceQrtzFileEntity deviceQrtzFileEntity = qrtzFileEntityList.get(0); + List qrtzDateEntityList = deviceQrtzDateMapper.listDeviceQrtzDateByQrtzAndDate(deviceQrtzFileEntity.getQrtzId()); + if(!qrtzDateEntityList.isEmpty()){ + // 获取当前日期和时间 + LocalDateTime currentDateTime = LocalDateTime.now(); + for (DeviceQrtzDateEntity qrtzDate : qrtzDateEntityList) { + if (!currentDateTime.isBefore(Convert.toLocalDateTime(qrtzDate.getStartDate())) && !currentDateTime.isAfter(Convert.toLocalDateTime(qrtzDate.getEndDate()))){ + //获取航线数据发送之类 + //获取是否是工单航线,是修改状态 + + } + + + } + + } + } + + } return null; } } From cd16de0c659b602925094c48ee093f1493836fcf Mon Sep 17 00:00:00 2001 From: wuyuan <15505152113@163.com> Date: Wed, 26 Mar 2025 22:13:31 +0800 Subject: [PATCH 09/10] =?UTF-8?q?=E5=8E=86=E5=8F=B2=E6=98=A0=E5=83=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manage/service/impl/SDKDeviceService.java | 11 ++++++++++- .../controller/WaylineFileController.java | 4 ++-- .../sample/wayline/model/dto/WaylineFileDTO.java | 2 ++ .../wayline/model/entity/WaylineFileEntity.java | 6 ++++++ .../wayline/service/IWaylineFileService.java | 2 +- .../service/impl/WaylineFileServiceImpl.java | 16 +++++++++++++++- 6 files changed, 36 insertions(+), 5 deletions(-) diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java index ff6d83d..6357e53 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SDKDeviceService.java @@ -27,6 +27,8 @@ import java.time.LocalDateTime; import java.util.List; import java.util.Objects; import java.util.Optional; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; import java.util.stream.Collectors; /** @@ -53,6 +55,8 @@ public class SDKDeviceService extends AbstractDeviceService { @Autowired private IDeviceQrtzService deviceQrtzService; + private ExecutorService executor = Executors.newFixedThreadPool(5); + @Override public TopicStatusResponse updateTopoOnline(TopicStatusRequest request, MessageHeaders headers) { UpdateTopoSubDevice updateTopoSubDevice = request.getData().getSubDevices().get(0); @@ -150,7 +154,12 @@ public class SDKDeviceService extends AbstractDeviceService { if(request.getData().getDroneChargeState() != null && request.getData().getDroneChargeState().getState() == false && request.getData().getDroneChargeState().getCapacityPercent() >= 80){ - deviceQrtzService.getDeviceQrtzFileEntity(device.getDeviceSn()); + executor.execute(new Runnable() { + @Override + public void run() { + deviceQrtzService.getDeviceQrtzFileEntity(device.getDeviceSn()); + } + }); } deviceRedisService.setDeviceOnline(device); diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineFileController.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineFileController.java index 89d7c2b..543e794 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineFileController.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/controller/WaylineFileController.java @@ -65,13 +65,13 @@ public class WaylineFileController implements IHttpWaylineService { */ @PostMapping("${url.wayline.prefix}${url.wayline.version}/workspaces/{workspace_id}/waylines/file/upload") @Operation(summary = "导入kmz航路文件。", description = "导入kmz航路文件。") - public HttpResultResponse importKmzFile(@PathVariable(name = "workspace_id") String workspaceId,HttpServletRequest request, MultipartFile file) { + public HttpResultResponse importKmzFile(@PathVariable(name = "workspace_id") String workspaceId,HttpServletRequest request, MultipartFile file,String deviceSn) { if (Objects.isNull(file)) { return HttpResultResponse.error("未收到文件。"); } LoginUser loginUser = LoginHelper.getLoginUser(); String creator = loginUser.getUsername(); - waylineFileService.importKmzFile(file, workspaceId, creator); + waylineFileService.importKmzFile(file, workspaceId, creator,deviceSn); return HttpResultResponse.success(); } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/dto/WaylineFileDTO.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/dto/WaylineFileDTO.java index e83206b..828b018 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/dto/WaylineFileDTO.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/dto/WaylineFileDTO.java @@ -45,4 +45,6 @@ public class WaylineFileDTO { private String deviceName; + private Integer fileNo; + } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/entity/WaylineFileEntity.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/entity/WaylineFileEntity.java index 81b6221..034a767 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/entity/WaylineFileEntity.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/entity/WaylineFileEntity.java @@ -60,4 +60,10 @@ public class WaylineFileEntity implements Serializable { @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE) private Date updateTime; + @TableField(value = "device_sn") + private String deviceSn; + + @TableField(value = "file_no") + private String fileNo; + } diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineFileService.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineFileService.java index 95a5a08..0c16986 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineFileService.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/IWaylineFileService.java @@ -81,7 +81,7 @@ public interface IWaylineFileService { * @param creator * @return */ - void importKmzFile(MultipartFile file, String workspaceId, String creator); + void importKmzFile(MultipartFile file, String workspaceId, String creator,String deviceSn); String getWaylineIdByFileId(Integer fileId); diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineFileServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineFileServiceImpl.java index 5a1f452..9a6783b 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineFileServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/WaylineFileServiceImpl.java @@ -198,12 +198,18 @@ public class WaylineFileServiceImpl implements IWaylineFileService { } @Override - public void importKmzFile(MultipartFile file, String workspaceId, String creator) { + public void importKmzFile(MultipartFile file, String workspaceId, String creator,String deviceSn) { Optional waylineFileOpt = validKmzFile(file); if (waylineFileOpt.isEmpty()) { throw new RuntimeException("文件格式不正确。"); } + if (!StringUtils.hasText(deviceSn)) { + throw new RuntimeException("文件格式不正确。"); + } try { + List waylineFileEntities = mapper.selectList(new LambdaQueryWrapper() + .eq(WaylineFileEntity::getDeviceSn, deviceSn).orderBy(true, false, WaylineFileEntity::getFileNo).last(" limit 1")); + WaylineFileDTO waylineFile = waylineFileOpt.get(); waylineFile.setUsername(creator); OssClient storage = OssFactory.instance("waylinefile"); @@ -211,6 +217,14 @@ public class WaylineFileServiceImpl implements IWaylineFileService { String suffix = org.apache.commons.lang3.StringUtils.substring(originalfileName, originalfileName.lastIndexOf("."), originalfileName.length()); UploadResult uploadResult = storage.uploadSuffix(file.getBytes(), suffix, file.getContentType()); waylineFile.setObjectKey(uploadResult.getFilename()); + List deviceSns = new ArrayList<>(); + deviceSns.add(deviceSn); + waylineFile.setDeviceSns(deviceSns); + if(CollectionUtils.isNotEmpty(waylineFileEntities)) { + waylineFile.setFileNo(waylineFileEntities.size()+1); + }else { + waylineFile.setFileNo(1); + } this.saveWaylineFile(workspaceId, waylineFile); } catch (IOException e) { e.printStackTrace(); From 9fee4770c4096f01b832593a2680a1964af51c96 Mon Sep 17 00:00:00 2001 From: wuyuan <15505152113@163.com> Date: Wed, 26 Mar 2025 22:14:13 +0800 Subject: [PATCH 10/10] =?UTF-8?q?=E5=8E=86=E5=8F=B2=E6=98=A0=E5=83=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/sample/wayline/model/entity/WaylineFileEntity.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/entity/WaylineFileEntity.java b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/entity/WaylineFileEntity.java index 70d835f..50c5d11 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/entity/WaylineFileEntity.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/entity/WaylineFileEntity.java @@ -62,9 +62,6 @@ public class WaylineFileEntity implements Serializable { @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE) private Date updateTime; - @TableField(value = "device_sn") - private String deviceSn; - @TableField(value = "file_no") private String fileNo;