Files
hzdyjs/docs/需求文档/奖惩补贴需求/奖学金管理基础数据-兼得关系增强-增量.sql
T
2025-08-07 18:40:25 +08:00

138 lines
6.6 KiB
SQL

-- =====================================================
-- 奖学金管理模块 - 兼得关系增强数据增量升级脚本
-- 版本: v1.1-增量版
-- 创建时间: 2025-01-27
-- 说明: 只执行还未完成的增量更新部分
-- =====================================================
-- 设置字符集
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- =====================================================
-- 1. 检查并新增关系类型字典 (如果不存在)
-- =====================================================
-- 1.1 查找可用的dict_id
SET @next_dict_id = (SELECT MAX(dict_id) + 1 FROM sys_dict_type WHERE dict_id < 3000000000000000000);
-- 1.2 新增关系类型字典 (如果不存在)
INSERT IGNORE INTO `sys_dict_type` (`dict_id`, `dict_name`, `dict_type`, `create_by`, `create_time`, `remark`)
SELECT @next_dict_id, '兼得关系细分类型', 'jcbt_relation_type', 1, NOW(), '奖学金兼得关系的具体类型'
WHERE NOT EXISTS (SELECT 1 FROM `sys_dict_type` WHERE `dict_type` = 'jcbt_relation_type');
-- 1.3 新增关系类型字典数据 (如果不存在)
INSERT IGNORE INTO `sys_dict_data` (`dict_code`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `create_by`, `create_time`, `remark`) VALUES
((SELECT MAX(dict_code) + 1 FROM sys_dict_data WHERE dict_code < 3000000000000000000), 1, '兼容', 'COMPATIBLE', 'jcbt_relation_type', '', 'success', 'N', 1, NOW(), '可以同时获得'),
((SELECT MAX(dict_code) + 2 FROM sys_dict_data WHERE dict_code < 3000000000000000000), 2, '互斥', 'EXCLUSIVE', 'jcbt_relation_type', '', 'danger', 'N', 1, NOW(), '不能同时获得'),
((SELECT MAX(dict_code) + 3 FROM sys_dict_data WHERE dict_code < 3000000000000000000), 3, '优先级', 'PRIORITY', 'jcbt_relation_type', '', 'warning', 'N', 1, NOW(), '有优先级关系');
-- =====================================================
-- 2. 更新现有奖学金类型的兼得类型为CUSTOM
-- =====================================================
-- 更新现有已设置兼得关系的奖学金类型
UPDATE `jcbt_scholarship_type`
SET `compatibility_type` = 'CUSTOM',
`update_time` = NOW(),
`update_by` = 1
WHERE `id` IN (1, 2, 3, 4, 5, 6, 7)
AND `deleted` = 0
AND `compatibility_type` != 'CUSTOM';
-- =====================================================
-- 3. 新增权限配置 (如果不存在)
-- =====================================================
-- 3.1 奖学金类型管理权限细化
INSERT IGNORE INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query_param`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `remark`) VALUES
-- 奖学金类型管理按钮权限
(9000000000000001101, '奖学金类型查询', 9000000000000001001, 1, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipType:query', '#', 1, NOW(), ''),
(9000000000000001102, '奖学金类型新增', 9000000000000001001, 2, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipType:add', '#', 1, NOW(), ''),
(9000000000000001103, '奖学金类型修改', 9000000000000001001, 3, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipType:edit', '#', 1, NOW(), ''),
(9000000000000001104, '奖学金类型删除', 9000000000000001001, 4, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipType:remove', '#', 1, NOW(), ''),
(9000000000000001105, '奖学金类型导出', 9000000000000001001, 5, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipType:export', '#', 1, NOW(), ''),
(9000000000000001106, '兼得关系配置', 9000000000000001001, 6, '', '', '', 1, 0, 'F', '0', '0', 'jcbt:scholarshipType:compatibility', '#', 1, NOW(), '兼得关系配置权限');
-- =====================================================
-- 4. 示例数据:带自定义兼得关系的新奖学金类型 (如果不存在)
-- =====================================================
-- 4.1 新增一个示例专项奖学金 (如果不存在)
INSERT IGNORE INTO `jcbt_scholarship_type` (`id`, `type_code`, `type_name`, `type_category`, `level_type`, `award_amount`, `description`, `application_guide`, `compatibility_type`, `status`, `sort_order`, `is_system`, `tenant_id`, `create_by`, `create_time`) VALUES
(8, 'ZX_EXCELLENT', '卓越学子奖学金', 'SPECIAL', 'SPECIAL', 8000.00, '表彰在学业、创新、社会工作等方面全面发展的优秀学生', '需同时满足学业、创新、社会工作等多项要求', 'CUSTOM', 1, 1, 0, 1, 1, NOW());
-- 4.2 配置卓越学子奖学金的兼得关系(与所有其他奖学金互斥)- 使用动态ID
SET @scholarship_8_exists = (SELECT COUNT(*) FROM jcbt_scholarship_type WHERE id = 8);
SET @max_compatibility_id = (SELECT COALESCE(MAX(id), 0) FROM jcbt_scholarship_compatibility);
INSERT INTO `jcbt_scholarship_compatibility` (`id`, `type_id_1`, `type_id_2`, `relation_type`, `priority_level`, `description`, `tenant_id`, `create_by`, `create_time`)
SELECT
@max_compatibility_id + ROW_NUMBER() OVER (ORDER BY temp.type_id_2),
8,
temp.type_id_2,
'EXCLUSIVE',
0,
CONCAT('卓越学子奖学金与', temp.type_name, '互斥'),
1,
1,
NOW()
FROM (
SELECT 1 as type_id_2, '一等学业奖学金' as type_name
UNION ALL SELECT 2, '二等学业奖学金'
UNION ALL SELECT 3, '三等学业奖学金'
UNION ALL SELECT 4, '创新特等奖学金'
UNION ALL SELECT 5, '创新一等奖学金'
UNION ALL SELECT 6, '社会工作一等奖学金'
UNION ALL SELECT 7, '社会工作二等奖学金'
) temp
WHERE @scholarship_8_exists > 0
AND NOT EXISTS (
SELECT 1 FROM jcbt_scholarship_compatibility
WHERE type_id_1 = 8 AND type_id_2 = temp.type_id_2 AND deleted = 0
);
-- =====================================================
-- 5. 验证升级结果
-- =====================================================
-- 5.1 显示升级后的状态
SELECT '=== 升级完成!当前状态统计 ===' AS status;
SELECT
'兼得关系类型字典' AS item,
COUNT(*) AS count
FROM sys_dict_data
WHERE dict_type = 'jcbt_compatibility_type'
UNION ALL
SELECT
'关系细分类型字典' AS item,
COUNT(*) AS count
FROM sys_dict_data
WHERE dict_type = 'jcbt_relation_type'
UNION ALL
SELECT
'兼得关系记录' AS item,
COUNT(*) AS count
FROM jcbt_scholarship_compatibility
WHERE deleted = 0
UNION ALL
SELECT
'CUSTOM类型奖学金' AS item,
COUNT(*) AS count
FROM jcbt_scholarship_type
WHERE compatibility_type = 'CUSTOM' AND deleted = 0;
-- =====================================================
-- 结束
-- =====================================================
SET FOREIGN_KEY_CHECKS = 1;
SELECT '奖学金兼得关系增强功能增量升级完成!' AS result;