From d63d367bfa2ce9e486c0988bcd457b3e0f7baec4 Mon Sep 17 00:00:00 2001
From: wzp <2040239371@qq.com>
Date: 星期三, 31 一月 2024 18:31:03 +0800
Subject: [PATCH] 图片处理

---
 src/main/java/com/ots/project/tool/report/APIFan/chart/APIFanChart.java |  134 ++++++++++++++++++++++++++++++++++++++++++++
 src/main/java/com/ots/project/tool/exam/ExamUtil.java                   |    7 ++
 2 files changed, 139 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/ots/project/tool/exam/ExamUtil.java b/src/main/java/com/ots/project/tool/exam/ExamUtil.java
index ff659c6..cead00f 100644
--- a/src/main/java/com/ots/project/tool/exam/ExamUtil.java
+++ b/src/main/java/com/ots/project/tool/exam/ExamUtil.java
@@ -113,9 +113,16 @@
         barPictureMap.put("Combined_waterDrops", "CAQBar1.png");
         barPictureMap.put("P_Abstract_context_waterDrops", "CAQBar1.png");
         barPictureMap.put("P_Numeric_context_waterDrops", "CAQBar1.png");
+
+        //APIFan鐨勫浘鐗�
+        barPictureMap.put("box0","apifanSelected.png");
+        barPictureMap.put("box1","apifanDefault.png");
+
         waterDropPictureMap.put("Combined_waterDrops", "waterDropOrange.png");
         waterDropPictureMap.put("P_Abstract_context_waterDrops", "waterDropOrange.png");
         waterDropPictureMap.put("P_Numeric_context_waterDrops", "waterDropOrange.png");
