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/PersonTrainingDetailedServiceImpl.java |   49 +++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 41 insertions(+), 8 deletions(-)

diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrainingDetailedServiceImpl.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrainingDetailedServiceImpl.java
index 7c05355..39274d6 100644
--- a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrainingDetailedServiceImpl.java
+++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonTrainingDetailedServiceImpl.java
@@ -2,7 +2,7 @@
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
-import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -47,17 +47,24 @@
             PersonTrainingDetailed personTrainingDetailed = new PersonTrainingDetailed();
             BeanUtils.copyProperties(i, personTrainingDetailed);
 
-            // 鍖归厤璁插笀
-            User user = userMapper.selectOne(Wrappers.<User>lambdaQuery()
-                    .eq(User::getName, i.getTrainingLecturerName()));
-            if (ObjectUtils.isEmpty(user)) {
-                throw new ErrorException("鏈壘鍒拌璁插笀锛�" + i.getTrainingLecturerName());
+            // 鍖归厤璁插笀锛氱郴缁熷唴鍞竴鍖归厤鐨勫瓨鐢ㄦ埛ID锛涘鑱�/闈炵郴缁熻甯堟寜濮撳悕鏂囨湰淇濆瓨
+            if (StringUtils.isBlank(i.getTrainingLecturerName())) {
+                throw new ErrorException("鍩硅璁插笀涓嶈兘涓虹┖");
             }
-            personTrainingDetailed.setTrainingLecturerId(user.getId());
+            String lecturerName = i.getTrainingLecturerName().trim();
+            List<User> lecturers = userMapper.selectList(Wrappers.<User>lambdaQuery()
+                    .eq(User::getName, lecturerName));
+            if (lecturers.size() == 1) {
+                personTrainingDetailed.setTrainingLecturerId(lecturers.get(0).getId());
+                personTrainingDetailed.setTrainingLecturerName(null);
+            } else {
+                personTrainingDetailed.setTrainingLecturerId(null);
+                personTrainingDetailed.setTrainingLecturerName(lecturerName);
+            }
             personTrainingDetailed.setPlanId(planId);
             personTrainingDetailed.setState(3);
 
-            personTrainingDetailed.setTrainingDate(i.getTrainingDate());
+            personTrainingDetailed.setTrainingDate(normalizeTrainingDate(i.getTrainingDate()));
 
 
             personTrainingDetailedList.add(personTrainingDetailed);
@@ -68,6 +75,32 @@
         }
     }
 
+    /**
+     * 鍩硅鏃堕棿缁熶竴鎴� yyyy-MM-dd銆�
+     * Excel 閲岃鑷姩璇嗗埆鎴愭棩鏈熺殑鍗曞厓鏍艰鍑烘潵鏄� 2026/3/15锛屾墜宸ュ綍鍏ョ殑鏄� 2026-03-15锛�
+     * 杩欓噷缁熶竴杞崲锛岄伩鍏嶅鍑烘椂鏍煎紡涓嶄竴鑷淬��
+     */
+    private String normalizeTrainingDate(String value) {
+        if (value == null || value.isBlank()) {
+            return value;
+        }
+        String text = value.trim().split("\\s+")[0]
+                .replace('骞�', '-').replace('鏈�', '-').replace("鏃�", "")
+                .replace('/', '-').replace('.', '-');
+        String[] parts = text.split("-");
+        if (parts.length == 3) {
+            try {
+                int year = Integer.parseInt(parts[0].trim());
+                int month = Integer.parseInt(parts[1].trim());
+                int day = Integer.parseInt(parts[2].trim());
+                return String.format("%04d-%02d-%02d", year, month, day);
+            } catch (NumberFormatException ignored) {
+                // 涓嶆槸鍙瘑鍒殑鏃ユ湡鏍煎紡锛屽師鏍蜂繚瀛�
+            }
+        }
+        return value.trim();
+    }
+
     @Override
     public void deleteAnnualPlanDetailTable(String ids) {
         String[] split = ids.split(",");

--
Gitblit v1.9.3