diff --git a/app/Http/Controllers/Admin/HistoryCourseController.php b/app/Http/Controllers/Admin/HistoryCourseController.php index f038f49..68d848a 100644 --- a/app/Http/Controllers/Admin/HistoryCourseController.php +++ b/app/Http/Controllers/Admin/HistoryCourseController.php @@ -162,7 +162,7 @@ class HistoryCourseController extends BaseController * summary="保存", * description="", * @OA\Parameter(name="id", in="query", @OA\Schema(type="int"), required=false, description="Id(存在更新,不存在新增)"), - * @OA\Parameter(name="course_type", in="query", @OA\Schema(type="string"), required=true, description="课程体系名称"), + * @OA\Parameter(name="type", in="query", @OA\Schema(type="string"), required=true, description="课程体系id"), * @OA\Parameter(name="course_type_signs_pass", in="query", @OA\Schema(type="integer", format="int64"), required=false, description="培养人数未去重"), * @OA\Parameter(name="course_type_signs_pass_unique", in="query", @OA\Schema(type="integer", format="int64"), required=false, description="培养人数去重"), * @OA\Parameter(name="course_signs_pass", in="query", @OA\Schema(type="integer", format="int64"), required=false, description="课程培养人数"), diff --git a/app/Http/Controllers/Admin/OtherController.php b/app/Http/Controllers/Admin/OtherController.php index 57985de..26f117e 100755 --- a/app/Http/Controllers/Admin/OtherController.php +++ b/app/Http/Controllers/Admin/OtherController.php @@ -15,6 +15,7 @@ use App\Models\CourseSign; use App\Models\CourseType; use App\Models\CustomFormField; use App\Models\Department; +use App\Models\HistoryCourse; use App\Models\ParameterDetail; use App\Models\SupplyDemand; use App\Models\TimeEvent; @@ -271,6 +272,24 @@ class OtherController extends CommonController ]; } } + // 附加历史课程数据 + $historyCourses = HistoryCourse::where(function ($query) use ($start_date, $end_date) { + // 开始结束日期的筛选。or查询 + $query->whereBetween('start_date', [$start_date, $end_date]) + ->orWhereBetween('end_date', [$start_date, $end_date]); + })->get(); + foreach ($historyCourses as $historyCourse) { + $courseTypesSum[] = [ + 'course_type' => $historyCourse->course_type, + // 培养人数 + 'course_type_signs_pass' => $historyCourse->course_type_signs_pass, + // 去重培养人数 + 'course_type_signs_pass_unique' => $historyCourse->course_type_signs_pass_unique, + 'course_name' => $historyCourse->course_name, + 'course_signs_pass' => $historyCourse->course_signs_pass, + ]; + } + // 区域明细统计 $areas = CourseSign::area($start_date, $end_date, 1, $courses->pluck('id'), true); return $this->success(compact('list', 'courseTypesSum', 'areas')); diff --git a/app/Models/CourseSign.php b/app/Models/CourseSign.php index eb0d8ec..d7244bd 100755 --- a/app/Models/CourseSign.php +++ b/app/Models/CourseSign.php @@ -105,8 +105,16 @@ class CourseSign extends SoftDeletesModel // 返回列表 return $total->get(); } else { + // 基础数据 + $baseTotal = $total->count(); + // 历史数据 + $historyTotal = HistoryCourse::where(function ($query) use ($start_date, $end_date) { + // 开始结束日期的筛选。or查询 + $query->whereBetween('start_date', [$start_date, $end_date]) + ->orWhereBetween('end_date', [$start_date, $end_date]); + })->where('type', request('course_type_id'))->sum('course_signs_total'); // 返回统计数据 - return $total->count(); + return $historyTotal + $baseTotal; } } @@ -141,8 +149,15 @@ class CourseSign extends SoftDeletesModel // 列表 return $user; } else { + $baseTotal = $user->count(); + // 历史数据 + $historyTotal = HistoryCourse::where(function ($query) use ($start_date, $end_date) { + // 开始结束日期的筛选。or查询 + $query->whereBetween('start_date', [$start_date, $end_date]) + ->orWhereBetween('end_date', [$start_date, $end_date]); + })->where('type', request('course_type_id'))->sum('course_type_signs_pass_unique'); // 统计数据 - return $user->count(); + return $baseTotal + $historyTotal; } } @@ -164,7 +179,14 @@ class CourseSign extends SoftDeletesModel return $list; } else { // 返回统计数据 - return $list->count(); + $baseTotal = $list->count(); + // 历史数据 + $historyTotal = HistoryCourse::where(function ($query) use ($start_date, $end_date) { + // 开始结束日期的筛选。or查询 + $query->whereBetween('start_date', [$start_date, $end_date]) + ->orWhereBetween('end_date', [$start_date, $end_date]); + })->where('type', request('course_type_id'))->sum('course_type_signs_pass_unique'); + return $baseTotal + $historyTotal; } } diff --git a/database/migrations/2025_11_24_105100_create_history_courses_table.php b/database/migrations/2025_11_24_105100_create_history_courses_table.php index 3cebe22..2cacc5c 100644 --- a/database/migrations/2025_11_24_105100_create_history_courses_table.php +++ b/database/migrations/2025_11_24_105100_create_history_courses_table.php @@ -14,7 +14,7 @@ return new class extends Migration { { Schema::create('history_courses', function (Blueprint $table) { $table->id(); - $table->string('course_type')->comment('课程体系名称'); + $table->string('type')->comment('课程体系ID'); $table->integer('course_type_signs_pass')->default(0)->comment('培养人数未去重'); $table->integer('course_type_signs_pass_unique')->default(0)->comment('培养人数去重'); $table->integer('course_signs_pass')->default(0)->comment('课程培养人数'); diff --git a/database/migrations/2025_11_24_115101_alert_course_types_table.php b/database/migrations/2025_11_24_115101_alert_course_types_table.php new file mode 100644 index 0000000..f12da01 --- /dev/null +++ b/database/migrations/2025_11_24_115101_alert_course_types_table.php @@ -0,0 +1,32 @@ +boolean('is_history')->default(false)->comment('是否历史课程0否1是'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('course_types', function (Blueprint $table) { + // + }); + } +};