master
cody 3 months ago
parent bb403e6f5d
commit c888a9ad58

@ -157,6 +157,7 @@ class EmployeeParticipationController extends BaseController
* @OA\Parameter(name="end_date", in="query", @OA\Schema(type="string", format="date"), required=false, description="结束日期"), * @OA\Parameter(name="end_date", in="query", @OA\Schema(type="string", format="date"), required=false, description="结束日期"),
* @OA\Parameter(name="total", in="query", @OA\Schema(type="integer", format="int64"), required=false, description="数量"), * @OA\Parameter(name="total", in="query", @OA\Schema(type="integer", format="int64"), required=false, description="数量"),
* @OA\Parameter(name="course_type_id", in="query", @OA\Schema(type="integer", format="int64"), required=false, description="课程类型ID"), * @OA\Parameter(name="course_type_id", in="query", @OA\Schema(type="integer", format="int64"), required=false, description="课程类型ID"),
* @OA\Parameter(name="course_id", in="query", @OA\Schema(type="integer", format="int64"), required=false, description="课程ID"),
* @OA\Parameter(name="course_name", in="query", @OA\Schema(type="string", nullable=true), description="课程名称"), * @OA\Parameter(name="course_name", in="query", @OA\Schema(type="string", nullable=true), description="课程名称"),
* @OA\Parameter(name="company_name", in="query", @OA\Schema(type="string", nullable=true), description="公司名字"), * @OA\Parameter(name="company_name", in="query", @OA\Schema(type="string", nullable=true), description="公司名字"),
* @OA\Parameter(name="name", in="query", @OA\Schema(type="string", nullable=true), description="姓名"), * @OA\Parameter(name="name", in="query", @OA\Schema(type="string", nullable=true), description="姓名"),
@ -251,6 +252,7 @@ class EmployeeParticipationController extends BaseController
'结束日期' => 'end_date', '结束日期' => 'end_date',
'数量' => 'total', '数量' => 'total',
'课程类型ID' => 'course_type_id', '课程类型ID' => 'course_type_id',
'课程ID' => 'course_id',
'课程名称' => 'course_name', '课程名称' => 'course_name',
'公司名字' => 'company_name', '公司名字' => 'company_name',
'姓名' => 'name', '姓名' => 'name',

@ -416,7 +416,16 @@ class CourseSign extends SoftDeletesModel
if ($retList) { if ($retList) {
return User::with('company')->whereIn('id', $courseSigns->pluck('user_id'))->get(); return User::with('company')->whereIn('id', $courseSigns->pluck('user_id'))->get();
} else { } else {
return User::whereIn('id', $courseSigns->pluck('user_id'))->count(); $baseCount = User::whereIn('id', $courseSigns->pluck('user_id'))->count();
// 额外数据:从 TraineeStudent 模型中统计
$traineeStudentTotal = TraineeStudent::where(function ($query) use ($start_date, $end_date) {
// 开始结束日期的筛选。or查询
if ($start_date && $end_date) {
$query->whereBetween('start_date', [$start_date, $end_date])
->orWhereBetween('end_date', [$start_date, $end_date]);
}
})->sum('total');
return $baseCount + $traineeStudentTotal;
} }
} }
@ -601,30 +610,37 @@ class CourseSign extends SoftDeletesModel
$courseSignsQuery = self::getStudentList($start_date, $end_date, null, $course_ids); $courseSignsQuery = self::getStudentList($start_date, $end_date, null, $course_ids);
$courseSignByType = $courseSignsQuery->get(); $courseSignByType = $courseSignsQuery->get();
// 检测关键词 // 从 config 表中获取公司名称关键词
$companyNameKeyword = [ $companyNameKeyword = [];
'元禾控股', $configValue = Config::getValueByKey('yuanhe_company');
'元禾原点', if ($configValue) {
'元禾厚望', $configData = json_decode($configValue, true);
'元禾重元', if (is_array($configData)) {
'元禾璞华', foreach ($configData as $item) {
'元禾谷风', // 提取 company_name 和 short_company_name过滤空值
'元禾绿柳', if (!empty($item['company_name'])) {
'元禾辰坤', $companyNameKeyword[] = $item['company_name'];
'元禾沙湖', }
'禾裕集团', if (!empty($item['short_company_name'])) {
'苏州科服', $companyNameKeyword[] = $item['short_company_name'];
'信诚管理咨询', }
'集成电路公司',
'常州团队',
'国器元禾'
];
$list = User::whereIn('id', $courseSignByType->pluck('user_id'))
->where(function ($query) use ($companyNameKeyword) {
foreach ($companyNameKeyword as $item) {
$query->orWhere('company_name', 'like', '%' . $item . '%');
} }
})->get(); // 去重关键词并重新索引
$companyNameKeyword = array_values(array_unique($companyNameKeyword));
}
}
// 如果 config 中没有数据,使用空数组(避免 SQL 错误)
if (empty($companyNameKeyword)) {
$list = collect([]);
} else {
$list = User::whereIn('id', $courseSignByType->pluck('user_id'))
->where(function ($query) use ($companyNameKeyword) {
foreach ($companyNameKeyword as $item) {
$query->orWhere('company_name', 'like', '%' . $item . '%');
}
})->get();
}
if ($retList) { if ($retList) {
// 返回列表 // 返回列表

@ -0,0 +1,31 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('employee_participations', function (Blueprint $table) {
$table->integer('course_id')->nullable()->comment('课程ID')->after('course_type_id');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('employee_participations', function (Blueprint $table) {
$table->dropColumn('course_id');
});
}
};
Loading…
Cancel
Save