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] =?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();