-- 西溪3号楼批量入库脚本(排除3个缺失学生) -- 说明: -- 1) 请先执行 xixi3_dorm_precheck.sql 中的数据装载部分(tmp_assign_input_raw + tmp_assign_norm) -- 2) 本脚本会排除:倪俊麟、胡俊𤋮、马腾子乐 -- 3) 本脚本会写正式表:xg_dorm_bed_student / xg_dorm_bed / xg_student_msg START TRANSACTION; DROP TEMPORARY TABLE IF EXISTS tmp_assign_import_ready; CREATE TEMPORARY TABLE tmp_assign_import_ready AS SELECT t.room_code, t.bed_name, t.student_name, t.class_name, c.id AS class_id, c.college_id, c.major_id, s.id AS student_id, bld.id AS building_id, bld.area_id, bld.campus_id, rm.id AS room_id, bed.id AS bed_id, t.source_line, t.raw_text FROM tmp_assign_norm t LEFT JOIN xg_class_msg c ON c.deleted = 0 AND c.class_name COLLATE utf8mb4_general_ci = t.class_name COLLATE utf8mb4_general_ci LEFT JOIN xg_student_msg s ON s.deleted = 0 AND s.name COLLATE utf8mb4_general_ci = t.student_name COLLATE utf8mb4_general_ci AND s.class_name COLLATE utf8mb4_general_ci = t.class_name COLLATE utf8mb4_general_ci LEFT JOIN xg_dorm_building bld ON bld.deleted = '0' AND bld.building_name = '西溪3号楼' LEFT JOIN xg_dorm_room rm ON rm.deleted = '0' AND rm.building_id = bld.id AND rm.room_code COLLATE utf8mb4_general_ci = t.room_code COLLATE utf8mb4_general_ci LEFT JOIN xg_dorm_bed bed ON bed.deleted = '0' AND bed.room_id = rm.id AND bed.bed_name COLLATE utf8mb4_general_ci = t.bed_name COLLATE utf8mb4_general_ci WHERE t.student_name IS NOT NULL AND t.class_name IS NOT NULL AND t.student_name NOT IN ('倪俊麟', '胡俊𤋮', '马腾子乐'); DROP TEMPORARY TABLE IF EXISTS tmp_assign_import_final; CREATE TEMPORARY TABLE tmp_assign_import_final AS SELECT r.* FROM tmp_assign_import_ready r LEFT JOIN xg_dorm_bed_student bs_bed ON bs_bed.deleted = '0' AND bs_bed.status = '0' AND bs_bed.bed_id = r.bed_id LEFT JOIN xg_dorm_bed_student bs_student ON bs_student.deleted = '0' AND bs_student.status = '0' AND bs_student.student_id = r.student_id WHERE r.class_id IS NOT NULL AND r.student_id IS NOT NULL AND r.building_id IS NOT NULL AND r.room_id IS NOT NULL AND r.bed_id IS NOT NULL AND bs_bed.id IS NULL AND bs_student.id IS NULL; SET @next_rel_id := (SELECT COALESCE(MAX(id), 0) FROM xg_dorm_bed_student); INSERT INTO xg_dorm_bed_student ( id, college_id, major_id, class_id, student_id, bed_id, room_id, building_id, area_id, campus_id, status, assign_time, checkout_time, deleted, tenant_id, create_by, create_dept, create_time, update_by, update_time, remark ) SELECT (@next_rel_id := @next_rel_id + 1) AS id, college_id, major_id, class_id, student_id, bed_id, room_id, building_id, area_id, campus_id, '0' AS status, NOW() AS assign_time, NULL AS checkout_time, '0' AS deleted, 0 AS tenant_id, NULL AS create_by, NULL AS create_dept, NOW() AS create_time, NULL AS update_by, NOW() AS update_time, CONCAT('西溪3号楼批量导入,source_line=', source_line) AS remark FROM tmp_assign_import_final; UPDATE xg_dorm_bed bed JOIN tmp_assign_import_final i ON i.bed_id = bed.id SET bed.bed_status = '1', bed.update_time = NOW() WHERE bed.deleted = '0'; UPDATE xg_student_msg s JOIN tmp_assign_import_final i ON i.student_id = s.id SET s.is_boarder = 1, s.dormitory_building = CAST(i.building_id AS CHAR), s.dormitory_room = CAST(i.room_id AS CHAR), s.ext_field1 = CAST(i.bed_id AS CHAR), s.update_time = NOW() WHERE s.deleted = 0; SELECT (SELECT COUNT(*) FROM tmp_assign_import_ready) AS ready_cnt, (SELECT COUNT(*) FROM tmp_assign_import_final) AS imported_cnt; COMMIT;