| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- -- 用途:
- -- 1) 清空所有学生的住宿信息
- -- 2) 将学籍状态为“在读(student_status=1)”的学生统一标记为“申请床位(is_boarder=1)”
- --
- -- 依据代码:
- -- - 批量申请床位逻辑:xg_student_msg.is_boarder = 1
- -- - 学籍状态在读:xg_student_msg.student_status = '1'
- --
- -- 执行前建议:
- -- - 先在测试环境验证
- -- - 如需限制租户,可在每条SQL追加: AND tenant_id = 0
- START TRANSACTION;
- -- =========================
- -- Step 1: 删除/清空住宿信息
- -- =========================
- -- 1.1 清空学生表中的住宿字段,同时重置是否住校
- UPDATE xg_student_msg
- SET
- dormitory_building = NULL,
- dormitory_room = NULL,
- ext_field1 = NULL, -- 床位ID
- is_boarder = 0,
- update_time = NOW()
- WHERE deleted = 0;
- -- 1.2 逻辑删除床位-学生分配关系(相当于删除住宿分配记录)
- UPDATE xg_dorm_bed_student
- SET
- deleted = '1',
- update_time = NOW()
- WHERE deleted = '0';
- -- 1.3 重置床位状态为空闲
- UPDATE xg_dorm_bed
- SET
- bed_status = '0',
- update_time = NOW()
- WHERE deleted = '0';
- -- =========================
- -- Step 2: 在读学生统一申请床位
- -- =========================
- -- 系统“批量申请床位”对应逻辑:仅更新 is_boarder = 1
- UPDATE xg_student_msg
- SET
- is_boarder = 1,
- update_time = NOW()
- WHERE deleted = 0
- AND student_status = '1';
- COMMIT;
- -- 可选核对SQL(执行后可单独运行)
- -- SELECT COUNT(1) AS boarding_apply_count FROM xg_student_msg WHERE deleted = 0 AND student_status = '1' AND is_boarder = 1;
- -- SELECT COUNT(1) AS active_bed_rel_count FROM xg_dorm_bed_student WHERE deleted = '0';
- -- SELECT COUNT(1) AS occupied_bed_count FROM xg_dorm_bed WHERE deleted = '0' AND bed_status = '1';
|