From ad58ba3d20b080ef113cbd196000028f83308bb3 Mon Sep 17 00:00:00 2001
From: wzp <2040239371@qq.com>
Date: 星期三, 31 一月 2024 11:59:09 +0800
Subject: [PATCH] 多表要按sheet名获取数据,多表每次读取随机修正

---
 src/main/java/com/ots/common/utils/poi/WordUtil.java |  101 ++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 72 insertions(+), 29 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 a31f833..549121a 100644
--- a/src/main/java/com/ots/common/utils/poi/WordUtil.java
+++ b/src/main/java/com/ots/common/utils/poi/WordUtil.java
@@ -17,11 +17,16 @@
 import com.ots.project.tool.exam.ExamUtil;
 import com.ots.project.tool.exam.ImageUtil;
 import com.ots.project.tool.exam.ZipUtil;
+import com.ots.project.tool.libreoffice.LibreOfficeUtil;
+import com.ots.project.tool.report.APIFan.chart.APIFanChart;
+import com.ots.project.tool.report.CIAQ.chart.CIAQChart;
+import com.ots.project.tool.report.LAQ.chart.LAQChart;
 import com.ots.project.tool.report.MAQTR.chart.MAQTRChart;
 import com.ots.project.tool.report.PAQ.chart.PAQChart;
 import org.apache.commons.collections.map.HashedMap;
 import org.apache.poi.ooxml.POIXMLDocument;
 import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
+import org.apache.poi.openxml4j.util.ZipSecureFile;
 import org.apache.poi.util.Units;
 import org.apache.poi.xwpf.usermodel.*;
 import org.apache.xmlbeans.XmlCursor;
@@ -902,9 +907,8 @@
 
         if (checkText(runValue)) {
             runValue = runValue.replaceAll("%.*%", "");
-            runValue = runValue.replaceAll("N/A NONE", "");
-
         }
+        runValue = runValue.replaceAll("N/A NONE", "");
 
         return runValue;
     }
@@ -1167,21 +1171,30 @@
             reportType = getTypeIfIsSAQ(tReportTemplate, reportType);
             reportType = getPositionIfJAQ(textMap, reportType);
             reportName = textMap.get("sendEmailFileName") + "_" + reportType + "_" + ReportTypeNameEnum.valueOf(tReportTemplate.getTemplateType()).getCode() + "_" + ReportTypeNameEnum.valueOf(tReportTemplate.getLangType()).getCode() + ".docx";
-
             reportName = reportName.replaceAll(" ", "_");
-            out = getDownLoadFileOutputStream(reportName);
 
