135 lines
3.4 KiB
SQL
135 lines
3.4 KiB
SQL
-- ========================================
|
|
-- 奖学金名额分配删除问题诊断脚本
|
|
-- 创建时间: 2025-01-28
|
|
-- 说明: 用于排查无法删除的名额分配记录
|
|
-- ========================================
|
|
|
|
USE hzdyjs_xg;
|
|
|
|
-- 1. 查看所有名额分配记录的状态
|
|
SELECT
|
|
id,
|
|
batch_id,
|
|
scholarship_type_id,
|
|
allocation_level,
|
|
target_dept_id,
|
|
total_quota,
|
|
used_quota,
|
|
reserved_quota,
|
|
available_quota,
|
|
is_adjustable,
|
|
is_locked,
|
|
status,
|
|
deleted,
|
|
create_time,
|
|
update_time
|
|
FROM jcbt_scholarship_quota
|
|
WHERE deleted = 0
|
|
ORDER BY create_time DESC;
|
|
|
|
-- 2. 查找可能有问题的记录(已使用名额大于0或已锁定)
|
|
SELECT
|
|
'已使用名额大于0' as issue_type,
|
|
id,
|
|
batch_id,
|
|
scholarship_type_id,
|
|
total_quota,
|
|
used_quota,
|
|
reserved_quota,
|
|
available_quota,
|
|
is_locked,
|
|
status
|
|
FROM jcbt_scholarship_quota
|
|
WHERE deleted = 0 AND used_quota > 0
|
|
|
|
UNION ALL
|
|
|
|
SELECT
|
|
'已被锁定' as issue_type,
|
|
id,
|
|
batch_id,
|
|
scholarship_type_id,
|
|
total_quota,
|
|
used_quota,
|
|
reserved_quota,
|
|
available_quota,
|
|
is_locked,
|
|
status
|
|
FROM jcbt_scholarship_quota
|
|
WHERE deleted = 0 AND is_locked = 1
|
|
|
|
UNION ALL
|
|
|
|
SELECT
|
|
'状态异常' as issue_type,
|
|
id,
|
|
batch_id,
|
|
scholarship_type_id,
|
|
total_quota,
|
|
used_quota,
|
|
reserved_quota,
|
|
available_quota,
|
|
is_locked,
|
|
status
|
|
FROM jcbt_scholarship_quota
|
|
WHERE deleted = 0 AND status != 'ACTIVE';
|
|
|
|
-- 3. 检查是否存在外键约束或关联数据
|
|
-- 检查是否有申请记录引用了这些名额
|
|
SELECT
|
|
q.id as quota_id,
|
|
q.batch_id,
|
|
q.scholarship_type_id,
|
|
q.used_quota,
|
|
q.is_locked,
|
|
COUNT(DISTINCT a.id) as application_count
|
|
FROM jcbt_scholarship_quota q
|
|
LEFT JOIN jcbt_scholarship_application a ON a.batch_id = q.batch_id
|
|
AND a.scholarship_type_id = q.scholarship_type_id
|
|
WHERE q.deleted = 0
|
|
GROUP BY q.id, q.batch_id, q.scholarship_type_id, q.used_quota, q.is_locked
|
|
HAVING application_count > 0 OR q.used_quota > 0 OR q.is_locked = 1;
|
|
|
|
-- 4. 检查是否有下级名额分配
|
|
SELECT
|
|
parent.id as parent_quota_id,
|
|
parent.allocation_level as parent_level,
|
|
parent.used_quota as parent_used_quota,
|
|
parent.is_locked as parent_is_locked,
|
|
COUNT(child.id) as child_count
|
|
FROM jcbt_scholarship_quota parent
|
|
LEFT JOIN jcbt_scholarship_quota child ON child.parent_quota_id = parent.id AND child.deleted = 0
|
|
WHERE parent.deleted = 0
|
|
GROUP BY parent.id, parent.allocation_level, parent.used_quota, parent.is_locked
|
|
HAVING child_count > 0;
|
|
|
|
-- 5. 详细查看有问题的记录(根据实际情况调整ID)
|
|
-- 请替换下面的ID为实际无法删除的记录ID
|
|
-- SELECT * FROM jcbt_scholarship_quota WHERE id = 替换为实际ID;
|
|
|
|
-- 6. 查看相关批次信息
|
|
SELECT
|
|
b.id as batch_id,
|
|
b.batch_name,
|
|
b.batch_code,
|
|
b.status as batch_status,
|
|
b.start_time,
|
|
b.end_time,
|
|
COUNT(q.id) as quota_count
|
|
FROM jcbt_scholarship_batch b
|
|
LEFT JOIN jcbt_scholarship_quota q ON q.batch_id = b.id AND q.deleted = 0
|
|
WHERE b.deleted = 0
|
|
GROUP BY b.id, b.batch_name, b.batch_code, b.status, b.start_time, b.end_time;
|
|
|
|
-- 7. 查看奖学金类型信息
|
|
SELECT
|
|
st.id as type_id,
|
|
st.type_name,
|
|
st.type_code,
|
|
st.status as type_status,
|
|
COUNT(q.id) as quota_count
|
|
FROM jcbt_scholarship_type st
|
|
LEFT JOIN jcbt_scholarship_quota q ON q.scholarship_type_id = st.id AND q.deleted = 0
|
|
WHERE st.deleted = 0
|
|
GROUP BY st.id, st.type_name, st.type_code, st.status;
|