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="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_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="company_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',
'数量' => 'total',
'课程类型ID' => 'course_type_id',
'课程ID' => 'course_id',
'课程名称' => 'course_name',
'公司名字' => 'company_name',
'姓名' => 'name',

@ -416,7 +416,16 @@ class CourseSign extends SoftDeletesModel
if ($retList) {
return User::with('company')->whereIn('id', $courseSigns->pluck('user_id'))->get();
} 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);
$courseSignByType = $courseSignsQuery->get();
// 检测关键词
$companyNameKeyword = [
'元禾控股',
'元禾原点',
'元禾厚望',
'元禾重元',
'元禾璞华',
'元禾谷风',
'元禾绿柳',
'元禾辰坤',
'元禾沙湖',
'禾裕集团',
'苏州科服',
'信诚管理咨询',
'集成电路公司',
'常州团队',
'国器元禾'
];
$list = User::whereIn('id', $courseSignByType->pluck('user_id'))
->where(function ($query) use ($companyNameKeyword) {
foreach ($companyNameKeyword as $item) {
$query->orWhere('company_name', 'like', '%' . $item . '%');
// 从 config 表中获取公司名称关键词
$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'];
}
}
})->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) {
// 返回列表

@ -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