1. 移到common路径下
This commit is contained in:
dengchun
2025-07-28 21:29:26 +08:00
parent e6e9eae1c7
commit adf7412eaf
3 changed files with 83 additions and 118 deletions

View File

@@ -99,7 +99,6 @@ public class ShiroConfig {
filterChainDefinitionMap.put("/sys/common/static/**", "anon");//图片预览 &下载文件不限制token filterChainDefinitionMap.put("/sys/common/static/**", "anon");//图片预览 &下载文件不限制token
filterChainDefinitionMap.put("/sys/common/pdf/**", "anon");//pdf预览 filterChainDefinitionMap.put("/sys/common/pdf/**", "anon");//pdf预览
filterChainDefinitionMap.put("/crawler/**", "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/view/**", "anon");//图片预览不限制token
//filterChainDefinitionMap.put("/sys/common/download/**", "anon");//文件下载不限制token //filterChainDefinitionMap.put("/sys/common/download/**", "anon");//文件下载不限制token

View File

@@ -245,84 +245,4 @@ public class ExperimentFileController extends JeecgController<ExperimentFile, IE
return result; return result;
} }
/**
* 试验文件上传识别入口
*
* @param request 文件上传对象
* @return 上面结果
*/
@PostMapping(value = "/uploadAll")
public Result<?> uploadAll(HttpServletRequest request) throws Exception {
Result<OssFile> 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<Map<String, String>> extractExperimentFile(MultipartFile file) throws Exception {
List<Map<String, String>> 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<String, String>();
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;
}
} }

View File

@@ -3,7 +3,10 @@ package org.jeecg.modules.system.controller;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.sourceforge.tess4j.Tesseract;
import org.apache.commons.lang3.StringUtils; 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.api.vo.Result;
import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.constant.SymbolConstant; 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.HandlerMapping;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.*; import java.io.*;
import java.net.URLDecoder; import java.net.URLDecoder;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* <p> * <p>
@@ -197,43 +204,82 @@ public class CommonController {
return result; return result;
} }
// @PostMapping(value = "/upload2") /**
// public Result<?> upload2(HttpServletRequest request, HttpServletResponse response) { * 试验文件上传识别入口
// Result<?> result = new Result<>(); *
// try { * @param request 文件上传对象
// String ctxPath = uploadpath; * @return 上面结果
// String fileName = null; */
// String bizPath = "files"; @PostMapping(value = "/uploadAll")
// String tempBizPath = request.getParameter("biz"); public Result<?> uploadAll(HttpServletRequest request) throws Exception {
// if(oConvertUtils.isNotEmpty(tempBizPath)){ Result<OssFile> result = new Result<>();
// bizPath = tempBizPath; String savePath = "123";
// } String bizPath = "";
// String nowday = new SimpleDateFormat("yyyyMMdd").format(new Date());
// File file = new File(ctxPath + File.separator + bizPath + File.separator + nowday); MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
// if (!file.exists()) { // 获取上传文件对象
// file.mkdirs();// 创建文件根目录 MultipartFile file = multipartRequest.getFile("file");
// }
// MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; extractExperimentFile(file);
// MultipartFile mf = multipartRequest.getFile("file");// 获取上传文件对象
// String orgName = mf.getOriginalFilename();// 获取文件名 // 获取是否包含必填的文件类型
// fileName = orgName.substring(0, orgName.lastIndexOf(".")) + "_" + System.currentTimeMillis() + orgName.substring(orgName //savePath = CommonUtils.upload(file, bizPath, uploadType);
// .indexOf("."));
// String savePath = file.getPath() + File.separator + fileName; OssFile ossFile = new OssFile();
// File savefile = new File(savePath); ossFile.setFileName(file.getOriginalFilename());
// FileCopyUtils.copy(mf.getBytes(), savefile); ossFile.setUrl("测试路径.txt");
// String dbpath = bizPath + File.separator + nowday + File.separator + fileName; // ossFile.setUrl(savePath);
// if (dbpath.contains("\\")) { // ossFileService.save(ossFile);
// dbpath = dbpath.replace("\\", "/"); result.setResult(ossFile);
// }
// result.setMessage(dbpath);
// result.setSuccess(true);
// } catch (IOException e) {
// result.setSuccess(false); if (oConvertUtils.isNotEmpty(savePath)) {
// result.setMessage(e.getMessage()); result.setMessage(savePath);
// log.error(e.getMessage(), e); result.setSuccess(true);
// } } else {
// return result; result.setMessage("上传失败!");
// } result.setSuccess(false);
}
return result;
}
private List<Map<String, String>> extractExperimentFile(MultipartFile file) throws Exception {
List<Map<String, String>> 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<String, String>();
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;
}
/** /**
* 本地文件上传 * 本地文件上传