From 3f20daf654f1cea7e8997926c23892a456c5612f Mon Sep 17 00:00:00 2001
From: tuqin <tuqin@local>
Date: 星期五, 06 十一月 2026 11:39:10 +0800
Subject: [PATCH] fix(hrm): 修复员工导入失败(日期格式 + 部门/岗位/角色不存在)

---
 yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/employee/HrmEmployeeServiceImpl.java |   32 ++++++++++++++++++++++++--------
 1 files changed, 24 insertions(+), 8 deletions(-)

diff --git a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/employee/HrmEmployeeServiceImpl.java b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/employee/HrmEmployeeServiceImpl.java
index d32b4c5..ba9413c 100644
--- a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/employee/HrmEmployeeServiceImpl.java
+++ b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/employee/HrmEmployeeServiceImpl.java
@@ -3,6 +3,7 @@
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONUtil;
+import lombok.extern.slf4j.Slf4j;
 import cn.iocoder.yudao.framework.common.exception.ServiceException;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
@@ -69,6 +70,7 @@
  */
 @Service
 @Validated
+@Slf4j
 public class HrmEmployeeServiceImpl implements HrmEmployeeService {
 
     @Resource
@@ -544,11 +546,18 @@
         if (StrUtil.isBlank(deptName)) {
             throw exception(EMPLOYEE_IMPORT_FIELD_REQUIRED, "閮ㄩ棬鍚嶇О");
         }
-        DeptRespDTO dept = deptMap.get(deptName.trim());
-        if (dept == null) {
-            throw exception(EMPLOYEE_DEPT_NAME_NOT_EXISTS, deptName.trim());
+        String trimmed = deptName.trim();
+        DeptRespDTO dept = deptMap.get(trimmed);
+        if (dept != null) {
+            return dept.getId();
         }
-        return dept.getId();
+        // 瀹㈡埛琛ㄦ牸閲岀殑閮ㄩ棬鍚嶅彲鑳藉皻鏈湪绯荤粺涓缓绔嬶紙濡傘�岀患鍚堣溅闂淬�嶏級锛�
+        // 閮ㄩ棬鏄憳宸ョ殑蹇呭~椤癸紝鐩存帴鎶ラ敊浼氳鏁存壒瀵煎叆鍏ㄩ儴澶辫触锛岃繖閲岃嚜鍔ㄨˉ寤哄埌鏍归儴闂ㄤ笅
+        Long deptId = deptApi.getOrCreateDeptByName(trimmed);
+        if (deptId == null) {
+            throw exception(EMPLOYEE_DEPT_NAME_NOT_EXISTS, trimmed);
+        }
+        return deptId;
     }
 
     private Set<Long> parsePostIds(String postNames, Map<String, PostRespDTO> postMap) {
@@ -562,10 +571,15 @@
                 continue;
             }
             PostRespDTO post = postMap.get(trimmed);
-            if (post == null) {
-                throw exception(EMPLOYEE_POST_NAME_NOT_EXISTS, trimmed);
+            if (post != null) {
+                postIds.add(post.getId());
+                continue;
             }
-            postIds.add(post.getId());
+            // 宀椾綅鏈缓绔嬫椂鑷姩琛ュ缓锛岄伩鍏嶆暣鎵瑰鍏ュけ璐�
+            Long postId = postApi.getOrCreatePostByName(trimmed);
+            if (postId != null) {
+                postIds.add(postId);
+            }
         }
         if (CollUtil.isEmpty(postIds)) {
             throw exception(EMPLOYEE_IMPORT_FIELD_REQUIRED, "宀椾綅鍚嶇О");
@@ -585,7 +599,9 @@
             }
             RoleRespDTO role = roleMap.get(trimmed);
             if (role == null) {
-                throw exception(EMPLOYEE_ROLE_NAME_NOT_EXISTS, trimmed);
+                // 瑙掕壊瀵瑰憳宸ュ鍏ユ槸鍙�夐」锛岃〃鏍奸噷濉簡绯荤粺娌℃湁鐨勮鑹插悕锛堝父瑙佹槸鎶婇儴闂ㄥ悕璇~鍒拌鑹插垪锛夋椂璺宠繃锛屼笉闃诲瀵煎叆
+                log.warn("[parseRoleIds][瑙掕壊({}) 涓嶅瓨鍦紝宸茶烦杩嘳", trimmed);
+                continue;
             }
             roleIds.add(role.getId());
         }

--
Gitblit v1.9.3