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