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