From 34981c30a78e8bbd7791131059a9210f9928b62c Mon Sep 17 00:00:00 2001
From: 刘光辉 <347230014@qq.com>
Date: 星期四, 17 九月 2026 09:24:09 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into master

---
 jnpf-lims/jnpf-lims-controller/src/main/java/jnpf/controller/DocumentPreviewController.java |  105 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 105 insertions(+), 0 deletions(-)

diff --git a/jnpf-lims/jnpf-lims-controller/src/main/java/jnpf/controller/DocumentPreviewController.java b/jnpf-lims/jnpf-lims-controller/src/main/java/jnpf/controller/DocumentPreviewController.java
new file mode 100644
index 0000000..ef765c8
--- /dev/null
+++ b/jnpf-lims/jnpf-lims-controller/src/main/java/jnpf/controller/DocumentPreviewController.java
@@ -0,0 +1,105 @@
+package jnpf.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jnpf.base.ActionResult;
+import jnpf.base.Page;
+import jnpf.constant.FileTypeConstant;
+import jnpf.constant.MsgCode;
+import jnpf.emnus.FilePreviewTypeEnum;
+import jnpf.file.FileUploadApi;
+import jnpf.model.FileListVO;
+import jnpf.model.YozoFileParams;
+import jnpf.model.YozoParams;
+import jnpf.util.StringUtil;
+import jnpf.util.UserProvider;
+import jnpf.util.XSSEscape;
+import jnpf.utils.SplicingUrlUtil;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 鏂囨。鍦ㄧ嚎棰勮
+ *
+ * @author JNPF寮�鍙戝钩鍙扮粍
+ * @version V3.1.0
+ * @copyright 寮曡繄淇℃伅鎶�鏈湁闄愬叕鍙革紙https://www.jnpfsoft.com锛�
+ * @date 2019骞�9鏈�26鏃� 涓婂崍9:18
+ */
+@Tag(name = "鏂囨。鍦ㄧ嚎棰勮", description = "DocumentPreview")
+@RestController
+@RequestMapping("/DocumentPreview")
+@RequiredArgsConstructor
+public class DocumentPreviewController {
+
+
+    private final YozoParams yozoParams;
+    private final FileUploadApi fileUploadApi;
+
+    /**
+     * 姘镐腑鏂囦欢棰勮
+     *
+     * @param fileId 鏂囦欢涓婚敭
+     * @param params 姘镐腑妯″瀷
+     * @param previewType 绫诲瀷
+     * @return
+     */
+    @Operation(summary = "鏂囦欢棰勮")
+    @GetMapping("/{fileId}/Preview")
+    @Parameter(name = "fileId", description = "鏂囦欢涓婚敭",required = true)
+    @Parameter(name = "previewType", description = "绫诲瀷")
+    @SaCheckPermission("extend.documentPreview")
+    public ActionResult<Object> filePreview(@PathVariable("fileId") String fileId,YozoFileParams params,@RequestParam("previewType") String previewType) {
+        List<FileListVO> fileList = fileUploadApi.getFileList(FileTypeConstant.DOCUMENTPREVIEW);
+        FileListVO fileListVO = fileList.get(Integer.parseInt(fileId));
+        if (fileListVO == null) {
+            return ActionResult.fail(MsgCode.ETD111.get());
+        }
+        String fileName = fileListVO.getFileName();
+        if (fileName != null && fileName.contains("/")) {
+            fileName = fileName.substring(fileName.lastIndexOf("/") + 1);
+        }
+        String url = yozoParams.getJnpfDomain() + "/api/file/Image/" + FileTypeConstant.DOCUMENTPREVIEW + "/" + fileName + "?fullfilename=" + fileName + "&s=" + UserProvider.getUser().getSecurityKey();
+        String urlPath;
+        if (previewType.equals(FilePreviewTypeEnum.YOZO_ONLINE_PREVIEW.getType())){
+            params.setUrl(url);
+            urlPath = SplicingUrlUtil.getPreviewUrl(params);
+            return ActionResult.success("success", XSSEscape.escape(urlPath));
+        }
+        return ActionResult.success("success",url);
+    }
+
+    /**
+     * 鍒楄〃
+     *
+     * @param page 鍒嗛〉妯″瀷
+     * @return
+     */
+    @Operation(summary = "鑾峰彇鏂囨。鍒楄〃")
+    @GetMapping
+    @SaCheckPermission("extend.documentPreview")
+    public ActionResult<List<FileListVO>> list(Page page) {
+        List<FileListVO> fileList = fileUploadApi.getFileList(FileTypeConstant.DOCUMENTPREVIEW);
+        fileList.stream().forEach(t -> {
+            if (t.getFileName() != null) {
+                String[] split = t.getFileName().split("/");
+                if (split.length > 0) {
+                    t.setFileName(split[split.length - 1]);
+                }
+            }
+        });
+        if (StringUtil.isNotEmpty(page.getKeyword())) {
+            fileList = fileList.stream().filter(t -> t.getFileName().contains(page.getKeyword())).collect(Collectors.toList());
+        }
+        return ActionResult.success(fileList);
+    }
+
+
+
+
+}

--
Gitblit v1.8.0