|
|
|
|
@ -695,16 +695,62 @@ class CourseSign extends SoftDeletesModel
|
|
|
|
|
public static function toubuqiye($start_date = null, $end_date = null, $course_ids = null, $retList = false)
|
|
|
|
|
{
|
|
|
|
|
$courseSignsQuery = self::getStudentList($start_date, $end_date, 1, $course_ids);
|
|
|
|
|
$courseSignByType = $courseSignsQuery->get();
|
|
|
|
|
$list = Company::approvedStudents()->whereHas('users', function ($query) use ($courseSignByType) {
|
|
|
|
|
$query->whereIn('id', $courseSignByType->pluck('user_id'));
|
|
|
|
|
})->where('company_tag', 'like', '%' . '高新技术企业' . '%')->get();
|
|
|
|
|
$courseSigns = $courseSignsQuery->with(['user.company'])->get();
|
|
|
|
|
|
|
|
|
|
// 获取所有高新技术企业的公司ID
|
|
|
|
|
$companyIds = $courseSigns->pluck('user.company.id')
|
|
|
|
|
->filter()
|
|
|
|
|
->unique()
|
|
|
|
|
->toArray();
|
|
|
|
|
|
|
|
|
|
// 获取这些公司中标记为高新技术企业的公司
|
|
|
|
|
$companies = Company::approvedStudents()->whereIn('id', $companyIds)
|
|
|
|
|
->where('company_tag', 'like', '%' . '高新技术企业' . '%')
|
|
|
|
|
->get()
|
|
|
|
|
->keyBy('id');
|
|
|
|
|
|
|
|
|
|
// 筛选苏州地区的公司
|
|
|
|
|
$suzhouCompanyIds = [];
|
|
|
|
|
foreach ($courseSigns as $courseSign) {
|
|
|
|
|
if (!$courseSign->user || !$courseSign->user->company) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$companyId = $courseSign->user->company->id;
|
|
|
|
|
// 只处理高新技术企业的记录
|
|
|
|
|
if (!isset($companies[$companyId])) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$user = $courseSign->user;
|
|
|
|
|
$company = $user->company;
|
|
|
|
|
|
|
|
|
|
// 判断是否为苏州地区:user表的company_address包含"苏州",或关联公司的company_address包含"苏州",或company_city包含"苏州"
|
|
|
|
|
$isSuzhou = false;
|
|
|
|
|
if ($user->company_address && strpos($user->company_address, '苏州') !== false) {
|
|
|
|
|
$isSuzhou = true;
|
|
|
|
|
} elseif ($company->company_address && strpos($company->company_address, '苏州') !== false) {
|
|
|
|
|
$isSuzhou = true;
|
|
|
|
|
} elseif ($company->company_city && strpos($company->company_city, '苏州') !== false) {
|
|
|
|
|
$isSuzhou = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($isSuzhou) {
|
|
|
|
|
$suzhouCompanyIds[$companyId] = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 只保留苏州地区的高新技术企业
|
|
|
|
|
$suzhouCompanies = $companies->filter(function ($company) use ($suzhouCompanyIds) {
|
|
|
|
|
return isset($suzhouCompanyIds[$company->id]);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if ($retList) {
|
|
|
|
|
// 返回列表
|
|
|
|
|
return $list;
|
|
|
|
|
return $suzhouCompanies->values();
|
|
|
|
|
} else {
|
|
|
|
|
// 返回统计数据
|
|
|
|
|
return $list->count();
|
|
|
|
|
return count($suzhouCompanyIds);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -720,10 +766,10 @@ class CourseSign extends SoftDeletesModel
|
|
|
|
|
$query->whereHas('typeDetail', function ($q) {
|
|
|
|
|
$q->where('name', '人才培训');
|
|
|
|
|
});
|
|
|
|
|
})->get();
|
|
|
|
|
})->with(['user.company'])->get();
|
|
|
|
|
|
|
|
|
|
// 条件2:data 字段中 name="个人荣誉" 且 value != "其他" 的用户
|
|
|
|
|
$courseSigns2 = $courseSignsQuery->get()->filter(function ($courseSign) {
|
|
|
|
|
$courseSigns2 = $courseSignsQuery->with(['user.company'])->get()->filter(function ($courseSign) {
|
|
|
|
|
if (empty($courseSign->data) || !is_array($courseSign->data)) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
@ -743,10 +789,46 @@ class CourseSign extends SoftDeletesModel
|
|
|
|
|
->unique()
|
|
|
|
|
->filter();
|
|
|
|
|
|
|
|
|
|
// 筛选苏州地区的用户
|
|
|
|
|
$suzhouUserIds = [];
|
|
|
|
|
$allCourseSigns = $courseSigns1->merge($courseSigns2);
|
|
|
|
|
|
|
|
|
|
foreach ($allCourseSigns as $courseSign) {
|
|
|
|
|
if (!$courseSign->user) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$userId = $courseSign->user->id;
|
|
|
|
|
// 只处理符合条件的用户
|
|
|
|
|
if (!in_array($userId, $allUserIds->toArray())) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$user = $courseSign->user;
|
|
|
|
|
$company = $user->company;
|
|
|
|
|
|
|
|
|
|
// 判断是否为苏州地区:user表的company_address包含"苏州",或关联公司的company_address包含"苏州",或company_city包含"苏州"
|
|
|
|
|
$isSuzhou = false;
|
|
|
|
|
if ($user->company_address && strpos($user->company_address, '苏州') !== false) {
|
|
|
|
|
$isSuzhou = true;
|
|
|
|
|
} elseif ($company && $company->company_address && strpos($company->company_address, '苏州') !== false) {
|
|
|
|
|
$isSuzhou = true;
|
|
|
|
|
} elseif ($company && $company->company_city && strpos($company->company_city, '苏州') !== false) {
|
|
|
|
|
$isSuzhou = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($isSuzhou) {
|
|
|
|
|
$suzhouUserIds[$userId] = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 只保留苏州地区的用户ID
|
|
|
|
|
$suzhouUserIds = array_keys($suzhouUserIds);
|
|
|
|
|
|
|
|
|
|
if ($retList) {
|
|
|
|
|
return User::whereIn('id', $allUserIds)->get();
|
|
|
|
|
return User::whereIn('id', $suzhouUserIds)->get();
|
|
|
|
|
} else {
|
|
|
|
|
return $allUserIds->count();
|
|
|
|
|
return count($suzhouUserIds);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|