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