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