diff --git a/app/Console/Commands/UpdateUserTalentTags.php b/app/Console/Commands/UpdateUserTalentTags.php index 0942c98..d34fdff 100644 --- a/app/Console/Commands/UpdateUserTalentTags.php +++ b/app/Console/Commands/UpdateUserTalentTags.php @@ -70,22 +70,30 @@ class UpdateUserTalentTags extends Command $rowNum = $index + 2; // Excel行号(从第2行开始,第1行是表头) // 获取必要字段 - $courseName = trim($row['课程名称'] ?? ''); + $courseNameRaw = trim($row['课程名称'] ?? ''); $userName = trim($row['姓名'] ?? ''); $talentTag = trim($row['人才标签'] ?? ''); // 跳过空行 - if (empty($courseName) && empty($userName)) { + if (empty($courseNameRaw) && empty($userName)) { continue; } // 验证必要字段 - if (empty($courseName)) { + if (empty($courseNameRaw)) { $this->warn("第 {$rowNum} 行: 课程名称为空,跳过"); $skippedCount++; continue; } + // 提取第一个课程名称(可能包含多个课程,用换行符、顿号、逗号等分隔) + $courseName = $this->extractFirstCourseName($courseNameRaw); + + // 如果提取的课程名称与原始不同,记录日志 + if ($courseName !== $courseNameRaw) { + $this->info("第 {$rowNum} 行: 检测到多个课程名称,使用第一个: '{$courseName}'"); + } + if (empty($userName)) { $this->warn("第 {$rowNum} 行: 姓名为空,跳过"); $skippedCount++; @@ -102,7 +110,7 @@ class UpdateUserTalentTags extends Command $course = Course::where('name', $courseName)->first(); if (!$course) { - $this->warn("第 {$rowNum} 行: 未找到课程 '{$courseName}',跳过"); + $this->warn("第 {$rowNum} 行: 未找到课程 '{$courseName}'(原始值: '{$courseNameRaw}'),跳过"); $notFoundCount++; continue; } @@ -244,4 +252,34 @@ class UpdateUserTalentTags extends Command throw $e; } } + + /** + * 从可能包含多个课程名称的字符串中提取第一个课程名称 + * + * @param string $courseNameRaw 原始课程名称字符串 + * @return string 第一个课程名称 + */ + protected function extractFirstCourseName($courseNameRaw) + { + // 先按换行符分割(\n, \r\n, \r) + $parts = preg_split('/[\r\n]+/', $courseNameRaw); + + // 如果只有一个部分,尝试按顿号、逗号等分割 + if (count($parts) === 1 || (count($parts) === 1 && empty(trim($parts[0])))) { + $parts = preg_split('/[、,,]+/', $courseNameRaw); + } + + // 取第一个非空部分 + foreach ($parts as $part) { + $part = trim($part); + // 去除末尾可能的标点符号(顿号、逗号等) + $part = rtrim($part, '、,,'); + if (!empty($part)) { + return $part; + } + } + + // 如果所有部分都为空,返回原始值 + return trim($courseNameRaw); + } } diff --git a/科技商学院学员信息-匹配人才标签_匹配是否.xlsx b/科技商学院学员信息-匹配人才标签_匹配是否.xlsx index 440416e..103a04b 100644 Binary files a/科技商学院学员信息-匹配人才标签_匹配是否.xlsx and b/科技商学院学员信息-匹配人才标签_匹配是否.xlsx differ