更新若干事项
This commit is contained in:
1 parent
68cdaf38fa
commit
9898962836
30 files changed
+7715
No files matched your search
@@ -0,0 +1,71 @@
|
||||
-- ============================================================
|
||||
-- OA 工作排班:排班方案支持「平台模板 + 周期规则」
|
||||
--
|
||||
-- 适用:已执行过 create_oa_scheduling.sql 的环境(表已存在)。
|
||||
-- 执行:在业务库(go-platform)下整段执行即可。
|
||||
--
|
||||
-- 幂等:逐列判断 information_schema,只添加缺失的列;
|
||||
-- 9 列全部存在时自动跳过一次无害查询,不会报 1060。
|
||||
--
|
||||
-- 字段说明:
|
||||
-- template_id / template_code / template_name
|
||||
-- 方案来源模板的快照。租户调用模板后,模板规则会复制进本方案,
|
||||
-- 之后模板调整或停用都不影响已保存方案(platform 模板只读,租户可改自己的)。
|
||||
-- align_mode
|
||||
-- 0 = 未使用模板(沿用 weekdays + shift_id 的按星期排班)
|
||||
-- 1 = 按自然周(双休 / 单休 / 大小周)
|
||||
-- 2 = 从 start_date 起滚动(三班倒 / 做一休一)
|
||||
-- 3 = 按自然月(月休)
|
||||
-- cycle_days 周期天数(align_mode=1/2 时等于 pattern 长度)
|
||||
-- week_offset 大小周起始周偏移:0=开始日期所在周为周期第 1 周,1=第 2 周
|
||||
-- month_rest_days 月休:每月休息天数
|
||||
-- month_rest_weekday 月休固定休息周几(1-7),0 表示不固定
|
||||
-- pattern 周期规则 JSON 快照,元素形如
|
||||
-- {"day_index":0,"day_type":1,"shift_id":12,"shift_name":"白班",
|
||||
-- "short_name":"白","color":"#409EFF","work_start":"09:00","work_end":"18:00"}
|
||||
-- ============================================================
|
||||
|
||||
-- 执行前自查:existing_cols = 9 表示字段已齐全,执行到下面会自动跳过
|
||||
SELECT COUNT(*) AS existing_cols
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'yz_backend_oa_schedule_plan'
|
||||
AND COLUMN_NAME IN ('template_id','template_code','template_name','align_mode','cycle_days','week_offset','month_rest_days','month_rest_weekday','pattern');
|
||||
|
||||
SET @sql := CONCAT('ALTER TABLE `yz_backend_oa_schedule_plan` ',
|
||||
IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'yz_backend_oa_schedule_plan' AND COLUMN_NAME = 'template_id') = 0,
|
||||
'ADD COLUMN `template_id` BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT ''来源模板ID(0=未使用模板)'', ', ''),
|
||||
IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'yz_backend_oa_schedule_plan' AND COLUMN_NAME = 'template_code') = 0,
|
||||
'ADD COLUMN `template_code` VARCHAR(50) NOT NULL DEFAULT '''' COMMENT ''来源模板编码快照'', ', ''),
|
||||
IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'yz_backend_oa_schedule_plan' AND COLUMN_NAME = 'template_name') = 0,
|
||||
'ADD COLUMN `template_name` VARCHAR(50) NOT NULL DEFAULT '''' COMMENT ''来源模板名称快照'', ', ''),
|
||||
IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'yz_backend_oa_schedule_plan' AND COLUMN_NAME = 'align_mode') = 0,
|
||||
'ADD COLUMN `align_mode` TINYINT NOT NULL DEFAULT 0 COMMENT ''0不使用模板 1按自然周 2按开始日滚动 3按自然月'', ', ''),
|
||||
IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'yz_backend_oa_schedule_plan' AND COLUMN_NAME = 'cycle_days') = 0,
|
||||
'ADD COLUMN `cycle_days` SMALLINT NOT NULL DEFAULT 0 COMMENT ''周期天数'', ', ''),
|
||||
IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'yz_backend_oa_schedule_plan' AND COLUMN_NAME = 'week_offset') = 0,
|
||||
'ADD COLUMN `week_offset` TINYINT NOT NULL DEFAULT 0 COMMENT ''大小周起始周偏移'', ', ''),
|
||||
IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'yz_backend_oa_schedule_plan' AND COLUMN_NAME = 'month_rest_days') = 0,
|
||||
'ADD COLUMN `month_rest_days` TINYINT NOT NULL DEFAULT 0 COMMENT ''月休天数'', ', ''),
|
||||
IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'yz_backend_oa_schedule_plan' AND COLUMN_NAME = 'month_rest_weekday') = 0,
|
||||
'ADD COLUMN `month_rest_weekday` TINYINT NOT NULL DEFAULT 0 COMMENT ''月休固定周几(1-7,0不固定)'', ', ''),
|
||||
IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'yz_backend_oa_schedule_plan' AND COLUMN_NAME = 'pattern') = 0,
|
||||
'ADD COLUMN `pattern` TEXT NULL COMMENT ''周期规则JSON快照'', ', '')
|
||||
);
|
||||
|
||||
-- 去掉结尾多余的 ", "(两个字符),否则 ALTER 语句会因尾逗号报 1064
|
||||
SET @sql := IF(RIGHT(@sql, 2) = ', ', LEFT(@sql, CHAR_LENGTH(@sql) - 2), @sql);
|
||||
-- 没有任何缺失列时,@sql 只剩表名,替换为一条无害语句
|
||||
SET @sql := IF(RIGHT(@sql, 6) = 'TABLE ', 'SELECT 1 AS skipped_all_columns_exist', @sql);
|
||||
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- 核对结果:应返回 9 行
|
||||
SELECT COLUMN_NAME, COLUMN_TYPE, COLUMN_DEFAULT, COLUMN_COMMENT
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'yz_backend_oa_schedule_plan'
|
||||
AND COLUMN_NAME IN ('template_id','template_code','template_name','align_mode','cycle_days','week_offset','month_rest_days','month_rest_weekday','pattern')
|
||||
ORDER BY ORDINAL_POSITION;
|
||||
Reference in new issue
Block a user