From 45076ccef269d337e7c6f6755bf096df250ebdd8 Mon Sep 17 00:00:00 2001
From: zhijie <1003392067@qq.com>
Date: 星期一, 18 四月 2022 19:52:30 +0800
Subject: [PATCH] JAQ团队成员列表优化

---
 src/main/java/com/ots/common/utils/poi/WordUtil.java |   58 ++++++++++++++++++++++++++++++++++++++++++++++++----------
 src/main/java/com/ots/common/enums/TableEnum.java    |    2 +-
 2 files changed, 49 insertions(+), 11 deletions(-)

diff --git a/src/main/java/com/ots/common/enums/TableEnum.java b/src/main/java/com/ots/common/enums/TableEnum.java
index cce71b1..3f54890 100644
--- a/src/main/java/com/ots/common/enums/TableEnum.java
+++ b/src/main/java/com/ots/common/enums/TableEnum.java
@@ -16,7 +16,7 @@
     table2(1,"琛�2"),
     table3(2,"琛�3"),
     table4(4,"琛�4"),
-    table4Children(5,"琛�4瀛愰泦鍚�");
+    table4Children(99,"琛�4瀛愰泦鍚�");
 
     private Integer code;
     private String name;
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 9cc37ee..9f6d490 100644
--- a/src/main/java/com/ots/common/utils/poi/WordUtil.java
+++ b/src/main/java/com/ots/common/utils/poi/WordUtil.java
@@ -817,8 +817,7 @@
         try {
             run.setText(changeValue(run.toString(), textMap, run, paragraph, document, runPosition), 0);
         } catch (Exception e) {
-            
-            
+            e.printStackTrace();
         }
     }
     
@@ -1113,10 +1112,16 @@
         } else {
             String keyTemp = textSet.getKey();
             String keyValue = Objects.isNull(textSet.getValue()) ? "" : textSet.getValue().toString();
-            if (StringUtils.contains(keyValue, "%line-feed%")) {
-                
-                String[] keyValues = keyValue.split("%line-feed%");
-                runValue = delDynList(keyTemp, Arrays.asList(keyValues), paragraph, document);
+            if (StringUtils.contains(keyValue, "%line-feed%") || StringUtils.contains(keyValue, "%table-line-feed%")) {
+
+                //琛ㄦ牸閲岀殑鎹㈣ 鐗规畩澶勭悊 鍥犱负娌℃湁娈佃惤
+                if(StringUtils.contains(keyValue, "table")){
+                    String[] keyValues = keyValue.split("%table-line-feed%");
+                    runValue = delDynList(keyTemp, Arrays.asList(keyValues), paragraph, document,1);
+                }else{
+                    String[] keyValues = keyValue.split("%line-feed%");
+                    runValue = delDynList(keyTemp, Arrays.asList(keyValues), paragraph, document,0);
+                }
             }
             log.info("ChangeValue鐨刱ey鍊硷細" + key + "  ChangeValue鐨剉alue鍊硷細" + keyValue);
             runValue = runValue.replaceAll(key, keyValue);
@@ -1610,10 +1615,14 @@
         
         ctpPr.addNewSectPr();
     }
-    private static String delDynList(String placeholder, List obj, XWPFParagraph oldParagraph, XWPFDocument templateDoc) {
+
+    private static String delDynList(String placeholder, List obj, XWPFParagraph oldParagraph, XWPFDocument templateDoc,Integer flag) {
         String placeholderValue = placeholder;
         List dataList = obj;
-        Collections.reverse(dataList);
+        //鏅�氭崲琛岄檷搴忓鐞�  琛ㄦ牸鎹㈣鏃犻渶闄嶅簭
+        if(flag == 0){
+            Collections.reverse(dataList);
+        }
         XWPFRun oldRun = oldParagraph.getRuns().size() > 0 ? oldParagraph.getRuns().get(0) : null;
         Boolean isBold = Objects.nonNull(oldRun) ? oldRun.isBold() : false;
         for (int i = 0, size = dataList.size(); i < size; i++) {
@@ -1622,7 +1631,13 @@
             if (i == 0) {
                 placeholderValue = String.valueOf(text);
             } else {
-                XWPFParagraph paragraph = createParagraph(oldParagraph, templateDoc, oldRun, isBold, String.valueOf(text));
+                XWPFParagraph paragraph = null;
+                if(flag == 0){
+                    paragraph = createParagraph(oldParagraph, templateDoc, oldRun, isBold, String.valueOf(text));
+                }else if(flag == 1){
+                    paragraph = createTableRun(oldParagraph, oldRun, isBold, String.valueOf(text));
+                }
+
                 if (paragraph != null) {
                     oldParagraph = paragraph;
                 }
@@ -1640,8 +1655,31 @@
         copyParagraph(oldParagraph, newPar, oldRun, isBold, texts);
         return newPar;
     }
+
+    /**
+     * 鍒涘缓table琛ㄦ牸鎹㈣ 娈佃惤run
+     * @param oldParagraph
+     * @param oldRun
+     * @param isBold
+     * @param texts
+     * @return
+     */
+    public static XWPFParagraph createTableRun(XWPFParagraph oldParagraph,XWPFRun oldRun, boolean isBold, String... texts) {
+
+        XWPFRun run = oldParagraph.createRun();
+        run.addBreak();
+        run.setText(texts[0]);
+        run.setFontFamily(oldRun.getFontFamily());
+        int fontSize = oldRun.getFontSize();
+        run.setFontSize((fontSize == -1) ? DEFAULT_FONT_SIZE : fontSize);
+        run.setBold(isBold);
+        run.setItalic(oldRun.isItalic());
+        run.setColor(oldRun.getColor());
+
+        return null;
+    }
     
-    ;
+
     private static void copyParagraph(XWPFParagraph sourcePar, XWPFParagraph targetPar, XWPFRun oldRun, boolean isBold, String... texts) {
         targetPar.setAlignment(sourcePar.getAlignment());
         targetPar.setVerticalAlignment(sourcePar.getVerticalAlignment());

--
Gitblit v1.9.1