From e21fe957e156bd5c3207c6a5be1c955ff0194d24 Mon Sep 17 00:00:00 2001
From: chenhj <1263187585@qq.com>
Date: 星期五, 24 四月 2026 18:24:01 +0800
Subject: [PATCH] APK文件上传
---
src/main/java/com/ruoyi/other/dto/PdaVersionDTO.java | 15 +++++
src/main/java/com/ruoyi/other/controller/PdaVersionController.java | 10 +-
src/main/java/com/ruoyi/basic/utils/FileUtil.java | 62 ++++++++++++++++++++
src/main/java/com/ruoyi/basic/enums/ApplicationTypeEnum.java | 3
src/main/java/com/ruoyi/other/service/PdaVersionService.java | 6 +-
src/main/java/com/ruoyi/other/service/impl/PdaVersionServiceImpl.java | 54 +++++++++---------
src/main/java/com/ruoyi/basic/enums/RecordTypeEnum.java | 3
src/main/java/com/ruoyi/other/pojo/PdaVersion.java | 7 --
8 files changed, 117 insertions(+), 43 deletions(-)
diff --git a/src/main/java/com/ruoyi/basic/enums/ApplicationTypeEnum.java b/src/main/java/com/ruoyi/basic/enums/ApplicationTypeEnum.java
index 35bbd0a..b0298ff 100644
--- a/src/main/java/com/ruoyi/basic/enums/ApplicationTypeEnum.java
+++ b/src/main/java/com/ruoyi/basic/enums/ApplicationTypeEnum.java
@@ -4,7 +4,8 @@
IMAGE("image"),
FILE("file"),
AFTER_FILE("after_file"),
- BEFORE_FILE("before_file");
+ BEFORE_FILE("before_file"),
+ APK("apk");
private final String type;
diff --git a/src/main/java/com/ruoyi/basic/enums/RecordTypeEnum.java b/src/main/java/com/ruoyi/basic/enums/RecordTypeEnum.java
index c24eb9e..aa75bce 100644
--- a/src/main/java/com/ruoyi/basic/enums/RecordTypeEnum.java
+++ b/src/main/java/com/ruoyi/basic/enums/RecordTypeEnum.java
@@ -2,7 +2,8 @@
public enum RecordTypeEnum {
SHIPPING_INFO("shipping_info"),
- INSPECTION_TASK("inspection_task");
+ INSPECTION_TASK("inspection_task"),
+ PDA_VERSION("pda_version");
private final String type;
RecordTypeEnum(String type) { this.type = type; }
diff --git a/src/main/java/com/ruoyi/basic/utils/FileUtil.java b/src/main/java/com/ruoyi/basic/utils/FileUtil.java
index 4092f30..d964efc 100644
--- a/src/main/java/com/ruoyi/basic/utils/FileUtil.java
+++ b/src/main/java/com/ruoyi/basic/utils/FileUtil.java
@@ -481,6 +481,68 @@
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());
}
diff --git a/src/main/java/com/ruoyi/other/controller/PdaVersionController.java b/src/main/java/com/ruoyi/other/controller/PdaVersionController.java
index 0b7d2c2..326db6a 100644
--- a/src/main/java/com/ruoyi/other/controller/PdaVersionController.java
+++ b/src/main/java/com/ruoyi/other/controller/PdaVersionController.java
@@ -2,12 +2,12 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.framework.web.domain.R;
+import com.ruoyi.other.dto.PdaVersionDTO;
import com.ruoyi.other.pojo.PdaVersion;
import com.ruoyi.other.service.PdaVersionService;
import io.swagger.v3.oas.annotations.Operation;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
@RestController
@RequestMapping("/app")
@@ -22,10 +22,10 @@
return R.ok(pdaVersionService.getAllVersion(page, pdaVersion));
}
- @Operation(summary = "涓婁紶apk")
- @PostMapping("/uploadApk")
- public R uploadApk(@RequestParam("file") MultipartFile file, String name, String version) {
- return R.ok(pdaVersionService.uploadApk(file, name, version));
+ @Operation(summary = "娣诲姞鐗堟湰")
+ @PostMapping("/add")
+ public R add(@RequestBody PdaVersionDTO pdaVersion) {
+ return R.ok(pdaVersionService.add(pdaVersion));
}
}
diff --git a/src/main/java/com/ruoyi/other/dto/PdaVersionDTO.java b/src/main/java/com/ruoyi/other/dto/PdaVersionDTO.java
new file mode 100644
index 0000000..9cec0e7
--- /dev/null
+++ b/src/main/java/com/ruoyi/other/dto/PdaVersionDTO.java
@@ -0,0 +1,15 @@
+package com.ruoyi.other.dto;
+
+import com.ruoyi.basic.dto.StorageBlobDTO;
+import com.ruoyi.basic.dto.StorageBlobVO;
+import com.ruoyi.other.pojo.PdaVersion;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class PdaVersionDTO extends PdaVersion {
+ private List<StorageBlobDTO> storageBlobDTOList;
+ private List<StorageBlobVO> storageBlobVOList;
+ private String downloadURL;
+}
diff --git a/src/main/java/com/ruoyi/other/pojo/PdaVersion.java b/src/main/java/com/ruoyi/other/pojo/PdaVersion.java
index d01b916..8c0fc60 100644
--- a/src/main/java/com/ruoyi/other/pojo/PdaVersion.java
+++ b/src/main/java/com/ruoyi/other/pojo/PdaVersion.java
@@ -2,14 +2,12 @@
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
-import com.ruoyi.sales.pojo.CommonFile;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.time.LocalDateTime;
-import java.util.List;
@Data
@TableName("pda_version")
@@ -51,9 +49,6 @@
@TableField(fill = FieldFill.INSERT)
private Long tenantId;
- @TableField(exist = false)
- private List<CommonFile> commonFileList;
-
@TableField(fill = FieldFill.INSERT)
private Long deptId;
-}
\ No newline at end of file
+}
diff --git a/src/main/java/com/ruoyi/other/service/PdaVersionService.java b/src/main/java/com/ruoyi/other/service/PdaVersionService.java
index 39bc196..387eae3 100644
--- a/src/main/java/com/ruoyi/other/service/PdaVersionService.java
+++ b/src/main/java/com/ruoyi/other/service/PdaVersionService.java
@@ -3,11 +3,11 @@
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.other.dto.PdaVersionDTO;
import com.ruoyi.other.pojo.PdaVersion;
-import org.springframework.web.multipart.MultipartFile;
public interface PdaVersionService extends IService<PdaVersion> {
- IPage<PdaVersion> getAllVersion(Page<PdaVersion> page, PdaVersion pdaVersion);
+ IPage<PdaVersionDTO> getAllVersion(Page<PdaVersion> page, PdaVersion pdaVersion);
- boolean uploadApk(MultipartFile file, String name, String version);
+ boolean add(PdaVersionDTO pdaVersion);
}
diff --git a/src/main/java/com/ruoyi/other/service/impl/PdaVersionServiceImpl.java b/src/main/java/com/ruoyi/other/service/impl/PdaVersionServiceImpl.java
index 65b37e6..3c4dca8 100644
--- a/src/main/java/com/ruoyi/other/service/impl/PdaVersionServiceImpl.java
+++ b/src/main/java/com/ruoyi/other/service/impl/PdaVersionServiceImpl.java
@@ -1,20 +1,24 @@
package com.ruoyi.other.service.impl;
+import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.common.enums.FileNameType;
+import com.ruoyi.basic.enums.ApplicationTypeEnum;
+import com.ruoyi.basic.enums.RecordTypeEnum;
+import com.ruoyi.basic.utils.FileUtil;
+import com.ruoyi.other.dto.PdaVersionDTO;
import com.ruoyi.other.mapper.PdaVersionMapper;
import com.ruoyi.other.pojo.PdaVersion;
import com.ruoyi.other.service.PdaVersionService;
-import com.ruoyi.other.service.TempFileService;
-import com.ruoyi.sales.service.impl.CommonFileServiceImpl;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
-import org.springframework.web.multipart.MultipartFile;
+
+import java.util.ArrayList;
+import java.util.List;
@Service
@RequiredArgsConstructor
@@ -23,38 +27,34 @@
private final PdaVersionMapper pdaVersionMapper;
- private final TempFileService tempFileService;
-
- private final CommonFileServiceImpl commonFileService;
+ private final FileUtil fileUtil;
@Override
- public IPage<PdaVersion> getAllVersion(Page<PdaVersion> page, PdaVersion pdaVersion) {
+ public IPage<PdaVersionDTO> getAllVersion(Page<PdaVersion> page, PdaVersion pdaVersion) {
LambdaQueryWrapper<PdaVersion> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.orderByDesc(PdaVersion::getCreateTime);
Page<PdaVersion> pdaVersionPage = pdaVersionMapper.selectPage(page, queryWrapper);
- pdaVersionPage.getRecords().forEach(item ->{
- item.setCommonFileList(commonFileService.getFileListByBusinessId(item.getId(), FileNameType.APP.getValue()));
+ Page<PdaVersionDTO> pdaVersionDTOPage = new Page<>(page.getCurrent(), page.getSize());
+ List<PdaVersionDTO> pdaVersionDTOList = new ArrayList<>();
+ pdaVersionPage.getRecords().forEach(item -> {
+ PdaVersionDTO pdaVersionDTO = new PdaVersionDTO();
+ BeanUtil.copyProperties(item, pdaVersionDTO);
+ pdaVersionDTO.setStorageBlobVOList(fileUtil.getStorageBlobVOsByApplicationAndRecordTypeAndRecordId(ApplicationTypeEnum.APK, RecordTypeEnum.PDA_VERSION, item.getId()));
+ String downloadURL = fileUtil.getFileDownloadURLByApplicationAndRecordTypeAndRecordId(ApplicationTypeEnum.APK, RecordTypeEnum.PDA_VERSION, item.getId()).get(0) == null ?
+ "" : fileUtil.getFileDownloadURLByApplicationAndRecordTypeAndRecordId(ApplicationTypeEnum.APK, RecordTypeEnum.PDA_VERSION, item.getId()).get(0);
+ pdaVersionDTO.setDownloadURL(downloadURL);
+ pdaVersionDTOList.add(pdaVersionDTO);
});
- return pdaVersionPage;
+ pdaVersionDTOPage.setRecords(pdaVersionDTOList);
+ return pdaVersionDTOPage;
}
@Override
- @Transactional(rollbackFor = Exception.class)
- public boolean uploadApk(MultipartFile file, String name, String version) {
+ public boolean add(PdaVersionDTO pdaVersion) {
// 鍙傛暟鏍¢獙
- Assert.notNull(file, "鏂囦欢涓嶈兘涓虹┖");
- Assert.hasText(version, "鐗堟湰鍙蜂笉鑳戒负绌�");
-
- try {
- PdaVersion pdaVersion = new PdaVersion();
- pdaVersion.setName(name);
- pdaVersion.setVersion(version);
- pdaVersionMapper.insert(pdaVersion);
-
- tempFileService.uploadByCommon(file, FileNameType.APP.getValue(), pdaVersion.getId());
- return true;
- } catch (Exception e) {
- throw new RuntimeException("涓婁紶APK澶辫触: " + e.getMessage());
- }
+ Assert.hasText(pdaVersion.getVersion(), "鐗堟湰鍙蜂笉鑳戒负绌�");
+ pdaVersionMapper.insert(pdaVersion);
+ fileUtil.saveStorageAttachment(ApplicationTypeEnum.APK, RecordTypeEnum.PDA_VERSION, pdaVersion.getId(), pdaVersion.getStorageBlobDTOList());
+ return true;
}
}
--
Gitblit v1.9.3