From 8ad863082097ffdcab4a8e7f426d344a1fe6f892 Mon Sep 17 00:00:00 2001
From: 吴羡 <16976746+Xian-TT3@user.noreply.gitee.com>
Date: 星期六, 07 十一月 2026 00:27:02 +0800
Subject: [PATCH] 修复人员管理接口校验与导出,完善设备保养计划与文件受控功能

---
 cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrainingRecordServiceImpl.java |   97 +++++++++++++++++++++++++++++++-----------------
 1 files changed, 62 insertions(+), 35 deletions(-)

diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrainingRecordServiceImpl.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrainingRecordServiceImpl.java
index badf239..d67d453 100644
--- a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrainingRecordServiceImpl.java
+++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrainingRecordServiceImpl.java
@@ -11,6 +11,7 @@
 import com.ruoyi.common.core.domain.entity.User;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.WxCpUtils;
+import com.ruoyi.framework.exception.ErrorException;
 import com.ruoyi.inspect.util.HackLoopTableRenderPolicy;
 import com.ruoyi.personnel.dto.PersonTrainingRecordDto;
 import com.ruoyi.personnel.dto.PersonTrainingRecordListDto;
@@ -90,8 +91,14 @@
 
     @Override
     public void exportTrainingRecordAddTrainingDate(Integer userId, Integer trainingDate, HttpServletResponse response) {
+        if (userId == null) {
+            throw new ErrorException("缂哄皯浜哄憳id");
+        }
         // 鏌ヨ浜哄憳浜轰俊鎭�
         PersonTrainingRecordListDto trainingRecordListDto = baseMapper.selectUserTraining(userId);
+        if (trainingRecordListDto == null) {
+            throw new ErrorException("浜哄憳涓嶅瓨鍦ㄦ垨宸茶鍒犻櫎锛屾棤娉曞鍑�");
+        }
 
         // 鏌ヨ鍩硅璁板綍
         List<TrainingRecordPersonDetailedDto> personDetailedDtos = baseMapper.selectPersonDetailedDtosByTrainingDate(userId, trainingDate);
@@ -99,6 +106,9 @@
 
         // 鑾峰彇璺緞
         InputStream inputStream = this.getClass().getResourceAsStream("/static/training-record.docx");
+        if (inputStream == null) {
+            throw new ErrorException("鍩硅璁板綍瀵煎嚭妯℃澘涓嶅瓨鍦�");
+        }
         Configure configure = Configure.builder()
                 .bind("personnelDetailsLisat", new HackLoopTableRenderPolicy())
                 .build();
@@ -130,6 +140,21 @@
      */
     @Override
     public void trainingAndAssessmentRecordsAdded(PersonTrainingRecordSubmitDto personTrainingRecordSubmitDto) {
+        if (personTrainingRecordSubmitDto == null || personTrainingRecordSubmitDto.getTrainingDetailedId() == null) {
+            throw new ErrorException("缂哄皯鍩硅鏄庣粏id");
+        }
+        if (personTrainingRecordSubmitDto.getState() == null) {
+            throw new ErrorException("缂哄皯鍩硅鐘舵��");
+        }
+        PersonTrainingDetailed personPersonnelCapacity = personTrainingDetailedService.getById(personTrainingRecordSubmitDto.getTrainingDetailedId());
+        if (personPersonnelCapacity == null) {
+            throw new ErrorException("鍩硅璁板綍涓嶅瓨鍦ㄦ垨宸茶鍒犻櫎");
+        }
+        boolean waitEvaluate = Integer.valueOf(2).equals(personTrainingRecordSubmitDto.getState());
+        if (waitEvaluate && personTrainingRecordSubmitDto.getAssessmentUserId() == null) {
+            throw new ErrorException("璇烽�夋嫨璇勪环浜�");
+        }
+
         personTrainingDetailedService.update(Wrappers.<PersonTrainingDetailed>lambdaUpdate()
                 .eq(PersonTrainingDetailed::getId, personTrainingRecordSubmitDto.getTrainingDetailedId())
                 .set(PersonTrainingDetailed::getAssessmentMethod, personTrainingRecordSubmitDto.getAssessmentMethod())
@@ -138,42 +163,44 @@
                 .set(PersonTrainingDetailed::getAssessmentUserId, personTrainingRecordSubmitDto.getAssessmentUserId())
                 .set(PersonTrainingDetailed::getState, personTrainingRecordSubmitDto.getState()));
 
-        // 鍙戦�佹秷鎭�氱煡
-        if (personTrainingRecordSubmitDto.getState().equals(2)) {
-            PersonTrainingDetailed personPersonnelCapacity = personTrainingDetailedService.getById(personTrainingRecordSubmitDto.getTrainingDetailedId());
-
-            Integer userId = SecurityUtils.getUserId().intValue();
-            User user = userMapper.selectById(userId);
-            // 娑堟伅鍙戦��
-            InformationNotification info = new InformationNotification();
-            // 鍙戦�佷汉
-            info.setCreateUser(user.getName());
-            info.setMessageType("6");
-            info.setTheme("CNAS浜哄憳鍩硅璁″垝寰呰瘎浠�");
-            info.setContent("鍩硅鍐呭:" + personPersonnelCapacity.getTrainingContent() + "鐨勪汉鍛樺煿璁緟璇勪环");
-            info.setSenderId(userId);
-            // 鎺ユ敹浜�
-            info.setConsigneeId(personTrainingRecordSubmitDto.getAssessmentUserId());
-            info.setJumpPath(MenuJumpPathConstants.PERSONNEL);
-            informationNotificationService.addInformationNotification(info);
-
-            // 鍙戦�佷紒涓氬井淇¢�氱煡
-            threadPoolTaskExecutor.execute(() -> {
-                // 鏌ヨ鎺ユ敹浜�
-                User personnel = userMapper.selectById(personTrainingRecordSubmitDto.getAssessmentUserId());
-
-                String message = "";
-                message += "CNAS浜哄憳鍩硅璁″垝寰呰瘎浠�";
-                message += "\n璇峰幓璧勬簮绠$悊-浜哄憳-浜哄憳鍩硅璁″垝";
-                message += "\n" + "鍩硅鍐呭:" + personPersonnelCapacity.getTrainingContent() + "鐨勪汉鍛樺煿璁緟璇勪环";
-                //鍙戦�佷紒涓氬井淇℃秷鎭�氱煡
-                try {
-                    WxCpUtils.inform(personnel.getAccount(), message, null);
-                } catch (Exception e) {
-                    throw new RuntimeException(e);
-                }
-            });
+        // 鍙湁鎻愪氦寰呰瘎浠锋椂鎵嶉�氱煡璇勪环浜�
+        if (!waitEvaluate) {
+            return;
         }
+
+        Integer userId = SecurityUtils.getUserId().intValue();
+        User user = userMapper.selectById(userId);
+        // 娑堟伅鍙戦��
+        InformationNotification info = new InformationNotification();
+        // 鍙戦�佷汉
+        info.setCreateUser(user != null ? user.getName() : "");
+        info.setMessageType("6");
+        info.setTheme("CNAS浜哄憳鍩硅璁″垝寰呰瘎浠�");
+        info.setContent("鍩硅鍐呭:" + personPersonnelCapacity.getTrainingContent() + "鐨勪汉鍛樺煿璁緟璇勪环");
+        info.setSenderId(userId);
+        // 鎺ユ敹浜�
+        info.setConsigneeId(personTrainingRecordSubmitDto.getAssessmentUserId());
+        info.setJumpPath(MenuJumpPathConstants.PERSONNEL);
+        informationNotificationService.addInformationNotification(info);
+
+        // 鍙戦�佷紒涓氬井淇¢�氱煡
+        threadPoolTaskExecutor.execute(() -> {
+            // 鏌ヨ鎺ユ敹浜�
+            User personnel = userMapper.selectById(personTrainingRecordSubmitDto.getAssessmentUserId());
+            if (personnel == null || personnel.getAccount() == null || personnel.getAccount().trim().isEmpty()) {
+                return;
+            }
+            String message = "";
+            message += "CNAS浜哄憳鍩硅璁″垝寰呰瘎浠�";
+            message += "\n璇峰幓璧勬簮绠$悊-浜哄憳-浜哄憳鍩硅璁″垝";
+            message += "\n" + "鍩硅鍐呭:" + personPersonnelCapacity.getTrainingContent() + "鐨勪汉鍛樺煿璁緟璇勪环";
+            //鍙戦�佷紒涓氬井淇℃秷鎭�氱煡
+            try {
+                WxCpUtils.inform(personnel.getAccount(), message, null);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        });
     }
 
 }

--
Gitblit v1.9.3