Ver código fonte

诊断日志下载

bmmx 1 ano atrás
pai
commit
75ef9d4f87

+ 1 - 0
src/main/java/com/om/constant/UploadConstant.java

@@ -3,4 +3,5 @@ package com.om.constant;
 public class UploadConstant {
 
     public static final String DIAGNOSTIC_MENU_PREFIX = "diagnosisMenu";
+    public static final String DIAGNOSTIC_LOG_PREFIX = "DiagnosisLog";
 }

+ 7 - 12
src/main/java/com/om/controller/admin/DiagnosticLogController.java

@@ -9,13 +9,10 @@ import com.om.service.IDiagnosticLogService;
 import com.om.utils.Result;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import java.util.List;
 
 /**
  * <p>
@@ -41,16 +38,14 @@ public class DiagnosticLogController {
 
     @ApiOperation("下载本页全部文件")
     @PostMapping("/batch-download")
-    public Result batchDownload(){
-
-        return diagnosticLogService.batchDownload();
+    public Result batchDownload(@RequestBody List<Integer> ids){
+        return diagnosticLogService.batchDownload(ids);
     }
 
     @ApiOperation("下载单个文件")
-    @PostMapping("/downloadFile")
-    public Result downloadFile(@RequestBody DiagnosticLog diagnosticLog){
-
-        return diagnosticLogService.downloadFile(diagnosticLog);
+    @GetMapping("/downloadFile")
+    public Result downloadFile(@RequestParam Integer id){
+        return diagnosticLogService.downloadFile(id);
     }
 
 

+ 55 - 10
src/main/java/com/om/service/impl/DiagnosticLogServiceImpl.java

@@ -1,25 +1,32 @@
 package com.om.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.collection.ListUtil;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.om.entity.dto.DiaLogQueryPageDTO;
 import com.om.entity.po.*;
 import com.om.entity.vo.DiaLogQueryPageVO;
 import com.om.entity.vo.DiaLogQueryVO;
+import com.om.exception.BadReqException;
 import com.om.mapper.DiagnosticLogMapper;
 import com.om.service.*;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.om.utils.HuaweiObsUtil;
 import com.om.utils.Result;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.List;
 
+import static com.om.constant.UploadConstant.DIAGNOSTIC_LOG_PREFIX;
+
 /**
  * <p>
- *  服务实现类
+ * 服务实现类
  * </p>
  *
  * @author bmmx
@@ -37,7 +44,8 @@ public class DiagnosticLogServiceImpl extends ServiceImpl<DiagnosticLogMapper, D
     @Resource
     private IClientService clientService;
 
-
+    @Resource
+    private HuaweiObsUtil obsUtil;
 
     @Resource
     private IVciInfoService vciInfoService;
@@ -52,16 +60,16 @@ public class DiagnosticLogServiceImpl extends ServiceImpl<DiagnosticLogMapper, D
         LocalDateTime beginTime = dto.getBeginTime();
         LocalDateTime endTime = dto.getEndTime();
         User one = null;
-        if (account!=null){
+        if (account != null) {
             //根据用户名查询用户
-             one = userService.lambdaQuery()
+            one = userService.lambdaQuery()
                     .eq(User::getUsername, account)
                     .one();
         }
 
 
         VciInfo vciInfo = null;
-        if (vciSn!=null){
+        if (vciSn != null) {
             //根据vciSn查询VCI
             vciInfo = vciInfoService.lambdaQuery()
                     .eq(VciInfo::getVciNum, vciSn)
@@ -82,7 +90,7 @@ public class DiagnosticLogServiceImpl extends ServiceImpl<DiagnosticLogMapper, D
         vo.setPages((int) page.getPages());
         vo.setTotal((int) page.getTotal());
 
-        if (account!=null||vciSn!=null||beginTime != null||endTime != null){
+        if (account != null || vciSn != null || beginTime != null || endTime != null) {
             vo.setSearchCount(true);
         }
 
@@ -111,12 +119,49 @@ public class DiagnosticLogServiceImpl extends ServiceImpl<DiagnosticLogMapper, D
     }
 
     @Override
-    public Result batchDownload() {
-        return null;
+    public Result batchDownload(List<Integer> ids) {
+        //根据id集合查询
+        List<DiagnosticLog> diagnosticLogs = this.listByIds(ids);
+
+        if (CollectionUtil.isEmpty(diagnosticLogs)){
+            throw new BadReqException("本页诊断文件异常");
+        }
+
+        LocalDate now = LocalDate.now();
+        int year = now.getYear();
+        int monthValue = now.getMonthValue();
+        int day = now.getDayOfMonth();
+
+        List<String> downloadUrls = new ArrayList<>();
+        String prefix = DIAGNOSTIC_LOG_PREFIX + "/" + year + "/" + monthValue + "/" + day;
+        for (DiagnosticLog diagnosticLog : diagnosticLogs) {
+            String nameLog = diagnosticLog.getNameLog();
+
+            //获取下载链接
+            String downloadUrl = obsUtil.getDownloadUrl(nameLog, prefix);
+            downloadUrls.add(downloadUrl);
+        }
+        return Result.ok(downloadUrls);
     }
 
     @Override
-    public Result downloadFile(DiagnosticLog diagnosticLog) {
-        return null;
+    public Result downloadFile(Integer id) {
+        //根据id进行查询
+        DiagnosticLog diagnosticLog = this.getById(id);
+
+        if (BeanUtil.isEmpty(diagnosticLog)) {
+            throw new BadReqException("该诊断日志不存在");
+        }
+
+        //获取文件名称
+        String nameLog = diagnosticLog.getNameLog();
+        LocalDate now = LocalDate.now();
+        int year = now.getYear();
+        int monthValue = now.getMonthValue();
+        int day = now.getDayOfMonth();
+        String prefix = DIAGNOSTIC_LOG_PREFIX + "/" + year + "/" + monthValue + "/" + day;
+        //获取下载链接
+        String downloadUrl = obsUtil.getDownloadUrl(nameLog, prefix);
+        return Result.ok(downloadUrl);
     }
 }

+ 45 - 2
src/main/java/com/om/utils/HuaweiObsUtil.java

@@ -98,6 +98,26 @@ public class HuaweiObsUtil {
         return response.getSignedUrl();
     }
 
+    /**
+     * 下载文件
+     *
+     * @param fileName 文件名称
+     * @param prefix 文件路径
+     * @return
+     */
+    public String getDownloadUrl(String fileName, String prefix) {
+        ObsClient obsClient = null;
+        obsClient = new ObsClient(ak, sk, endpoint);
+        // URL有效期,3600秒.5分钟
+        long expireSeconds = 3600L;
+        String objectName = prefix.concat("/").concat(fileName);
+        TemporarySignatureRequest request = new TemporarySignatureRequest(HttpMethodEnum.GET, expireSeconds);
+        request.setBucketName(bucketName);
+        request.setObjectKey(objectName);
+        TemporarySignatureResponse response = obsClient.createTemporarySignature(request);
+        return response.getSignedUrl();
+    }
+
     /**
      * 获取上传地址
      *
@@ -123,7 +143,30 @@ public class HuaweiObsUtil {
         return null;
     }
 
-
+    /**
+     * 获取上传地址
+     *
+     * @param fileName 文件名称
+     * @param prefix 文件路径
+     * @return
+     */
+    public String getUploadUrl(String fileName, String prefix) {
+        try {
+            // 创建ObsClient实例
+            ObsClient obsClient = new ObsClient(ak, sk, endpoint);
+            // URL有效期,3600秒
+            long expireSeconds = 3600L;
+            String objectName = prefix.concat("/").concat(fileName);
+            TemporarySignatureRequest request = new TemporarySignatureRequest(HttpMethodEnum.GET, expireSeconds);
+            request.setBucketName(bucketName);
+            request.setObjectKey(objectName);
+            TemporarySignatureResponse response = obsClient.createTemporarySignature(request);
+            return response.getSignedUrl();
+        } catch (Exception e) {
+            log.error("获取上传地址异常:{}", e.getMessage(), e);
+        }
+        return null;
+    }
 
     /**
      * 上传视频
@@ -150,8 +193,8 @@ public class HuaweiObsUtil {
 
 
     public enum FileType {
-        TEST("test", "测试");
 
+        TEST("test", "测试");
         private String type;
         private String desc;