master
cody 3 months ago
parent 081a2d5ac3
commit bb403e6f5d

@ -51,7 +51,7 @@ class CommonExport implements FromCollection, WithStyles, WithColumnWidths, With
const HISTORY_COURSES_SUB_COLUMNS = [
'hc_course_type' => '课程体系',
'hc_course_name' => '课程名称',
'hc_signs_pass' => '培养人未去重',
'hc_signs_pass' => '培养人未去重',
'hc_signs_pass_unique' => '培养人数去重',
'hc_course_signs_pass' => '课程培养人数',
];
@ -292,7 +292,7 @@ class CommonExport implements FromCollection, WithStyles, WithColumnWidths, With
$endCol = $this->getColumnLetter($index + count(self::USERS_SUB_COLUMNS) - 1);
$sheet->mergeCells("{$startCol}1:{$endCol}1");
$sheet->setCellValue("{$startCol}1", $label);
// 确保第二行表头正确设置所有子列(包括缺失的列)
$subIndex = 0;
foreach (self::USERS_SUB_COLUMNS as $subField => $subLabel) {
@ -301,7 +301,7 @@ class CommonExport implements FromCollection, WithStyles, WithColumnWidths, With
$sheet->setCellValue("{$col}2", $subLabel);
$subIndex++;
}
$index += count(self::USERS_SUB_COLUMNS);
} elseif (str_contains($field, 'project_users')) {
// 项目经理信息列:合并第一行的多个单元格
@ -309,7 +309,7 @@ class CommonExport implements FromCollection, WithStyles, WithColumnWidths, With
$endCol = $this->getColumnLetter($index + count(self::PROJECT_USERS_SUB_COLUMNS) - 1);
$sheet->mergeCells("{$startCol}1:{$endCol}1");
$sheet->setCellValue("{$startCol}1", $label);
// 确保第二行表头正确设置所有子列
$subIndex = 0;
foreach (self::PROJECT_USERS_SUB_COLUMNS as $subField => $subLabel) {
@ -317,7 +317,7 @@ class CommonExport implements FromCollection, WithStyles, WithColumnWidths, With
$sheet->setCellValue("{$col}2", $subLabel);
$subIndex++;
}
$index += count(self::PROJECT_USERS_SUB_COLUMNS);
} elseif (str_contains($field, 'history_courses')) {
// 历史课程信息列:合并第一行的多个单元格
@ -325,7 +325,7 @@ class CommonExport implements FromCollection, WithStyles, WithColumnWidths, With
$endCol = $this->getColumnLetter($index + count(self::HISTORY_COURSES_SUB_COLUMNS) - 1);
$sheet->mergeCells("{$startCol}1:{$endCol}1");
$sheet->setCellValue("{$startCol}1", $label);
// 确保第二行表头正确设置所有子列
$subIndex = 0;
foreach (self::HISTORY_COURSES_SUB_COLUMNS as $subField => $subLabel) {
@ -333,7 +333,7 @@ class CommonExport implements FromCollection, WithStyles, WithColumnWidths, With
$sheet->setCellValue("{$col}2", $subLabel);
$subIndex++;
}
$index += count(self::HISTORY_COURSES_SUB_COLUMNS);
} else {
// 其他列:合并第一行和第二行

@ -142,7 +142,7 @@ class CalendarsController extends BaseController
* @OA\Parameter(name="is_publish", in="query", @OA\Schema(type="string"), required=true, description="是否向用户发布0否1是"),
* @OA\Parameter(name="address", in="query", @OA\Schema(type="string"), required=true, description="地址"),
* @OA\Parameter(name="days", in="query", @OA\Schema(type="string"), required=true, description="天数"),
* @OA\Parameter(name="history_courses", in="query", @OA\Schema(type="array", @OA\Items(type="object")), required=false, description="历史课程数组每项包含type(课程体系ID), course_name(课程名称), course_type_signs_pass(培养人未去重), course_type_signs_pass_unique(培养人数去重), course_signs_pass(课程培养人数), start_time(开始时间), end_time(结束时间)"),
* @OA\Parameter(name="history_courses", in="query", @OA\Schema(type="array", @OA\Items(type="object")), required=false, description="历史课程数组每项包含type(课程体系ID), course_name(课程名称), course_type_signs_pass(培养人未去重), course_type_signs_pass_unique(培养人数去重), course_signs_pass(课程培养人数), start_time(开始时间), end_time(结束时间)"),
* @OA\Parameter(name="token", in="query", @OA\Schema(type="string"), required=true, description="认证token"),
* @OA\Response(
* response="200",

@ -163,7 +163,7 @@ class HistoryCourseController extends BaseController
* description="",
* @OA\Parameter(name="id", in="query", @OA\Schema(type="int"), required=false, description="Id(存在更新,不存在新增)"),
* @OA\Parameter(name="type", in="query", @OA\Schema(type="string"), required=true, description="课程体系id"),
* @OA\Parameter(name="course_type_signs_pass", in="query", @OA\Schema(type="integer", format="int64"), required=false, description="培养人未去重"),
* @OA\Parameter(name="course_type_signs_pass", in="query", @OA\Schema(type="integer", format="int64"), required=false, description="培养人未去重"),
* @OA\Parameter(name="course_type_signs_pass_unique", in="query", @OA\Schema(type="integer", format="int64"), required=false, description="培养人数去重"),
* @OA\Parameter(name="course_signs_pass", in="query", @OA\Schema(type="integer", format="int64"), required=false, description="课程培养人数"),
* @OA\Parameter(name="course_name", in="query", @OA\Schema(type="string", nullable=true), description="课程名称"),

@ -668,7 +668,7 @@ class OtherController extends CommonController
'course_name' => '课程名称',
'start_time' => '开始时间',
'end_time' => '结束时间',
'course_type_signs_pass' => '培养人未去重',
'course_type_signs_pass' => '培养人未去重',
'course_type_signs_pass_unique' => '培养人数去重',
'course_signs_pass' => '课程培养人数',
];
@ -806,7 +806,7 @@ class OtherController extends CommonController
'course_name' => '课程名称',
'start_time' => '开始时间',
'end_time' => '结束时间',
'course_type_signs_pass' => '培养人未去重',
'course_type_signs_pass' => '培养人未去重',
'course_type_signs_pass_unique' => '培养人数去重',
'course_signs_pass' => '课程培养人数',
];

@ -15,7 +15,7 @@ return new class extends Migration {
Schema::create('history_courses', function (Blueprint $table) {
$table->id();
$table->string('type')->comment('课程体系ID');
$table->integer('course_type_signs_pass')->default(0)->comment('培养人未去重');
$table->integer('course_type_signs_pass')->default(0)->comment('培养人未去重');
$table->integer('course_type_signs_pass_unique')->default(0)->comment('培养人数去重');
$table->integer('course_signs_pass')->default(0)->comment('课程培养人数');
// 课程名称

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