|
|
|
|
@ -933,24 +933,67 @@ class OtherController extends CommonController
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 'areas':
|
|
|
|
|
// 区域明细 - 导出course_signs_pass列表数据,附加区域信息
|
|
|
|
|
$courseSigns = CourseSign::area($start_date, $end_date, 1, $courses->pluck('id'), false);
|
|
|
|
|
// 加载关联关系
|
|
|
|
|
$courseSigns->load(['user.company', 'course']);
|
|
|
|
|
// 区域明细 - 使用与coursesHome统计逻辑一致的CourseSign::area方法
|
|
|
|
|
// 第一个sheet:普通学员区域明细
|
|
|
|
|
$courseSignList = CourseSign::getStudentList($start_date, $end_date, 1, $courses->pluck('id'));
|
|
|
|
|
|
|
|
|
|
// 从数据字典获取区域列表(与CourseSign::area逻辑一致)
|
|
|
|
|
$suzhouAreas = ParameterDetail::where('parameter_id', 5)
|
|
|
|
|
->where('status', 1)
|
|
|
|
|
->orderBy('sort', 'asc')
|
|
|
|
|
->pluck('value')
|
|
|
|
|
->toArray();
|
|
|
|
|
|
|
|
|
|
$areasData = [];
|
|
|
|
|
foreach ($suzhouAreas as $area) {
|
|
|
|
|
// 按照CourseSign::area的逻辑获取该区域下的CourseSign
|
|
|
|
|
if ($area === '高新区') {
|
|
|
|
|
$areaCourseSigns = (clone $courseSignList)->whereHas('user', function ($query) {
|
|
|
|
|
$query->whereHas('company', function ($query) {
|
|
|
|
|
$query->where('company_city', '苏州市')
|
|
|
|
|
->where(function ($q) {
|
|
|
|
|
$q->where('company_area', '高新区')
|
|
|
|
|
->orWhere('company_area', '虎丘区');
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
})->get();
|
|
|
|
|
} elseif ($area === '苏州市外') {
|
|
|
|
|
// 苏州市外:统计除了苏州之外的所有数据
|
|
|
|
|
$areaCourseSigns = (clone $courseSignList)->whereHas('user', function ($query) {
|
|
|
|
|
$query->whereHas('company', function ($query) {
|
|
|
|
|
$query->where('company_city', '!=', '苏州市');
|
|
|
|
|
});
|
|
|
|
|
})->get();
|
|
|
|
|
} else {
|
|
|
|
|
// 其他区域:正常统计
|
|
|
|
|
$areaCourseSigns = (clone $courseSignList)->whereHas('user', function ($query) use ($area) {
|
|
|
|
|
$query->whereHas('company', function ($query) use ($area) {
|
|
|
|
|
$query->where('company_city', '苏州市')
|
|
|
|
|
->where('company_area', 'like', '%' . $area . '%');
|
|
|
|
|
});
|
|
|
|
|
})->get();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
foreach ($courseSigns as $sign) {
|
|
|
|
|
$data[] = [
|
|
|
|
|
'company_name' => $sign->user->company->company_name ?? '',
|
|
|
|
|
'company_area' => $sign->user->company->company_area ?? '',
|
|
|
|
|
'company_city' => $sign->user->company->company_city ?? '',
|
|
|
|
|
'company_province' => $sign->user->company->company_province ?? '',
|
|
|
|
|
'user_name' => $sign->user->name ?? '',
|
|
|
|
|
'mobile' => $sign->user->mobile ?? '',
|
|
|
|
|
'course_name' => $sign->course->name ?? '',
|
|
|
|
|
// 'created_at' => $sign->created_at ? $sign->created_at->format('Y-m-d H:i:s') : '',
|
|
|
|
|
];
|
|
|
|
|
// 加载关联关系
|
|
|
|
|
$areaCourseSigns->load(['user.company', 'course']);
|
|
|
|
|
|
|
|
|
|
// 将该区域下的学员明细添加到导出数据
|
|
|
|
|
foreach ($areaCourseSigns as $sign) {
|
|
|
|
|
$areasData[] = [
|
|
|
|
|
'area' => $area,
|
|
|
|
|
'company_name' => $sign->user->company->company_name ?? '',
|
|
|
|
|
'company_area' => $sign->user->company->company_area ?? '',
|
|
|
|
|
'company_city' => $sign->user->company->company_city ?? '',
|
|
|
|
|
'company_province' => $sign->user->company->company_province ?? '',
|
|
|
|
|
'user_name' => $sign->user->name ?? '',
|
|
|
|
|
'mobile' => $sign->user->mobile ?? '',
|
|
|
|
|
'course_name' => $sign->course->name ?? '',
|
|
|
|
|
];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$fields = [
|
|
|
|
|
'area' => '区域',
|
|
|
|
|
'company_name' => '企业名称',
|
|
|
|
|
'company_area' => '公司区域',
|
|
|
|
|
'company_city' => '公司城市',
|
|
|
|
|
@ -958,9 +1001,75 @@ class OtherController extends CommonController
|
|
|
|
|
'user_name' => '学员姓名',
|
|
|
|
|
'mobile' => '手机号',
|
|
|
|
|
'course_name' => '课程名称',
|
|
|
|
|
// 'created_at' => '报名时间',
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
// 第二个sheet:校友区域明细 - 使用CourseSign::area方法,is_schoolmate=true
|
|
|
|
|
$courseSignListSchoolmate = CourseSign::getStudentList($start_date, $end_date, 1, $courses->pluck('id'));
|
|
|
|
|
// 添加校友筛选条件
|
|
|
|
|
$courseSignListSchoolmate->whereHas('user', function ($query) {
|
|
|
|
|
$query->where('is_schoolmate', 1);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
$areasSchoolmateData = [];
|
|
|
|
|
foreach ($suzhouAreas as $area) {
|
|
|
|
|
// 按照CourseSign::area的逻辑获取该区域下的CourseSign(校友)
|
|
|
|
|
if ($area === '高新区') {
|
|
|
|
|
$areaCourseSigns = (clone $courseSignListSchoolmate)->whereHas('user', function ($query) {
|
|
|
|
|
$query->whereHas('company', function ($query) {
|
|
|
|
|
$query->where('company_city', '苏州市')
|
|
|
|
|
->where(function ($q) {
|
|
|
|
|
$q->where('company_area', '高新区')
|
|
|
|
|
->orWhere('company_area', '虎丘区');
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
})->get();
|
|
|
|
|
} elseif ($area === '苏州市外') {
|
|
|
|
|
// 苏州市外:统计除了苏州之外的所有数据
|
|
|
|
|
$areaCourseSigns = (clone $courseSignListSchoolmate)->whereHas('user', function ($query) {
|
|
|
|
|
$query->whereHas('company', function ($query) {
|
|
|
|
|
$query->where('company_city', '!=', '苏州市');
|
|
|
|
|
});
|
|
|
|
|
})->get();
|
|
|
|
|
} else {
|
|
|
|
|
// 其他区域:正常统计
|
|
|
|
|
$areaCourseSigns = (clone $courseSignListSchoolmate)->whereHas('user', function ($query) use ($area) {
|
|
|
|
|
$query->whereHas('company', function ($query) use ($area) {
|
|
|
|
|
$query->where('company_city', '苏州市')
|
|
|
|
|
->where('company_area', 'like', '%' . $area . '%');
|
|
|
|
|
});
|
|
|
|
|
})->get();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 加载关联关系
|
|
|
|
|
$areaCourseSigns->load(['user.company', 'course']);
|
|
|
|
|
|
|
|
|
|
// 将该区域下的校友明细添加到导出数据
|
|
|
|
|
foreach ($areaCourseSigns as $sign) {
|
|
|
|
|
$areasSchoolmateData[] = [
|
|
|
|
|
'area' => $area,
|
|
|
|
|
'company_name' => $sign->user->company->company_name ?? '',
|
|
|
|
|
'company_area' => $sign->user->company->company_area ?? '',
|
|
|
|
|
'company_city' => $sign->user->company->company_city ?? '',
|
|
|
|
|
'company_province' => $sign->user->company->company_province ?? '',
|
|
|
|
|
'user_name' => $sign->user->name ?? '',
|
|
|
|
|
'mobile' => $sign->user->mobile ?? '',
|
|
|
|
|
'course_name' => $sign->course->name ?? '',
|
|
|
|
|
];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$sheets = [
|
|
|
|
|
new SheetExport($areasData, $fields, '区域明细'),
|
|
|
|
|
new SheetExport($areasSchoolmateData, $fields, '校友区域明细'),
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
$filename = '区域明细';
|
|
|
|
|
|
|
|
|
|
// 直接返回多 sheet 导出
|
|
|
|
|
return Excel::download(
|
|
|
|
|
new MultiSheetExport($sheets),
|
|
|
|
|
$filename . '_' . date('YmdHis') . '.xlsx'
|
|
|
|
|
);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 'company_market_total':
|
|
|
|
|
|