| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- -- =============================================================================
- -- 学生基本信息 → 教务对接宽表视图
- -- 说明见:跟教务系统同步学生基础信息/学生基本信息对接说明.md
- --
- -- 口径摘要:
- -- * 身份证件类型:有 id_card 则「居民身份证」,否则 NULL
- -- * 所在校区:学生 class_id → xg_class_msg.campus_id → xg_dorm_campus.campus_name,再回退班级冗余 campus_name
- -- * 班主任工号:class_teacher_id → sys_user.user_no(空则 user_name)
- -- * 学生是否在校:默认「在校」;退学(4)、毕业(5) 为「不在校」
- -- * 异动类型:固定 NULL
- -- * 毕业时间/毕业学年学期:在籍按 入学年份+学制 推算;已毕业(5)取 BI_YE 异动 effective_date
- -- * 学习经历/何年何月/在何地学习/在校照片:固定 NULL
- -- * 性别:0→男,1→女
- -- * 成员1/2:父亲/母亲及关系、电话
- -- * 学生当前状态:输出教务中文名称(见对接说明 §状态映射)
- -- * 培养层次:班级 class_type 字典值(zsjy_education_level),非中文名称
- -- * 系部/专业:优先 college_id、major_id 关联 sys_dept.dept_name;班级名称取 xg_class_msg.class_name
- -- =============================================================================
- DROP VIEW IF EXISTS `vw_jw_student_export`;
- CREATE VIEW `vw_jw_student_export` AS
- SELECT
- (m.`name` COLLATE utf8mb4_unicode_ci) AS `姓名`,
- (m.student_no COLLATE utf8mb4_unicode_ci) AS `学号`,
- (m.phone COLLATE utf8mb4_unicode_ci) AS `联系电话`,
- (CASE
- WHEN NULLIF(TRIM(m.id_card), '') IS NOT NULL
- THEN ('居民身份证' COLLATE utf8mb4_unicode_ci)
- ELSE (CAST(NULL AS CHAR(32) CHARACTER SET utf8mb4) COLLATE utf8mb4_unicode_ci)
- END) AS `身份证件类型`,
- (m.id_card COLLATE utf8mb4_unicode_ci) AS `身份证件号`,
- (COALESCE(cm.class_name, m.class_name) COLLATE utf8mb4_unicode_ci) AS `班级信息`,
- (COALESCE(campus_cm.campus_name, cm.campus_name) COLLATE utf8mb4_unicode_ci) AS `所在校区`,
- (COALESCE(m.grade, cm.grade) COLLATE utf8mb4_unicode_ci) AS `所在年级`,
- m.enrollment_year AS `入学年份`,
- (COALESCE(dc_m.dept_name, dc_cm.dept_name, m.college_name, cm.college_name) COLLATE utf8mb4_unicode_ci) AS `系部信息`,
- (COALESCE(dm_m.dept_name, dm_cm.dept_name, m.major_name, cm.major_name) COLLATE utf8mb4_unicode_ci) AS `专业信息`,
- (COALESCE(NULLIF(TRIM(su.user_no), ''), su.user_name) COLLATE utf8mb4_unicode_ci) AS `班主任工号`,
- (COALESCE(m.class_teacher_name, cm.class_teacher_name) COLLATE utf8mb4_unicode_ci) AS `班主任姓名`,
- (CASE m.student_status
- WHEN '1' THEN '在读'
- WHEN '2' THEN '休学'
- WHEN '3' THEN '复学'
- WHEN '4' THEN '退学'
- WHEN '5' THEN '毕业'
- WHEN '6' THEN '其他'
- WHEN '7' THEN '结业'
- WHEN '8' THEN '停学'
- WHEN '9' THEN '其他'
- ELSE COALESCE(m.student_status, '')
- END COLLATE utf8mb4_unicode_ci) AS `学生当前状态`,
- (CASE
- WHEN (m.student_status COLLATE utf8mb4_unicode_ci) IN (
- ('4' COLLATE utf8mb4_unicode_ci),
- ('5' COLLATE utf8mb4_unicode_ci)
- ) THEN ('不在校' COLLATE utf8mb4_unicode_ci)
- ELSE ('在校' COLLATE utf8mb4_unicode_ci)
- END) AS `学生是否在校`,
- (CAST(NULL AS CHAR(32) CHARACTER SET utf8mb4) COLLATE utf8mb4_unicode_ci) AS `异动类型`,
- (cm.class_type COLLATE utf8mb4_unicode_ci) AS `培养层次`,
- COALESCE(cm.school_system, m.school_system) AS `学制`,
- (
- CASE
- WHEN (m.student_status COLLATE utf8mb4_unicode_ci) = ('5' COLLATE utf8mb4_unicode_ci)
- AND grad_sc.effective_date IS NOT NULL
- THEN YEAR(grad_sc.effective_date)
- WHEN m.enrollment_year IS NOT NULL
- AND COALESCE(cm.school_system, m.school_system) IS NOT NULL
- THEN m.enrollment_year + COALESCE(cm.school_system, m.school_system)
- WHEN cm.graduation_year IS NOT NULL
- THEN cm.graduation_year
- ELSE NULL
- END
- ) AS `毕业时间`,
- (
- CASE
- WHEN (
- CASE
- WHEN (m.student_status COLLATE utf8mb4_unicode_ci) = ('5' COLLATE utf8mb4_unicode_ci)
- AND grad_sc.effective_date IS NOT NULL
- THEN YEAR(grad_sc.effective_date)
- WHEN m.enrollment_year IS NOT NULL
- AND COALESCE(cm.school_system, m.school_system) IS NOT NULL
- THEN m.enrollment_year + COALESCE(cm.school_system, m.school_system)
- WHEN cm.graduation_year IS NOT NULL
- THEN cm.graduation_year
- ELSE NULL
- END
- ) IS NOT NULL
- THEN CONCAT(
- (
- CASE
- WHEN (m.student_status COLLATE utf8mb4_unicode_ci) = ('5' COLLATE utf8mb4_unicode_ci)
- AND grad_sc.effective_date IS NOT NULL
- THEN YEAR(grad_sc.effective_date)
- WHEN m.enrollment_year IS NOT NULL
- AND COALESCE(cm.school_system, m.school_system) IS NOT NULL
- THEN m.enrollment_year + COALESCE(cm.school_system, m.school_system)
- WHEN cm.graduation_year IS NOT NULL
- THEN cm.graduation_year
- ELSE NULL
- END
- ) - 1,
- '-',
- (
- CASE
- WHEN (m.student_status COLLATE utf8mb4_unicode_ci) = ('5' COLLATE utf8mb4_unicode_ci)
- AND grad_sc.effective_date IS NOT NULL
- THEN YEAR(grad_sc.effective_date)
- WHEN m.enrollment_year IS NOT NULL
- AND COALESCE(cm.school_system, m.school_system) IS NOT NULL
- THEN m.enrollment_year + COALESCE(cm.school_system, m.school_system)
- WHEN cm.graduation_year IS NOT NULL
- THEN cm.graduation_year
- ELSE NULL
- END
- ),
- '-2'
- )
- ELSE NULL
- END
- ) AS `毕业学年学期`,
- (CAST(NULL AS CHAR(500) CHARACTER SET utf8mb4) COLLATE utf8mb4_unicode_ci) AS `学习经历`,
- (CAST(NULL AS CHAR(128) CHARACTER SET utf8mb4) COLLATE utf8mb4_unicode_ci) AS `何年何月-何年何月`,
- (CAST(NULL AS CHAR(256) CHARACTER SET utf8mb4) COLLATE utf8mb4_unicode_ci) AS `在何地学习`,
- (CASE m.gender
- WHEN '0' THEN '男'
- WHEN '1' THEN '女'
- ELSE NULL
- END COLLATE utf8mb4_unicode_ci) AS `性别`,
- (m.native_place COLLATE utf8mb4_unicode_ci) AS `籍贯地`,
- (CAST(NULL AS CHAR(500) CHARACTER SET utf8mb4) COLLATE utf8mb4_unicode_ci) AS `在校照片`,
- DATE(m.birth_date) AS `出生日期`,
- (COALESCE(NULLIF(TRIM(m.home_address), ''), m.current_address) COLLATE utf8mb4_unicode_ci) AS `家庭现住址`,
- (m.father_name COLLATE utf8mb4_unicode_ci) AS `成员1姓名`,
- (m.mother_name COLLATE utf8mb4_unicode_ci) AS `成员2姓名`,
- (CASE
- WHEN NULLIF(TRIM(m.father_name), '') IS NOT NULL
- THEN ('父亲' COLLATE utf8mb4_unicode_ci)
- ELSE (CAST(NULL AS CHAR(16) CHARACTER SET utf8mb4) COLLATE utf8mb4_unicode_ci)
- END) AS `成员1关系`,
- (CASE
- WHEN NULLIF(TRIM(m.mother_name), '') IS NOT NULL
- THEN ('母亲' COLLATE utf8mb4_unicode_ci)
- ELSE (CAST(NULL AS CHAR(16) CHARACTER SET utf8mb4) COLLATE utf8mb4_unicode_ci)
- END) AS `成员2关系`,
- (m.father_phone COLLATE utf8mb4_unicode_ci) AS `成员1联系电话`,
- (m.mother_phone COLLATE utf8mb4_unicode_ci) AS `成员2联系电话`,
- m.id AS `来源记录id`
- FROM xg_student_msg m
- LEFT JOIN xg_class_msg cm
- ON cm.deleted = 0
- AND (cm.tenant_id COLLATE utf8mb4_unicode_ci) = (m.tenant_id COLLATE utf8mb4_unicode_ci)
- AND cm.id = CAST(NULLIF(TRIM(m.class_id), '') AS UNSIGNED)
- LEFT JOIN sys_dept dc_m
- ON dc_m.dept_id = CAST(NULLIF(TRIM(m.college_id), '') AS UNSIGNED)
- AND (dc_m.del_flag COLLATE utf8mb4_unicode_ci) = ('0' COLLATE utf8mb4_unicode_ci)
- AND (dc_m.tenant_id COLLATE utf8mb4_unicode_ci) = (m.tenant_id COLLATE utf8mb4_unicode_ci)
- LEFT JOIN sys_dept dm_m
- ON dm_m.dept_id = CAST(NULLIF(TRIM(m.major_id), '') AS UNSIGNED)
- AND (dm_m.del_flag COLLATE utf8mb4_unicode_ci) = ('0' COLLATE utf8mb4_unicode_ci)
- AND (dm_m.tenant_id COLLATE utf8mb4_unicode_ci) = (m.tenant_id COLLATE utf8mb4_unicode_ci)
- LEFT JOIN sys_dept dc_cm
- ON dc_cm.dept_id = cm.college_id
- AND (dc_cm.del_flag COLLATE utf8mb4_unicode_ci) = ('0' COLLATE utf8mb4_unicode_ci)
- AND (dc_cm.tenant_id COLLATE utf8mb4_unicode_ci) = (m.tenant_id COLLATE utf8mb4_unicode_ci)
- LEFT JOIN sys_dept dm_cm
- ON dm_cm.dept_id = cm.major_id
- AND (dm_cm.del_flag COLLATE utf8mb4_unicode_ci) = ('0' COLLATE utf8mb4_unicode_ci)
- AND (dm_cm.tenant_id COLLATE utf8mb4_unicode_ci) = (m.tenant_id COLLATE utf8mb4_unicode_ci)
- LEFT JOIN xg_dorm_campus campus_cm
- ON campus_cm.id = cm.campus_id
- AND (campus_cm.deleted COLLATE utf8mb4_unicode_ci) = ('0' COLLATE utf8mb4_unicode_ci)
- LEFT JOIN sys_user su
- ON su.user_id = COALESCE(m.class_teacher_id, cm.class_teacher_id)
- AND (su.del_flag COLLATE utf8mb4_unicode_ci) = ('0' COLLATE utf8mb4_unicode_ci)
- AND (su.tenant_id COLLATE utf8mb4_unicode_ci) = (m.tenant_id COLLATE utf8mb4_unicode_ci)
- LEFT JOIN (
- SELECT
- sc.student_id,
- MAX(sc.effective_date) AS effective_date
- FROM xg_student_status_change sc
- WHERE sc.deleted = 0
- AND sc.process_status = 1
- AND (sc.change_type COLLATE utf8mb4_unicode_ci) = ('BI_YE' COLLATE utf8mb4_unicode_ci)
- GROUP BY sc.student_id
- ) grad_sc ON grad_sc.student_id = m.id
- WHERE m.deleted = 0;
- -- -----------------------------------------------------------------------------
- -- 授权:用户 jw_cx 仅查询本视图(需使用具备 GRANT 权限的账号执行,如 root)
- -- -----------------------------------------------------------------------------
- GRANT SELECT ON `hzdyjs_xg`.`vw_jw_student_export` TO 'jw_cx'@'%';
- FLUSH PRIVILEGES;
|