From c1147646b9ef1d713a202d7ab8cf3ea8d677f142 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期六, 27 九月 2025 21:56:54 +0800
Subject: [PATCH] fix:优化评价

---
 ruoyi-common/src/main/java/com/ruoyi/common/utils/QRCodeUtils.java |   52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 52 insertions(+), 0 deletions(-)

diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/QRCodeUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/QRCodeUtils.java
index 5a28d53..cb983db 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/QRCodeUtils.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/QRCodeUtils.java
@@ -9,6 +9,7 @@
 import org.slf4j.LoggerFactory;
 
 import javax.imageio.ImageIO;
+import java.awt.*;
 import java.awt.image.BufferedImage;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
@@ -95,4 +96,55 @@
         }
         return null;
     }
+
+    /**
+     * 鐢熸垚甯﹁溅鐗屽彿鐨凚ase64缂栫爜浜岀淮鐮�
+     * 
+     * @param content 浜岀淮鐮佸唴瀹�
+     * @param vehicleNo 杞︾墝鍙�
+     * @return Base64缂栫爜鐨勪簩缁寸爜
+     */
+    public static String generateQRCodeWithVehicleNoToBase64(String content, String vehicleNo) {
+        try {
+            Map<EncodeHintType, Object> hints = new HashMap<>();
+            hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
+            hints.put(EncodeHintType.MARGIN, 1);
+            
+            BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, WIDTH, HEIGHT, hints);
+            BufferedImage qrImage = MatrixToImageWriter.toBufferedImage(bitMatrix);
+            
+            // 鍒涘缓甯︽枃瀛楃殑鍥剧墖
+            int textHeight = 40; // 鏂囧瓧鍖哄煙楂樺害
+            int totalHeight = HEIGHT + textHeight;
+            BufferedImage finalImage = new BufferedImage(WIDTH, totalHeight, BufferedImage.TYPE_INT_RGB);
+            Graphics2D g2d = finalImage.createGraphics();
+            
+            // 璁剧疆鑳屾櫙涓虹櫧鑹�
+            g2d.setColor(Color.WHITE);
+            g2d.fillRect(0, 0, WIDTH, totalHeight);
+            
+            // 缁樺埗浜岀淮鐮�
+            g2d.drawImage(qrImage, 0, 0, null);
+            
+            // 缁樺埗杞︾墝鍙锋枃瀛�
+            g2d.setColor(Color.BLACK);
+            g2d.setFont(new Font("寰蒋闆呴粦", Font.BOLD, 16));
+            FontMetrics fm = g2d.getFontMetrics();
+            int textWidth = fm.stringWidth(vehicleNo);
+            int x = (WIDTH - textWidth) / 2;
+            int y = HEIGHT + (textHeight + fm.getAscent()) / 2;
+            g2d.drawString(vehicleNo, x, y);
+            
+            g2d.dispose();
+            
+            // 杞崲涓築ase64
+            ByteArrayOutputStream baos = new ByteArrayOutputStream();
+            ImageIO.write(finalImage, FORMAT, baos);
+            return "data:image/png;base64," + java.util.Base64.getEncoder().encodeToString(baos.toByteArray());
+            
+        } catch (Exception e) {
+            log.error("鐢熸垚甯﹁溅鐗屽彿鐨勪簩缁寸爜澶辫触: {}", e.getMessage());
+            return null;
+        }
+    }
 }

--
Gitblit v1.9.1