From 380da75880edf6746682fe79d330b618b1ca69b8 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期六, 25 四月 2026 14:22:53 +0800
Subject: [PATCH] 增加文件相关接口
---
src/main/java/com/ruoyi/basic/service/impl/StorageAttachmentServiceImpl.java | 52 ++++------
src/main/java/com/ruoyi/basic/service/StorageAttachmentService.java | 27 ++++
src/main/java/com/ruoyi/basic/controller/StorageAttachmentController.java | 58 +++++++++++
src/main/java/com/ruoyi/basic/utils/FileUtil.java | 43 ++++++++
src/main/java/com/ruoyi/inspectiontask/service/impl/QrCodeScanRecordServiceImpl.java | 29 +++--
src/main/java/com/ruoyi/basic/enums/ApplicationTypeEnum.java | 15 +++
src/main/java/com/ruoyi/basic/enums/RecordTypeEnum.java | 18 +++
7 files changed, 193 insertions(+), 49 deletions(-)
diff --git a/src/main/java/com/ruoyi/basic/controller/StorageAttachmentController.java b/src/main/java/com/ruoyi/basic/controller/StorageAttachmentController.java
new file mode 100644
index 0000000..730201d
--- /dev/null
+++ b/src/main/java/com/ruoyi/basic/controller/StorageAttachmentController.java
@@ -0,0 +1,58 @@
+package com.ruoyi.basic.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.basic.dto.StorageAttachmentDTO;
+import com.ruoyi.basic.dto.StorageBlobDTO;
+import com.ruoyi.basic.dto.SupplierManageDto;
+import com.ruoyi.basic.enums.ApplicationTypeEnum;
+import com.ruoyi.basic.enums.RecordTypeEnum;
+import com.ruoyi.basic.pojo.StorageAttachment;
+import com.ruoyi.basic.service.StorageAttachmentService;
+import com.ruoyi.common.constant.StorageAttachmentConstants;
+import com.ruoyi.common.enums.StorageAttachmentRecordType;
+import com.ruoyi.framework.web.domain.R;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/basic/storage_attachment")
+public class StorageAttachmentController {
+ private StorageAttachmentService storageAttachmentService;
+
+ /**
+ * 鍒嗛〉鏌ヨ閫氱敤鏂囦欢涓婁紶鐨勯檮浠朵俊鎭�
+ * @param page 鍒嗛〉鍙傛暟
+ * @param storageAttachmentDTO 鍏宠仈璁板綍淇℃伅
+ * @return 鍒嗛〉缁撴灉
+ */
+ @GetMapping("/listPage")
+ public R listPage(Page page, StorageAttachmentDTO storageAttachmentDTO) {
+ return R.ok(storageAttachmentService.listPage(page, storageAttachmentDTO));
+ }
+
+ /**
+ * 鍒犻櫎閫氱敤鏂囦欢涓婁紶鐨勯檮浠朵俊鎭�
+ * @param ids 鏂囦欢id鍒楄〃
+ * @return 鍒犻櫎缁撴灉
+ */
+ @DeleteMapping("/delete")
+ public R batchDelete(@RequestBody List<Long> ids) {
+ return R.ok(storageAttachmentService.batchDeleteStorageAttachment(ids));
+ }
+
+ /**
+ * 淇濆瓨閫氱敤鏂囦欢涓婁紶鐨勯檮浠朵俊鎭�
+ * @param storageBlobs 鏂囦欢淇℃伅鍒楄〃
+ * @param recordId 绠$悊璁板綍id
+ * @param recordType 鍏宠仈璁板綍绫诲瀷
+ * @param fileType 鏂囦欢绫诲瀷
+ */
+ @PostMapping("/add")
+ public R add(@RequestBody List<StorageBlobDTO> storageBlobs, Long recordId, String recordType, String fileType) {
+ storageAttachmentService.saveStorageAttachment(storageBlobs, recordId, recordType, fileType);
+ return R.ok();
+ }
+}
diff --git a/src/main/java/com/ruoyi/basic/enums/ApplicationTypeEnum.java b/src/main/java/com/ruoyi/basic/enums/ApplicationTypeEnum.java
index b0298ff..8cdf321 100644
--- a/src/main/java/com/ruoyi/basic/enums/ApplicationTypeEnum.java
+++ b/src/main/java/com/ruoyi/basic/enums/ApplicationTypeEnum.java
@@ -11,4 +11,19 @@
private final String type;
ApplicationTypeEnum(String type) { this.type = type; }
public String getType() { return type; }
+
+ /**
+ * 鏍规嵁 type 鍊艰幏鍙栧搴旂殑鏋氫妇瀹炰緥
+ * @param type 搴旂敤绫诲瀷瀛楃涓�
+ * @return 瀵瑰簲鐨� ApplicationTypeEnum 鏋氫妇瀹炰緥
+ * @throws RuntimeException 濡傛灉 type 鏃犳晥
+ */
+ public static ApplicationTypeEnum getByType(String type) {
+ for (ApplicationTypeEnum enumValue : ApplicationTypeEnum.values()) {
+ if (enumValue.getType().equals(type)) {
+ return enumValue;
+ }
+ }
+ throw new RuntimeException("鏃犳晥鐨勫簲鐢ㄧ被鍨�: " + type);
+ }
}
diff --git a/src/main/java/com/ruoyi/basic/enums/RecordTypeEnum.java b/src/main/java/com/ruoyi/basic/enums/RecordTypeEnum.java
index cca8977..fd8d8c0 100644
--- a/src/main/java/com/ruoyi/basic/enums/RecordTypeEnum.java
+++ b/src/main/java/com/ruoyi/basic/enums/RecordTypeEnum.java
@@ -6,9 +6,25 @@
PDA_VERSION("pda_version"),
SALES_LEDGER("sales_ledger"),
SUPPLIER_MANAGE("supplier_manage"),
- APPROVAL_PROCESS("approval_process");
+ APPROVAL_PROCESS("approval_process"),
+ QR_CODE_SCAN_RECORDS("qr_code_scan_records");
private final String type;
RecordTypeEnum(String type) { this.type = type; }
public String getType() { return type; }
+
+ /**
+ * 鏍规嵁 type 鍊艰幏鍙栧搴旂殑鏋氫妇瀹炰緥
+ * @param type 璁板綍绫诲瀷瀛楃涓�
+ * @return 瀵瑰簲鐨� RecordTypeEnum 鏋氫妇瀹炰緥
+ * @throws RuntimeException 濡傛灉 type 鏃犳晥
+ */
+ public static RecordTypeEnum getByType(String type) {
+ for (RecordTypeEnum enumValue : RecordTypeEnum.values()) {
+ if (enumValue.getType().equals(type)) {
+ return enumValue;
+ }
+ }
+ throw new RuntimeException("鏃犳晥鐨勮褰曠被鍨�: " + type);
+ }
}
diff --git a/src/main/java/com/ruoyi/basic/service/StorageAttachmentService.java b/src/main/java/com/ruoyi/basic/service/StorageAttachmentService.java
index 7fbaf64..ef095f4 100644
--- a/src/main/java/com/ruoyi/basic/service/StorageAttachmentService.java
+++ b/src/main/java/com/ruoyi/basic/service/StorageAttachmentService.java
@@ -1,6 +1,13 @@
package com.ruoyi.basic.service;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.basic.dto.StorageAttachmentDTO;
+import com.ruoyi.basic.dto.StorageAttachmentVO;
+import com.ruoyi.basic.dto.StorageBlobDTO;
+import com.ruoyi.basic.enums.ApplicationTypeEnum;
+import com.ruoyi.basic.enums.RecordTypeEnum;
import com.ruoyi.basic.pojo.StorageAttachment;
import com.ruoyi.common.constant.StorageAttachmentConstants;
import com.ruoyi.common.enums.StorageAttachmentRecordType;
@@ -19,15 +26,20 @@
/**
* 淇濆瓨閫氱敤鏂囦欢涓婁紶鐨勯檮浠朵俊鎭�
- * @param attachments 鏂囦欢淇℃伅鍒楄〃
+ * @param storageBlobDTOS 鏂囦欢淇℃伅鍒楄〃
* @param recordId 绠$悊璁板綍id
* @param recordType 鍏宠仈璁板綍绫诲瀷
* @param fileType 鏂囦欢绫诲瀷
*/
- public void saveStorageAttachment(List<StorageAttachment> attachments, Long recordId, StorageAttachmentRecordType recordType, StorageAttachmentConstants fileType);
+ public void saveStorageAttachment(List<StorageBlobDTO> storageBlobDTOS, Long recordId, String recordType, String fileType);
- public void saveStorageAttachment(List<StorageAttachment> attachments, Long recordId, StorageAttachmentRecordType recordType, String fileType);
-
+ /**
+ * 鍒嗛〉鏌ヨ閫氱敤鏂囦欢涓婁紶鐨勯檮浠朵俊鎭�
+ * @param page 鍒嗛〉鍙傛暟
+ * @param storageAttachmentDTO 鍏宠仈璁板綍淇℃伅
+ * @return 鍒嗛〉缁撴灉
+ */
+ public IPage<StorageAttachmentVO> listPage(Page page, StorageAttachmentDTO storageAttachmentDTO);
/**
* 鍒犻櫎閫氱敤鏂囦欢涓婁紶鐨勯檮浠朵俊鎭�
@@ -35,4 +47,11 @@
* @return 鍒犻櫎缁撴灉
*/
public int deleteStorageAttachment(StorageAttachment storageAttachment);
+
+ /**
+ * 鎵归噺鍒犻櫎閫氱敤鏂囦欢涓婁紶鐨勯檮浠朵俊鎭�
+ * @param ids 鏂囦欢id鍒楄〃
+ * @return 鍒犻櫎缁撴灉
+ */
+ public int batchDeleteStorageAttachment(List<Long> ids);
}
diff --git a/src/main/java/com/ruoyi/basic/service/impl/StorageAttachmentServiceImpl.java b/src/main/java/com/ruoyi/basic/service/impl/StorageAttachmentServiceImpl.java
index f3f3ae3..db38d7a 100644
--- a/src/main/java/com/ruoyi/basic/service/impl/StorageAttachmentServiceImpl.java
+++ b/src/main/java/com/ruoyi/basic/service/impl/StorageAttachmentServiceImpl.java
@@ -1,15 +1,22 @@
package com.ruoyi.basic.service.impl;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.basic.dto.StorageAttachmentDTO;
+import com.ruoyi.basic.dto.StorageAttachmentVO;
+import com.ruoyi.basic.dto.StorageBlobDTO;
+import com.ruoyi.basic.enums.ApplicationTypeEnum;
+import com.ruoyi.basic.enums.RecordTypeEnum;
import com.ruoyi.basic.mapper.StorageAttachmentMapper;
import com.ruoyi.basic.mapper.StorageBlobMapper;
import com.ruoyi.basic.pojo.StorageAttachment;
import com.ruoyi.basic.service.StorageAttachmentService;
import com.ruoyi.basic.service.StorageBlobService;
-import com.ruoyi.common.constant.StorageAttachmentConstants;
-import com.ruoyi.common.enums.StorageAttachmentRecordType;
+import com.ruoyi.basic.utils.FileUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@@ -29,40 +36,17 @@
private final StorageAttachmentMapper storageAttachmentMapper;
private final StorageBlobService storageBlobService;
-
+ private final FileUtil fileUtil;
@Override
- public void saveStorageAttachment(List<StorageAttachment> attachments, Long recordId, StorageAttachmentRecordType recordType, StorageAttachmentConstants fileType) {
- // 鍒犻櫎鏃у浘
- // todo fileChange
-// deleteStorageAttachment(new StorageAttachment(fileType.toString(), (long) recordType.ordinal(), recordId));
-// for (StorageAttachment attachment : attachments) {
-// // 鑾峰彇鍏宠仈璁板綍
-// StorageBlob storageBlob = attachment.getStorageBlobDTO();
-// attachment.setName(fileType.toString());
-// attachment.setRecordType((long) recordType.ordinal());
-// attachment.setRecordId(recordId);
-// attachment.setStorageBlobId(storageBlob.getId());
-// storageAttachmentMapper.insert(attachment);
-// }
-
+ @Transactional(rollbackFor = Exception.class)
+ public void saveStorageAttachment(List<StorageBlobDTO> storageBlobDTOS, Long recordId, String recordType, String fileType) {
+ fileUtil.saveStorageAttachment(ApplicationTypeEnum.getByType(fileType), RecordTypeEnum.getByType(recordType), recordId, storageBlobDTOS);
}
@Override
- public void saveStorageAttachment(List<StorageAttachment> attachments, Long recordId, StorageAttachmentRecordType recordType, String fileType) {
- // 鍒犻櫎鏃у浘
-// deleteStorageAttachment(new StorageAttachment(fileType, (long) recordType.ordinal(), recordId));
- // todo fileChange
-// for (StorageAttachment attachment : attachments) {
-// // 鑾峰彇鍏宠仈璁板綍
-// StorageBlob storageBlob = attachment.getStorageBlobDTO();
-// attachment.setName(fileType);
-// attachment.setRecordType((long) recordType.ordinal());
-// attachment.setRecordId(recordId);
-// attachment.setStorageBlobId(storageBlob.getId());
-// storageAttachmentMapper.insert(attachment);
-// }
-
+ public IPage<StorageAttachmentVO> listPage(Page page, StorageAttachmentDTO storageAttachmentDTO) {
+ return fileUtil.getStorageAttachmentVosPageListByApplicationAndRecordTypeAndRecordId(page, storageAttachmentDTO);
}
@Override
@@ -79,4 +63,10 @@
// }
return 0;
}
+
+ @Override
+ public int batchDeleteStorageAttachment(List<Long> ids) {
+ fileUtil.deleteStorageAttachmentsByStorageAttachmentIds(ids);
+ return 1;
+ }
}
diff --git a/src/main/java/com/ruoyi/basic/utils/FileUtil.java b/src/main/java/com/ruoyi/basic/utils/FileUtil.java
index d964efc..9d202f1 100644
--- a/src/main/java/com/ruoyi/basic/utils/FileUtil.java
+++ b/src/main/java/com/ruoyi/basic/utils/FileUtil.java
@@ -1,7 +1,10 @@
package com.ruoyi.basic.utils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.basic.dto.StorageAttachmentDTO;
import com.ruoyi.basic.dto.StorageAttachmentVO;
import com.ruoyi.basic.dto.StorageBlobDTO;
import com.ruoyi.basic.dto.StorageBlobVO;
@@ -198,6 +201,46 @@
}
/**
+ * 閫氳繃璁板綍绫诲瀷鑾峰彇鏂囦欢淇℃伅 attachment锛堝垎椤碉級
+ *
+ * @param page 鍒嗛〉鍙傛暟
+ * @param storageAttachmentDTO 鍏宠仈璁板綍淇℃伅
+ */
+ public IPage<StorageAttachmentVO> getStorageAttachmentVosPageListByApplicationAndRecordTypeAndRecordId(Page page, StorageAttachmentDTO storageAttachmentDTO) {
+ // 鍒嗛〉鏌ヨ绗﹀悎鏉′欢鐨� StorageAttachment 璁板綍
+ LambdaQueryWrapper<StorageAttachment> queryWrapper = new LambdaQueryWrapper<StorageAttachment>()
+ .eq(StorageAttachment::getRecordType, storageAttachmentDTO.getRecordType())
+ .eq(StorageAttachment::getRecordId, storageAttachmentDTO.getRecordId());
+ if (storageAttachmentDTO.getApplication() != null) {
+ queryWrapper.eq(StorageAttachment::getApplication, storageAttachmentDTO.getApplication());
+ }
+ IPage<StorageAttachmentVO> storageAttachmentIPage = storageAttachmentMapper.selectPage(page, queryWrapper);
+
+ // 杞崲涓� StorageAttachmentVO 骞惰幏鍙栧搴旂殑 StorageBlobVO
+ List<StorageAttachmentVO> storageAttachmentVOS = new ArrayList<>();
+ if (CollectionUtils.isNotEmpty(storageAttachmentIPage.getRecords())) {
+ for (StorageAttachment storageAttachment : storageAttachmentIPage.getRecords()) {
+ StorageAttachmentVO storageAttachmentVO = new StorageAttachmentVO();
+ BeanUtils.copyProperties(storageAttachment, storageAttachmentVO);
+ List<StorageBlobVO> storageBlobVOS = getStorageBlobVOsByStorageAttachmentIds(Collections.singletonList(storageAttachment.getId()));
+ if (CollectionUtils.isEmpty(storageBlobVOS)) {
+ storageAttachmentVO.setStorageBlobVOS(new ArrayList<>());
+ } else {
+ storageAttachmentVO.setStorageBlobVOS(storageBlobVOS);
+ }
+ storageAttachmentVOS.add(storageAttachmentVO);
+ }
+ }
+
+ // 鏋勫缓鍒嗛〉缁撴灉
+ IPage<StorageAttachmentVO> resultPage = new Page<>();
+ BeanUtils.copyProperties(storageAttachmentIPage, resultPage);
+ resultPage.setRecords(storageAttachmentVOS);
+
+ return resultPage;
+ }
+
+ /**
* 閫氳繃鏂囦欢鐢ㄩ�斻�佸叧鑱旇褰曠被鍨嬨�佸叧鑱旇褰昳d鑾峰彇鏂囦欢鍏宠仈淇℃伅 attachment
*
* @param application 鏂囦欢鐢ㄩ��
diff --git a/src/main/java/com/ruoyi/inspectiontask/service/impl/QrCodeScanRecordServiceImpl.java b/src/main/java/com/ruoyi/inspectiontask/service/impl/QrCodeScanRecordServiceImpl.java
index 85831e9..acc30a7 100644
--- a/src/main/java/com/ruoyi/inspectiontask/service/impl/QrCodeScanRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/inspectiontask/service/impl/QrCodeScanRecordServiceImpl.java
@@ -5,11 +5,16 @@
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.basic.dto.StorageBlobDTO;
+import com.ruoyi.basic.dto.StorageBlobVO;
+import com.ruoyi.basic.enums.ApplicationTypeEnum;
+import com.ruoyi.basic.enums.RecordTypeEnum;
import com.ruoyi.basic.mapper.StorageAttachmentMapper;
import com.ruoyi.basic.mapper.StorageBlobMapper;
import com.ruoyi.basic.pojo.StorageAttachment;
import com.ruoyi.basic.pojo.StorageBlob;
import com.ruoyi.basic.service.StorageAttachmentService;
+import com.ruoyi.basic.utils.FileUtil;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.inspectiontask.dto.QrCodeScanRecordDto;
import com.ruoyi.inspectiontask.mapper.QrCodeMapper;
@@ -51,6 +56,8 @@
private final SysUserMapper sysUserMapper;
+
+ private final FileUtil fileUtil;
@Override
public IPage<QrCodeScanRecordDto> selectQrCodeScanRecordList(Page<QrCodeScanRecord> page, QrCodeScanRecordDto qrCodeScanRecordDto) {
@@ -159,19 +166,15 @@
}
if (qrCodeScanRecordDto.getStorageBlobVO() != null && !qrCodeScanRecordDto.getStorageBlobVO().isEmpty()) {
- List<StorageAttachment> attachments = new ArrayList<>();
+ // vo 杞� dto
+ List<StorageBlobDTO> storageBlobDTOs = new ArrayList<>();
+ for (StorageBlobVO storageBlobVO : qrCodeScanRecordDto.getStorageBlobVO()) {
+ StorageBlobDTO storageBlobDTO = new StorageBlobDTO();
+ BeanUtils.copyProperties(storageBlobVO, storageBlobDTO);
+ storageBlobDTOs.add(storageBlobDTO);
+ }
- // todo fileChange
-// for (StorageBlobDTO storageBlobDTO : qrCodeScanRecordDto.getStorageBlobDTO()) {
-// StorageAttachment storageAttachment = new StorageAttachment(
-// StorageAttachmentFile,
-// (long) QrCodeScanRecords.ordinal(),
-// qrCodeScanRecord.getId()
-// );
-// storageAttachment.setStorageBlobDTO(storageBlobDTO);
-// attachments.add(storageAttachment);
-// }
- storageAttachmentService.saveStorageAttachment(attachments, qrCodeScanRecord.getId(), QrCodeScanRecords, StorageAttachmentFile);
+ fileUtil.saveStorageAttachment(ApplicationTypeEnum.FILE, RecordTypeEnum.QR_CODE_SCAN_RECORDS, qrCodeScanRecord.getId(), storageBlobDTOs);
}
return i;
}
@@ -181,4 +184,4 @@
return qrCodeScanRecordMapper.deleteBatchIds(Arrays.asList(ids));
}
-}
\ No newline at end of file
+}
--
Gitblit v1.9.3