From 3cfdf11bf0a1cbd2162b1c3c9aba0347b3a180b1 Mon Sep 17 00:00:00 2001
From: 林致杰 <1003392067@qq.com>
Date: 星期四, 06 一月 2022 12:16:59 +0800
Subject: [PATCH] 忽略
---
src/main/java/com/ots/common/utils/poi/WordUtil.java | 148 +++++++++++++++++++++++++++++++------------------
1 files changed, 94 insertions(+), 54 deletions(-)
diff --git a/src/main/java/com/ots/common/utils/poi/WordUtil.java b/src/main/java/com/ots/common/utils/poi/WordUtil.java
index 6de620f..b859c5f 100644
--- a/src/main/java/com/ots/common/utils/poi/WordUtil.java
+++ b/src/main/java/com/ots/common/utils/poi/WordUtil.java
@@ -9,6 +9,7 @@
import com.ots.project.exam.domain.TReportTemplate;
import com.ots.project.exam.dto.JAQTableStyle;
import com.ots.project.exam.dto.WordParam;
+import com.ots.project.tool.PdfUtil;
import com.ots.project.tool.ShellTool;
import com.ots.project.tool.exam.ExamUtil;
import com.ots.project.tool.exam.ImageUtil;
@@ -17,6 +18,8 @@
import com.ots.project.tool.report.JAQ.condition.Table2;
import com.ots.project.tool.report.JAQ.condition.Table3;
import com.ots.project.tool.report.JAQ.condition.Table4;
+import com.ots.project.tool.report.PAQ.chart.PAQChart;
+import com.ots.project.tool.report.SAQ.chart.SAQChart;
import org.apache.commons.collections.map.HashedMap;
import org.apache.poi.ooxml.POIXMLDocument;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
@@ -40,6 +43,8 @@
import java.awt.image.BufferedImage;
import java.io.*;
import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
public class WordUtil {
private static final Logger log = LoggerFactory.getLogger(WordUtil.class);
@@ -177,6 +182,9 @@
if (run.toString().indexOf("%TTime%") != -1) {
run.setText(textMap.get("reportGenerationDate").toString(), 0);
}
+ if (run.toString().indexOf("%LIBSAQGS0018%") != -1) {
+ run.setText(textMap.get("LIBSAQGS0018").toString(), 0);
+ }
}
}
}
@@ -254,7 +262,7 @@
public static CTAnchor getAnchorWithGraphic(CTGraphicalObject ctGraphicalObject,
String deskFileName, int width, int height,
int leftOffset, int topOffset, boolean behind, int topPosition) {
- long relativeHeight = 251649024l + topPosition;
+ long relativeHeight = 251649024L + topPosition;
String anchorXML =
"<wp:anchor xmlns:wp=\"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\" "
+ "simplePos=\"0\" relativeHeight=\"" + relativeHeight + "\" behindDoc=\"" + ((behind) ? 1 : 0) + "\" locked=\"0\" layoutInCell=\"1\" allowOverlap=\"1\">"
@@ -369,17 +377,19 @@
List<XWPFTableCell> cells = row.getTableCells();
for (XWPFTableCell cell : cells) {
-
+ //濡傛灉褰撳墠琛ㄦ牸鍖呭惈%灏变唬琛ㄩ渶瑕佹浛鎹�
if (checkText(cell.getText())) {
List<XWPFParagraph> paragraphs = cell.getParagraphs();
for (XWPFParagraph paragraph : paragraphs) {
-
+ //鑾峰彇鎵�鏈夎
List<IRunElement> iRunElements = paragraph.getIRuns();
List<XWPFRun> runs = new ArrayList<>();
+ //閬嶅巻鎵�鏈夎
for (IRunElement iRunElement : iRunElements) {
runs.add((XWPFRun) iRunElement);
}
int runPosition = 0;
+ //鏇挎崲鎵�鏈夎〃鏍肩殑鏂囧瓧
for (XWPFRun run : runs) {
setTextValue(textMap, document, paragraph, runPosition, run);
}
@@ -389,7 +399,7 @@
}
}
private static void setTextValue(Map<String, Object> textMap, XWPFDocument document, XWPFParagraph paragraph, int runPosition, XWPFRun run) {
- System.out.println("琛ㄦ牸鐨勶細" + run.toString());
+ log.info("琛ㄦ牸鐨勶細{}", run.toString());
try {
run.setText(changeValue(run.toString(), textMap, run, paragraph, document, runPosition), 0);
} catch (Exception e) {
@@ -419,16 +429,34 @@
}
}
}
-
+
+ //鏍¢獙鏂囨湰鏄惁闇�瑕佹浛鎹�
public static boolean checkText(String text) {
+ //鏇挎崲鏂囨湰鍖呭惈%
if (text.indexOf("%") != -1 || StringUtils.equals(text, "N/A NONE")) {
- return true;
+ //鍙湁%澶т簬1 鎵嶉�氳繃
+ if(getCount(text) > 1){
+ return true;
+ }
+ return false;
}
return false;
}
+
+ //鍒ゆ柇%鍑虹幇鐨勬鏁�
+ public static int getCount(String text){
+ //鏃ч暱搴�
+ int oldLength = text.length();
+ text = text.replace("%", "");
+ //鏂伴暱搴�
+ int newLength = text.length();
+ //鍑虹幇娆℃暟 = 鏃ч暱搴� - 鏂伴暱搴�
+ int count = oldLength - newLength;
+ return count;
+ }
public static String changeValue(String runValue, Map<String, Object> textMap, XWPFRun run, XWPFParagraph paragraph, XWPFDocument document, int runPosition) throws IOException, org.apache.poi.openxml4j.exceptions.InvalidFormatException {
-
+ log.debug("changeText:{}",runValue);
Set<Map.Entry<String, Object>> textSets = textMap.entrySet();
for (Map.Entry<String, Object> textSet : textSets) {
@@ -446,7 +474,11 @@
if (runValue.indexOf("<BoldText>") != -1) {
return setOtherStyle(runValue, paragraph, runPosition, run);
}
- break;
+ //鏈変簺琛ㄦ牸鍙兘瀛樺湪澶氫釜瀛楀吀 闇�鏇挎崲澶氭涓嶈兘杞绘槗break
+ //娌℃湁鍙浛鎹㈠唴瀹圭洿鎺reak
+ if(getTextSize(runValue) == 0){
+ break;
+ }
}
}
@@ -592,38 +624,6 @@
}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
private static void changOtherPicture(XWPFParagraph paragraph) {
String paragraphText = paragraph.getText();
@@ -753,7 +753,12 @@
setChageWord(fileName, out, textMap, tReportTemplate.getReportType(), templateType, autoTableMap);
out.flush();
changColorIfJAQ(textMap, out, reportName, tReportTemplate.getReportType());
- ShellTool.execLibreofficeCommand("pdf", EssConfig.getProfile() + "/" + reportName, EssConfig.getProfile() + "/");
+ //PAQ閲囩敤鏂扮殑doc杞琾df
+ if(!ReportTypeEnum.PAQ.getCode().equals(reportType)){
+ ShellTool.execLibreofficeCommand("pdf", EssConfig.getProfile() + "/" + reportName, EssConfig.getProfile() + "/");
+ }else{
+ PdfUtil.convertPDF(EssConfig.getProfile() + "/" + reportName);
+ }
zipFilePath = getPdfPath(reportName);
deleteFileStrList.add(EssConfig.getProfile() + "/" + reportName);
@@ -835,15 +840,25 @@
String filePath = getTemplateDownLoadPathByUpLoad(fileName);
XWPFDocument document = new XWPFDocument(POIXMLDocument.openPackage(getTemplateDownLoadPathByUpLoad(fileName)));
-
+
+ //璁剧疆鏂囨湰
changeText(document, textMap);
-
+
+ //璁剧疆鏂囨湰妗�
changeTextBox(document, textMap);
-
+
+ //璁剧疆鍥捐〃
+ if (Objects.equals(reportType, ReportTypeEnum.PAQ.getCode())) {
+ PAQChart.changeChart(document, textMap);
+ }
+
+ //鎻掑叆琛ㄦ牸
addTableValue(document, autoTableMap);
-
+
+ //鏇存敼琛ㄦ牸鐨勫��
changeTable(document, textMap);
-
+
+ //璁剧疆鍥捐〃鎺т欢
changChar(textMap, document, reportType, templateType);
document.write(out);
}
@@ -872,6 +887,7 @@
}
}
private static String getValByKey(String text, Map<String, Object> textMap) {
+ log.debug("changeTextBox:{}",text);
if (!checkText(text)) {
return text;
}
@@ -927,6 +943,14 @@
document.write(out);
out.flush();
}
+
+ /**
+ * 璁剧疆鍥炬爣鎺т欢
+ * @param textMap
+ * @param document
+ * @param reportType
+ * @param templateType
+ */
private static void changChar(Map<String, Object> textMap, XWPFDocument document, String reportType, String templateType) {
if (StringUtils.isEmpty(reportType) || StringUtils.isEmpty(templateType)) {
return;
@@ -935,20 +959,19 @@
if (ExamUtil.isListEmpty(charts)) {
return;
}
- if (StringUtils.equals(reportType, "MAQ")) {
-
+ if (StringUtils.equals(reportType, ReportTypeEnum.MAQ.getCode())) {
setMAQCompleteChars(textMap, charts);
- } else if (StringUtils.equals(reportType, ReportTypeEnum.MAQV2.getCode())) {
+ } else if (StringUtils.equals(reportType, ReportTypeEnum.MAQV2.getCode()) || StringUtils.equals(reportType, ReportTypeEnum.MAQIAR.getCode())) {
setMAQ_V2CompleteChars(textMap, charts);
- } else if (StringUtils.equals(reportType, "RuiLin")) {
+ } else if (StringUtils.equals(reportType, ReportTypeEnum.RuiLin.getCode())) {
setRuiLinChar(textMap, charts);
} else {
return;
}
}
private static void setMAQ_V2CompleteChars(Map<String, Object> textMap, List<XWPFChart> charts) {
- String p_People32 = textMap.get("P_Task31").toString();
- String p_Task31 = textMap.get("P_People32").toString();
+ String p_Task31 = textMap.get("P_Task31").toString();
+ String p_People32 = textMap.get("P_People32").toString();
String P_INCON25 = textMap.get("P_INCON25").toString();
String P_IM24 = textMap.get("P_IM24").toString();
String P_SDE23 = textMap.get("P_SDE23").toString();
@@ -979,8 +1002,8 @@
List<CTBarSer> serList = ctBarChart.getSerList();
CTBarSer ctBarSer = serList.get(0);
CTNumDataSource val = ctBarSer.getVal();
- val.getNumRef().getNumCache().getPtList().get(0).setV(p_Task31);
- val.getNumRef().getNumCache().getPtList().get(1).setV(p_People32);
+ val.getNumRef().getNumCache().getPtList().get(0).setV(p_People32);
+ val.getNumRef().getNumCache().getPtList().get(1).setV(p_Task31);
}
} catch (Exception e) {
e.printStackTrace();
@@ -1257,4 +1280,21 @@
textMap.put("JAQTableStyle", jaqTableStyleList);
}
}
+
+ public static int getTextSize(String runValue){
+ Pattern pattern = Pattern.compile("%\\w+%");
+ Matcher matcher = pattern.matcher(runValue);
+ List<String> result = new ArrayList<>();
+ while(matcher.find()){
+ result.add(matcher.group());
+ }
+ return result.size();
+ }
+
+
+ public static void main(String[] args) {
+ if (!checkText("浜烘墠閫夋嫈鐨勭洰鐨勫氨鏄壘鍒拌兘澶熻儨浠诲伐浣溿�佹効鎰忔壙鎷呭伐浣滐紝涓斾笌缁勭粐鐨勯渶姹傘�佹枃鍖栥�佷环鍊艰鐩稿尮閰嶇殑浜恒�侾AQ鎶ュ憡鏄牴鎹�欓�変汉瀵筆AQ闂嵎涓鐩殑浣滅瓟淇℃伅鑰岀敓鎴愮殑锛屾祴閲忕殑鏄�欓�変汉鍦ㄥ伐浣滀腑鍋忓ソ鐨勮涓洪鏍笺�侾AQ涔熷寘鎷簡瀵逛綔绛旂湡瀹炴�х殑娴嬮噺锛屽悓鏃朵篃瑁呭叆浜員AI涓撴湁鐨勪綔鍋囬槻鑼冪▼搴忥紝鍙互鏈夋晥闄嶄綆鍊欓�変汉鐨勪吉瑁呭ソ鍊惧悜锛堝叏鐞�30%鐨勮嚜璇勯棶鍗蜂腑閮藉嚭鐜颁簡浼濂界幇璞★級銆�")) {
+ System.out.println("11");
+ }
+ }
}
--
Gitblit v1.9.1