feat: 增加工时报表导出并调整质量菜单

This commit is contained in:
2026-07-11 17:56:29 +08:00
parent 345f39386d
commit 078474631f
3 changed files with 244 additions and 7 deletions

View File

@@ -25,7 +25,7 @@ BEGIN
(
SELECT
src.[],
COALESCE(prodParent.[id], src.[pid]) AS [pid],
qualityParent.[id] AS [pid],
src.[icon],
src.[AddData],
src.[DeleteData],
@@ -37,13 +37,15 @@ BEGIN
SELECT TOP (1) rp.[id]
FROM [dbo].[_二级菜单] AS rp
WHERE rp.[] = src.[]
AND rp.[pid] = 0
AND rp.[] = 1
AND rp.[title] = N'生产管理'
AND (rp.[title] = N'质量管理' OR rp.[path] = '/QualityManagement' OR rp.[name] = 'QualityManagement')
ORDER BY rp.[id]
) AS prodParent
) AS qualityParent
WHERE src.[] = 1
AND (@TargetRole IS NULL OR src.[] = @TargetRole)
AND (src.[path] = @SourcePath OR src.[componet] = @SourceComponent OR src.[title] = N'生产计划跟踪')
AND qualityParent.[id] IS NOT NULL
AND NOT EXISTS
(
SELECT 1
@@ -77,7 +79,7 @@ BEGIN
SELECT
ROW_NUMBER() OVER (ORDER BY src.[], src.[id]) AS rn,
src.[],
COALESCE(prodParent.[id], src.[pid]) AS [pid],
qualityParent.[id] AS [pid],
src.[icon],
src.[AddData],
src.[DeleteData],
@@ -89,13 +91,15 @@ BEGIN
SELECT TOP (1) rp.[id]
FROM [dbo].[_二级菜单] AS rp
WHERE rp.[] = src.[]
AND rp.[pid] = 0
AND rp.[] = 1
AND rp.[title] = N'生产管理'
AND (rp.[title] = N'质量管理' OR rp.[path] = '/QualityManagement' OR rp.[name] = 'QualityManagement')
ORDER BY rp.[id]
) AS prodParent
) AS qualityParent
WHERE src.[] = 1
AND (@TargetRole IS NULL OR src.[] = @TargetRole)
AND (src.[path] = @SourcePath OR src.[componet] = @SourceComponent OR src.[title] = N'生产计划跟踪')
AND qualityParent.[id] IS NOT NULL
AND NOT EXISTS
(
SELECT 1
@@ -132,6 +136,24 @@ END;
UPDATE [dbo].[_二级菜单]
SET
[pid] = COALESCE
(
(
SELECT TOP (1) qualityParent.[id]
FROM [dbo].[_二级菜单] AS qualityParent
WHERE qualityParent.[] = [dbo].[_二级菜单].[]
AND qualityParent.[pid] = 0
AND qualityParent.[] = 1
AND
(
qualityParent.[title] = N'质量管理'
OR qualityParent.[path] = '/QualityManagement'
OR qualityParent.[name] = 'QualityManagement'
)
ORDER BY qualityParent.[id]
),
[pid]
),
[path] = @Path,
[componet] = @Component,
[name] = @Name,
@@ -144,4 +166,3 @@ SELECT [id], [pid], [path], [componet], [name], [title], [icon], [账号代码],
FROM [dbo].[_二级菜单]
WHERE [path] = @Path OR [componet] = @Component OR [title] = @Title
ORDER BY [], [id];

View File

@@ -0,0 +1,124 @@
USE [YL_MESDB];
GO
SET NOCOUNT ON;
SET XACT_ABORT ON;
DECLARE @QualityMenuId int = 4;
DECLARE @TargetAccounts TABLE
(
[] int PRIMARY KEY
);
INSERT INTO @TargetAccounts ([])
SELECT DISTINCT []
FROM [dbo].[_二级菜单]
WHERE [path] = 'ProductPassRateWorkstation/index'
OR [componet] = '/ProductionManagement/ProductPassRateWorkstation/index'
OR [name] = 'ProductPassRateWorkstation'
OR [title] IN (N'产品合格率工位', N'产品合格率(工位)');
IF NOT EXISTS (SELECT 1 FROM @TargetAccounts)
BEGIN
THROW 50001, N'未找到产品合格率工位菜单,未执行迁移。', 1;
END;
BEGIN TRANSACTION;
IF EXISTS
(
SELECT 1
FROM @TargetAccounts AS target
INNER JOIN [dbo].[_二级菜单] AS menu WITH (UPDLOCK, HOLDLOCK)
ON menu.[] = target.[]
AND menu.[id] = @QualityMenuId
WHERE menu.[pid] <> 0
OR menu.[path] <> '/QualityManagement'
OR menu.[name] <> 'QualityManagement'
OR menu.[title] <> N'质量管理'
)
BEGIN
THROW 50002, N'目标账号的菜单 ID 4 已被其他菜单占用,未执行迁移。', 1;
END;
INSERT INTO [dbo].[_二级菜单]
([id], [pid], [path], [componet], [redirect], [name], [title], [icon], [], [], [], [])
SELECT
@QualityMenuId,
0,
'/QualityManagement',
'/layout/Layout',
NULL,
'QualityManagement',
N'质量管理',
'KKIMaintenance',
target.[],
@QualityMenuId,
GETDATE(),
1
FROM @TargetAccounts AS target
WHERE NOT EXISTS
(
SELECT 1
FROM [dbo].[_二级菜单] AS existing WITH (UPDLOCK, HOLDLOCK)
WHERE existing.[] = target.[]
AND existing.[id] = @QualityMenuId
);
UPDATE qualityMenu
SET
qualityMenu.[pid] = 0,
qualityMenu.[path] = '/QualityManagement',
qualityMenu.[componet] = '/layout/Layout',
qualityMenu.[redirect] = NULL,
qualityMenu.[name] = 'QualityManagement',
qualityMenu.[title] = N'质量管理',
qualityMenu.[icon] = 'KKIMaintenance',
qualityMenu.[] = @QualityMenuId,
qualityMenu.[] = 1,
qualityMenu.[] = GETDATE()
FROM [dbo].[_二级菜单] AS qualityMenu
INNER JOIN @TargetAccounts AS target
ON target.[] = qualityMenu.[]
WHERE qualityMenu.[id] = @QualityMenuId;
UPDATE targetMenu
SET
targetMenu.[pid] = @QualityMenuId,
targetMenu.[path] = 'ProductPassRateWorkstation/index',
targetMenu.[componet] = '/ProductionManagement/ProductPassRateWorkstation/index',
targetMenu.[redirect] = NULL,
targetMenu.[name] = 'ProductPassRateWorkstation',
targetMenu.[title] = N'产品合格率(工位)',
targetMenu.[] = targetMenu.[id],
targetMenu.[] = 1,
targetMenu.[] = GETDATE()
FROM [dbo].[_二级菜单] AS targetMenu
INNER JOIN @TargetAccounts AS target
ON target.[] = targetMenu.[]
WHERE targetMenu.[path] = 'ProductPassRateWorkstation/index'
OR targetMenu.[componet] = '/ProductionManagement/ProductPassRateWorkstation/index'
OR targetMenu.[name] = 'ProductPassRateWorkstation'
OR targetMenu.[title] IN (N'产品合格率工位', N'产品合格率(工位)');
COMMIT TRANSACTION;
SELECT
menu.[id],
menu.[pid],
menu.[path],
menu.[componet],
menu.[name],
menu.[title],
menu.[],
menu.[],
menu.[]
FROM [dbo].[_二级菜单] AS menu
INNER JOIN @TargetAccounts AS target
ON target.[] = menu.[]
WHERE menu.[id] = @QualityMenuId
OR menu.[path] = 'ProductPassRateWorkstation/index'
OR menu.[componet] = '/ProductionManagement/ProductPassRateWorkstation/index'
ORDER BY menu.[], menu.[pid], menu.[id];
GO