From abd339106ed3a6465293edccd33e5f87bd43bdde Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期二, 20 十月 2026 18:01:42 +0800
Subject: [PATCH] feat: 质量监控/人员培训对齐程序文件,体系文件控制附件格式放开

---
 cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrainingServiceImpl.java |   39 ++++++++++++++++++++++++---------------
 1 files changed, 24 insertions(+), 15 deletions(-)

diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrainingServiceImpl.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrainingServiceImpl.java
index e5d2c50..8a6bd95 100644
--- a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrainingServiceImpl.java
+++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrainingServiceImpl.java
@@ -19,6 +19,7 @@
 import com.ruoyi.common.utils.WxCpUtils;
 import com.ruoyi.framework.exception.ErrorException;
 import com.ruoyi.inspect.util.HackLoopTableRenderPolicy;
+import com.ruoyi.inspect.util.UserUtils;
 import com.ruoyi.personnel.dto.PersonTrainingDetailedDto;
 import com.ruoyi.personnel.dto.PersonTrainingDto;
 import com.ruoyi.personnel.dto.PersonTrainingRecordDto;
@@ -131,11 +132,14 @@
             message += "CNAS鍩硅璁″垝瀹℃牳閫氱煡";
             message += "\n璇峰幓璧勬簮绠$悊-浜哄憳-鍩硅璁″垝濉啓";
             message += "\n" + fileName + "鐨勫煿璁鍒掑緟瀹℃牳";
-            //鍙戦�佷紒涓氬井淇℃秷鎭�氱煡
+            //鍙戦�佷紒涓氬井淇℃秷鎭�氱煡锛堟帴鏀朵汉涓嶅瓨鍦ㄦ垨鍙戦�佸け璐ヤ笉褰卞搷瀵煎叆娴佺▼锛�
+            if (personnel == null || StringUtils.isBlank(personnel.getAccount())) {
+                return;
+            }
             try {
                 WxCpUtils.inform(personnel.getAccount(), message, null);
             } catch (Exception e) {
-                throw new RuntimeException(e);
+                e.printStackTrace();
             }
         });
 
@@ -306,9 +310,10 @@
         // 鏌ヨ浜哄憳鍩硅鏄庣粏
         PersonTrainingDetailedDto detailedDto = personTrainingDetailedMapper.selectTrainingDetail(id);
 
-        // 鐢熸垚鍩硅鑰佸笀绛惧悕
-        detailedDto.setTrainingLecturerRender(StringUtils.isNotBlank(detailedDto.getTrainingLecturerSignatureUrl())
-                    ? Pictures.ofLocal(imgUrl + "/" + detailedDto.getTrainingLecturerSignatureUrl()).create() : null);
+        // 鐢熸垚鍩硅鑰佸笀绛惧悕锛堟湭閰嶇疆绛惧悕鏃剁敤閫忔槑鍥剧墖鍏滃簳锛屾ā鏉块噷鐨勫浘鐗囧崰浣嶄笉鑳戒负 null锛�
+        detailedDto.setTrainingLecturerRender(UserUtils.orTransparentPicture(
+                StringUtils.isNotBlank(detailedDto.getTrainingLecturerSignatureUrl())
+                        ? Pictures.ofLocal(imgUrl + "/" + detailedDto.getTrainingLecturerSignatureUrl()).create() : null));
 
         // 鏌ヨ鍩硅鐨勪汉鍛�
         List<PersonTrainingRecordDto> recordDtos = personTrainingRecordMapper.selectListByTrainingDetailedId(id);
@@ -320,15 +325,15 @@
         for (PersonTrainingRecordDto recordDto : recordDtos) {
             switch (count) {
                 case 0:
-                    exportDto.setUserNameRender1(StringUtils.isNotBlank(recordDto.getSignatureUrl())
-                            ? Pictures.ofLocal(imgUrl + "/" + recordDto.getSignatureUrl()).create() : null);
+                    exportDto.setUserNameRender1(UserUtils.orTransparentPicture(StringUtils.isNotBlank(recordDto.getSignatureUrl())
+                            ? Pictures.ofLocal(imgUrl + "/" + recordDto.getSignatureUrl()).create() : null));
                     exportDto.setDepartment1(recordDto.getDepartment());
                     exportDto.setExaminationResults1(recordDto.getExaminationResults());
                     count ++;
                     break;
                 case 1:
-                    exportDto.setUserNameRender2(StringUtils.isNotBlank(recordDto.getSignatureUrl())
-                            ? Pictures.ofLocal(imgUrl + "/" + recordDto.getSignatureUrl()).create() : null);
+                    exportDto.setUserNameRender2(UserUtils.orTransparentPicture(StringUtils.isNotBlank(recordDto.getSignatureUrl())
+                            ? Pictures.ofLocal(imgUrl + "/" + recordDto.getSignatureUrl()).create() : null));
                     exportDto.setDepartment2(recordDto.getDepartment());
                     exportDto.setExaminationResults2(recordDto.getExaminationResults());
                     exportDtoList.add(exportDto);
@@ -337,14 +342,17 @@
                     break;
             }
         }
-        exportDtoList.add(exportDto);
+        // 鍙湁鍗曟暟鏉¤褰曟椂锛屾渶鍚庝竴琛屾墠鏈夋暟鎹紱鍋舵暟鏉℃椂 exportDto 鏄┖瀵硅薄锛屼笉鑳藉姞杩涜〃鏍�
+        if (count != 0) {
+            exportDtoList.add(exportDto);
+        }
 
-        // 璐ㄩ噺璐熻矗浜�
+        // 璐ㄩ噺璐熻矗浜猴紙鏈鍚嶆椂鐢ㄩ�忔槑鍥剧墖鍏滃簳锛�
         String assessmentUserUrl = null;
         if (detailedDto.getAssessmentUserId() != null) {
-            assessmentUserUrl = userMapper.selectById(detailedDto.getAssessmentUserId()).getSignatureUrl();
-            if (StringUtils.isBlank(assessmentUserUrl)) {
-                throw new ErrorException("鎵句笉鍒拌瘎浠蜂汉鐨勭鍚�");
+            User assessmentUser = userMapper.selectById(detailedDto.getAssessmentUserId());
+            if (assessmentUser != null) {
+                assessmentUserUrl = assessmentUser.getSignatureUrl();
             }
         }
 
@@ -359,7 +367,8 @@
                 new HashMap<String, Object>() {{
                     put("trainingDetail", detailedDto);
                     put("trainingRecordsList", exportDtoList);
-                    put("assessmentUserUrl", StringUtils.isNotBlank(finalAssessmentUserUrl) ? Pictures.ofLocal(imgUrl + "/" + finalAssessmentUserUrl).create() : null);
+                    put("assessmentUserUrl", UserUtils.orTransparentPicture(StringUtils.isNotBlank(finalAssessmentUserUrl)
+                            ? Pictures.ofLocal(imgUrl + "/" + finalAssessmentUserUrl).create() : null));
                 }});
         try {
             response.setContentType("application/msword");

--
Gitblit v1.9.3