From 68897236636f9c54e34bdca52864cb424c2291e5 Mon Sep 17 00:00:00 2001 From: chenrui <1187576398@qq.com> Date: 星期四, 20 三月 2025 17:16:14 +0800 Subject: [PATCH] 近场/远场检验刷新目录功能修改 --- inspect-server/src/main/java/com/yuanchu/mom/utils/WordUtils.java | 307 ++++++++++++++++++++++++-------------- inspect-server/pom.xml | 6 inspect-server/src/main/java/com/yuanchu/mom/utils/FuSheUtils.java | 156 +++++++++++++------ 3 files changed, 308 insertions(+), 161 deletions(-) diff --git a/inspect-server/pom.xml b/inspect-server/pom.xml index 2f523a5..7da6442 100644 --- a/inspect-server/pom.xml +++ b/inspect-server/pom.xml @@ -103,5 +103,11 @@ <version>5.5.2</version> </dependency> + <dependency> + <groupId>org.docx4j</groupId> + <artifactId>docx4j-JAXB-ReferenceImpl</artifactId> + <version>8.3.4</version> <!-- 浣跨敤鏈�鏂扮ǔ瀹氱増 --> + </dependency> + </dependencies> </project> diff --git a/inspect-server/src/main/java/com/yuanchu/mom/utils/FuSheUtils.java b/inspect-server/src/main/java/com/yuanchu/mom/utils/FuSheUtils.java index e764498..cf11a5e 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/utils/FuSheUtils.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/utils/FuSheUtils.java @@ -1,24 +1,15 @@ package com.yuanchu.mom.utils; import cn.hutool.core.lang.UUID; -import com.deepoove.poi.XWPFTemplate; -import com.deepoove.poi.config.Configure; -import com.deepoove.poi.config.ConfigureBuilder; import com.deepoove.poi.data.*; import com.deepoove.poi.data.style.*; -import com.deepoove.poi.util.TableTools; -import com.opencsv.CSVReader; import com.yuanchu.mom.dto.Exceldata; -import com.yuanchu.mom.exception.ErrorException; import com.yuanchu.mom.mapper.InsOrderFileMapper; -import com.yuanchu.mom.mapper.InsOrderMapper; import com.yuanchu.mom.mapper.InsSampleMapper; -import com.yuanchu.mom.pojo.InsOrder; import com.yuanchu.mom.pojo.InsOrderFile; import com.yuanchu.mom.pojo.InsSample; -import org.apache.commons.io.IOUtils; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; -import org.apache.poi.openxml4j.util.ZipSecureFile; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; @@ -32,10 +23,9 @@ import javax.annotation.Resource; import java.io.*; import java.util.*; -import java.util.regex.Matcher; -import java.util.regex.Pattern; import java.util.stream.Collectors; +@Slf4j @Component public class FuSheUtils { @Value("${wordUrl}") @@ -700,7 +690,6 @@ for (String s : map.keySet()) { Map<String, Object> dataRow = exceldata.getDataRow(); String result = s.substring(s.lastIndexOf("-") + 1); - String result1 = s.substring(0, s.lastIndexOf("-")); String o = map.get(s).toString(); String[] split = o.split(","); Integer s1 = Integer.parseInt(split[split.length - 1]); @@ -710,6 +699,7 @@ HashMap<String, Object> o2 = (HashMap<String, Object>) pj.get(result); XWPFTable table1 = document.createTable(2, cell); + table1.setWidth("100%"); mergeCellsHorizontally(table1, 1, 0, cell - 1); mergeCellsHorizontally(table1, 0, 4, cell - 2); @@ -769,42 +759,43 @@ aggregatedMap.get(key).add(item); } } - - + // 鍒濆鍖栬鏁� + int rowNum = 2; for (String s2 : aggregatedMap.keySet()) { if (s2.equals("绔彛") || s2.equals("娴嬭瘯棰戠巼(MHZ)")) { continue; } List<Map<String, Object>> mapList = aggregatedMap.get(s2); // 鍒涘缓涓�涓〃鏍� - - XWPFTable table = document.createTable(row, cell); - table.setWidth("100%"); - + int checkItemRowNum = row; + for (int i = 0; i < checkItemRowNum; i++) { + table1.createRow(); // 鍒涘缓鏂拌 + } +// XWPFTable table = document.createTable(row, cell); //鍨傜洿 - mergeCellsVertically(table, 0, 0, row - 1); - mergeCellsVertically(table, 1, 0, row - 1); - mergeCellsVertically(table, 2, 0, row - 1); - mergeCellsVertically(table, 3, 0, row - 1); - mergeCellsVertically(table, 4, 0, 1); - mergeCellsVertically(table, cell - 1, 0, 1); - mergeCellsVertically(table, cell - 1, 2, row - 2); + mergeCellsVertically(table1, 0, rowNum, rowNum + checkItemRowNum - 1); + mergeCellsVertically(table1, 1, rowNum, rowNum + checkItemRowNum - 1); + mergeCellsVertically(table1, 2, rowNum, rowNum + checkItemRowNum - 1); + mergeCellsVertically(table1, 3, rowNum, rowNum + checkItemRowNum - 1); + mergeCellsVertically(table1, 4, rowNum, 1); + mergeCellsVertically(table1, cell - 1, rowNum, rowNum+1); + mergeCellsVertically(table1, cell - 1, rowNum+2, rowNum + checkItemRowNum - 1); //姘村钩 - mergeCellsHorizontally(table, 0, 5, cell - 2); - mergeCellsHorizontally(table, row - 1, 5, cell - 2); + mergeCellsHorizontally(table1, rowNum, 5, cell - 2); + mergeCellsHorizontally(table1, rowNum + checkItemRowNum - 1, 5, cell - 2); // 璁剧疆鍗曞厓鏍兼枃鏈苟灞呬腑 - XWPFParagraph paragraph = table.getRow(0).getCell(0).getParagraphArray(0); + XWPFParagraph paragraph = table1.getRow(rowNum).getCell(0).getParagraphArray(0); XWPFRun run = paragraph.createRun(); run.setText(String.valueOf(size)); - XWPFParagraph paragraph1 = table.getRow(0).getCell(1).getParagraphArray(0); + XWPFParagraph paragraph1 = table1.getRow(rowNum).getCell(1).getParagraphArray(0); XWPFRun run1 = paragraph1.createRun(); run1.setText(s2); // 鍗曚綅 - XWPFParagraph paragraph2 = table.getRow(0).getCell(2).getParagraphArray(0); + XWPFParagraph paragraph2 = table1.getRow(rowNum).getCell(2).getParagraphArray(0); XWPFRun run2 = paragraph2.createRun(); if (s2.contains("澧炵泭")) { run2.setText("dBi"); @@ -819,44 +810,47 @@ } - XWPFParagraph paragraph3 = table.getRow(0).getCell(3).getParagraphArray(0); + // 瀹氫箟鏀规鏌ラ」鏍囧噯鍊� + String checkItemStandardStr = ""; + XWPFParagraph paragraph3 = table1.getRow(rowNum).getCell(3).getParagraphArray(0); paragraph3.setAlignment(ParagraphAlignment.CENTER); XWPFRun run3 = paragraph3.createRun(); if (bz.get(s2) != null) { run3.setText(bz.get(s2).toString()); + checkItemStandardStr = bz.get(s2).toString(); } else run3.setText(""); - XWPFParagraph paragraph4 = table.getRow(0).getCell(4).getParagraphArray(0); + XWPFParagraph paragraph4 = table1.getRow(rowNum).getCell(4).getParagraphArray(0); XWPFRun run4 = paragraph4.createRun(); run4.setText("棰戠巼锛圡Hz锛�"); - XWPFParagraph paragraph5 = table.getRow(0).getCell(5).getParagraphArray(0); + XWPFParagraph paragraph5 = table1.getRow(rowNum).getCell(5).getParagraphArray(0); paragraph5.setAlignment(ParagraphAlignment.CENTER); XWPFRun run5 = paragraph5.createRun(); run5.setText("绔彛"); - XWPFParagraph paragraph6 = table.getRow(0).getCell(cell - 1).getParagraphArray(0); + XWPFParagraph paragraph6 = table1.getRow(rowNum).getCell(cell - 1).getParagraphArray(0); XWPFRun run6 = paragraph6.createRun(); run6.setText("鍒ゅ畾"); - XWPFParagraph paragraph7 = table.getRow(1).getCell(cell - 1).getParagraphArray(0); + XWPFParagraph paragraph7 = table1.getRow(rowNum+1).getCell(cell - 1).getParagraphArray(0); XWPFRun run7 = paragraph7.createRun(); run7.setText("鍚堟牸"); - XWPFParagraph paragraph8 = table.getRow(row - 1).getCell(4).getParagraphArray(0); + XWPFParagraph paragraph8 = table1.getRow(rowNum+checkItemRowNum - 1).getCell(4).getParagraphArray(0); XWPFRun run8 = paragraph8.createRun(); run8.setText("骞冲潎鍊�"); - XWPFParagraph paragraph9 = table.getRow(row - 1).getCell(cell - 1).getParagraphArray(0); + XWPFParagraph paragraph9 = table1.getRow(rowNum + checkItemRowNum - 1).getCell(cell - 1).getParagraphArray(0); XWPFRun run9 = paragraph9.createRun(); run9.setText(""); - for (int i = 0; i < collect.size(); i++) { + for (int i = 0; i < collect.size() - 1; i++) { String s3 = collect.get(i); if (s3.contains("绔彛") || s3.contains("P")) { - XWPFParagraph paragraph10 = table.getRow(1).getCell(5 + i).getParagraphArray(0); + XWPFParagraph paragraph10 = table1.getRow(rowNum+1).getCell(5 + i).getParagraphArray(0); XWPFRun run10 = paragraph10.createRun(); run10.setText(s3); } @@ -871,34 +865,100 @@ int hang = 2; Double count = 0.0; + // 瀹氫箟 鏄惁鍚堟牸鏍囪 + boolean passFlag = true; + // 瑙f瀽鍒ゅ畾鏉′欢骞惰В鏋愭瘮杈冩爣鍑嗗�� 0 鏃犻渶鍒ゅ畾 1 鍖洪棿鍒ゅ畾 2 灏忎簬绛変簬 3 澶т簬绛変簬 + int checkType = 0; + double firstParam = 0.0; + double secondParam = 0.0 ; + checkItemStandardStr = checkItemStandardStr.trim(); + if(checkItemStandardStr.contains("~") ){ + checkType = 1; + String[] params = checkItemStandardStr.split("~"); + if(null != params && params.length == 2){ + firstParam = Double.valueOf(params[0]); + secondParam = Double.valueOf(params[1]); + } + } else if(checkItemStandardStr.contains("-") && !(checkItemStandardStr.contains("鈮�") || checkItemStandardStr.contains("鈮�"))){ + checkType = 1; + String[] params = checkItemStandardStr.split("-"); + if(null != params && params.length == 2){ + firstParam = Double.valueOf(params[0]); + secondParam = Double.valueOf(params[1]); + } + } else if (checkItemStandardStr.contains("鈮�")) { + checkType = 2; + String[] params = checkItemStandardStr.split("鈮�"); + if(null != params && params.length == 1){ + if(params[1].contains("%")){ + firstParam = Double.valueOf(params[1].substring(0,params[1].length()-1))/100; + }else{ + firstParam = Double.valueOf(params[1]); + } + } + }else if(checkItemStandardStr.contains("鈮�")){ + checkType = 3; + String[] params = checkItemStandardStr.split("鈮�"); + if(null != params && params.length == 2){ + if(params[1].contains("%")){ + firstParam = Double.valueOf(params[1].substring(0,params[1].length()-1))/100; + }else{ + firstParam = Double.valueOf(params[1]); + } + } + } + for (Integer aDouble : group.keySet()) { List<Map<String, Object>> mapList1 = group.get(aDouble); for (Map<String, Object> stringObjectMap : mapList1) { String port = stringObjectMap.get("绔彛").toString(); for (int i = 5; i < cell - 1; i++) { - String text = table.getRow(1).getCell(i).getText(); + String text = table1.getRow(rowNum+1).getCell(i).getText(); if (text.equals(port)) { - XWPFParagraph paragraph10 = table.getRow(hang).getCell(i).getParagraphArray(0); + XWPFParagraph paragraph10 = table1.getRow(hang+rowNum).getCell(i).getParagraphArray(0); XWPFRun run10 = paragraph10.createRun(); - count = Double.parseDouble(stringObjectMap.get(s2).toString()) + count; + double value = Double.parseDouble(stringObjectMap.get(s2).toString()); + count = value + count; + // 鏁版嵁鍒ゆ柇 + if(checkType == 1){ + if(!(value >= firstParam && value <= secondParam)){ + passFlag = false; + } + }else if(checkType == 2){ + if(value >= firstParam ){ + passFlag = false; + } + }else if(checkType == 3){ + if(value <= firstParam ){ + passFlag = false; + } + } String project = stringObjectMap.get(s2).toString(); run10.setText(project); } } } - XWPFParagraph paragraph10 = table.getRow(hang).getCell(4).getParagraphArray(0); + XWPFParagraph paragraph10 = table1.getRow(hang+rowNum).getCell(4).getParagraphArray(0); XWPFRun run10 = paragraph10.createRun(); run10.setText(String.valueOf(aDouble)); - - hang++; } + // 姹囨�荤粨鏋� + if(checkType != 0){ + XWPFParagraph paragraph10 = table1.getRow(rowNum+2).getCell(cell - 1).getParagraphArray(0); + XWPFRun run10 = paragraph10.createRun(); + if(passFlag){ + run10.setText(String.valueOf("鍚堟牸")); + }else { + run10.setText(String.valueOf("涓嶅悎鏍�")); + } + } - XWPFParagraph paragraph11 = table.getRow(row - 1).getCell(5).getParagraphArray(0); + XWPFParagraph paragraph11 = table1.getRow(rowNum + checkItemRowNum - 1).getCell(5).getParagraphArray(0); XWPFRun run11 = paragraph11.createRun(); double v = count / (Double.parseDouble(s1.toString()) * Double.parseDouble(i1.toString())); run11.setText(String.format("%.2f",(double)o2.get(s2))); - + rowNum += checkItemRowNum; size++; } } diff --git a/inspect-server/src/main/java/com/yuanchu/mom/utils/WordUtils.java b/inspect-server/src/main/java/com/yuanchu/mom/utils/WordUtils.java index 6fcbefd..b62f370 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/utils/WordUtils.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/utils/WordUtils.java @@ -11,6 +11,7 @@ import com.deepoove.poi.config.ConfigureBuilder; import com.deepoove.poi.data.*; import com.deepoove.poi.data.style.*; +import com.deepoove.poi.data.style.Style; import com.deepoove.poi.util.TableTools; import com.spire.doc.FileFormat; import com.yuanchu.mom.dto.*; @@ -18,18 +19,23 @@ import com.yuanchu.mom.mapper.*; import com.yuanchu.mom.pojo.*; import com.yuanchu.mom.vo.InsProductResult2VO; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.poi.openxml4j.util.ZipSecureFile; import org.apache.poi.xwpf.usermodel.*; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTHMerge; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTcPr; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTVMerge; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.STMerge; +import org.docx4j.XmlUtils; +import org.docx4j.jaxb.Context; +import org.docx4j.openpackaging.packages.WordprocessingMLPackage; +import org.docx4j.wml.*; +import org.docx4j.wml.STBrType; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.*; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import javax.annotation.Resource; +import javax.xml.bind.JAXBElement; import java.io.*; import java.nio.file.Files; import java.nio.file.Paths; @@ -42,6 +48,7 @@ import java.util.regex.Pattern; import java.util.stream.Collectors; +@Slf4j @Component public class WordUtils { @@ -2706,9 +2713,12 @@ } //杈愬皠琛ㄦ牸 List<Map<String, Object>> tables3 = new ArrayList<>(); + List<InsOrderFile> insOrderDocFiles = new ArrayList<>();; // 鏆傚瓨闇�瑕佸悎骞惰〃鍗曞埌鐢熸垚word鏂囦欢鐨刣ocx鏂囦欢 + // 缁熻杈愬皠瀹為獙琛ㄦ暟閲� + int radiationReportNum = 0; if (strings.contains("杩戝満") || strings.contains("杩滃満")) { /*杈愬皠鐨勮瘯楠岃〃*/ - List<InsOrderFile> insOrderFiles = insOrderFileMapper.selectList(Wrappers.<InsOrderFile>lambdaQuery() + List<InsOrderFile> insOrderFiles = insOrderFileMapper.selectList(Wrappers.<InsOrderFile>lambdaQuery() .eq(InsOrderFile::getInsOrderId, orderId) .eq(InsOrderFile::getInsSampleId, insReportDto1.getSampleId()) .like(InsOrderFile::getFileName, "瑙f瀽鐨勮緪灏勭珯鐐规姤鍛�") @@ -2717,102 +2727,104 @@ .or() .eq(InsOrderFile::getSonLaboratory, "杩戝満") )); - if (insOrderFiles.size() > 0) { - int aa = 0; - for (InsOrderFile insOrderFile : insOrderFiles) { - try { - XWPFDocument circuitParamsDoc = new XWPFDocument(new FileInputStream(wordUrl + "/" + insOrderFile.getFileUrl())); - // 閬嶅巻鐢佃矾鍙傛暟鏂囦欢鐨勬墍鏈夊厓绱狅紝娈佃惤鍜岃〃鏍� - for (IBodyElement element : circuitParamsDoc.getBodyElements()) { - Map<String, Object> table3 = new HashMap<>(); - TableRenderData tableData = new TableRenderData(); - List<RowRenderData> rows = new ArrayList<>(); - if (element instanceof XWPFTable) { - aa += 1; - XWPFTable tab = (XWPFTable) element; - List<XWPFTableRow> row = tab.getRows(); - for (int i = 0; i < row.size(); i++) { - RowRenderData rowRenderData = new RowRenderData(); - List<CellRenderData> cells = new ArrayList<>(); - List<XWPFTableCell> cell = row.get(i).getTableCells(); - for (int j = 0; j < cell.size(); j++) { - CellRenderData cellRenderData = new CellRenderData(); - List<ParagraphRenderData> paragraphRenderDataList = new ArrayList<>(); - ParagraphRenderData paragraphRenderData = new ParagraphRenderData(); - ParagraphStyle paragraphStyle = new ParagraphStyle(); - paragraphStyle.setAlign(ParagraphAlignment.CENTER); - paragraphRenderData.setParagraphStyle(paragraphStyle); - List<RenderData> renderData = new ArrayList<>(); - TextRenderData textRenderData = new TextRenderData(); - Style style = new Style(); - style.setFontFamily("瀹嬩綋"); - style.setColor("000000"); - textRenderData.setStyle(style); - CTTcPr tcPr = cell.get(j).getCTTc().getTcPr(); - if (tcPr != null) { - //鍚堝苟鍒� - CTHMerge hMerge = tcPr.getHMerge(); - if (ObjectUtils.isNotEmpty(hMerge)) { - if (STMerge.RESTART.equals(hMerge.getVal()) || STMerge.CONTINUE.equals(hMerge.getVal())) { - int index = j; - String text = null; - while (text == null || text.equals("")) { - if (index < 0) { - text = "/"; - } - text = cell.get(index).getText(); - index--; - } - textRenderData.setText(text + "鈭�88" + aa + i); - } - } - //鍚堝苟琛� - CTVMerge vMerge = tcPr.getVMerge(); - if (ObjectUtils.isNotEmpty(vMerge)) { - if (STMerge.RESTART.equals(vMerge.getVal()) || STMerge.CONTINUE.equals(vMerge.getVal())) { - int index = i; - String text = null; - while (text == null || text.equals("")) { - if (index < 0) { - text = "/"; - break; - } - text = row.get(index).getCell(j).getText(); - index--; - } - if (text.equals("鍚堟牸") || text.equals("涓嶅悎鏍�")) { - textRenderData.setText(text + "鈭�25" + aa + j); - } else { - textRenderData.setText(text + "鈭�22" + aa + j); - } - } - } - } else { - textRenderData.setText(cell.get(j).getText()); - } - renderData.add(textRenderData); - paragraphRenderData.setContents(renderData); - paragraphRenderDataList.add(paragraphRenderData); - cellRenderData.setParagraphs(paragraphRenderDataList); - cells.add(cellRenderData); - } - rowRenderData.setCells(cells); - rows.add(rowRenderData); - } - tableData.setRows(rows); - table3.put("table3", tableData); - tables3.add(table3); - } - } - } catch (IOException e) { - e.printStackTrace(); - } - } - } + insOrderDocFiles.addAll(insOrderFiles); + radiationReportNum = insOrderFiles.size(); +// if (insOrderFiles.size() > 0) { +// int aa = 0; +// for (InsOrderFile insOrderFile : insOrderFiles) { +// try { +// XWPFDocument circuitParamsDoc = new XWPFDocument(new FileInputStream(wordUrl + "/" + insOrderFile.getFileUrl())); +// // 閬嶅巻鐢佃矾鍙傛暟鏂囦欢鐨勬墍鏈夊厓绱狅紝娈佃惤鍜岃〃鏍� +// for (IBodyElement element : circuitParamsDoc.getBodyElements()) { +// Map<String, Object> table3 = new HashMap<>(); +// TableRenderData tableData = new TableRenderData(); +// List<RowRenderData> rows = new ArrayList<>(); +// if (element instanceof XWPFTable) { +// aa += 1; +// XWPFTable tab = (XWPFTable) element; +// List<XWPFTableRow> row = tab.getRows(); +// for (int i = 0; i < row.size(); i++) { +// RowRenderData rowRenderData = new RowRenderData(); +// List<CellRenderData> cells = new ArrayList<>(); +// List<XWPFTableCell> cell = row.get(i).getTableCells(); +// for (int j = 0; j < cell.size(); j++) { +// CellRenderData cellRenderData = new CellRenderData(); +// List<ParagraphRenderData> paragraphRenderDataList = new ArrayList<>(); +// ParagraphRenderData paragraphRenderData = new ParagraphRenderData(); +// ParagraphStyle paragraphStyle = new ParagraphStyle(); +// paragraphStyle.setAlign(ParagraphAlignment.CENTER); +// paragraphRenderData.setParagraphStyle(paragraphStyle); +// List<RenderData> renderData = new ArrayList<>(); +// TextRenderData textRenderData = new TextRenderData(); +// Style style = new Style(); +// style.setFontFamily("瀹嬩綋"); +// style.setColor("000000"); +// textRenderData.setStyle(style); +// CTTcPr tcPr = cell.get(j).getCTTc().getTcPr(); +// if (tcPr != null) { +// //鍚堝苟鍒� +// CTHMerge hMerge = tcPr.getHMerge(); +// if (ObjectUtils.isNotEmpty(hMerge)) { +// if (STMerge.RESTART.equals(hMerge.getVal()) || STMerge.CONTINUE.equals(hMerge.getVal())) { +// int index = j; +// String text = null; +// while (text == null || text.equals("")) { +// if (index < 0) { +// text = "/"; +// } +// text = cell.get(index).getText(); +// index--; +// } +// textRenderData.setText(text + "鈭�88" + aa + i); +// } +// } +// //鍚堝苟琛� +// CTVMerge vMerge = tcPr.getVMerge(); +// if (ObjectUtils.isNotEmpty(vMerge)) { +// if (STMerge.RESTART.equals(vMerge.getVal()) || STMerge.CONTINUE.equals(vMerge.getVal())) { +// int index = i; +// String text = null; +// while (text == null || text.equals("")) { +// if (index < 0) { +// text = "/"; +// break; +// } +// text = row.get(index).getCell(j).getText(); +// index--; +// } +// if (text.equals("鍚堟牸") || text.equals("涓嶅悎鏍�")) { +// textRenderData.setText(text + "鈭�25" + aa + j); +// } else { +// textRenderData.setText(text + "鈭�22" + aa + j); +// } +// } +// } +// } else { +// textRenderData.setText(cell.get(j).getText()); +// } +// renderData.add(textRenderData); +// paragraphRenderData.setContents(renderData); +// paragraphRenderDataList.add(paragraphRenderData); +// cellRenderData.setParagraphs(paragraphRenderDataList); +// cells.add(cellRenderData); +// } +// rowRenderData.setCells(cells); +// rows.add(rowRenderData); +// } +// tableData.setRows(rows); +// table3.put("table3", tableData); +// tables3.add(table3); +// } +// } +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } +// } } //杈愬皠鐨勬爣棰� String title3 = ""; - if (tables3.size() > 0) { + if (radiationReportNum > 0) { title3 = "杈愬皠鏂瑰悜鍥惧弬鏁�"; } //鐜琛ㄦ牸 @@ -3065,7 +3077,7 @@ put("insProductList", insProductList); //妫�楠屾儏鍐典竴瑙堣〃 put("tables2", tables2); //妫�娴嬬粨鏋� put("title3", finalTitle); //妫�娴嬬粨鏋� - put("tables3", tables3); //妫�娴嬬粨鏋� + put("tables3", null); //妫�娴嬬粨鏋� put("tables4", tables4); //妫�娴嬬粨鏋� put("urlList", urlList); //鏍峰搧鐓х墖 put("insUsers", insUsers); //妫�娴嬩汉鍛樹俊鎭� @@ -3193,21 +3205,51 @@ } catch (IOException e) { throw new RuntimeException(e); } -// //鐩綍鏇存柊 -// try{ -// com.spire.doc.Document document = new com.spire.doc.Document(); -// document.loadFromFile(path); -// // 鏇存柊鐩綍 -// document.updateTableOfContents(); -// // 淇濆瓨鏂囨。 -// document.saveToFile(path, FileFormat.Docx); -// document.close(); -// } -// catch (Exception e) { -// throw new RuntimeException(e); -// } + // 鏇存柊琛ㄥ崟 + try { + WordprocessingMLPackage targetDoc = WordprocessingMLPackage.load(new File(path)); + List<Object> targetContent = targetDoc.getMainDocumentPart().getContent(); + int targetIndex = findFirstTargetIndex(targetDoc, title3); + if (targetIndex != -1) { + List<Object> forms = new ArrayList<>(); + for (InsOrderFile insOrderFile : insOrderDocFiles) { + // 鍔犺浇婧愭枃妗e苟鎻愬彇琛ㄥ崟鍐呭锛堝亣璁句负琛ㄦ牸锛� + WordprocessingMLPackage sourceDoc = WordprocessingMLPackage.load(new File(wordUrl + "/" + insOrderFile.getFileUrl())); + List<Object> sourceContent = sourceDoc.getMainDocumentPart().getContent(); + for (Object obj : sourceContent) { + if (obj instanceof JAXBElement) { // 妫�鏌ユ槸鍚︿负 JAXBElement + JAXBElement jaxbElement = (JAXBElement)obj; + Tbl table = (Tbl) XmlUtils.deepCopy(jaxbElement.getValue()); + targetIndex++; + // 鎻掑叆鍒扮洰鏍囨钀戒箣鍚� + targetContent.add(targetIndex, table); + forms.add(table); + // 鎻掑叆鍒嗛〉绗� + P paragraphWithPageBreak = Context.getWmlObjectFactory().createP(); + R run = Context.getWmlObjectFactory().createR(); + Br br = Context.getWmlObjectFactory().createBr(); + br.setType(STBrType.PAGE); // 璁剧疆鍒嗛〉绗︾被鍨� + run.getContent().add(br); + paragraphWithPageBreak.getContent().add(run); + targetIndex++; + targetContent.add(targetIndex, paragraphWithPageBreak); + } + } + } + } + // 淇濆瓨淇敼鍚庣殑鏂囨。 + targetDoc.save(new File(path)); + com.spire.doc.Document document = new com.spire.doc.Document(); + document.loadFromFile(path); + // 鏇存柊鐩綍 + document.updateTableOfContents(); + // 淇濆瓨鏂囨。 + document.saveToFile(path, FileFormat.Docx); + document.close(); + }catch (Exception e){ + log.error(e.getMessage()); + } } - //鐢佃矾鎶ュ憡鐢ㄤ簬鎬绘姤鍛婄殑鏂规硶(澶╃嚎) private void getWord1(String term, InsOrderState insOrderState, List<Map<String, Object>> tables2) { @@ -5554,4 +5596,43 @@ } } } + + // 鏌ユ壘鏂囨湰棣栨鍑虹幇琛� + private int findFirstTargetIndex(WordprocessingMLPackage targetDoc,String textStr){ + int targetIndex = -1; + if(StringUtils.isEmpty(textStr)){ + return targetIndex; + } + try { + List<Object> targetContent = targetDoc.getMainDocumentPart().getContent(); + // 鏌ユ壘鐩爣娈佃惤 + for (int i = 0; i < targetContent.size(); i++) { + Object obj = targetContent.get(i); + if (obj instanceof P) { + P paragraph = (P) obj; + for (Object runObj : paragraph.getContent()) { + if (runObj instanceof R) { + R run = (R) runObj; + for (Object textObj : run.getContent()) { + if (textObj instanceof JAXBElement) { + JAXBElement jaxbElement = (JAXBElement) textObj; + if(jaxbElement.getValue() instanceof Text){ + Text text = (Text) jaxbElement.getValue(); + if (text.getValue().contains(textStr)) { + targetIndex = i; + return targetIndex; + } + } + } + } + } + } + } + } + } catch (Exception e) { + log.error("findFirstTargetIndex<<<<<<<<<<:{}",e.getMessage()); + }finally { + return targetIndex; + } + } } -- Gitblit v1.9.3