master
cody 3 months ago
parent f0034b7b7f
commit b2c0a2d387

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

Loading…
Cancel
Save