From 8f101c80208bf1d5aaa4892bd26102d1f10ff2bd Mon Sep 17 00:00:00 2001
From: 吴羡 <16976746+Xian-TT3@user.noreply.gitee.com>
Date: 星期五, 16 十月 2026 14:23:35 +0800
Subject: [PATCH] 修复设备模块导出报 TemplateRenderPolicy render error (500):签名图片缺失时用透明图兜底

---
 inspect-server/src/main/java/com/ruoyi/inspect/util/UserUtils.java |   46 ++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 46 insertions(+), 0 deletions(-)

diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/util/UserUtils.java b/inspect-server/src/main/java/com/ruoyi/inspect/util/UserUtils.java
index 4ea9c59..c6d3d03 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/util/UserUtils.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/util/UserUtils.java
@@ -11,6 +11,8 @@
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
+import java.util.Base64;
+
 /**
  * Author: yuan
  * Date: 2024-12-17 鏄熸湡浜� 10:35:50
@@ -87,4 +89,48 @@
         }
         return StringUtils.isNotBlank(userSignatureUrl) ? Pictures.ofLocal(imgUrl + "/" + userSignatureUrl).create() : null;
     }
+
+    /**
+     * 鍏ㄩ�忔槑 1x1 PNG, 绛惧悕鏈厤缃�/绛惧悕鏂囦欢缂哄け鏃剁殑鍏滃簳鍥剧墖
+     */
+    private static final byte[] TRANSPARENT_PNG = Base64.getDecoder().decode(
+            "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAANSURBVBhXY2BgYGAAAAAFAAGKM+MAAAAAAElFTkSuQmCC");
+
+    /**
+     * 鍥剧墖鍊煎厹搴�: null 鎴栨湰鍦板浘鐗囪鍙栧け璐�(濡傜鍚嶆枃浠剁己澶�)鏃惰繑鍥為�忔槑鍥剧墖
+     */
+    public static PictureRenderData orTransparentPicture(PictureRenderData picture) {
+        if (picture != null) {
+            try {
+                byte[] data = picture.readPictureData();
+                if (data != null && data.length > 0) {
+                    return picture;
+                }
+            } catch (Exception ignored) {
+            }
+        }
+        return Pictures.ofBytes(TRANSPARENT_PNG).create();
+    }
+
+    /**
+     * 娓叉煋Word鐢ㄦ埛绛惧悕瀵硅薄(鎸変汉鍛榠d, 甯﹀厹搴�): 浜哄憳涓嶅瓨鍦ㄦ垨绛惧悕鏈厤缃�/鏂囦欢缂哄け鏃惰繑鍥為�忔槑鍥剧墖, 涓嶆姏閿�
+     */
+    public static PictureRenderData getFinalUserSignatureOrTransparent(Integer userId) {
+        try {
+            return orTransparentPicture(getFinalUserSignatureUrl(userId));
+        } catch (Exception e) {
+            return Pictures.ofBytes(TRANSPARENT_PNG).create();
+        }
+    }
+
+    /**
+     * 娓叉煋Word鐢ㄦ埛绛惧悕瀵硅薄(鎸変汉鍛樺鍚�, 甯﹀厹搴�): 浜哄憳涓嶅瓨鍦ㄦ垨绛惧悕鏈厤缃�/鏂囦欢缂哄け鏃惰繑鍥為�忔槑鍥剧墖, 涓嶆姏閿�
+     */
+    public static PictureRenderData getFinalUserSignatureOrTransparent(String userName) {
+        try {
+            return orTransparentPicture(getFinalUserSignatureUrl(userName));
+        } catch (Exception e) {
+            return Pictures.ofBytes(TRANSPARENT_PNG).create();
+        }
+    }
 }

--
Gitblit v1.9.3