From bed114b5781c187dc8ca53958c90b9ed6030d37f Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Fri, 28 Nov 2025 17:11:58 +0800 Subject: [PATCH] update --- .../Controllers/Admin/OtherController.php | 6 +- app/Models/CourseSign.php | 72 ++++++++++--------- 2 files changed, 42 insertions(+), 36 deletions(-) diff --git a/app/Http/Controllers/Admin/OtherController.php b/app/Http/Controllers/Admin/OtherController.php index 3b44df9..47b3552 100755 --- a/app/Http/Controllers/Admin/OtherController.php +++ b/app/Http/Controllers/Admin/OtherController.php @@ -293,11 +293,11 @@ class OtherController extends CommonController $courseTypesSum[] = [ 'course_type' => $courseType->name, // 培养人数 - 'course_type_signs_pass' => CourseSign::courseSignsTotal($start_date, $end_date, 1, $courses2->pluck('id'), false, $courseType), + 'course_type_signs_pass' => CourseSign::courseSignsTotal($start_date, $end_date, 1, $courses2->pluck('id'), false, false), // 去重培养人数 - 'course_type_signs_pass_unique' => CourseSign::courseSignsTotalByUnique($start_date, $end_date, 1, $courses2->pluck('id'), false, $courseType), + 'course_type_signs_pass_unique' => CourseSign::courseSignsTotalByUnique($start_date, $end_date, 1, $courses2->pluck('id'), false, false), 'course_name' => $course->name, - 'course_signs_pass' => CourseSign::courseSignsTotal($start_date, $end_date, 1, [$course->id]), + 'course_signs_pass' => CourseSign::courseSignsTotal($start_date, $end_date, 1, [$course->id],false,false), // 跟班学员数量 'genban_total' => CourseSign::genban($start_date, $end_date, [$course->id]), // 被投企业数 diff --git a/app/Models/CourseSign.php b/app/Models/CourseSign.php index 9376afe..67cba4e 100755 --- a/app/Models/CourseSign.php +++ b/app/Models/CourseSign.php @@ -100,7 +100,7 @@ class CourseSign extends SoftDeletesModel /** * 指定时间内的报名信息(未去重) */ - public static function courseSignsTotal($start_date, $end_date, $status = null, $course_ids = null, $retList = false, $courseType = null) + public static function courseSignsTotal($start_date, $end_date, $status = null, $course_ids = null, $retList = false, $needHistory = true) { $totalQuery = self::getStudentList($start_date, $end_date, $status, $course_ids); if ($retList) { @@ -110,21 +110,24 @@ class CourseSign extends SoftDeletesModel // 基础数据 $baseTotal = $totalQuery->count(); // 历史数据 - $historyTotal = HistoryCourse::whereHas('calendar', function ($query) { - $query->where('is_count_people', 1); - })->whereHas('typeDetail', function ($query) { - $query->where('is_history', 1); - })->where(function ($query) use ($start_date, $end_date) { - // 开始结束日期的筛选。or查询 - $query->whereBetween('start_time', [$start_date, $end_date]) - ->orWhereBetween('end_time', [$start_date, $end_date]); - })->where(function ($query) use ($courseType) { - $course_type_id = $courseType ?? request('course_type_id'); - if ($course_type_id) { - $course_type_id = explode(',', $course_type_id); - $query->whereIn('type', $course_type_id); - } - })->sum('course_type_signs_pass'); + $historyTotal = 0; + if ($needHistory) { + $historyTotal = HistoryCourse::whereHas('calendar', function ($query) { + $query->where('is_count_people', 1); + })->whereHas('typeDetail', function ($query) { + $query->where('is_history', 1); + })->where(function ($query) use ($start_date, $end_date) { + // 开始结束日期的筛选。or查询 + $query->whereBetween('start_time', [$start_date, $end_date]) + ->orWhereBetween('end_time', [$start_date, $end_date]); + })->where(function ($query) { + $course_type_id = request('course_type_id'); + if ($course_type_id) { + $course_type_id = explode(',', $course_type_id); + $query->whereIn('type', $course_type_id); + } + })->sum('course_type_signs_pass'); + } // 返回统计数据 return $historyTotal + $baseTotal; } @@ -133,7 +136,7 @@ class CourseSign extends SoftDeletesModel /** * 指定时间内的报名信息(去重) */ - public static function courseSignsTotalByUnique($start_date, $end_date, $status = null, $course_ids = null, $retList = false, $courseType = null) + public static function courseSignsTotalByUnique($start_date, $end_date, $status = null, $course_ids = null, $retList = false, $needHistory = true) { $totalQuery = self::getStudentList($start_date, $end_date, $status, $course_ids); $user = User::whereIn('id', $totalQuery->get()->pluck('user_id'))->groupBy('mobile')->get(); @@ -142,22 +145,25 @@ class CourseSign extends SoftDeletesModel return $user; } else { $baseTotal = $user->count(); - // 历史数据 - $historyTotal = HistoryCourse::whereHas('calendar', function ($query) use ($courseType) { - $query->where('is_count_people', 1); - })->whereHas('typeDetail', function ($query) { - $query->where('is_history', 1); - })->where(function ($query) use ($start_date, $end_date) { - // 开始结束日期的筛选。or查询 - $query->whereBetween('start_time', [$start_date, $end_date]) - ->orWhereBetween('end_time', [$start_date, $end_date]); - })->where(function ($query) use ($courseType) { - $course_type_id = $courseType ?? request('course_type_id'); - if ($course_type_id) { - $course_type_id = explode(',', $course_type_id); - $query->whereIn('type', $course_type_id); - } - })->sum('course_type_signs_pass_unique'); + $historyTotal = 0; + if ($needHistory) { + // 历史数据 + $historyTotal = HistoryCourse::whereHas('calendar', function ($query) { + $query->where('is_count_people', 1); + })->whereHas('typeDetail', function ($query) { + $query->where('is_history', 1); + })->where(function ($query) use ($start_date, $end_date) { + // 开始结束日期的筛选。or查询 + $query->whereBetween('start_time', [$start_date, $end_date]) + ->orWhereBetween('end_time', [$start_date, $end_date]); + })->where(function ($query) { + $course_type_id = request('course_type_id'); + if ($course_type_id) { + $course_type_id = explode(',', $course_type_id); + $query->whereIn('type', $course_type_id); + } + })->sum('course_type_signs_pass_unique'); + } // 统计数据 return $baseTotal + $historyTotal; }