| | |
| | | } |
| | | |
| | | @Override |
| | | public Integer saveFile(String workspaceId, FileUploadDTO file) throws IOException, ImageProcessingException { |
| | | public Integer saveFile(String workspaceId, FileUploadDTO file) { |
| | | MediaFileEntity fileEntity = this.fileUploadConvertToEntity(file); |
| | | fileEntity.setWorkspaceId(workspaceId); |
| | | fileEntity.setFileId(UUID.randomUUID().toString()); |
| | | int count=mapper.insert(fileEntity); |
| | | String url = pojo.getEndpoint() + "/" + pojo.getBucket() + file.getObjectKey(); |
| | | updateStatue(file.getName()); |
| | | if (!file.getObjectKey().endsWith(".mp4")){ |
| | | File file1 = TbFjServiceImpl.downloadFile(url); |
| | | saveNailFile(workspaceId,file,file1); |
| | | Object data = ImgUtil.getInfo(file1); |
| | | fileEntity.setDroneData(data); |
| | | file1.delete(); |
| | | } |
| | | else { |
| | | File file1 = TbFjServiceImpl.downloadFile(url); |
| | | saveNailFile(workspaceId,file,file1); |
| | | file1.delete(); |
| | | } |
| | | return count; |
| | | return mapper.insert(fileEntity); |
| | | } |
| | | |
| | | public void saveNailFile(String workspaceId,FileUploadDTO file,File file1) throws IOException { |
| | | public void saveNailFile(String workspaceId, FileUploadDTO file) throws IOException, ImageProcessingException { |
| | | updateStatue(file.getName()); |
| | | boolean endsWith = file.getObjectKey().endsWith(".mp4"); |
| | | if (endsWith) { |
| | | MediaFileNailEntity nailEntity = this.fileUploadConvertToNailEntity((file)); |
| | |
| | | nailEntity.setFileId(UUID.randomUUID().toString()); |
| | | nailMapper.insert(nailEntity); |
| | | } else { |
| | | String url = pojo.getEndpoint() + "/" + pojo.getBucket() + file.getObjectKey(); |
| | | File file1 = TbFjServiceImpl.downloadFile(url); |
| | | File nailFile = new File(ImgZipUtil.compressImage(file1, 50).toURI()); |
| | | MediaFileNailEntity nailEntity = this.fileUploadConvertToNailEntity(file); |
| | | Object data = ImgUtil.getInfo(file1); |
| | | nailEntity.setIsadd(0); |
| | | nailEntity.setIsOriginal(false); |
| | | nailEntity.setDronedata(data); |
| | | nailEntity.setWorkspaceId(workspaceId); |
| | | nailEntity.setFileName("nail" + file.getName()); |
| | | nailEntity.setObjectKey("/nail" + file.getPath() + "/" + file.getName()); |
| | |
| | | String nailName = nailEntity.getObjectKey(); |
| | | nailEntity.setFileId(UUID.randomUUID().toString()); |
| | | uploadFile(pojo.getEndpoint(), pojo.getAccessKey(), pojo.getSecretKey(), pojo.getBucket(), nailName, nailFile, "image/jpeg"); |
| | | uploadFile("http://139.196.74.78:9000", "sxkj", "sxkj2024", "cloud-bucket", nailName, nailFile, "image/jpeg"); |
| | | nailMapper.insert(nailEntity); |
| | | } |
| | | } |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public Object mediaInfo(String filename) { |
| | | String name = filename; |
| | |
| | | return markEntity.getDronedata(); |
| | | } |
| | | } |
| | | } else { |
| | | String names = "nail" + filename; |
| | | List<MediaFileNailEntity> entities = nailMapper.selectList(new LambdaQueryWrapper<MediaFileNailEntity>() |
| | | .eq(MediaFileNailEntity::getFileName, names)); |
| | | if (entities != null && !entities.isEmpty()) { |
| | | for (MediaFileNailEntity NailEntity : entities) { |
| | | if (NailEntity.getDronedata() != null) { |
| | | return NailEntity.getDronedata(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | return "null"; |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public List<MediaFileDTO> getAllFilesByWorkspaceId(String workspaceId) { |
| | |
| | | // 下载并压缩文件到本地目录 |
| | | String localSaveDir = "/data/software/minio-data/zip-bucket/"; // 修改为你想保存的本地目录 |
| | | downloader.downloadAndZipFolders(jobIds, localSaveDir); |
| | | } catch (Exception e) { |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return ResponseResult.error("下载失败"+e.getMessage()); |
| | | return ResponseResult.error("下载失败" + e.getMessage()); |
| | | } |
| | | return ResponseResult.success("下载成功"); |
| | | } |
| | | |
| | | @Override |
| | | public List<String> getUniqueFilePaths(List<String> jobIds) { |
| | | return mapper.selectList( |
| | |
| | | .distinct() |
| | | .collect(Collectors.toList()); |
| | | } |
| | | |
| | | @Override |
| | | public List<MediaFileDTO> getFilesByWorkspaceAndJobId(String workspaceId, String jobId) { |
| | | return mapper.selectList(new LambdaQueryWrapper<MediaFileEntity>() |
| | |
| | | |
| | | return builder.build(); |
| | | } |
| | | |
| | | public static void uploadFile(String endpoint, String accessKey, String secretKey, String bucketName, String objectName, File file, String type) { |
| | | try { |
| | | // 创建MinIO客户端实例 |
| | |
| | | public void updateMarkMediaFileNames(String jobId) { |
| | | try { |
| | | // 查询符合条件的数据 |
| | | List<MediaFileMarkEntity> mediaFiles = markMapper.selectList(new LambdaQueryWrapper<MediaFileMarkEntity>() |
| | | .eq(MediaFileMarkEntity::getJobId, jobId)); |
| | | List<MediaFileNailEntity> mediaFiles = nailMapper.selectList(new LambdaQueryWrapper<MediaFileNailEntity>() |
| | | .eq(MediaFileNailEntity::getJobId, jobId)); |
| | | |
| | | // 判断所有 fileName 是否都包含 '~' 或者都不包含 '~' |
| | | boolean allContainTilde = mediaFiles.stream().allMatch(file -> file.getFileName().contains("~")); |
| | |
| | | } |
| | | |
| | | // 筛选出name字段不包含'~'的数据 |
| | | List<MediaFileMarkEntity> filteredFiles = mediaFiles.stream() |
| | | List<MediaFileNailEntity> filteredFiles = mediaFiles.stream() |
| | | .filter(file -> !file.getFileName().contains("~")) |
| | | .collect(Collectors.toList()); |
| | | |
| | | for (MediaFileMarkEntity currentFile : filteredFiles) { |
| | | for (MediaFileNailEntity currentFile : filteredFiles) { |
| | | String currentName = currentFile.getFileName(); |
| | | Map<String, Object> currentMetadata = JSON.parseObject(JSON.toJSONString(currentFile.getMetadata()), Map.class); |
| | | Long currentCreatedTime = (Long) currentMetadata.get("createdTime"); |
| | | |
| | | // 找到metadata中的createdTime小于当前数据的createdTime且最接近的那条数据 |
| | | Optional<MediaFileMarkEntity> closestFileOpt = mediaFiles.stream() |
| | | Optional<MediaFileNailEntity> closestFileOpt = mediaFiles.stream() |
| | | .filter(file -> { |
| | | Map<String, Object> metadata = JSON.parseObject(JSON.toJSONString(file.getMetadata()), Map.class); |
| | | Long createdTime = (Long) metadata.get("createdTime"); |
| | |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public PaginationData<MediaFileEntity> getJobId(int pageNum, int pageSize, String workspaceId) { |
| | | List<MediaFileEntity> allRecords = new ArrayList<>(); |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | @Override |
| | | public PaginationData<MediaFileEntity> getPhotoByJobId(int pageNum, int pageSize, String workspaceId, String jobId) { |
| | | |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | public List<MediaFileEntity> getMedia(String jobId) { |
| | | return mapper.selectList(new LambdaQueryWrapper<MediaFileEntity>() |
| | | .eq(MediaFileEntity::getJobId, jobId) |
| | | .groupBy(MediaFileEntity::getFileName)); // 使用groupBy去重 |
| | | } |
| | | |
| | | public void updateById(Integer id, MediaFileMarkEntity entity) { |
| | | public void updateById(Integer id, MediaFileNailEntity entity) { |
| | | entity.setIsadd(1); |
| | | UpdateWrapper<MediaFileMarkEntity> updateWrapper = new UpdateWrapper<>(); |
| | | UpdateWrapper<MediaFileNailEntity> updateWrapper = new UpdateWrapper<>(); |
| | | updateWrapper.eq("id", id); |
| | | markMapper.update(entity, updateWrapper); |
| | | nailMapper.update(entity, updateWrapper); |
| | | } |
| | | |
| | | public void updateMediaById(Integer id, MediaFileEntity entity) { |
| | |
| | | } |
| | | |
| | | public void getNoaddFile() { |
| | | List<MediaFileMarkEntity> markEntities = markMapper.selectList(new LambdaQueryWrapper<MediaFileMarkEntity>().eq(MediaFileMarkEntity::getIsadd, 0)); |
| | | for (MediaFileMarkEntity mark : markEntities) { |
| | | List<MediaFileNailEntity> markEntities = nailMapper.selectList(new LambdaQueryWrapper<MediaFileNailEntity>().eq(MediaFileNailEntity::getIsadd, 0)); |
| | | for (MediaFileNailEntity mark : markEntities) { |
| | | updateMarkMediaFileNames(mark.getJobId()); |
| | | updateMediaFileNames(mark.getJobId()); |
| | | } |