lion 3 months ago
commit 5f3529fc55

@ -118,9 +118,6 @@ class OtherController extends CommonController
*/
public function coursesHome()
{
// 启用查询日志记录
DB::enableQueryLog();
$start_date = request('start_date', '2020-01-01');
$end_date = request('end_date', date('Y-m-d'));
$course_type_id = request('course_type_id', '');
@ -137,23 +134,11 @@ class OtherController extends CommonController
->whereIn('type', $course_type_id)
->get();
// 报名人数
$list['course_signs_total'] = CourseSign::whereDate('created_at', '>=', $start_date)
->whereDate('created_at', '<=', $end_date)
->whereNotIn('status', [4, 5])
->where(function ($query) use ($courses) {
$query->whereIn('course_id', $courses->pluck('id'));
})->count();
$list['course_signs_total'] = CourseSign::courseSignsTotal($start_date, $end_date);
// 审核通过人数
$courseSign = CourseSign::where('status', 1)
->whereDate('created_at', '>=', $start_date)
->whereDate('created_at', '<=', $end_date)
->whereNotIn('status', [4, 5])
->where(function ($query) use ($courses) {
$query->whereIn('course_id', $courses->pluck('id'));
})->get();
$list['course_signs_pass'] = $courseSign->count();
$list['course_signs_pass'] = CourseSign::courseSignsTotal($start_date, $end_date, 1);
// 审核通过人数去重
$list['course_signs_pass_unique'] = User::whereIn('id', $courseSign->pluck('user_id'))->distinct('mobile')->count();
$list['course_signs_pass_unique'] = CourseSign::courseSignsTotalByUnique($start_date, $end_date, 1);
// 开课场次
$calendar = Calendar::whereIn('course_id', $courses->pluck('id'))->whereBetween('date', [$start_date, $end_date])->get();
$list['course_total'] = $calendar->count();
@ -163,8 +148,6 @@ class OtherController extends CommonController
$end = Carbon::parse($course->end_time);
return $end->diffInDays($start) + 1; // 包含起始和结束日期
});
// 返回所有sql语句
$sql = DB::getQueryLog();
// 课程分类明细统计
$courseTypesSum = [];
$courseTypes = CourseType::whereIn('id', $course_type_id)->get();
@ -174,27 +157,15 @@ class OtherController extends CommonController
->where('start_date', '<=', $end_date)
->where('type', $courseType->id)
->get();
$courseSignByType = CourseSign::where('status', 1)
->whereIn('course_id', $courses2->pluck('id'))
->whereNotIn('status', [4, 5])
->whereDate('created_at', '>=', $start_date)
->whereDate('created_at', '<=', $end_date)
->get();
// 培养人数
$courseTypeSignsPass = $courseSignByType->count();
// 去重培养人数
$courseTypeSignsPassUnique = User::whereIn('id', $courseSignByType->pluck('user_id'))->distinct('mobile')->count();
foreach ($courses2 as $course) {
$courseTypesSum[] = [
'course_type' => $courseType->name,
'course_type_signs_pass' => $courseTypeSignsPass,
'course_type_signs_pass_unique' => $courseTypeSignsPassUnique,
// 培养人数
'course_type_signs_pass' => CourseSign::courseSignsTotal($start_date, $end_date, 1, $courses2->pluck('id')->toArray()),
// 去重培养人数
'course_type_signs_pass_unique' => CourseSign::courseSignsTotalByUnique($start_date, $end_date, 1, $courses2->pluck('id')->toArray()),
'course_name' => $course->name,
'course_signs_pass' => CourseSign::where('status', 1)
->where('course_id', $course->id)
->whereDate('created_at', '>=', $start_date)
->whereDate('created_at', '<=', $end_date)
->count()
'course_signs_pass' => CourseSign::courseSignsTotal($start_date, $end_date, 1, [$course->id]),
];
}
@ -211,7 +182,7 @@ class OtherController extends CommonController
$area->course_signs_pass = $courseSignByArea->count();
$area->course_signs_pass_unique = User::whereIn('id', $courseSignByArea->pluck('user_id'))->distinct('mobile')->count();
}
return $this->success(compact('list', 'courseTypesSum', 'areas', 'sql'));
return $this->success(compact('list', 'courseTypesSum', 'areas'));
}
/**

@ -191,6 +191,9 @@ class UserController extends BaseController
{
$all = request()->all();
$year = request('year', date('Y'));
$start_date = $year . '-01-01';
$end_date = $year . '-12-31';
$list = $this->model->with('appointments', 'companyIndustryDetail',
'companyPositionDetail', 'companyAreaDetail')
->with(['courseSigns' => function ($query) {
@ -328,22 +331,14 @@ class UserController extends BaseController
$list = $list->limit(5000)->get()->toArray();
return Excel::download(new CommonExport($list, $all['export_fields'] ?? ''), $all['file_name'] ?? '' . date('YmdHis') . '.xlsx');
} else {
$total = $this->model->whereHas('courseSigns')->count();
$year_total = $this->model->whereHas('courseSigns', function ($query) use ($year) {
$query->whereHas('course', function ($q) use ($year) {
$q->where('year', $year);
});
})->count();
// 累计总数
$total = CourseSign::courseSignsTotalByUnique('2020-01-01', date('Y-m-d'));
// 报名人数
$year_total = CourseSign::courseSignsTotalByUnique($start_date, $end_date);
// 年度培养学员
$year_training_total = $this->model->whereHas('courseSigns', function ($query) use ($year) {
$query->where('status', 1)->whereHas('course', function ($q) use ($year) {
$q->where('year', $year);
});
})->count();
$year_training_total = CourseSign::courseSignsTotalByUnique($start_date, $end_date, 1);
// 累计培养学员
$training_total = $this->model->whereHas('courseSigns', function ($query) use ($year) {
$query->where('status', 1);
})->count();
$training_total = CourseSign::courseSignsTotalByUnique('2020-01-01', date('Y-m-d'), 1);
$list = $list->paginate($all['page_size'] ?? 20);
}
return $this->success(['list' => $list, 'year_total' => $year_total, 'total' => $total, 'year_training_total' => $year_training_total, 'training_total' => $training_total]);

@ -71,5 +71,44 @@ class CourseSign extends SoftDeletesModel
return $this->hasMany(ThirdAppointmentLog::class, 'course_sign_id', 'id');
}
/**
* 指定时间内的报名信息(未去重)
*/
public static function courseSignsTotal($start_date, $end_date, $status = null, $course_ids = null)
{
$total = CourseSign::whereDate('created_at', '>=', $start_date)
->whereDate('created_at', '<=', $end_date)
->where(function ($query) use ($status, $course_ids) {
if (isset($status)) {
$query->where('status', $status);
}
if (isset($course_ids)) {
$query->whereIn('course_id', $course_ids);
}
})->whereNotIn('status', [4, 5])
->count();
return $total;
}
/**
* 指定时间内的报名信息(去重)
*/
public static function courseSignsTotalByUnique($start_date, $end_date, $status = null, $course_ids = null)
{
$courseSignByType = CourseSign::whereDate('created_at', '>=', $start_date)
->whereDate('created_at', '<=', $end_date)
->where(function ($query) use ($status, $course_ids) {
if (isset($status)) {
$query->where('status', $status);
}
if (isset($course_ids)) {
$query->whereIn('course_id', $course_ids);
}
})->whereNotIn('status', [4, 5])
->get();
return User::whereIn('id', $courseSignByType->pluck('user_id'))->distinct('mobile')->count();
}
}

Loading…
Cancel
Save