master
cody 3 months ago
parent 6f799ce71a
commit 39c8a6a053

@ -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();
// 条件2data 字段中 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);
}
}

@ -27,22 +27,22 @@
"company_market_total": {
"name": "重点上市公司数",
"from": "1、统计指定课程体系下的指定时间范围内的课程课程开始或结束时间在时间范围内下审核通过的报名记录的用户总数2、如果一个用户报名多个课程只算一个有效用户3、筛选出关联的公司是上市公司的用户数量。",
"verify": ""
"verify": "企业资质中包含了上市代码的就识别成上市公司"
},
"ganbu_total": {
"name": "跟班学员数",
"from": "1、统计指定课程体系下的指定时间范围内的课程课程开始或结束时间在时间范围内下审核通过的报名记录的用户总数2、如果一个用户报名多个课程只算一个有效用户3、筛选出有\"跟班学员\"标签的用户总数。",
"verify": ""
"verify": "学员中心,学员标签筛选对比"
},
"company_market_year_total": {
"name": "今年上市公司数量",
"from": "1、从自定义的上市公司数据里2、统计上市年份在今年的公司数量。",
"verify": ""
"verify": "自定义上市公司数据对比"
},
"company_market_after_enrollment_total": {
"name": "入学后上市公司数量",
"from": "1、直接从上市公司表中查询2、统计所有标记为\"入学后上市\"的公司数量3、注意这个统计不依赖学员报名记录统计的是自定义的上市的公司。",
"verify": ""
"verify": "自定义上市公司数据对比"
},
"course_signs_invested": {
"name": "累计被投企业数",
@ -62,7 +62,7 @@
"company_join_total": {
"name": "元和员工参与人数",
"from": "1、统计指定课程体系下的指定时间范围内的课程课程开始或结束时间在时间范围内下报名记录的用户总数如果一个用户报名多个课程只算一个有效用户2、筛选自己填写的公司名称包含以下关键词的用户总数元禾控股、元禾原点、元禾厚望、元禾重元、元禾璞华、元禾谷风、元禾绿柳、元禾辰坤、元禾沙湖、禾裕集团、苏州科服、信诚管理咨询、集成电路公司、常州团队、国器元禾3、加上自定义的元禾员工/干部培训数据里满足时间范围内的元禾员工总和4、将两部分数据相加得到总数。",
"verify": ""
"verify": "公司管理,筛选公司名字加起来对比"
},
"company_ganbu_total": {
"name": "全市干部参与企业",
@ -71,17 +71,17 @@
},
"cover_head_total": {
"name": "苏州头部企业",
"from": "1、统计指定课程体系下的指定时间范围内的课程课程开始或结束时间在时间范围内下审核通过的报名记录的用户2、筛选关联的公司包含\"高新技术企业\"字符串的公司3、统计公司数量。",
"from": "1、统计指定课程体系下的指定时间范围内的课程课程开始或结束时间在时间范围内下审核通过的报名记录的用户2、筛选关联的公司包含\"高新技术企业\"字符串的公司,并且用户填写的公司地址,或者关联的企查查公司地址包含苏州的公司3、统计公司数量。",
"verify": ""
},
"cover_rencai_total": {
"name": "高层次人才",
"from": "1、统计指定课程体系下的指定时间范围内的课程课程开始或结束时间在时间范围内下审核通过的报名记录的用户2、筛选满足以下条件之一的用户参加过\"人才培训\"课程类型的用户,或填写的所有报名表单里个人荣誉字段不包含\"其他\"的用户(剩下的选项是国家人才、市级人才等)3、取两者的并集得到用户总数。",
"name": "苏州高层次人才",
"from": "1、统计指定课程体系下的指定时间范围内的课程课程开始或结束时间在时间范围内下审核通过的报名记录的用户2、筛选满足以下条件之一的用户参加过\"人才培训\"课程类型的用户,或填写的所有报名表单里个人荣誉字段不包含\"其他\"的用户(剩下的选项是国家人才、市级人才等)。并且用户填写的公司地址,或者关联的企查查公司地址包含苏州的公司3、取两者的并集得到用户总数。",
"verify": ""
},
"cover_stock_total": {
"name": "重点上市公司",
"from": "1、统计在指定时间范围内、指定课程范围内报名的学员2、通过学员关联到其所在公司3、筛选出重点上市公司4、按公司去重统计公司数量5、注意与\"上市公司数\"的统计逻辑相同,但筛选的是重点上市公司,同一公司多个学员只计算一次。",
"name": "苏州重点上市公司",
"from": "1、统计在指定时间范围内、指定课程范围内报名的学员2、通过学员关联到其所在公司3、筛选出上市公司4、并且用户填写的公司地址或者关联的企查查公司地址包含苏州的公司",
"verify": ""
}
}
Loading…
Cancel
Save