196 lines
9.5 KiB
SQL
196 lines
9.5 KiB
SQL
-- =============================================================================
|
||
-- 学生基本信息 → 教务对接宽表视图
|
||
-- 说明见:跟教务系统同步学生基础信息/学生基本信息对接说明.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;
|