| | |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; |
| | | import com.ruoyi.basic.dto.StorageAttachmentDTO; |
| | | import com.ruoyi.basic.dto.StorageAttachmentVO; |
| | | import com.ruoyi.basic.dto.StorageBlobDTO; |
| | | import com.ruoyi.basic.dto.StorageBlobVO; |
| | | import com.ruoyi.basic.enums.ApplicationTypeEnum; |
| | | import com.ruoyi.basic.enums.RecordTypeEnum; |
| | |
| | | * @param application 文件用途 |
| | | * @param recordType 关联记录类型 |
| | | * @param recordId 关联记录id |
| | | * @param storageBlobVOS 文件信息 |
| | | * @param storageBlobDTOS 文件信息 |
| | | */ |
| | | public void saveStorageAttachment(ApplicationTypeEnum application, RecordTypeEnum recordType, Long recordId, List<StorageBlobVO> storageBlobVOS) { |
| | | if (CollectionUtils.isEmpty(storageBlobVOS)) { |
| | | public void saveStorageAttachment(ApplicationTypeEnum application, RecordTypeEnum recordType, Long recordId, List<StorageBlobDTO> storageBlobDTOS) { |
| | | if (CollectionUtils.isEmpty(storageBlobDTOS)) { |
| | | throw new RuntimeException("文件信息不能为空"); |
| | | } |
| | | if (application == null) { |
| | |
| | | // 删除旧附件信息 |
| | | deleteStorageAttachmentsByApplicationAndRecordTypeAndRecordId(application, recordType, recordId); |
| | | List<StorageAttachment> storageAttachments = new ArrayList<>(); |
| | | for (StorageBlobVO storageBlobVO : storageBlobVOS) { |
| | | for (StorageBlobDTO storageBlobDTO : storageBlobDTOS) { |
| | | StorageAttachment storageAttachment = new StorageAttachment(); |
| | | storageAttachment.setApplication(application.getType()); |
| | | storageAttachment.setRecordType(recordType.getType()); |
| | | storageAttachment.setRecordId(recordId); |
| | | storageAttachment.setStorageBlobId(storageBlobVO.getId()); |
| | | storageAttachment.setStorageBlobId(storageBlobDTO.getId()); |
| | | storageAttachment.setDeleted(0L); |
| | | storageAttachments.add(storageAttachment); |
| | | } |
| | | storageAttachmentMapper.insert(storageAttachments); |
| | | } |
| | |
| | | } |
| | | |
| | | /** |
| | | * 通过文件关联id获取文件信息 |
| | | * 通过文件关联id获取文件信息 attachment |
| | | * |
| | | * @param storageAttachmentIds 文件id |
| | | */ |
| | |
| | | } |
| | | |
| | | /** |
| | | * 通过文件用途、关联记录类型、关联记录id获取文件关联信息 |
| | | * 通过文件用途、关联记录类型、关联记录id获取文件关联信息 attachment |
| | | * |
| | | * @param application 文件用途 |
| | | * @param recordType 关联记录类型 |
| | |
| | | } |
| | | |
| | | /** |
| | | * 通过文件关联id获取文件信息 |
| | | * 通过文件关联id获取文件信息 blob |
| | | * |
| | | * @param storageAttachmentIds 文件id |
| | | */ |
| | | public List<StorageBlobVO> getStorageBlobDTOsByStorageAttachmentIds(List<Long> storageAttachmentIds) { |
| | | public List<StorageBlobVO> getStorageBlobVOsByStorageAttachmentIds(List<Long> storageAttachmentIds) { |
| | | List<StorageAttachment> storageAttachments = getStorageAttachmentsByStorageAttachmentIds(storageAttachmentIds); |
| | | if (CollectionUtils.isEmpty(storageAttachments)) { |
| | | return null; |
| | |
| | | } |
| | | |
| | | /** |
| | | * 通过文件关联id获取文件信息存在过期时间 |
| | | * 通过文件用途、关联记录类型、关联记录id获取文件信息 blob |
| | | * |
| | | * @param application 文件用途 |
| | | * @param recordType 关联记录类型 |
| | | * @param recordId 关联记录id |
| | | */ |
| | | public List<StorageBlobVO> getStorageBlobVOsByApplicationAndRecordTypeAndRecordId(ApplicationTypeEnum application, RecordTypeEnum recordType, Long recordId) { |
| | | List<StorageAttachment> storageAttachments = getStorageAttachmentsByApplicationAndRecordTypeAndRecordId(application, recordType, recordId); |
| | | if (CollectionUtils.isEmpty(storageAttachments)) { |
| | | return null; |
| | | } |
| | | List<Long> storageBlobIds = storageAttachments.stream().map(StorageAttachment::getStorageBlobId).collect(Collectors.toList()); |
| | | List<StorageBlob> storageBlobs = storageBlobMapper.selectByIds(storageBlobIds); |
| | | List<StorageBlobVO> storageBlobDTOS = new ArrayList<>(); |
| | | for (StorageBlob storageBlob : storageBlobs) { |
| | | StorageBlobVO storageBlobVO = new StorageBlobVO(); |
| | | BeanUtils.copyProperties(storageBlob, storageBlobVO); |
| | | storageBlobVO.setPreviewURL(buildSignedPreviewUrl(storageBlobVO)); |
| | | storageBlobVO.setDownloadURL(buildSignedDownloadUrl(storageBlobVO)); |
| | | storageBlobDTOS.add(storageBlobVO); |
| | | } |
| | | return storageBlobDTOS; |
| | | } |
| | | |
| | | /** |
| | | * 通过文件用途、关联记录类型、关联记录id获取文件信息 自定义过期时间(分钟) blob |
| | | * |
| | | * @param application 文件用途 |
| | | * @param recordType 关联记录类型 |
| | | * @param recordId 关联记录id |
| | | * @param expired 过期时间 |
| | | */ |
| | | public List<StorageBlobVO> getStorageBlobVOsByApplicationAndRecordTypeAndRecordId(ApplicationTypeEnum application, RecordTypeEnum recordType, Long recordId, BigDecimal expired) { |
| | | List<StorageAttachment> storageAttachments = getStorageAttachmentsByApplicationAndRecordTypeAndRecordId(application, recordType, recordId); |
| | | if (CollectionUtils.isEmpty(storageAttachments)) { |
| | | return null; |
| | | } |
| | | List<Long> storageBlobIds = storageAttachments.stream().map(StorageAttachment::getStorageBlobId).collect(Collectors.toList()); |
| | | List<StorageBlob> storageBlobs = storageBlobMapper.selectByIds(storageBlobIds); |
| | | List<StorageBlobVO> storageBlobDTOS = new ArrayList<>(); |
| | | for (StorageBlob storageBlob : storageBlobs) { |
| | | StorageBlobVO storageBlobVO = new StorageBlobVO(); |
| | | BeanUtils.copyProperties(storageBlob, storageBlobVO); |
| | | storageBlobVO.setPreviewURL(buildSignedUrl(storageBlobVO, "/preview/", expired)); |
| | | storageBlobVO.setDownloadURL(buildSignedUrl(storageBlobVO, "/download/", expired)); |
| | | storageBlobDTOS.add(storageBlobVO); |
| | | } |
| | | return storageBlobDTOS; |
| | | } |
| | | |
| | | /** |
| | | * 通过文件关联id获取文件信息存在过期时间 自定义过期时间(分钟) blob |
| | | * |
| | | * @param storageAttachmentIds 文件id |
| | | * @param expired 过期时间 |
| | | */ |
| | | public List<StorageBlobVO> getStorageBlobDTOsByStorageAttachmentIds(List<Long> storageAttachmentIds, BigDecimal expired) { |
| | | public List<StorageBlobVO> getStorageBlobVOsByStorageAttachmentIds(List<Long> storageAttachmentIds, BigDecimal expired) { |
| | | List<StorageAttachment> storageAttachments = getStorageAttachmentsByStorageAttachmentIds(storageAttachmentIds); |
| | | if (CollectionUtils.isEmpty(storageAttachments)) { |
| | | return null; |
| | |
| | | } |
| | | |
| | | /** |
| | | * 通过文件关联id获取文件信息 |
| | | * 通过文件关联id获取文件信息 attachment |
| | | * |
| | | * @param storageAttachmentIds 文件id |
| | | */ |
| | | public List<StorageAttachmentDTO> getStorageAttachmentDTOsByStorageAttachmentIds(List<Long> storageAttachmentIds) { |
| | | public List<StorageAttachmentVO> getStorageAttachmentVOSByStorageAttachmentIds(List<Long> storageAttachmentIds) { |
| | | List<StorageAttachment> storageAttachments = getStorageAttachmentsByStorageAttachmentIds(storageAttachmentIds); |
| | | if (CollectionUtils.isEmpty(storageAttachments)) { |
| | | return new ArrayList<>(); |
| | | } |
| | | List<StorageAttachmentDTO> storageAttachmentDTOS = new ArrayList<>(); |
| | | List<StorageAttachmentVO> storageAttachmentVOS = new ArrayList<>(); |
| | | for (StorageAttachment storageAttachment : storageAttachments) { |
| | | StorageAttachmentDTO storageAttachmentDTO = new StorageAttachmentDTO(); |
| | | BeanUtils.copyProperties(storageAttachment, storageAttachmentDTO); |
| | | List<StorageBlobVO> storageBlobVOS = getStorageBlobDTOsByStorageAttachmentIds(Collections.singletonList(storageAttachment.getId())); |
| | | StorageAttachmentVO storageAttachmentVO = new StorageAttachmentVO(); |
| | | BeanUtils.copyProperties(storageAttachment, storageAttachmentVO); |
| | | List<StorageBlobVO> storageBlobVOS = getStorageBlobVOsByStorageAttachmentIds(Collections.singletonList(storageAttachment.getId())); |
| | | if (CollectionUtils.isEmpty(storageBlobVOS)) { |
| | | storageAttachmentDTO.setStorageBlobVOS(new ArrayList<>()); |
| | | storageAttachmentVO.setStorageBlobVOS(new ArrayList<>()); |
| | | } else { |
| | | storageAttachmentDTO.setStorageBlobVOS(storageBlobVOS); |
| | | storageAttachmentVO.setStorageBlobVOS(storageBlobVOS); |
| | | } |
| | | storageAttachmentDTOS.add(storageAttachmentDTO); |
| | | storageAttachmentVOS.add(storageAttachmentVO); |
| | | } |
| | | return storageAttachmentDTOS; |
| | | return storageAttachmentVOS; |
| | | } |
| | | |
| | | /** |
| | | * 通过文件关联id获取文件信息存在过期时间 |
| | | * 通过文件关联id获取文件信息存在过期时间 自定义过期时间(分钟) attachment |
| | | * |
| | | * @param storageAttachmentIds 文件id |
| | | * @param expired 过期时间 |
| | | */ |
| | | public List<StorageAttachmentDTO> getStorageAttachmentDTOsByStorageAttachmentIds(List<Long> storageAttachmentIds, BigDecimal expired) { |
| | | public List<StorageAttachmentVO> getStorageAttachmentVOSByStorageAttachmentIds(List<Long> storageAttachmentIds, BigDecimal expired) { |
| | | List<StorageAttachment> storageAttachments = getStorageAttachmentsByStorageAttachmentIds(storageAttachmentIds); |
| | | if (CollectionUtils.isEmpty(storageAttachments)) { |
| | | return new ArrayList<>(); |
| | | } |
| | | List<StorageAttachmentDTO> storageAttachmentDTOS = new ArrayList<>(); |
| | | List<StorageAttachmentVO> storageAttachmentVOS = new ArrayList<>(); |
| | | for (StorageAttachment storageAttachment : storageAttachments) { |
| | | StorageAttachmentDTO storageAttachmentDTO = new StorageAttachmentDTO(); |
| | | BeanUtils.copyProperties(storageAttachment, storageAttachmentDTO); |
| | | List<StorageBlobVO> storageBlobVOS = getStorageBlobDTOsByStorageAttachmentIds(Collections.singletonList(storageAttachment.getId()), expired); |
| | | StorageAttachmentVO storageAttachmentVO = new StorageAttachmentVO(); |
| | | BeanUtils.copyProperties(storageAttachment, storageAttachmentVO); |
| | | List<StorageBlobVO> storageBlobVOS = getStorageBlobVOsByStorageAttachmentIds(Collections.singletonList(storageAttachment.getId()), expired); |
| | | if (CollectionUtils.isEmpty(storageBlobVOS)) { |
| | | storageAttachmentDTO.setStorageBlobVOS(new ArrayList<>()); |
| | | storageAttachmentVO.setStorageBlobVOS(new ArrayList<>()); |
| | | } else { |
| | | storageAttachmentDTO.setStorageBlobVOS(storageBlobVOS); |
| | | storageAttachmentVO.setStorageBlobVOS(storageBlobVOS); |
| | | } |
| | | storageAttachmentDTOS.add(storageAttachmentDTO); |
| | | storageAttachmentVOS.add(storageAttachmentVO); |
| | | } |
| | | return storageAttachmentDTOS; |
| | | return storageAttachmentVOS; |
| | | } |
| | | |
| | | /** |
| | | * 通过文件关联id获取文件信息 |
| | | * 通过文件关联id获取文件信息 attachment |
| | | * |
| | | * @param application 应用 |
| | | * @param recordType 记录类型 |
| | | * @param recordId 记录id |
| | | */ |
| | | public List<StorageAttachmentDTO> getStorageAttachmentDTOsByApplicationAndRecordTypeAndRecordId(ApplicationTypeEnum application, RecordTypeEnum recordType, Long recordId) { |
| | | public List<StorageAttachmentVO> getStorageAttachmentVOSByApplicationAndRecordTypeAndRecordId(ApplicationTypeEnum application, RecordTypeEnum recordType, Long recordId) { |
| | | List<StorageAttachment> storageAttachments = getStorageAttachmentsByApplicationAndRecordTypeAndRecordId(application, recordType, recordId); |
| | | if (CollectionUtils.isEmpty(storageAttachments)) { |
| | | return new ArrayList<>(); |
| | | } |
| | | List<StorageAttachmentDTO> storageAttachmentDTOS = new ArrayList<>(); |
| | | List<StorageAttachmentVO> storageAttachmentVOS = new ArrayList<>(); |
| | | for (StorageAttachment storageAttachment : storageAttachments) { |
| | | StorageAttachmentDTO storageAttachmentDTO = new StorageAttachmentDTO(); |
| | | BeanUtils.copyProperties(storageAttachment, storageAttachmentDTO); |
| | | List<StorageBlobVO> storageBlobVOS = getStorageBlobDTOsByStorageAttachmentIds(Collections.singletonList(storageAttachment.getId())); |
| | | StorageAttachmentVO storageAttachmentVO = new StorageAttachmentVO(); |
| | | BeanUtils.copyProperties(storageAttachment, storageAttachmentVO); |
| | | List<StorageBlobVO> storageBlobVOS = getStorageBlobVOsByStorageAttachmentIds(Collections.singletonList(storageAttachment.getId())); |
| | | if (CollectionUtils.isEmpty(storageBlobVOS)) { |
| | | storageAttachmentDTO.setStorageBlobVOS(new ArrayList<>()); |
| | | storageAttachmentVO.setStorageBlobVOS(new ArrayList<>()); |
| | | } else { |
| | | storageAttachmentDTO.setStorageBlobVOS(storageBlobVOS); |
| | | storageAttachmentVO.setStorageBlobVOS(storageBlobVOS); |
| | | } |
| | | storageAttachmentDTOS.add(storageAttachmentDTO); |
| | | storageAttachmentVOS.add(storageAttachmentVO); |
| | | } |
| | | return storageAttachmentDTOS; |
| | | return storageAttachmentVOS; |
| | | } |
| | | |
| | | /** |
| | | * 通过文件关联id获取文件信息存在过期时间 |
| | | * 通过文件关联id获取文件信息存在过期时间 自定义过期时间(分钟) attachment |
| | | * |
| | | * @param application 应用 |
| | | * @param recordType 记录类型 |
| | | * @param recordId 记录id |
| | | * @param expired 过期时间 |
| | | */ |
| | | public List<StorageAttachmentDTO> getStorageAttachmentDTOsByApplicationAndRecordTypeAndRecordId(ApplicationTypeEnum application, RecordTypeEnum recordType, Long recordId, BigDecimal expired) { |
| | | public List<StorageAttachmentVO> getStorageAttachmentVOSByApplicationAndRecordTypeAndRecordId(ApplicationTypeEnum application, RecordTypeEnum recordType, Long recordId, BigDecimal expired) { |
| | | List<StorageAttachment> storageAttachments = getStorageAttachmentsByApplicationAndRecordTypeAndRecordId(application, recordType, recordId); |
| | | if (CollectionUtils.isEmpty(storageAttachments)) { |
| | | return new ArrayList<>(); |
| | | } |
| | | List<StorageAttachmentDTO> storageAttachmentDTOS = new ArrayList<>(); |
| | | List<StorageAttachmentVO> storageAttachmentVOS = new ArrayList<>(); |
| | | for (StorageAttachment storageAttachment : storageAttachments) { |
| | | StorageAttachmentDTO storageAttachmentDTO = new StorageAttachmentDTO(); |
| | | BeanUtils.copyProperties(storageAttachment, storageAttachmentDTO); |
| | | List<StorageBlobVO> storageBlobVOS = getStorageBlobDTOsByStorageAttachmentIds(Collections.singletonList(storageAttachment.getId()), expired); |
| | | StorageAttachmentVO storageAttachmentVO = new StorageAttachmentVO(); |
| | | BeanUtils.copyProperties(storageAttachment, storageAttachmentVO); |
| | | List<StorageBlobVO> storageBlobVOS = getStorageBlobVOsByStorageAttachmentIds(Collections.singletonList(storageAttachment.getId()), expired); |
| | | if (CollectionUtils.isEmpty(storageBlobVOS)) { |
| | | storageAttachmentDTO.setStorageBlobVOS(new ArrayList<>()); |
| | | storageAttachmentVO.setStorageBlobVOS(new ArrayList<>()); |
| | | } else { |
| | | storageAttachmentDTO.setStorageBlobVOS(storageBlobVOS); |
| | | storageAttachmentVO.setStorageBlobVOS(storageBlobVOS); |
| | | } |
| | | storageAttachmentDTOS.add(storageAttachmentDTO); |
| | | storageAttachmentVOS.add(storageAttachmentVO); |
| | | } |
| | | return storageAttachmentDTOS; |
| | | return storageAttachmentVOS; |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | public List<String> getFilePreviewURLByStorageAttachmentIds(List<Long> storageAttachmentIds) { |
| | | List<String> res = new ArrayList<>(); |
| | | List<StorageBlobVO> storageBlobVOS = getStorageBlobDTOsByStorageAttachmentIds(storageAttachmentIds); |
| | | List<StorageBlobVO> storageBlobVOS = getStorageBlobVOsByStorageAttachmentIds(storageAttachmentIds); |
| | | for (StorageBlobVO storageBlobVO : storageBlobVOS) { |
| | | res.add(buildSignedPreviewUrl(storageBlobVO)); |
| | | } |
| | |
| | | } |
| | | |
| | | /** |
| | | * 通过文件关联id获取文件预览地址存在过期时间 |
| | | * 通过文件关联id获取文件预览地址存在过期时间 自定义过期时间(分钟) |
| | | * |
| | | * @param storageAttachmentIds 文件关联id |
| | | * @param expired 过期时间 |
| | | */ |
| | | public List<String> getFilePreviewURLByStorageAttachmentIds(List<Long> storageAttachmentIds, BigDecimal expired) { |
| | | List<String> res = new ArrayList<>(); |
| | | List<StorageBlobVO> storageBlobVOS = getStorageBlobDTOsByStorageAttachmentIds(storageAttachmentIds); |
| | | List<StorageBlobVO> storageBlobVOS = getStorageBlobVOsByStorageAttachmentIds(storageAttachmentIds); |
| | | for (StorageBlobVO storageBlobVO : storageBlobVOS) { |
| | | res.add(buildSignedUrl(storageBlobVO, "/preview/", expired)); |
| | | } |
| | |
| | | */ |
| | | public List<String> getFileDownloadURLByStorageAttachmentIds(List<Long> storageAttachmentIds) { |
| | | List<String> res = new ArrayList<>(); |
| | | List<StorageBlobVO> storageBlobVOS = getStorageBlobDTOsByStorageAttachmentIds(storageAttachmentIds); |
| | | List<StorageBlobVO> storageBlobVOS = getStorageBlobVOsByStorageAttachmentIds(storageAttachmentIds); |
| | | for (StorageBlobVO storageBlobVO : storageBlobVOS) { |
| | | res.add(buildSignedDownloadUrl(storageBlobVO)); |
| | | } |
| | |
| | | } |
| | | |
| | | /** |
| | | * 通过文件关联id获取文件下载地址存在过期时间 |
| | | * 通过文件关联id获取文件下载地址存在过期时间 自定义过期时间(分钟) |
| | | * |
| | | * @param storageAttachmentIds 文件关联id |
| | | * @param expired 过期时间 |
| | | */ |
| | | public List<String> getFileDownloadURLByStorageAttachmentIds(List<Long> storageAttachmentIds, BigDecimal expired) { |
| | | List<String> res = new ArrayList<>(); |
| | | List<StorageBlobVO> storageBlobVOS = getStorageBlobDTOsByStorageAttachmentIds(storageAttachmentIds); |
| | | List<StorageBlobVO> storageBlobVOS = getStorageBlobVOsByStorageAttachmentIds(storageAttachmentIds); |
| | | for (StorageBlobVO storageBlobVO : storageBlobVOS) { |
| | | res.add(buildSignedUrl(storageBlobVO, "/download/", expired)); |
| | | } |
| | |
| | | } |
| | | |
| | | /** |
| | | * 压缩文件 |
| | | * 压缩文件 图片 |
| | | * |
| | | * @param file 文件 |
| | | * @return 压缩后的文件 |