From adf7412eaf57101a27206811749fb66339e46f21 Mon Sep 17 00:00:00 2001 From: dengchun Date: Mon, 28 Jul 2025 21:29:26 +0800 Subject: [PATCH] =?UTF-8?q?bugfix:=201.=20=E7=A7=BB=E5=88=B0common?= =?UTF-8?q?=E8=B7=AF=E5=BE=84=E4=B8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/jeecg/config/shiro/ShiroConfig.java | 1 - .../controller/ExperimentFileController.java | 80 ------------ .../system/controller/CommonController.java | 120 ++++++++++++------ 3 files changed, 83 insertions(+), 118 deletions(-) diff --git a/physical-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java b/physical-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java index 41bc985..0330f84 100644 --- a/physical-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java +++ b/physical-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java @@ -99,7 +99,6 @@ public class ShiroConfig { filterChainDefinitionMap.put("/sys/common/static/**", "anon");//图片预览 &下载文件不限制token filterChainDefinitionMap.put("/sys/common/pdf/**", "anon");//pdf预览 filterChainDefinitionMap.put("/crawler/**", "anon");//pdf预览 - filterChainDefinitionMap.put("/database/experimentFile/uploadAll", "anon");//pdf批量上传接口 //filterChainDefinitionMap.put("/sys/common/view/**", "anon");//图片预览不限制token //filterChainDefinitionMap.put("/sys/common/download/**", "anon");//文件下载不限制token diff --git a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/controller/ExperimentFileController.java b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/controller/ExperimentFileController.java index 4e45bba..ab3bb72 100644 --- a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/controller/ExperimentFileController.java +++ b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/controller/ExperimentFileController.java @@ -245,84 +245,4 @@ public class ExperimentFileController extends JeecgController uploadAll(HttpServletRequest request) throws Exception { - Result result = new Result<>(); - String savePath = "123"; - String bizPath = ""; - - MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; - // 获取上传文件对象 - MultipartFile file = multipartRequest.getFile("file"); - - extractExperimentFile(file); - - // 获取是否包含必填的文件类型 - //savePath = CommonUtils.upload(file, bizPath, uploadType); - - OssFile ossFile = new OssFile(); - ossFile.setFileName(file.getOriginalFilename()); - ossFile.setUrl("测试路径.txt"); -// ossFile.setUrl(savePath); -// ossFileService.save(ossFile); - result.setResult(ossFile); - - - - - if (oConvertUtils.isNotEmpty(savePath)) { - result.setMessage(savePath); - result.setSuccess(true); - } else { - result.setMessage("上传失败!"); - result.setSuccess(false); - } - return result; - } - - private List> extractExperimentFile(MultipartFile file) throws Exception { - List> allFileResult = new ArrayList<>(); - PDDocument document = PDDocument.load(file.getInputStream()); - PDFRenderer renderer = new PDFRenderer(document); - Tesseract tesseract = new Tesseract(); - - // 设置Tesseract数据路径(tessdata文件夹路径) - tesseract.setDatapath("/usr/share/tesseract-ocr/5/tessdata"); - tesseract.setLanguage("chi_sim"); - - StringBuilder fullText = new StringBuilder(); - - Map map = new HashMap(); - for (int i = 0; i < document.getNumberOfPages(); i++) { - BufferedImage image = renderer.renderImageWithDPI(i, 300); // 高分辨率 - File tempImage = new File("page_" + i + ".png"); - ImageIO.write(image, "png", tempImage); - - String result = tesseract.doOCR(tempImage); - fullText.append(result).append("\n"); - } - - if (fullText.length() > 0) { - if (fullText.toString().contains("辐照试验委托书")){ - map.put("fzsywts", "1"); - allFileResult.add(map); - } - } - - document.close(); - System.out.println("解析结果: " + allFileResult); - System.out.println("所有文本: " + fullText); - - return allFileResult; - } - - - } diff --git a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/system/controller/CommonController.java b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/system/controller/CommonController.java index 239d7a7..3e07a5c 100644 --- a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/system/controller/CommonController.java +++ b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/system/controller/CommonController.java @@ -3,7 +3,10 @@ package org.jeecg.modules.system.controller; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; +import net.sourceforge.tess4j.Tesseract; import org.apache.commons.lang3.StringUtils; +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.rendering.PDFRenderer; import org.jeecg.common.api.vo.Result; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.constant.SymbolConstant; @@ -22,10 +25,14 @@ import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.servlet.HandlerMapping; import org.springframework.web.servlet.ModelAndView; +import javax.imageio.ImageIO; +import java.awt.image.BufferedImage; import java.io.*; import java.net.URLDecoder; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** *

@@ -197,43 +204,82 @@ public class CommonController { return result; } - // @PostMapping(value = "/upload2") - // public Result upload2(HttpServletRequest request, HttpServletResponse response) { - // Result result = new Result<>(); - // try { - // String ctxPath = uploadpath; - // String fileName = null; - // String bizPath = "files"; - // String tempBizPath = request.getParameter("biz"); - // if(oConvertUtils.isNotEmpty(tempBizPath)){ - // bizPath = tempBizPath; - // } - // String nowday = new SimpleDateFormat("yyyyMMdd").format(new Date()); - // File file = new File(ctxPath + File.separator + bizPath + File.separator + nowday); - // if (!file.exists()) { - // file.mkdirs();// 创建文件根目录 - // } - // MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; - // MultipartFile mf = multipartRequest.getFile("file");// 获取上传文件对象 - // String orgName = mf.getOriginalFilename();// 获取文件名 - // fileName = orgName.substring(0, orgName.lastIndexOf(".")) + "_" + System.currentTimeMillis() + orgName.substring(orgName - // .indexOf(".")); - // String savePath = file.getPath() + File.separator + fileName; - // File savefile = new File(savePath); - // FileCopyUtils.copy(mf.getBytes(), savefile); - // String dbpath = bizPath + File.separator + nowday + File.separator + fileName; - // if (dbpath.contains("\\")) { - // dbpath = dbpath.replace("\\", "/"); - // } - // result.setMessage(dbpath); - // result.setSuccess(true); - // } catch (IOException e) { - // result.setSuccess(false); - // result.setMessage(e.getMessage()); - // log.error(e.getMessage(), e); - // } - // return result; - // } + /** + * 试验文件上传识别入口 + * + * @param request 文件上传对象 + * @return 上面结果 + */ + @PostMapping(value = "/uploadAll") + public Result uploadAll(HttpServletRequest request) throws Exception { + Result result = new Result<>(); + String savePath = "123"; + String bizPath = ""; + + MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; + // 获取上传文件对象 + MultipartFile file = multipartRequest.getFile("file"); + + extractExperimentFile(file); + + // 获取是否包含必填的文件类型 + //savePath = CommonUtils.upload(file, bizPath, uploadType); + + OssFile ossFile = new OssFile(); + ossFile.setFileName(file.getOriginalFilename()); + ossFile.setUrl("测试路径.txt"); +// ossFile.setUrl(savePath); +// ossFileService.save(ossFile); + result.setResult(ossFile); + + + + + if (oConvertUtils.isNotEmpty(savePath)) { + result.setMessage(savePath); + result.setSuccess(true); + } else { + result.setMessage("上传失败!"); + result.setSuccess(false); + } + return result; + } + + private List> extractExperimentFile(MultipartFile file) throws Exception { + List> allFileResult = new ArrayList<>(); + PDDocument document = PDDocument.load(file.getInputStream()); + PDFRenderer renderer = new PDFRenderer(document); + Tesseract tesseract = new Tesseract(); + + // 设置Tesseract数据路径(tessdata文件夹路径) + tesseract.setDatapath("/usr/share/tesseract-ocr/5/tessdata"); + tesseract.setLanguage("chi_sim"); + + StringBuilder fullText = new StringBuilder(); + + Map map = new HashMap(); + for (int i = 0; i < document.getNumberOfPages(); i++) { + BufferedImage image = renderer.renderImageWithDPI(i, 300); // 高分辨率 + File tempImage = new File("page_" + i + ".png"); + ImageIO.write(image, "png", tempImage); + + String result = tesseract.doOCR(tempImage); + fullText.append(result).append("\n"); + } + + if (fullText.length() > 0) { + if (fullText.toString().contains("辐照试验委托书")){ + map.put("fzsywts", "1"); + allFileResult.add(map); + } + } + + document.close(); + System.out.println("解析结果: " + allFileResult); + System.out.println("所有文本: " + fullText); + + return allFileResult; + } /** * 本地文件上传