feat(hjgl): 新增防腐等级字典管理

将防腐等级维护纳入焊接设置菜单,便于统一维护防腐等级编码并复用系统权限配置。
This commit is contained in:
2026-09-16 15:48:32 +08:00
parent 9810280e42
commit d090c174b9
15 changed files with 734 additions and 1 deletions
@@ -0,0 +1,102 @@
SET XACT_ABORT ON;
BEGIN TRANSACTION;
DECLARE @MenuId NVARCHAR(50) = N'44F69908-89DF-4B96-86F8-6ACC0019FBE7';
DECLARE @MaterialMenuId NVARCHAR(50) = N'8IDKGJE2-09B1-4607-BC6D-865CE48F0013';
DECLARE @SuperMenu NVARCHAR(50);
DECLARE @MenuType NVARCHAR(50);
DECLARE @SortIndex INT;
DECLARE @IsOffice BIT;
SELECT
@SuperMenu = SuperMenu,
@MenuType = MenuType,
@SortIndex = SortIndex,
@IsOffice = IsOffice
FROM dbo.Sys_Menu
WHERE MenuId = @MaterialMenuId;
IF @SuperMenu IS NULL
BEGIN
RAISERROR(N'未找到“管道材质定义”菜单,无法确定防腐等级定义菜单位置。', 16, 1);
ROLLBACK TRANSACTION;
RETURN;
END;
IF NOT EXISTS (SELECT 1 FROM dbo.Sys_Menu WHERE MenuId = @MenuId)
BEGIN
UPDATE dbo.Sys_Menu
SET SortIndex = ISNULL(SortIndex, 0) + 1
WHERE SuperMenu = @SuperMenu
AND ISNULL(SortIndex, 0) >= ISNULL(@SortIndex, 0);
INSERT INTO dbo.Sys_Menu
(MenuId, MenuName, Icon, Url, SortIndex, SuperMenu, MenuType, IsOffice, IsEnd, IsUsed)
VALUES
(@MenuId, N'防腐等级定义', NULL, N'HJGL/BaseInfo/PaintCodeDict.aspx',
@SortIndex, @SuperMenu, @MenuType, @IsOffice, 1, 1);
END
ELSE
BEGIN
UPDATE dbo.Sys_Menu
SET MenuName = N'防腐等级定义',
Url = N'HJGL/BaseInfo/PaintCodeDict.aspx',
SuperMenu = @SuperMenu,
MenuType = @MenuType,
IsEnd = 1,
IsUsed = 1
WHERE MenuId = @MenuId;
END;
IF NOT EXISTS (SELECT 1 FROM dbo.Sys_ButtonToMenu WHERE MenuId = @MenuId AND ButtonName = N'增加')
INSERT INTO dbo.Sys_ButtonToMenu (ButtonToMenuId, MenuId, ButtonName, SortIndex)
VALUES (N'D9437722-E216-408D-84DB-BBCBBF2763DF', @MenuId, N'增加', 1);
IF NOT EXISTS (SELECT 1 FROM dbo.Sys_ButtonToMenu WHERE MenuId = @MenuId AND ButtonName = N'修改')
INSERT INTO dbo.Sys_ButtonToMenu (ButtonToMenuId, MenuId, ButtonName, SortIndex)
VALUES (N'0752CB84-0E82-4B3D-B7C4-8A563C65F340', @MenuId, N'修改', 2);
IF NOT EXISTS (SELECT 1 FROM dbo.Sys_ButtonToMenu WHERE MenuId = @MenuId AND ButtonName = N'删除')
INSERT INTO dbo.Sys_ButtonToMenu (ButtonToMenuId, MenuId, ButtonName, SortIndex)
VALUES (N'3D4C0A40-C1F5-4431-A464-EA92CCA7C4D7', @MenuId, N'删除', 3);
IF NOT EXISTS (SELECT 1 FROM dbo.Sys_ButtonToMenu WHERE MenuId = @MenuId AND ButtonName = N'保存')
INSERT INTO dbo.Sys_ButtonToMenu (ButtonToMenuId, MenuId, ButtonName, SortIndex)
VALUES (N'CFA71E37-08DE-4F49-8740-0F13B341331D', @MenuId, N'保存', 4);
IF NOT EXISTS (SELECT 1 FROM dbo.Sys_ButtonToMenu WHERE MenuId = @MenuId AND ButtonName = N'查看')
INSERT INTO dbo.Sys_ButtonToMenu (ButtonToMenuId, MenuId, ButtonName, SortIndex)
VALUES (N'8EA926AF-CDF1-4F63-AF94-B91B3569D266', @MenuId, N'查看', 5);
INSERT INTO dbo.Sys_RolePower (RolePowerId, RoleId, MenuId, MenuType, IsOffice)
SELECT CONVERT(NVARCHAR(50), NEWID()), source.RoleId, @MenuId, @MenuType, source.IsOffice
FROM dbo.Sys_RolePower source
WHERE source.MenuId = @MaterialMenuId
AND NOT EXISTS
(
SELECT 1
FROM dbo.Sys_RolePower target
WHERE target.RoleId = source.RoleId
AND target.MenuId = @MenuId
);
INSERT INTO dbo.Sys_ButtonPower (ButtonPowerID, RoleId, MenuId, ButtonToMenuId)
SELECT CONVERT(NVARCHAR(50), NEWID()), sourcePower.RoleId, @MenuId, targetButton.ButtonToMenuId
FROM dbo.Sys_ButtonPower sourcePower
INNER JOIN dbo.Sys_ButtonToMenu sourceButton
ON sourceButton.ButtonToMenuId = sourcePower.ButtonToMenuId
AND sourceButton.MenuId = @MaterialMenuId
INNER JOIN dbo.Sys_ButtonToMenu targetButton
ON targetButton.MenuId = @MenuId
AND targetButton.ButtonName = sourceButton.ButtonName
WHERE sourcePower.MenuId = @MaterialMenuId
AND NOT EXISTS
(
SELECT 1
FROM dbo.Sys_ButtonPower targetPower
WHERE targetPower.RoleId = sourcePower.RoleId
AND targetPower.MenuId = @MenuId
AND targetPower.ButtonToMenuId = targetButton.ButtonToMenuId
);
COMMIT TRANSACTION;