From 7f878b1b0caa64cc818bec6d3e89f544b9a2b11b Mon Sep 17 00:00:00 2001 From: chenrui <1187576398@qq.com> Date: 星期一, 17 三月 2025 15:57:08 +0800 Subject: [PATCH] 通信振动导入doc文件解析 --- inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java | 118 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 118 insertions(+), 0 deletions(-) diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java index af24757..caaf65f 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java @@ -24,6 +24,7 @@ import com.yuanchu.mom.service.*; import com.yuanchu.mom.utils.*; import com.yuanchu.mom.vo.*; +import org.apache.poi.hwpf.usermodel.*; import org.apache.poi.ss.usermodel.CellValue; import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFRow; @@ -35,6 +36,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; +import javax.imageio.ImageIO; import javax.servlet.http.HttpServletRequest; import java.io.*; import java.nio.file.Files; @@ -48,6 +50,8 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; + +import org.apache.poi.hwpf.HWPFDocument; /** * 妫�楠屼换鍔�-涓氬姟瀹炵幇灞� @@ -356,6 +360,10 @@ dianLuUtils.readDianLuFile2(sampleId, insOrderFile); } else if (ObjectUtils.isNotEmpty(sonLaboratory) && sonLaboratory.equals("鐢佃矾璇曢獙") && split[split.length - 1].equals("csv") && insOrder.getSampleType().equals("鏃犳簮鍣ㄤ欢")) { dianLuUtils.readDianLuFile3(sampleId, insOrderFile); + } + // 闇囧姩doc鏂囦欢瑙f瀽 + if(filename.contains(".doc") && sonLaboratory.equals("鎸姩")){ + return docAnalysis(urlString,orderId,sampleId,file.getOriginalFilename()); } } catch (Exception e) { throw new ErrorException(e.getMessage()); @@ -904,6 +912,116 @@ return 1; } + /** + * 闇囧姩doc鏂囦欢瑙f瀽 + * @param urlString + * @param orderId + * @param sampleId + * @param originFileName + * @return + */ + private Map<String, String> docAnalysis(String urlString,Integer orderId,Integer sampleId,String originFileName) { + Map<String, String> analysisMap = new HashMap<>(); + try { + File file = new File(urlString); + HWPFDocument document = new HWPFDocument(new FileInputStream(file)); + Range range = document.getRange(); + TableIterator tableIterator = new TableIterator(range); + List<Table> tableList = new ArrayList<>(); + while (tableIterator.hasNext()) { + tableList.add(tableIterator.next()); + } + for (int tableIndex = 0; tableIndex < tableList.size(); tableIndex++) { + // 鍙栫涓�涓〃鍗曢檺鍒跺弬鏁扮殑 鎸姩鍙板瀷鍙枫�佽繍鍔ㄩ儴浠剁瓑鏁堣川閲忋�佽瘯浠惰川閲忔暟鍊� + if(tableIndex == 0){ + Table table = tableList.get(0); + for (int i = 0; i < table.numRows(); i++) { + String columnText = ObjectUtils.isEmpty(table.getRow(i).getCell(0))? "" : table.getRow(i).getCell(0).text(); + String columnValue = ObjectUtils.isEmpty(table.getRow(i).getCell(1))? "" : table.getRow(i).getCell(1).text(); + if(columnValue.contains("\u0007")){ + columnValue = columnValue.replace("\u0007",""); + } + if(columnText.contains("\u0007")){ + columnText = columnText.replace("\u0007",""); + } + if(columnText.equals("鎸姩鍙板瀷鍙�")){ + analysisMap.put("11",columnValue); + } + if(columnText.equals("杩愬姩閮ㄤ欢绛夋晥璐ㄩ噺")){ + analysisMap.put("12",columnValue); + } + if(columnText.equals("璇曚欢璐ㄩ噺")){ + analysisMap.put("1",columnValue); + } + } + } + //鍙栫涓�涓〃鍗曡緭鍏ラ�氶亾鍙傛暟绗竴鏉℃暟鎹� + if(tableIndex == 1){ + Table table = tableList.get(1); + if(ObjectUtils.isNotEmpty(table)&& table.numRows() > 0){ + String columnValue = ObjectUtils.isEmpty(table.getRow(1).getCell(2))? "" : table.getRow(1).getCell(2).text(); + if(columnValue.contains("\u0007")){ + columnValue = columnValue.replace("\u0007",""); + } + analysisMap.put("9",columnValue); + } + } + // 鍙栨渶鍚庝竴涓〃鍗曠涓夌鍥涜淇℃伅 + if(tableIndex == tableList.size() - 1){ + Table table = tableList.get(tableIndex); + for (int i = 0; i < table.numRows(); i++) { + String columnText = ObjectUtils.isEmpty(table.getRow(i).getCell(0))? "" : table.getRow(i).getCell(0).text(); + String columnValue = ObjectUtils.isEmpty(table.getRow(i).getCell(1))? "" : table.getRow(i).getCell(1).text(); + if(columnValue.contains("\u0007")){ + columnValue = columnValue.replace("\u0007",""); + } + if(columnText.contains("\u0007")){ + columnText = columnText.replace("\u0007",""); + } + if(columnText.contains("鎬昏繍琛屾椂闂�")){ + analysisMap.put("13",columnValue); + } + if(columnText.contains("璇曢獙鎵鏁�")){ + analysisMap.put("10",columnValue); + } + } + } + } + // 鍥剧墖缁戝畾 + List<Picture> pictureList = document.getPicturesTable().getAllPictures(); + String[] split = originFileName.split("\\."); + String docName = ""; + if(null != split && split.length > 0){ + docName = split[0]; + } + for (Picture picture : pictureList) { + byte[] pictureData = picture.getContent(); + File imgDir = new File(imgUrl); + if (!imgDir.exists()) { + imgDir.mkdirs(); + } + String filename = docName + "_" + UUID.randomUUID()+".png"; + File pictureFile = new File(imgUrl + File.separatorChar + filename); + // 鍒涘缓杈撳嚭娴佷互灏嗗浘鐗囨暟鎹啓鍏ュ埌鎸囧畾璺緞 + try (OutputStream outputStream = new FileOutputStream(pictureFile)) { + // 鍐欏叆鏁版嵁 + outputStream.write(pictureData); + } + InsOrderFile insOrderFile = new InsOrderFile(); + insOrderFile.setInsOrderId(orderId); + insOrderFile.setInsSampleId(sampleId); + insOrderFile.setSonLaboratory("鎸姩"); + insOrderFile.setType(1); + insOrderFile.setFileName(filename); + insOrderFile.setFileUrl(filename); + insOrderFileMapper.insert(insOrderFile); + } + }catch (Exception e){ + log.error(e.getMessage()); + } + return analysisMap; + } + //娓╂箍搴﹁瘯楠�+鍔熺巼璇曢獙鐨勪繚瀛樻楠屽唴瀹� @Override public int saveInsContext3(InsProductResult insProductResult) { -- Gitblit v1.9.3