+
+
     }
     public static String scoreToVM(Integer score) {
         if (score % 10 == 0) {
diff --git a/src/main/java/com/ots/project/tool/report/APIFan/chart/APIFanChart.java b/src/main/java/com/ots/project/tool/report/APIFan/chart/APIFanChart.java
index 53d0875..afbcdb7 100644
--- a/src/main/java/com/ots/project/tool/report/APIFan/chart/APIFanChart.java
+++ b/src/main/java/com/ots/project/tool/report/APIFan/chart/APIFanChart.java
@@ -1,18 +1,20 @@
 package com.ots.project.tool.report.APIFan.chart;
 
+import com.ots.framework.config.EssConfig;
 import com.ots.project.tool.report.MAQ.base.RowData;
 import com.ots.project.tool.report.MAQ.base.SeriesData;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.poi.ooxml.POIXMLDocument;
 import org.apache.poi.ooxml.POIXMLDocumentPart;
+import org.apache.poi.util.Units;
 import org.apache.poi.xssf.usermodel.XSSFCell;
 import org.apache.poi.xssf.usermodel.XSSFRow;
 import org.apache.poi.xssf.usermodel.XSSFSheet;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
-import org.apache.poi.xwpf.usermodel.XWPFChart;
-import org.apache.poi.xwpf.usermodel.XWPFDocument;
+import org.apache.poi.xwpf.usermodel.*;
 import org.openxmlformats.schemas.drawingml.x2006.chart.*;
 
+import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
@@ -71,6 +73,7 @@
             textMap.put("P_Impmg11","65");
             textMap.put("BST1","66");
             textMap.put("BST2","67");
+            textMap.put("box","1");
             changeChart(document,textMap);
             document.write(os);
         }catch (Exception e){
@@ -92,6 +95,133 @@
         }
         //鍥捐〃鏁版嵁
         changeAPIFanChart(document,seriesDatas);
+
+
+        //鏇挎崲鍥剧墖
+        try{
+            // 鑾峰彇鎵�鏈夋钀�
+            List<XWPFParagraph> paragraphs = document.getParagraphs();
+
+            //鑾峰彇鍥剧墖璺緞
+            String selectedPic = EssConfig.getReportTemplates()+"apifanSelected.png";
+            String defaultPic =EssConfig.getReportTemplates()+"apifanDefalut.png";
+
+            // 閬嶅巻娈佃惤杩涜鏇挎崲鎿嶄綔
+            synchronized (paragraphs) {
+                for (XWPFParagraph paragraph : paragraphs) {
+                    String text = paragraph.getText();
+
+                    //鐢�%%鍙峰湪鍓嶉潰琚浛鎹簡
+                    if (text.contains("{{box0}}")) {  // 妫�鏌ユ槸鍚﹀寘鍚鏇挎崲鐨勬枃瀛楀彉閲�
+                        String picturePath = ""; // 鍥剧墖璺緞
+
+                        String Box = (String) textMap.get("box");
+                        int box = Integer.parseInt(Box);
+                        if(box== 0)
+                        {
+                            picturePath =selectedPic;
+                        }
+                        else
+                        {
+                            picturePath = defaultPic;
+                        }
+
+                        // 鍒涘缓鏂扮殑鍥剧墖娈佃惤
+//                        XWPFParagraph paragraph = document.createParagraph();
+                        // 鑾峰彇鎵�鏈夎繍琛岀殑鍒楄〃
+                        List<XWPFRun> runs = paragraph.getRuns();
+                        // 绉婚櫎鎵�鏈夎繍琛�
+                        for (int i = runs.size() - 1; i >= 0 ; i--) {
+                            paragraph.removeRun(i);
+                        }
+                        // 鍒涘缓鍥剧墖瀵硅薄
+                        XWPFRun run = paragraph.createRun();
+                        int pictureType = Document.PICTURE_TYPE_PNG; // 鍥剧墖绫诲瀷
+
+                        // 灏嗗浘鐗囨彃鍏ュ埌娈佃惤涓�
+                        int width = Units.toEMU(20); // 鍥剧墖瀹藉害
+                        int height = Units.toEMU(20); // 鍥剧墖楂樺害
+                        run.addPicture(new FileInputStream(picturePath), pictureType, "image.png", width, height);
+                        run.setText("缁撴灉鍙俊锛屽彲浠ョ洿鎺ヨВ璇伙紙娴嬭瘯涓湭鍙戠幇鏄庢樉鐨勨�滀吉瑁呭ソ鈥濆�惧悜锛�");
+
+                    }
+                    if (text.contains("{{box1}}")) {  // 妫�鏌ユ槸鍚﹀寘鍚鏇挎崲鐨勬枃瀛楀彉閲�
+                        String picturePath = ""; // 鍥剧墖璺緞
+
+                        String Box = (String) textMap.get("box");
+                        int box = Integer.parseInt(Box);
+                        if(box== 1)
+                        {
+                            picturePath =selectedPic;
+                        }
+                        else
+                        {
+                            picturePath = defaultPic;
+                        }
+
+                        // 鍒涘缓鏂扮殑鍥剧墖娈佃惤
+//                        XWPFParagraph paragraph = document.createParagraph();
+                        // 鑾峰彇鎵�鏈夎繍琛岀殑鍒楄〃
+                        List<XWPFRun> runs = paragraph.getRuns();
+                        // 绉婚櫎鎵�鏈夎繍琛�
+                        for (int i = runs.size() - 1; i >= 0 ; i--) {
+                            paragraph.removeRun(i);
+                        }
+                        // 鍒涘缓鍥剧墖瀵硅薄
+                        XWPFRun run = paragraph.createRun();
+                        int pictureType = Document.PICTURE_TYPE_PNG; // 鍥剧墖绫诲瀷
+
+                        // 灏嗗浘鐗囨彃鍏ュ埌娈佃惤涓�
+                        int width = Units.toEMU(20); // 鍥剧墖瀹藉害
+                        int height = Units.toEMU(20); // 鍥剧墖楂樺害
+                        run.addPicture(new FileInputStream(picturePath), pictureType, "image.png", width, height);
+                        run.setText("缁撴灉涓嶅彲淇★紙娴嬭瘯涓湁鏄庢樉鐨勨�滀吉瑁呭ソ鈥濆�惧悜锛�");
+
+                    }
+                    if (text.contains("{{box2}}")) {  // 妫�鏌ユ槸鍚﹀寘鍚鏇挎崲鐨勬枃瀛楀彉閲�
+                        String picturePath = ""; // 鍥剧墖璺緞
+
+                        String Box = (String) textMap.get("box");
+                        int box = Integer.parseInt(Box);
+                        if(box== 2)
+                        {
+                            picturePath =selectedPic;
+                        }
+                        else
+                        {
+                            picturePath = defaultPic;
+                        }
+
+                        // 鍒涘缓鏂扮殑鍥剧墖娈佃惤
+//                        XWPFParagraph paragraph = document.createParagraph();
+                        // 鑾峰彇鎵�鏈夎繍琛岀殑鍒楄〃
+                        List<XWPFRun> runs = paragraph.getRuns();
+                        // 绉婚櫎鎵�鏈夎繍琛�
+                        for (int i = runs.size() - 1; i >= 0 ; i--) {
+                            paragraph.removeRun(i);
+                        }
+                        // 鍒涘缓鍥剧墖瀵硅薄
+                        XWPFRun run = paragraph.createRun();
+                        int pictureType = Document.PICTURE_TYPE_PNG; // 鍥剧墖绫诲瀷
+
+                        // 灏嗗浘鐗囨彃鍏ュ埌娈佃惤涓�
+                        int width = Units.toEMU(20); // 鍥剧墖瀹藉害
+                        int height = Units.toEMU(20); // 鍥剧墖楂樺害
+                        run.addPicture(new FileInputStream(picturePath), pictureType, "image.png", width, height);
+                        run.setText("缁撴灉鍙兘鍙俊锛岃В璇绘椂瑕佽皑鎱庯紙娴嬭瘯涓湁涓�瀹氱殑鈥滀吉瑁呭ソ鍊惧悜鈥濓級");
+
+                    }
+                }
+            }
+
+
+
+        }
+        catch (Exception ex)
+        {
+            System.out.println(ex.getMessage());
+        }
+
         return true;
     }
 

--
Gitblit v1.9.1