-            log.info("reportTemplate:" + fileName);
-            //String templateType = tReportTemplate.getTemplateType();
-            setChageWord(fileName, out, textMap, tReportTemplate.getReportType(),tReportTemplate.getDataPath(), autoTableMap);
-            out.flush();
-            changColorIfJAQ(textMap, out, reportName, tReportTemplate.getReportType());
-            //PAQ銆丮AQTR閲囩敤鏂扮殑doc杞琾df
-            if(ReportTypeEnum.PAQ.getCode().equals(reportType) || ReportTypeEnum.MAQTR.getCode().equals(reportType)){
+            //妯℃澘鏂囦欢闇�瑕佸姞閿�
+            out = getDownLoadFileOutputStream(reportName);
+            //synchronized (fileName.intern()){
+                //String templateType = tReportTemplate.getTemplateType();
+                setChageWord(fileName, out, textMap, tReportTemplate.getReportType(),tReportTemplate.getDataPath(), autoTableMap);
+                out.flush();
+                changColorIfJAQ(textMap, out, reportName, tReportTemplate.getReportType());
+            //}
+
+            //PAQ銆丮AQTR閲囩敤銆丆IAQ銆丄PIFan鏂扮殑doc杞琾df
+            if(ReportTypeEnum.PAQ.getCode().equals(reportType) || ReportTypeEnum.MAQTR.getCode().equals(reportType)
+                    || ReportTypeEnum.CIAQ.getCode().equals(reportType) ||ReportTypeEnum.APIFan.getCode().equals(reportType)){
                 PdfUtil.convertPDF(EssConfig.getProfile() + "/" + reportName);
+            }else if(ReportTypeEnum.LAQ.getCode().equals(reportType)){
+                PdfUtil.dockerConvertPDF(EssConfig.getProfile(),EssConfig.getDocx2pdfPath(),reportName);
             }else{
                 ShellTool.execLibreofficeCommand("pdf", EssConfig.getProfile() + "/" + reportName, EssConfig.getProfile() + "/");
+                // ShellTool shellTool = ShellTool.builder();
+                // shellTool.execNewLibreofficeCommand("pdf", EssConfig.getProfile() + "/" + reportName, EssConfig.getProfile() + "/" + reportName.replace("docx","pdf"));
 
+                //鏂版柟娉曟祴璇�
+                //LibreOfficeUtil.convertOffice2PDFSyncIsSuccess(new File(EssConfig.getProfile() + "/" + reportName),new File(EssConfig.getProfile() + "/" + reportName.replace("docx","pdf")));
             }
             zipFilePath = getPdfPath(reportName);
 
@@ -1274,14 +1287,31 @@
      */
     private static void setChageWord(String fileName, OutputStream out, Map<String, Object> textMap, String reportType,String dataPath, Map<Integer, Map<Integer, List<String[]>>> autoTableMap) throws IOException, InvalidFormatException, DocumentException {
         //String filePath = getTemplateDownLoadPathByUpLoad(fileName);
+        ZipSecureFile.setMinInflateRatio(0.001);
 
         XWPFDocument document = new XWPFDocument(POIXMLDocument.openPackage(getTemplateDownLoadPathByUpLoad(fileName)));
 
-        //璁剧疆鏂囨湰
-        changeText(document, textMap);
+        if (StringUtils.equals(reportType, ReportTypeEnum.JAQ.getCode())) {
+            //璁剧疆鏂囨湰妗�
+            changeTextBox(document, textMap);
 
-        //璁剧疆鏂囨湰妗�
-        changeTextBox(document, textMap);
+            //璁剧疆鏂囨湰
+            changeText(document, textMap);
+        }else {
+            //璁剧疆鏂囨湰
+            changeText(document, textMap);
+
+            //璁剧疆鏂囨湰妗�
+            changeTextBox(document, textMap);
+        }
+
+//        //璁剧疆鏂囨湰妗�
+//        changeTextBox(document, textMap);
+//
+//        //璁剧疆鏂囨湰
+//        changeText(document, textMap);
+
+
 
         //鎻掑叆琛ㄦ牸
         addTableValue(document, autoTableMap);
@@ -1341,9 +1371,9 @@
             repText = repText.replaceAll("<BoldText>", "");
             repText = repText.replaceAll("</BoldText>", "");
         }
-        if (repText.indexOf("N/A NONE") != -1) {
+/*        if (repText.indexOf("N/A NONE") != -1) {
             repText = repText.replaceAll("N/A NONE", "");
-        }
+        }*/
         return repText;
     }
     public static void changTableColor(String fileName, OutputStream out, List<JAQTableStyle> jaqTableStyleList) throws IOException {
@@ -1390,19 +1420,32 @@
         if (ExamUtil.isListEmpty(charts)) {
             return;
         }
-        if (StringUtils.equals(reportType, ReportTypeEnum.MAQ.getCode())) {
-            setMAQCompleteChars(textMap, charts);
-        } else if (StringUtils.equals(reportType, ReportTypeEnum.MAQV2.getCode()) || StringUtils.equals(reportType, ReportTypeEnum.MAQIAR.getCode())) {
-            setMAQ_V2CompleteChars(textMap, charts);
-        } else if (StringUtils.equals(reportType, ReportTypeEnum.RuiLin.getCode())) {
-            setRuiLinChar(textMap, charts);
-        } else if (StringUtils.equals(reportType, ReportTypeEnum.PAQ.getCode())) {
-            PAQChart.changeChart(document, textMap);
-        } else if (StringUtils.equals(reportType, ReportTypeEnum.MAQTR.getCode())) {
-            MAQTRChart.changeMAQTRChart(document, dataPath);
-        } else {
-            return;
+        try{
+            if (StringUtils.equals(reportType, ReportTypeEnum.MAQ.getCode())) {
+                setMAQCompleteChars(textMap, charts);
+            } else if (StringUtils.equals(reportType, ReportTypeEnum.MAQV2.getCode()) || StringUtils.equals(reportType, ReportTypeEnum.MAQIAR.getCode())) {
+                setMAQ_V2CompleteChars(textMap, charts);
+            } else if (StringUtils.equals(reportType, ReportTypeEnum.RuiLin.getCode())) {
+                setRuiLinChar(textMap, charts);
+            } else if (StringUtils.equals(reportType, ReportTypeEnum.PAQ.getCode())) {
+                PAQChart.changeChart(document, textMap);
+            } else if (StringUtils.equals(reportType, ReportTypeEnum.MAQTR.getCode())) {
+                MAQTRChart.changeMAQTRChart(document, dataPath);
+            } else if (StringUtils.equals(reportType, ReportTypeEnum.CIAQ.getCode())) {
+                CIAQChart.changeChart(document, textMap);
+            } else if (StringUtils.equals(reportType, ReportTypeEnum.LAQ.getCode())) {
+                LAQChart.changeChart(document, textMap);
+            } else if(StringUtils.equals(reportType, ReportTypeEnum.APIFan.getCode()))
+            {
+                APIFanChart.changeChart(document,textMap);
+            }
+            else {
+                return;
+            }
+        }catch (Exception e){
+            e.printStackTrace();
         }
+
     }
     private static void setMAQ_V2CompleteChars(Map<String, Object> textMap, List<XWPFChart> charts) {
         String p_Task31 = textMap.get("P_Task31").toString();

--
Gitblit v1.9.1