Quellcode durchsuchen

加入文件上传、下载、预览

wangliang vor 4 Jahren
Ursprung
Commit
d112c0a432

+ 44 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/enums/DownloadFileEnum.java

@@ -0,0 +1,44 @@
+package com.qmth.distributed.print.business.enums;
+
+import java.util.Objects;
+
+/**
+ * @Description: 下载文件enum
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2021/4/6
+ */
+public enum DownloadFileEnum {
+
+    IMPORTFILE("导入文件"),
+
+    REPORT("报告文件"),
+
+    RESULT("导出文件");
+
+    private String title;
+
+    private DownloadFileEnum(String title) {
+        this.title = title;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    /**
+     * 状态转换 toName
+     *
+     * @param value
+     * @return
+     */
+    public static String convertToName(String value) {
+        for (DownloadFileEnum e : DownloadFileEnum.values()) {
+            if (Objects.equals(value.trim(), e.getTitle())) {
+                return e.name();
+            }
+        }
+        return null;
+    }
+}

+ 76 - 3
distributed-print/src/main/java/com/qmth/distributed/print/api/SysController.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.qmth.boot.api.annotation.Aac;
 import com.qmth.boot.api.annotation.BOOL;
 import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.boot.api.exception.ApiException;
 import com.qmth.boot.core.enums.Platform;
 import com.qmth.boot.tools.signature.SignatureType;
 import com.qmth.distributed.print.business.bean.auth.AuthBean;
@@ -12,10 +13,10 @@ import com.qmth.distributed.print.business.bean.query.LoginParam;
 import com.qmth.distributed.print.business.bean.result.EditResult;
 import com.qmth.distributed.print.business.bean.result.LoginResult;
 import com.qmth.distributed.print.business.config.DictionaryConfig;
-import com.qmth.distributed.print.business.entity.BasicSchool;
-import com.qmth.distributed.print.business.entity.SysUser;
-import com.qmth.distributed.print.business.entity.TBSession;
+import com.qmth.distributed.print.business.entity.*;
+import com.qmth.distributed.print.business.enums.DownloadFileEnum;
 import com.qmth.distributed.print.business.enums.RoleTypeEnum;
+import com.qmth.distributed.print.business.enums.UploadFileEnum;
 import com.qmth.distributed.print.business.service.*;
 import com.qmth.distributed.print.business.util.AuthUtil;
 import com.qmth.distributed.print.business.util.RedisUtil;
@@ -28,9 +29,13 @@ import com.qmth.distributed.print.common.util.Result;
 import com.qmth.distributed.print.common.util.ResultUtil;
 import com.qmth.distributed.print.common.util.SessionUtil;
 import io.swagger.annotations.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.BindingResult;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import javax.validation.Valid;
@@ -49,6 +54,7 @@ import java.util.stream.Collectors;
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/${prefix.url.common}")
 @Aac(strict = BOOL.TRUE, platform = Platform.WEB)
 public class SysController {
+    private final static Logger log = LoggerFactory.getLogger(SysController.class);
 
     @Autowired
     private SysUserService sysUserService;
@@ -74,6 +80,12 @@ public class SysController {
     @Resource
     CommonService commonService;
 
+    @Resource
+    TBTaskService tbTaskService;
+
+    @Resource
+    BasicAttachmentService basicAttachmentService;
+
     /**
      * 登录
      *
@@ -250,4 +262,65 @@ public class SysController {
             return ResultUtil.ok(Collections.singletonMap(SystemConstant.LOGO, dictionaryConfig.sysDomain().getAdminLogoUrl()));
         }
     }
+
+    @ApiOperation(value = "文件上传接口")
+    @RequestMapping(value = "/file/upload", method = RequestMethod.POST)
+    @Transactional
+    @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
+    public Result fileUpload(@ApiParam(value = "上传文件", required = true) @RequestParam MultipartFile file,
+                             @ApiParam(value = "上传文件类型", required = true) @RequestParam UploadFileEnum type) {
+        BasicAttachment basicAttachment = null;
+        try {
+            basicAttachment = basicAttachmentService.saveAttachment(file, ServletUtil.getRequestMd5(), type);
+            if (Objects.isNull(basicAttachment)) {
+                throw ExceptionResultEnum.ATTACHMENT_ERROR.exception();
+            }
+        } catch (Exception e) {
+            log.error("请求出错", e);
+            if (Objects.nonNull(basicAttachment)) {
+                basicAttachmentService.deleteAttachment(basicAttachment);
+            }
+            if (e instanceof ApiException) {
+                ResultUtil.error((ApiException) e, e.getMessage());
+            } else {
+                ResultUtil.error(e.getMessage());
+            }
+        }
+        return ResultUtil.ok(new EditResult(basicAttachment.getId(), commonService.filePreview(basicAttachment.getPath())));
+    }
+
+    @ApiOperation(value = "文件下载接口")
+    @RequestMapping(value = "/file/download", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
+    public Result fileDownload(@ApiParam(value = "任务id", required = true) @RequestParam String id,
+                               @ApiParam(value = "下载文件类型", required = true) @RequestParam DownloadFileEnum type) {
+        TBTask tbTask = tbTaskService.getById(Long.parseLong(id));
+        if (Objects.isNull(tbTask)) {
+            throw ExceptionResultEnum.TASK_NO_DATA.exception();
+        }
+        String path = null;
+        switch (type.ordinal()) {
+            case 0:
+                path = tbTask.getImportFilePath();
+                break;
+            case 1:
+                path = tbTask.getReportFilePath();
+                break;
+            default:
+                path = tbTask.getResultFilePath();
+                break;
+        }
+        if (Objects.isNull(path)) {
+            throw ExceptionResultEnum.PATH_NO_DATA.exception();
+        }
+        return ResultUtil.ok(new EditResult(commonService.filePreview(path)));
+    }
+
+    @ApiOperation(value = "文件预览接口")
+    @RequestMapping(value = "/file/preview", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
+    public Result filePreview(@ApiParam(value = "附件id", required = true) @RequestParam String id) {
+        BasicAttachment basicAttachment = basicAttachmentService.getById(Long.parseLong(id));
+        return ResultUtil.ok(new EditResult(commonService.filePreview(basicAttachment.getPath())));
+    }
 }