From dd23c6a885d67ead6b1aef9d6c18d8dc7cbd85cd Mon Sep 17 00:00:00 2001
From: yuan <123@>
Date: 星期六, 25 四月 2026 13:56:43 +0800
Subject: [PATCH] feat(stock): 新增出库记录批次号字段设置
---
src/main/java/com/ruoyi/basic/utils/FileUtil.java | 127 ++++++++++++++++++++++++++++++++++++-----
1 files changed, 110 insertions(+), 17 deletions(-)
diff --git a/src/main/java/com/ruoyi/basic/utils/FileUtil.java b/src/main/java/com/ruoyi/basic/utils/FileUtil.java
index bf0b9b2..d964efc 100644
--- a/src/main/java/com/ruoyi/basic/utils/FileUtil.java
+++ b/src/main/java/com/ruoyi/basic/utils/FileUtil.java
@@ -104,10 +104,10 @@
*
* @param application 鏂囦欢鐢ㄩ��
* @param recordType 鍏宠仈璁板綍绫诲瀷
- * @param recordId 鍏宠仈璁板綍id
+ * @param recordIds 鍏宠仈璁板綍id
*/
- public void deleteStorageBlobsByApplicationAndRecordTypeAndRecordId(ApplicationTypeEnum application, RecordTypeEnum recordType, Long recordId) {
- if (recordId == null || recordId <= 0) {
+ public void deleteStorageBlobsByApplicationAndRecordTypeAndRecordIds(ApplicationTypeEnum application, RecordTypeEnum recordType, List<Long> recordIds) {
+ if (recordIds == null || recordIds.isEmpty()) {
throw new RuntimeException("鍏宠仈璁板綍id涓嶈兘涓虹┖");
}
if (application == null) {
@@ -118,7 +118,7 @@
}
List<StorageAttachment> storageAttachments = storageAttachmentMapper.selectList(new LambdaQueryWrapper<StorageAttachment>()
.eq(StorageAttachment::getRecordType, recordType.getType())
- .eq(StorageAttachment::getRecordId, recordId)
+ .in(StorageAttachment::getRecordId, recordIds)
.eq(StorageAttachment::getApplication, application.getType()));
if (CollectionUtils.isNotEmpty(storageAttachments)) {
List<Long> storageAttachmentIds = storageAttachments.stream().map(StorageAttachment::getStorageBlobId)
@@ -137,6 +137,13 @@
storageAttachmentMapper.deleteByIds(storageAttachmentIds);
}
+ /**
+ * 鍒犻櫎鏂囦欢鍏宠仈淇℃伅
+ *
+ * @param application 鏂囦欢鐢ㄩ��
+ * @param recordType 鍏宠仈璁板綍绫诲瀷
+ * @param recordId 鍏宠仈璁板綍id
+ */
public void deleteStorageAttachmentsByApplicationAndRecordTypeAndRecordId(ApplicationTypeEnum application, RecordTypeEnum recordType, Long recordId) {
if (recordId == null || recordId <= 0) {
throw new RuntimeException("鍏宠仈璁板綍id涓嶈兘涓虹┖");
@@ -147,10 +154,34 @@
if (recordType == null) {
throw new RuntimeException("鍏宠仈璁板綍绫诲瀷涓嶈兘涓虹┖");
}
- deleteStorageBlobsByApplicationAndRecordTypeAndRecordId(application, recordType, recordId);
+ deleteStorageBlobsByApplicationAndRecordTypeAndRecordIds(application, recordType, Arrays.asList(recordId));
storageAttachmentMapper.delete(new LambdaQueryWrapper<StorageAttachment>()
.eq(StorageAttachment::getRecordType, recordType.getType())
.eq(StorageAttachment::getRecordId, recordId)
+ .eq(StorageAttachment::getApplication, application.getType()));
+ }
+
+ /**
+ * 鎵归噺鍒犻櫎鏂囦欢鍏宠仈淇℃伅 attachment
+ *
+ * @param application 鏂囦欢鐢ㄩ��
+ * @param recordType 鍏宠仈璁板綍绫诲瀷
+ * @param recordIds 鍏宠仈璁板綍id
+ */
+ public void deleteStorageAttachmentsByApplicationAndRecordTypeAndRecordIds(ApplicationTypeEnum application, RecordTypeEnum recordType, List<Long> recordIds) {
+ if (recordIds == null || recordIds.isEmpty()) {
+ throw new RuntimeException("鍏宠仈璁板綍id涓嶈兘涓虹┖");
+ }
+ if (application == null) {
+ throw new RuntimeException("鏂囦欢鐢ㄩ�斾笉鑳戒负绌�");
+ }
+ if (recordType == null) {
+ throw new RuntimeException("鍏宠仈璁板綍绫诲瀷涓嶈兘涓虹┖");
+ }
+ deleteStorageBlobsByApplicationAndRecordTypeAndRecordIds(application, recordType, recordIds);
+ storageAttachmentMapper.delete(new LambdaQueryWrapper<StorageAttachment>()
+ .eq(StorageAttachment::getRecordType, recordType.getType())
+ .in(StorageAttachment::getRecordId, recordIds)
.eq(StorageAttachment::getApplication, application.getType()));
}
@@ -193,7 +224,7 @@
*
* @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;
@@ -218,7 +249,7 @@
* @param recordType 鍏宠仈璁板綍绫诲瀷
* @param recordId 鍏宠仈璁板綍id
*/
- public List<StorageBlobVO> getStorageBlobDTOsByApplicationAndRecordTypeAndRecordId(ApplicationTypeEnum application, RecordTypeEnum recordType, Long recordId) {
+ public List<StorageBlobVO> getStorageBlobVOsByApplicationAndRecordTypeAndRecordId(ApplicationTypeEnum application, RecordTypeEnum recordType, Long recordId) {
List<StorageAttachment> storageAttachments = getStorageAttachmentsByApplicationAndRecordTypeAndRecordId(application, recordType, recordId);
if (CollectionUtils.isEmpty(storageAttachments)) {
return null;
@@ -244,7 +275,7 @@
* @param recordId 鍏宠仈璁板綍id
* @param expired 杩囨湡鏃堕棿
*/
- public List<StorageBlobVO> getStorageBlobDTOsByApplicationAndRecordTypeAndRecordId(ApplicationTypeEnum application, RecordTypeEnum recordType, Long recordId, BigDecimal 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;
@@ -268,7 +299,7 @@
* @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;
@@ -300,7 +331,7 @@
for (StorageAttachment storageAttachment : storageAttachments) {
StorageAttachmentVO storageAttachmentVO = new StorageAttachmentVO();
BeanUtils.copyProperties(storageAttachment, storageAttachmentVO);
- List<StorageBlobVO> storageBlobVOS = getStorageBlobDTOsByStorageAttachmentIds(Collections.singletonList(storageAttachment.getId()));
+ List<StorageBlobVO> storageBlobVOS = getStorageBlobVOsByStorageAttachmentIds(Collections.singletonList(storageAttachment.getId()));
if (CollectionUtils.isEmpty(storageBlobVOS)) {
storageAttachmentVO.setStorageBlobVOS(new ArrayList<>());
} else {
@@ -326,7 +357,7 @@
for (StorageAttachment storageAttachment : storageAttachments) {
StorageAttachmentVO storageAttachmentVO = new StorageAttachmentVO();
BeanUtils.copyProperties(storageAttachment, storageAttachmentVO);
- List<StorageBlobVO> storageBlobVOS = getStorageBlobDTOsByStorageAttachmentIds(Collections.singletonList(storageAttachment.getId()), expired);
+ List<StorageBlobVO> storageBlobVOS = getStorageBlobVOsByStorageAttachmentIds(Collections.singletonList(storageAttachment.getId()), expired);
if (CollectionUtils.isEmpty(storageBlobVOS)) {
storageAttachmentVO.setStorageBlobVOS(new ArrayList<>());
} else {
@@ -353,7 +384,7 @@
for (StorageAttachment storageAttachment : storageAttachments) {
StorageAttachmentVO storageAttachmentVO = new StorageAttachmentVO();
BeanUtils.copyProperties(storageAttachment, storageAttachmentVO);
- List<StorageBlobVO> storageBlobVOS = getStorageBlobDTOsByStorageAttachmentIds(Collections.singletonList(storageAttachment.getId()));
+ List<StorageBlobVO> storageBlobVOS = getStorageBlobVOsByStorageAttachmentIds(Collections.singletonList(storageAttachment.getId()));
if (CollectionUtils.isEmpty(storageBlobVOS)) {
storageAttachmentVO.setStorageBlobVOS(new ArrayList<>());
} else {
@@ -381,7 +412,7 @@
for (StorageAttachment storageAttachment : storageAttachments) {
StorageAttachmentVO storageAttachmentVO = new StorageAttachmentVO();
BeanUtils.copyProperties(storageAttachment, storageAttachmentVO);
- List<StorageBlobVO> storageBlobVOS = getStorageBlobDTOsByStorageAttachmentIds(Collections.singletonList(storageAttachment.getId()), expired);
+ List<StorageBlobVO> storageBlobVOS = getStorageBlobVOsByStorageAttachmentIds(Collections.singletonList(storageAttachment.getId()), expired);
if (CollectionUtils.isEmpty(storageBlobVOS)) {
storageAttachmentVO.setStorageBlobVOS(new ArrayList<>());
} else {
@@ -399,7 +430,7 @@
*/
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));
}
@@ -414,7 +445,7 @@
*/
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));
}
@@ -428,7 +459,7 @@
*/
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));
}
@@ -443,13 +474,75 @@
*/
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));
}
return res;
}
+ /**
+ * 閫氳繃鏂囦欢鍏宠仈id鑾峰彇鏂囦欢棰勮鍦板潃
+ *
+ * @param application 搴旂敤
+ * @param recordType 璁板綍绫诲瀷
+ * @param recordId 璁板綍id
+ */
+ public List<String> getFilePreviewURLByApplicationAndRecordTypeAndRecordId(ApplicationTypeEnum application, RecordTypeEnum recordType, Long recordId) {
+ List<StorageAttachment> storageAttachments = getStorageAttachmentsByApplicationAndRecordTypeAndRecordId(application, recordType, recordId);
+ if (CollectionUtils.isEmpty(storageAttachments)) {
+ return new ArrayList<>();
+ }
+ return getFilePreviewURLByStorageAttachmentIds(storageAttachments.stream().map(StorageAttachment::getId).collect(Collectors.toList()));
+ }
+
+ /**
+ * 閫氳繃鏂囦欢鍏宠仈id鑾峰彇鏂囦欢棰勮鍦板潃瀛樺湪杩囨湡鏃堕棿
+ *
+ * @param application 搴旂敤
+ * @param recordType 璁板綍绫诲瀷
+ * @param recordId 璁板綍id
+ * @param expired 杩囨湡鏃堕棿锛堝垎閽燂級
+ */
+ public List<String> getFilePreviewURLByApplicationAndRecordTypeAndRecordIdAndExpired(ApplicationTypeEnum application, RecordTypeEnum recordType, Long recordId, BigDecimal expired) {
+ List<StorageAttachment> storageAttachments = getStorageAttachmentsByApplicationAndRecordTypeAndRecordId(application, recordType, recordId);
+ if (CollectionUtils.isEmpty(storageAttachments)) {
+ return new ArrayList<>();
+ }
+ return getFilePreviewURLByStorageAttachmentIds(storageAttachments.stream().map(StorageAttachment::getId).collect(Collectors.toList()), expired);
+ }
+
+ /**
+ * 閫氳繃鏂囦欢鍏宠仈id鑾峰彇鏂囦欢涓嬭浇鍦板潃
+ *
+ * @param application 搴旂敤
+ * @param recordType 璁板綍绫诲瀷
+ * @param recordId 璁板綍id
+ */
+ public List<String> getFileDownloadURLByApplicationAndRecordTypeAndRecordId(ApplicationTypeEnum application, RecordTypeEnum recordType, Long recordId) {
+ List<StorageAttachment> storageAttachments = getStorageAttachmentsByApplicationAndRecordTypeAndRecordId(application, recordType, recordId);
+ if (CollectionUtils.isEmpty(storageAttachments)) {
+ return new ArrayList<>();
+ }
+ return getFileDownloadURLByStorageAttachmentIds(storageAttachments.stream().map(StorageAttachment::getId).collect(Collectors.toList()));
+ }
+
+ /**
+ * 閫氳繃鏂囦欢鍏宠仈id鑾峰彇鏂囦欢涓嬭浇鍦板潃瀛樺湪杩囨湡鏃堕棿
+ *
+ * @param application 搴旂敤
+ * @param recordType 璁板綍绫诲瀷
+ * @param recordId 璁板綍id
+ * @param expired 杩囨湡鏃堕棿锛堝垎閽燂級
+ */
+ public List<String> getFileDownloadURLByApplicationAndRecordTypeAndRecordIdAndExpired(ApplicationTypeEnum application, RecordTypeEnum recordType, Long recordId, BigDecimal expired) {
+ List<StorageAttachment> storageAttachments = getStorageAttachmentsByApplicationAndRecordTypeAndRecordId(application, recordType, recordId);
+ if (CollectionUtils.isEmpty(storageAttachments)) {
+ return new ArrayList<>();
+ }
+ return getFileDownloadURLByStorageAttachmentIds(storageAttachments.stream().map(StorageAttachment::getId).collect(Collectors.toList()), expired);
+ }
+
public String buildSignedPreviewUrl(StorageBlobVO storageBlob) {
return buildSignedUrl(storageBlob, "/preview/", properties.getExpired());
}
--
Gitblit v1.9.3