Files
SGGL_SHJ/SGGL/Database/20260917_HSSE_InformationProject_Cleanup.sql
T
lpf 8efe030f47 refactor: 清理旧模块资源并整理人员服务目录
为收敛当前分支代码范围并统一人员服务目录,移除历史模块与静态资源,减少无效代码和目录分散带来的维护成本。
2026-09-19 13:45:38 +08:00

160 lines
7.4 KiB
Transact-SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*
清理范围:HSSE/InformationProject。
说明:数据库已由用户提前备份,本脚本不重复备份;脚本在事务中删除菜单、权限、视图和专属业务表。
保留:InformationProject_Notice、InformationProject_Picture、
InformationProject_ProjectMap、InformationProject_ReceiveFileManager;
HSSE/Law 现行法律法规库及其共享表 Law_LawRegulationSelectedItem。
*/
SET NOCOUNT ON;
SET XACT_ABORT ON;
BEGIN TRY
BEGIN TRANSACTION;
DECLARE @MenuIds TABLE (MenuId nvarchar(50) NOT NULL PRIMARY KEY);
INSERT INTO @MenuIds (MenuId)
VALUES
-- 法律法规及标准规范辨识
(N'A0D8A8F7-EF3A-4F81-B9C1-F9F2ECD63360'),
(N'C85CCDFC-E721-4B9D-B73F-F83C7578EE9B'),
(N'28B0235F-3DB5-4C15-A7E3-6F5DF52C8FDC'),
-- 集团安全报表
(N'C554E471-B740-4559-B543-E00F247289FD'),
(N'6E7DC075-A7AF-4E42-8F8B-0174EFDD54A1'),
(N'38E948BA-E043-4E89-9038-0CE1B508FA19'),
(N'0CDFC1BE-0796-4817-ADB8-7A0B48655E00'),
(N'0973EE1C-CD2A-4116-BD67-1ABAD71D6C7C'),
(N'FB174DD6-CBAE-43AF-9356-B098A17B719D'),
(N'FD572EFA-8E87-43D1-B514-25A39768106F');
/* 菜单相关流程、按钮权限和角色权限先于菜单删除。 */
DELETE FROM dbo.Sys_MenuFlowOperate
WHERE MenuId IN (SELECT MenuId FROM @MenuIds);
DELETE FROM dbo.Sys_ButtonPower
WHERE MenuId IN (SELECT MenuId FROM @MenuIds)
OR ButtonToMenuId IN (SELECT MenuId FROM @MenuIds);
DELETE FROM dbo.Sys_RolePower
WHERE MenuId IN (SELECT MenuId FROM @MenuIds);
DELETE FROM dbo.Sys_Menu
WHERE MenuId IN (SELECT MenuId FROM @MenuIds)
OR Url LIKE N'HSSE/InformationProject/%';
/* 视图先删除;选中项视图先于辨识视图,避免视图之间存在依赖。 */
IF OBJECT_ID(N'dbo.View_InformationProject_ConstructionStandardSelectedItem', N'V') IS NOT NULL
DROP VIEW dbo.View_InformationProject_ConstructionStandardSelectedItem;
IF OBJECT_ID(N'dbo.View_InformationProject_ConstructionStandardIdentify', N'V') IS NOT NULL
DROP VIEW dbo.View_InformationProject_ConstructionStandardIdentify;
/* 明细表先删,再删除 InformationProject 专属主表。 */
IF OBJECT_ID(N'dbo.InformationProject_AccidentCauseReportItem', N'U') IS NOT NULL
DROP TABLE dbo.InformationProject_AccidentCauseReportItem;
IF OBJECT_ID(N'dbo.InformationProject_ConstructionStandardSelectedItem', N'U') IS NOT NULL
DROP TABLE dbo.InformationProject_ConstructionStandardSelectedItem;
IF OBJECT_ID(N'dbo.InformationProject_DrillConductedQuarterlyReportItem', N'U') IS NOT NULL
DROP TABLE dbo.InformationProject_DrillConductedQuarterlyReportItem;
IF OBJECT_ID(N'dbo.InformationProject_DrillPlanHalfYearReportItem', N'U') IS NOT NULL
DROP TABLE dbo.InformationProject_DrillPlanHalfYearReportItem;
IF OBJECT_ID(N'dbo.InformationProject_AccidentCauseReport', N'U') IS NOT NULL
DROP TABLE dbo.InformationProject_AccidentCauseReport;
IF OBJECT_ID(N'dbo.InformationProject_ConstructionStandardIdentify', N'U') IS NOT NULL
DROP TABLE dbo.InformationProject_ConstructionStandardIdentify;
IF OBJECT_ID(N'dbo.InformationProject_DrillConductedQuarterlyReport', N'U') IS NOT NULL
DROP TABLE dbo.InformationProject_DrillConductedQuarterlyReport;
IF OBJECT_ID(N'dbo.InformationProject_DrillPlanHalfYearReport', N'U') IS NOT NULL
DROP TABLE dbo.InformationProject_DrillPlanHalfYearReport;
IF OBJECT_ID(N'dbo.InformationProject_EPSummaryReport', N'U') IS NOT NULL
DROP TABLE dbo.InformationProject_EPSummaryReport;
IF OBJECT_ID(N'dbo.InformationProject_MillionsMonthlyReport', N'U') IS NOT NULL
DROP TABLE dbo.InformationProject_MillionsMonthlyReport;
IF OBJECT_ID(N'dbo.InformationProject_SafetyQuarterlyReport', N'U') IS NOT NULL
DROP TABLE dbo.InformationProject_SafetyQuarterlyReport;
IF OBJECT_ID(N'dbo.InformationProject_WorkSummaryReport', N'U') IS NOT NULL
DROP TABLE dbo.InformationProject_WorkSummaryReport;
/* Law_LawRegulationSelectedItem 同时服务现行法规库和旧项目辨识;只清除旧辨识关系数据。 */
DELETE FROM dbo.Law_LawRegulationSelectedItem
WHERE LawRegulationIdentifyId IS NOT NULL;
IF EXISTS
(
SELECT 1
FROM sys.foreign_keys
WHERE name = N'FK_Law_LawRegulationSelectedItem_Law_LawRegulationIdentify'
)
ALTER TABLE dbo.Law_LawRegulationSelectedItem
DROP CONSTRAINT FK_Law_LawRegulationSelectedItem_Law_LawRegulationIdentify;
IF OBJECT_ID(N'dbo.Law_LawRegulationIdentify', N'U') IS NOT NULL
DROP TABLE dbo.Law_LawRegulationIdentify;
COMMIT TRANSACTION;
/* 删除结果:以下对象均应为 0。 */
SELECT v.ObjectName,
CASE WHEN OBJECT_ID(N'dbo.' + v.ObjectName, v.ObjectType) IS NULL THEN 0 ELSE 1 END AS ExistsFlag
FROM
(
VALUES
(N'InformationProject_AccidentCauseReportItem', N'U'),
(N'InformationProject_ConstructionStandardSelectedItem', N'U'),
(N'InformationProject_DrillConductedQuarterlyReportItem', N'U'),
(N'InformationProject_DrillPlanHalfYearReportItem', N'U'),
(N'InformationProject_AccidentCauseReport', N'U'),
(N'InformationProject_ConstructionStandardIdentify', N'U'),
(N'InformationProject_DrillConductedQuarterlyReport', N'U'),
(N'InformationProject_DrillPlanHalfYearReport', N'U'),
(N'InformationProject_EPSummaryReport', N'U'),
(N'InformationProject_MillionsMonthlyReport', N'U'),
(N'InformationProject_SafetyQuarterlyReport', N'U'),
(N'InformationProject_WorkSummaryReport', N'U'),
(N'Law_LawRegulationIdentify', N'U'),
(N'View_InformationProject_ConstructionStandardSelectedItem', N'V'),
(N'View_InformationProject_ConstructionStandardIdentify', N'V')
) v(ObjectName, ObjectType);
/* 保留结果:以下对象均应为 1。 */
SELECT v.ObjectName,
CASE WHEN OBJECT_ID(N'dbo.' + v.ObjectName, v.ObjectType) IS NULL THEN 0 ELSE 1 END AS ExistsFlag
FROM
(
VALUES
(N'InformationProject_Notice', N'U'),
(N'InformationProject_Picture', N'U'),
(N'InformationProject_ProjectMap', N'U'),
(N'InformationProject_ReceiveFileManager', N'U'),
(N'Law_HSSEStandardsList', N'U'),
(N'Law_LawRegulationList', N'U'),
(N'Law_LawRegulationSelectedItem', N'U'),
(N'Law_ManageRule', N'U'),
(N'Law_RulesRegulations', N'U')
) v(ObjectName, ObjectType);
/* 菜单和权限残留均应为 0。 */
SELECT N'Sys_Menu' AS ObjectName, COUNT_BIG(*) AS Records
FROM dbo.Sys_Menu
WHERE MenuId IN (SELECT MenuId FROM @MenuIds)
OR Url LIKE N'HSSE/InformationProject/%'
UNION ALL
SELECT N'Sys_MenuFlowOperate', COUNT_BIG(*)
FROM dbo.Sys_MenuFlowOperate
WHERE MenuId IN (SELECT MenuId FROM @MenuIds)
UNION ALL
SELECT N'Sys_ButtonPower', COUNT_BIG(*)
FROM dbo.Sys_ButtonPower
WHERE MenuId IN (SELECT MenuId FROM @MenuIds)
OR ButtonToMenuId IN (SELECT MenuId FROM @MenuIds)
UNION ALL
SELECT N'Sys_RolePower', COUNT_BIG(*)
FROM dbo.Sys_RolePower
WHERE MenuId IN (SELECT MenuId FROM @MenuIds);
END TRY
BEGIN CATCH
IF XACT_STATE() <> 0
ROLLBACK TRANSACTION;
THROW;
END CATCH;