master
cody 3 months ago
parent 39c8a6a053
commit c485a785c4

@ -337,9 +337,9 @@ class OtherController extends CommonController
$list['company_ganbu_total'] = CourseSign::ganbu($start_date, $end_date, $course_ids);
// 苏州头部企业
$list['cover_head_total'] = CourseSign::toubuqiye($start_date, $end_date, $course_ids);
// 高层次人才
// 苏州高层次人才
$list['cover_rencai_total'] = CourseSign::rencai($start_date, $end_date, $course_ids);
// 重点上市公司
// 苏州重点上市公司
$list['cover_stock_total'] = CourseSign::shangshi($start_date, $end_date, $course_ids);

@ -684,6 +684,27 @@ class CourseSign extends SoftDeletesModel
}
}
/**
* 判断是否为苏州地区
* @param \App\Models\User|null $user 用户对象
* @param \App\Models\Company|null $company 公司对象
* @return bool
*/
public static function isSuzhou($user = null, $company = null)
{
// 判断是否为苏州地区user表的company_address包含"苏州"或关联公司的company_address包含"苏州"或company_city包含"苏州"
if ($user && $user->company_address && strpos($user->company_address, '苏州') !== false) {
return true;
}
if ($company && $company->company_address && strpos($company->company_address, '苏州') !== false) {
return true;
}
if ($company && $company->company_city && strpos($company->company_city, '苏州') !== false) {
return true;
}
return false;
}
/**
* 头部企业(统计或列表)
* @param string $start_date 开始日期
@ -725,17 +746,8 @@ class CourseSign extends SoftDeletesModel
$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) {
// 使用通用方法判断是否为苏州地区
if (self::isSuzhou($user, $company)) {
$suzhouCompanyIds[$companyId] = true;
}
}
@ -807,17 +819,8 @@ class CourseSign extends SoftDeletesModel
$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) {
// 使用通用方法判断是否为苏州地区
if (self::isSuzhou($user, $company)) {
$suzhouUserIds[$userId] = true;
}
}
@ -857,6 +860,33 @@ class CourseSign extends SoftDeletesModel
->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;
// 使用通用方法判断是否为苏州地区
if (self::isSuzhou($user, $company)) {
$suzhouCompanyIds[$companyId] = true;
}
}
// 只保留苏州地区的上市公司
$suzhouCompanies = $companies->filter(function ($company) use ($suzhouCompanyIds) {
return isset($suzhouCompanyIds[$company->id]);
});
if ($retList) {
// 返回详细列表:主表是公司,子数据是学员信息
$result = [];
@ -866,12 +896,12 @@ class CourseSign extends SoftDeletesModel
}
$companyId = $courseSign->user->company->id;
// 只处理上市公司的记录
if (!isset($companies[$companyId])) {
// 只处理苏州上市公司的记录
if (!isset($suzhouCompanyIds[$companyId])) {
continue;
}
$company = $companies[$companyId];
$company = $suzhouCompanies[$companyId] ?? $courseSign->user->company;
// 如果公司还没有在结果中,初始化
if (!isset($result[$companyId])) {
@ -909,7 +939,7 @@ class CourseSign extends SoftDeletesModel
return array_values($result);
} else {
// 返回统计数据
return $companies->count();
return count($suzhouCompanyIds);
}
}

Loading…
Cancel
Save