|
|
@@ -0,0 +1,168 @@
|
|
|
+-- =============================================================================
|
|
|
+-- 请假类型调整:下线「外出请假」「回家请假」,新增「临时回寝」
|
|
|
+-- 日期:2026-10-21
|
|
|
+--
|
|
|
+-- 客户确认策略:
|
|
|
+-- - 历史请假单:不改类型(仍显示原「外出请假」「回家请假」)
|
|
|
+-- - 新建/编辑可选列表:不再出现外出、回家;可选择「临时回寝」
|
|
|
+--
|
|
|
+-- 影响表:仅 xg_leave_type_config
|
|
|
+-- 1) 旧类型:软删除 deleted=1 + 关闭 is_enabled=0(不物理删)
|
|
|
+-- 2) 新增:临时回寝 TEMP_BACK_DORM
|
|
|
+--
|
|
|
+-- 不碰:xg_student_leave(历史业务数据零修改)
|
|
|
+--
|
|
|
+-- 执行顺序:
|
|
|
+-- ① 只跑「一、执行前核查」
|
|
|
+-- ② 确认后跑「二、变更」
|
|
|
+-- ③ 「三、验收」通过再 COMMIT,否则 ROLLBACK
|
|
|
+-- =============================================================================
|
|
|
+
|
|
|
+-- -----------------------------------------------------------------------------
|
|
|
+-- 一、执行前核查(只读)
|
|
|
+-- -----------------------------------------------------------------------------
|
|
|
+
|
|
|
+-- 1.1 当前类型配置
|
|
|
+SELECT
|
|
|
+ id,
|
|
|
+ leave_type_code,
|
|
|
+ leave_type_name,
|
|
|
+ is_enabled,
|
|
|
+ deleted,
|
|
|
+ sort_order
|
|
|
+FROM xg_leave_type_config
|
|
|
+ORDER BY sort_order, id;
|
|
|
+
|
|
|
+-- 1.2 将被下线的配置(预期:外出 / 回家)
|
|
|
+SELECT id, leave_type_code, leave_type_name, is_enabled, deleted
|
|
|
+FROM xg_leave_type_config
|
|
|
+WHERE deleted = 0
|
|
|
+ AND (
|
|
|
+ leave_type_code IN ('OUT_LEAVE', 'HOME_LEAVE')
|
|
|
+ OR leave_type_name IN ('外出请假', '回家请假')
|
|
|
+ );
|
|
|
+
|
|
|
+-- 1.3 历史单仍保留旧类型(本脚本不会改这些行,仅供对照)
|
|
|
+SELECT leave_type_code, leave_type_name, COUNT(*) AS cnt
|
|
|
+FROM xg_student_leave
|
|
|
+WHERE deleted = 0
|
|
|
+ AND (
|
|
|
+ leave_type_code IN ('OUT_LEAVE', 'HOME_LEAVE')
|
|
|
+ OR leave_type_name IN ('外出请假', '回家请假')
|
|
|
+ )
|
|
|
+GROUP BY leave_type_code, leave_type_name;
|
|
|
+
|
|
|
+-- =============================================================================
|
|
|
+-- 二、变更(事务)
|
|
|
+-- =============================================================================
|
|
|
+
|
|
|
+START TRANSACTION;
|
|
|
+
|
|
|
+-- 2.1 新增「临时回寝」(幂等:已有同编码或同名称则跳过)
|
|
|
+INSERT INTO xg_leave_type_config (
|
|
|
+ id,
|
|
|
+ tenant_id,
|
|
|
+ create_dept,
|
|
|
+ create_by,
|
|
|
+ create_time,
|
|
|
+ update_by,
|
|
|
+ update_time,
|
|
|
+ deleted,
|
|
|
+ leave_type_name,
|
|
|
+ leave_type_code,
|
|
|
+ leave_type_desc,
|
|
|
+ sort_order,
|
|
|
+ need_location_on_apply,
|
|
|
+ need_photo_on_cancel,
|
|
|
+ need_location_on_cancel,
|
|
|
+ need_cancel_for_non_leave,
|
|
|
+ can_apply_in_advance,
|
|
|
+ is_enabled,
|
|
|
+ max_apply_duration,
|
|
|
+ cancel_overdue_reminder
|
|
|
+)
|
|
|
+SELECT
|
|
|
+ 2026102111360000001,
|
|
|
+ '000000',
|
|
|
+ 103,
|
|
|
+ 1,
|
|
|
+ NOW(),
|
|
|
+ 1,
|
|
|
+ NOW(),
|
|
|
+ 0,
|
|
|
+ '临时回寝',
|
|
|
+ 'TEMP_BACK_DORM',
|
|
|
+ '临时回寝请假(替换原外出请假、回家请假选项;历史单类型不迁移)',
|
|
|
+ 3,
|
|
|
+ '1',
|
|
|
+ '1',
|
|
|
+ '1',
|
|
|
+ '1',
|
|
|
+ '1',
|
|
|
+ '1',
|
|
|
+ 24.00,
|
|
|
+ 2.00
|
|
|
+FROM DUAL
|
|
|
+WHERE NOT EXISTS (
|
|
|
+ SELECT 1
|
|
|
+ FROM xg_leave_type_config t
|
|
|
+ WHERE t.leave_type_code = 'TEMP_BACK_DORM'
|
|
|
+ OR t.leave_type_name = '临时回寝'
|
|
|
+);
|
|
|
+
|
|
|
+-- 若主键冲突:ROLLBACK 后换未占用 id 再执行
|
|
|
+-- SELECT id FROM xg_leave_type_config WHERE id = 2026102111360000001;
|
|
|
+
|
|
|
+-- 2.2 下线旧类型:软删 + 关闭(学生端列表按未删除且启用过滤,即选不到)
|
|
|
+UPDATE xg_leave_type_config
|
|
|
+SET
|
|
|
+ deleted = 1,
|
|
|
+ is_enabled = '0',
|
|
|
+ update_by = 1,
|
|
|
+ update_time = NOW(),
|
|
|
+ leave_type_desc = CONCAT(
|
|
|
+ IFNULL(leave_type_desc, ''),
|
|
|
+ '【2026-10-21 已下线,新建请选临时回寝;历史数据保留原类型】'
|
|
|
+ )
|
|
|
+WHERE deleted = 0
|
|
|
+ AND (
|
|
|
+ leave_type_code IN ('OUT_LEAVE', 'HOME_LEAVE')
|
|
|
+ OR leave_type_name IN ('外出请假', '回家请假')
|
|
|
+ );
|
|
|
+
|
|
|
+-- -----------------------------------------------------------------------------
|
|
|
+-- 三、执行后验收(事务内)
|
|
|
+-- -----------------------------------------------------------------------------
|
|
|
+
|
|
|
+-- 3.1 临时回寝应存在且启用
|
|
|
+SELECT id, leave_type_code, leave_type_name, is_enabled, deleted
|
|
|
+FROM xg_leave_type_config
|
|
|
+WHERE leave_type_code = 'TEMP_BACK_DORM'
|
|
|
+ OR leave_type_name = '临时回寝';
|
|
|
+
|
|
|
+-- 3.2 外出/回家应已软删关闭
|
|
|
+SELECT id, leave_type_code, leave_type_name, is_enabled, deleted
|
|
|
+FROM xg_leave_type_config
|
|
|
+WHERE leave_type_code IN ('OUT_LEAVE', 'HOME_LEAVE')
|
|
|
+ OR leave_type_name IN ('外出请假', '回家请假');
|
|
|
+
|
|
|
+-- 3.3 学生端可选类型(deleted=0 且 is_enabled=1):应有临时回寝,无外出/回家
|
|
|
+SELECT leave_type_code, leave_type_name, sort_order, is_enabled, deleted
|
|
|
+FROM xg_leave_type_config
|
|
|
+WHERE deleted = 0
|
|
|
+ AND is_enabled = '1'
|
|
|
+ORDER BY sort_order, id;
|
|
|
+
|
|
|
+-- 3.4 历史单旧类型条数应与执行前 1.3 一致(证明业务表未被改动)
|
|
|
+SELECT leave_type_code, leave_type_name, COUNT(*) AS cnt
|
|
|
+FROM xg_student_leave
|
|
|
+WHERE deleted = 0
|
|
|
+ AND (
|
|
|
+ leave_type_code IN ('OUT_LEAVE', 'HOME_LEAVE')
|
|
|
+ OR leave_type_name IN ('外出请假', '回家请假')
|
|
|
+ )
|
|
|
+GROUP BY leave_type_code, leave_type_name;
|
|
|
+
|
|
|
+-- ========== 确认后 ==========
|
|
|
+-- COMMIT;
|
|
|
+-- 或 ROLLBACK;
|