feat: 完善设计报工与研发工时功能

This commit is contained in:
2026-07-24 14:59:37 +08:00
parent e7554da9c7
commit 62f7632fc6
9 changed files with 1338 additions and 86 deletions

View File

@@ -0,0 +1,122 @@
USE [YL_MESDB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE OR ALTER PROCEDURE [dbo].[设计报工_工时校验_查询]
@DID int = NULL,
@项目号 nvarchar(100) = N'',
@物料编码 nvarchar(100) = N'',
@类别 nvarchar(100) = N'',
@操作人 nvarchar(100) = N'',
@开始日期 nvarchar(30) = N'',
@结束日期 nvarchar(30) = N'',
@校验状态 nvarchar(50) = N'未校验',
@当前操作人 nvarchar(100) = N'',
@角色编号 nvarchar(100) = N'',
@PageCurrent int = 1,
@PageSize int = 20,
@PageCount int = NULL OUTPUT,
@ItemCount int = NULL OUTPUT
AS
BEGIN
SET NOCOUNT ON;
SET @PageCurrent = CASE WHEN ISNULL(@PageCurrent, 0) < 1 THEN 1 ELSE @PageCurrent END;
SET @PageSize = CASE
WHEN ISNULL(@PageSize, 0) < 1 THEN 20
WHEN @PageSize > 100 THEN 100
ELSE @PageSize
END;
DECLARE @开始 datetime = TRY_CONVERT(datetime, NULLIF(@开始日期, N''));
DECLARE @结束 datetime = TRY_CONVERT(datetime, NULLIF(@结束日期, N''));
DECLARE @当前用户 nvarchar(100) = LTRIM(RTRIM(ISNULL(@当前操作人, N'')));
DECLARE @可查看全部 bit = CASE WHEN EXISTS
(
SELECT 1
FROM [dbo].[登录基础数据_角色信息]
WHERE CONVERT(nvarchar(100), [Roles_number]) = @角色编号
AND ([Roles_Function] LIKE N'%领导%' OR [Roles_Function] LIKE N'%管理员%')
) THEN 1 ELSE 0 END;
CREATE TABLE #FilteredRecords
(
[RID] int NOT NULL PRIMARY KEY
);
INSERT INTO #FilteredRecords ([RID])
SELECT r.[RID]
FROM [dbo].[MES_设计报工_记录] AS r
INNER JOIN [dbo].[MES_设计报工_任务] AS t ON r.[DID] = t.[DID]
WHERE
(@DID IS NULL OR @DID = 0 OR r.[DID] = @DID)
AND (ISNULL(@项目号, N'') = N'' OR t.[项目号] LIKE N'%' + @项目号 + N'%')
AND (ISNULL(@物料编码, N'') = N'' OR t.[物料编码] LIKE N'%' + @物料编码 + N'%')
AND (ISNULL(@类别, N'') = N'' OR t.[类别] LIKE N'%' + @类别 + N'%')
AND (ISNULL(@操作人, N'') = N'' OR r.[操作人] LIKE N'%' + @操作人 + N'%')
AND (@开始 IS NULL OR r.[开始时间] >= @开始)
AND (@结束 IS NULL OR r.[开始时间] < DATEADD(day, 1, @结束))
AND
(
ISNULL(@校验状态, N'') = N''
OR @校验状态 = N'全部'
OR (@校验状态 = N'已校验' AND r.[已校验] = 1)
OR (@校验状态 = N'未校验' AND r.[已校验] = 0)
)
AND
(
@可查看全部 = 1
OR
(
NULLIF(@当前用户, N'') IS NOT NULL
AND
(
LTRIM(RTRIM(ISNULL(t.[创建人], N''))) = @当前用户
OR LTRIM(RTRIM(ISNULL(r.[操作人], N''))) = @当前用户
)
)
);
SELECT @ItemCount = COUNT(1) FROM #FilteredRecords;
SET @PageCount = CASE
WHEN @ItemCount = 0 THEN 0
ELSE CEILING(CONVERT(decimal(18, 2), @ItemCount) / @PageSize)
END;
SELECT
r.[RID],
r.[DID],
t.[项目号],
t.[物料编码],
t.[物料名称],
t.[图号],
t.[类别],
t.[任务描述],
t.[指派对象],
r.[操作人ID],
r.[操作人],
CONVERT(varchar(19), r.[开始时间], 120) AS [开始时间],
CONVERT(varchar(19), r.[结束时间], 120) AS [结束时间],
r.[工时秒数],
CAST(CAST(ISNULL(r.[工时秒数], 0) / 3600.0 AS decimal(18, 2)) AS varchar(30)) AS [工时小时],
r.[报工状态],
r.[已校验],
CASE WHEN r.[已校验] = 1 THEN N'已校验' ELSE N'未校验' END AS [校验状态],
r.[校验人],
CONVERT(varchar(19), r.[校验时间], 120) AS [校验时间],
r.[进度说明],
r.[备注],
t.[单据状态]
FROM #FilteredRecords AS f
INNER JOIN [dbo].[MES_设计报工_记录] AS r ON f.[RID] = r.[RID]
INNER JOIN [dbo].[MES_设计报工_任务] AS t ON r.[DID] = t.[DID]
ORDER BY r.[RID] DESC
OFFSET (@PageCurrent - 1) * @PageSize ROWS
FETCH NEXT @PageSize ROWS ONLY;
END
GO

View File

@@ -0,0 +1,204 @@
USE [YL_MESDB];
GO
SET ANSI_NULLS ON;
GO
SET QUOTED_IDENTIFIER ON;
GO
CREATE OR ALTER PROCEDURE [dbo].[设计报工_任务_查询]
@DID int = NULL,
@项目号 nvarchar(100) = N'',
@物料编码 nvarchar(100) = N'',
@图号 nvarchar(100) = N'',
@类别 nvarchar(100) = N'',
@任务来源 nvarchar(200) = N'',
@关联父件物料编码 nvarchar(100) = N'',
@预计开始时间_Start nvarchar(30) = N'',
@预计开始时间_End nvarchar(30) = N'',
@预计结束时间_Start nvarchar(30) = N'',
@预计结束时间_End nvarchar(30) = N'',
@单据状态 nvarchar(50) = N'',
@当前操作人ID nvarchar(100) = N'',
@当前操作人 nvarchar(100) = N'',
@角色编号 nvarchar(100) = N''
AS
BEGIN
SET NOCOUNT ON;
DECLARE @预计开始日期1 datetime = TRY_CONVERT(datetime, NULLIF(@预计开始时间_Start, N''));
DECLARE @预计开始日期2 datetime = TRY_CONVERT(datetime, NULLIF(@预计开始时间_End, N''));
DECLARE @预计结束日期1 datetime = TRY_CONVERT(datetime, NULLIF(@预计结束时间_Start, N''));
DECLARE @预计结束日期2 datetime = TRY_CONVERT(datetime, NULLIF(@预计结束时间_End, N''));
DECLARE @可查看全部 bit = CASE WHEN EXISTS
(
SELECT 1
FROM [dbo].[登录基础数据_角色信息]
WHERE CONVERT(nvarchar(100), [Roles_number]) = @角色编号
AND ([Roles_Function] LIKE N'%领导%' OR [Roles_Function] LIKE N'%管理员%')
) THEN 1 ELSE 0 END;
SELECT TOP 1000
ISNULL(task_notes.[领导批示], N'') AS [领导批示],
t.[DID],
t.[项目号],
t.[物料编码],
t.[物料名称],
t.[图号],
t.[类别],
t.[任务来源],
t.[任务描述],
t.[关联父件物料编码],
t.[关联父件物料名称],
t.[设计要求],
t.[研发立项号],
t.[研发目的],
t.[对齐可见ID],
t.[对齐可见],
t.[指派对象ID],
t.[指派对象],
CONVERT(varchar(19), t.[预计开始时间], 120) AS [预计开始时间],
CONVERT(varchar(19), t.[预计结束时间], 120) AS [预计结束时间],
t.[单据状态],
CONVERT(varchar(19), t.[创建日期], 120) AS [创建日期],
t.[创建人],
t.[最后编辑人],
CONVERT(varchar(19), t.[最后编辑时间], 120) AS [最后编辑时间],
t.[备注],
ISNULL(r.[报工次数], 0) AS [报工次数],
ISNULL(r.[未结束报工数], 0) AS [未结束报工数],
ISNULL(r.[当前用户未结束报工数], 0) AS [当前用户未结束报工数],
ISNULL(p.[未结束报工人员], N'') AS [未结束报工人员],
CONVERT(varchar(19), r.[最后开始时间], 120) AS [最后开始时间],
CONVERT(varchar(19), r.[最后结束时间], 120) AS [最后结束时间],
ISNULL(progress_notes.[进度说明], N'') AS [进度说明],
ISNULL(task_notes.[异常说明], N'') AS [异常说明],
ISNULL(task_notes.[奇思妙想], N'') AS [奇思妙想]
FROM [dbo].[MES_设计报工_任务] AS t
OUTER APPLY
(
SELECT
COUNT(1) AS [报工次数],
SUM(CASE WHEN rr.[结束时间] IS NULL THEN 1 ELSE 0 END) AS [未结束报工数],
SUM(CASE
WHEN rr.[结束时间] IS NULL
AND
(
(NULLIF(@当前操作人ID, N'') IS NOT NULL AND ISNULL(rr.[操作人ID], N'') = @当前操作人ID)
OR (NULLIF(@当前操作人ID, N'') IS NULL AND NULLIF(@当前操作人, N'') IS NOT NULL AND ISNULL(rr.[操作人], N'') = @当前操作人)
)
THEN 1 ELSE 0 END) AS [当前用户未结束报工数],
MAX(rr.[开始时间]) AS [最后开始时间],
MAX(rr.[结束时间]) AS [最后结束时间]
FROM [dbo].[MES_设计报工_记录] AS rr
WHERE rr.[DID] = t.[DID]
) AS r
OUTER APPLY
(
SELECT STRING_AGG(CONVERT(nvarchar(max), x.[操作人标识]), N'、') AS [未结束报工人员]
FROM
(
SELECT DISTINCT COALESCE(NULLIF(rr2.[操作人], N''), NULLIF(rr2.[操作人ID], N''), N'未填写操作人') AS [操作人标识]
FROM [dbo].[MES_设计报工_记录] AS rr2
WHERE rr2.[DID] = t.[DID]
AND rr2.[结束时间] IS NULL
) AS x
) AS p
OUTER APPLY
(
SELECT STRING_AGG(
CONVERT(nvarchar(max),
CONVERT(nvarchar(19), rr3.[结束时间], 120)
+ N' '
+ COALESCE(NULLIF(LTRIM(RTRIM(rr3.[操作人])), N''), NULLIF(LTRIM(RTRIM(rr3.[操作人ID])), N''), N'未填写编辑人')
+ NCHAR(13) + NCHAR(10)
+ rr3.[进度说明]),
NCHAR(13) + NCHAR(10) + NCHAR(13) + NCHAR(10)
) WITHIN GROUP (ORDER BY rr3.[结束时间] DESC, rr3.[RID] DESC) AS [进度说明]
FROM [dbo].[MES_设计报工_记录] AS rr3
WHERE rr3.[DID] = t.[DID]
AND NULLIF(LTRIM(RTRIM(rr3.[进度说明])), N'') IS NOT NULL
) AS progress_notes
OUTER APPLY
(
SELECT
STRING_AGG(
CASE WHEN n.[说明类型] = N'领导批示'
THEN CONVERT(nvarchar(max),
CONVERT(nvarchar(19), n.[录入时间], 120)
+ N' '
+ COALESCE(NULLIF(LTRIM(RTRIM(n.[操作人])), N''), NULLIF(LTRIM(RTRIM(n.[操作人ID])), N''), N'未填写编辑人')
+ NCHAR(13) + NCHAR(10)
+ n.[说明内容]) END,
NCHAR(13) + NCHAR(10) + NCHAR(13) + NCHAR(10)
) WITHIN GROUP (ORDER BY n.[录入时间] DESC, n.[SID] DESC) AS [领导批示],
STRING_AGG(
CASE WHEN n.[说明类型] = N'异常说明'
THEN CONVERT(nvarchar(max),
CONVERT(nvarchar(19), n.[录入时间], 120)
+ N' '
+ COALESCE(NULLIF(LTRIM(RTRIM(n.[操作人])), N''), NULLIF(LTRIM(RTRIM(n.[操作人ID])), N''), N'未填写编辑人')
+ NCHAR(13) + NCHAR(10)
+ n.[说明内容]) END,
NCHAR(13) + NCHAR(10) + NCHAR(13) + NCHAR(10)
) WITHIN GROUP (ORDER BY n.[录入时间] DESC, n.[SID] DESC) AS [异常说明],
STRING_AGG(
CASE WHEN n.[说明类型] = N'奇思妙想'
THEN CONVERT(nvarchar(max),
CONVERT(nvarchar(19), n.[录入时间], 120)
+ N' '
+ COALESCE(NULLIF(LTRIM(RTRIM(n.[操作人])), N''), NULLIF(LTRIM(RTRIM(n.[操作人ID])), N''), N'未填写编辑人')
+ NCHAR(13) + NCHAR(10)
+ n.[说明内容]) END,
NCHAR(13) + NCHAR(10) + NCHAR(13) + NCHAR(10)
) WITHIN GROUP (ORDER BY n.[录入时间] DESC, n.[SID] DESC) AS [奇思妙想]
FROM [dbo].[MES_设计报工_任务说明] AS n
WHERE n.[DID] = t.[DID]
) AS task_notes
WHERE
(@DID IS NULL OR @DID = 0 OR t.[DID] = @DID)
AND (ISNULL(@项目号, N'') = N'' OR t.[项目号] LIKE N'%' + @项目号 + N'%')
AND (ISNULL(@物料编码, N'') = N'' OR t.[物料编码] LIKE N'%' + @物料编码 + N'%')
AND (ISNULL(@图号, N'') = N'' OR t.[图号] LIKE N'%' + @图号 + N'%')
AND (ISNULL(@类别, N'') = N'' OR t.[类别] LIKE N'%' + @类别 + N'%')
AND (ISNULL(@任务来源, N'') = N'' OR t.[任务来源] LIKE N'%' + @任务来源 + N'%')
AND (ISNULL(@关联父件物料编码, N'') = N'' OR t.[关联父件物料编码] LIKE N'%' + @关联父件物料编码 + N'%')
AND
(
ISNULL(@单据状态, N'') = N''
OR @单据状态 = N'全部'
OR (@单据状态 = N'未完成' AND ISNULL(t.[单据状态], N'') <> N'已完成')
OR (@单据状态 <> N'未完成' AND t.[单据状态] = @单据状态)
)
AND (@预计开始日期1 IS NULL OR t.[预计开始时间] >= @预计开始日期1)
AND (@预计开始日期2 IS NULL OR t.[预计开始时间] < DATEADD(day, 1, @预计开始日期2))
AND (@预计结束日期1 IS NULL OR t.[预计结束时间] >= @预计结束日期1)
AND (@预计结束日期2 IS NULL OR t.[预计结束时间] < DATEADD(day, 1, @预计结束日期2))
AND
(
@可查看全部 = 1
OR (NULLIF(@当前操作人, N'') IS NOT NULL AND ISNULL(t.[创建人], N'') = @当前操作人)
OR
(
NULLIF(@当前操作人ID, N'') IS NOT NULL
AND CHARINDEX(N',' + @当前操作人ID + N',', N',' + ISNULL(t.[对齐可见ID], N'') + N',') > 0
)
OR
(
NULLIF(@当前操作人, N'') IS NOT NULL
AND CHARINDEX(N',' + @当前操作人 + N',', N',' + ISNULL(t.[对齐可见], N'') + N',') > 0
)
OR
(
NULLIF(@当前操作人ID, N'') IS NOT NULL
AND CHARINDEX(N',' + @当前操作人ID + N',', N',' + ISNULL(t.[指派对象ID], N'') + N',') > 0
)
OR
(
NULLIF(@当前操作人, N'') IS NOT NULL
AND CHARINDEX(N',' + @当前操作人 + N',', N',' + ISNULL(t.[指派对象], N'') + N',') > 0
)
)
ORDER BY t.[DID] DESC;
END
GO

View File

@@ -0,0 +1,197 @@
USE [YL_MESDB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE OR ALTER PROCEDURE [dbo].[设计报工_研发财务工时_查询]
@开始日期 nvarchar(30) = N'',
@结束日期 nvarchar(30) = N'',
@操作人 nvarchar(100) = N'',
@项目号 nvarchar(100) = N'',
@物料编码 nvarchar(100) = N'',
@类别 nvarchar(100) = N'',
@任务来源 nvarchar(200) = N'',
@研发立项号 nvarchar(100) = N'',
@DID int = NULL,
@当前操作人 nvarchar(100) = N'',
@角色编号 nvarchar(100) = N''
AS
BEGIN
SET NOCOUNT ON;
DECLARE @开始 datetime = TRY_CONVERT(datetime, NULLIF(@开始日期, N''));
DECLARE @结束 datetime = TRY_CONVERT(datetime, NULLIF(@结束日期, N''));
DECLARE @当前用户 nvarchar(100) = LTRIM(RTRIM(ISNULL(@当前操作人, N'')));
DECLARE @可查看全部 bit = CASE WHEN EXISTS
(
SELECT 1
FROM [dbo].[登录基础数据_角色信息]
WHERE CONVERT(nvarchar(100), [Roles_number]) = @角色编号
AND ([Roles_Function] LIKE N'%领导%' OR [Roles_Function] LIKE N'%管理员%')
) THEN 1 ELSE 0 END;
SELECT
r.[RID],
r.[DID],
ISNULL(r.[操作人], N'') AS [操作人],
CONVERT(varchar(10), r.[开始时间], 120) AS [工作日期],
CONVERT(varchar(19), t.[创建日期], 120) AS [创建日期],
ISNULL(t.[类别], N'') AS [类别],
ISNULL(t.[任务来源], N'') AS [任务来源],
ISNULL(t.[任务描述], N'') AS [任务描述],
ISNULL(t.[设计要求], N'') AS [设计要求],
ISNULL(t.[对齐可见], N'') AS [对齐可见],
ISNULL(t.[指派对象], N'') AS [指派对象],
CONVERT(varchar(19), t.[预计开始时间], 120) AS [预计开始时间],
CONVERT(varchar(19), t.[预计结束时间], 120) AS [预计结束时间],
ISNULL(t.[项目号], N'') AS [项目号],
ISNULL(t.[物料编码], N'') AS [物料编码],
ISNULL(t.[物料名称], N'') AS [物料名称],
ISNULL(t.[图号], N'') AS [图号],
ISNULL(t.[关联父件物料编码], N'') AS [关联父件物料编码],
ISNULL(t.[关联父件物料名称], N'') AS [关联父件物料名称],
ISNULL(t.[研发立项号], N'') AS [研发立项号],
ISNULL(t.[研发目的], N'') AS [研发目的],
ISNULL(t.[单据状态], N'') AS [任务状态],
ISNULL(t.[创建人], N'') AS [创建人],
ISNULL(t.[备注], N'') AS [任务备注],
CONVERT(varchar(19), r.[开始时间], 120) AS [开始时间],
CONVERT(varchar(19), r.[结束时间], 120) AS [结束时间],
CAST(1 AS int) AS [报工次数],
CAST(ISNULL(r.[工时秒数], 0) / 3600.0 AS decimal(18, 2)) AS [工时小时],
CASE WHEN r.[已校验] = 1 THEN N'已校验' ELSE N'未校验' END AS [校验状态],
ISNULL(r.[进度说明], N'') AS [进度说明],
ISNULL(r.[备注], N'') AS [报工备注]
FROM [dbo].[MES_设计报工_记录] AS r
INNER JOIN [dbo].[MES_设计报工_任务] AS t ON r.[DID] = t.[DID]
WHERE
r.[开始时间] IS NOT NULL
AND r.[结束时间] IS NOT NULL
AND (@开始 IS NULL OR r.[开始时间] >= @开始)
AND (@结束 IS NULL OR r.[开始时间] < DATEADD(day, 1, @结束))
AND (ISNULL(@操作人, N'') = N'' OR r.[操作人] LIKE N'%' + @操作人 + N'%')
AND (ISNULL(@项目号, N'') = N'' OR t.[项目号] LIKE N'%' + @项目号 + N'%')
AND (ISNULL(@物料编码, N'') = N'' OR t.[物料编码] LIKE N'%' + @物料编码 + N'%')
AND (ISNULL(@类别, N'') = N'' OR t.[类别] LIKE N'%' + @类别 + N'%')
AND (ISNULL(@任务来源, N'') = N'' OR t.[任务来源] LIKE N'%' + @任务来源 + N'%')
AND (ISNULL(@研发立项号, N'') = N'' OR t.[研发立项号] LIKE N'%' + @研发立项号 + N'%')
AND (@DID IS NULL OR @DID = 0 OR r.[DID] = @DID)
AND
(
@可查看全部 = 1
OR
(
NULLIF(@当前用户, N'') IS NOT NULL
AND
(
LTRIM(RTRIM(ISNULL(t.[创建人], N''))) = @当前用户
OR LTRIM(RTRIM(ISNULL(r.[操作人], N''))) = @当前用户
)
)
)
ORDER BY r.[开始时间] DESC, r.[RID] DESC;
END
GO
SET NOCOUNT ON;
SET XACT_ABORT ON;
BEGIN TRANSACTION;
DECLARE @TargetMenus TABLE
(
[账号代码] int NOT NULL PRIMARY KEY,
[研发管理ID] int NOT NULL
);
INSERT INTO @TargetMenus ([账号代码], [研发管理ID])
SELECT
parent_menu.[账号代码],
MIN(parent_menu.[id]) AS [研发管理ID]
FROM [dbo].[登录基础数据_二级菜单] AS parent_menu WITH (UPDLOCK, HOLDLOCK)
WHERE parent_menu.[pid] = 0
AND parent_menu.[是否启用] = 1
AND
(
parent_menu.[title] = N'研发管理'
OR parent_menu.[path] = '/ResearchManagement'
OR parent_menu.[name] = 'ResearchManagement'
)
GROUP BY parent_menu.[账号代码];
UPDATE menu_row
SET
menu_row.[pid] = target.[研发管理ID],
menu_row.[path] = 'DesignReportTask/FinancialHours/index',
menu_row.[componet] = '/ProductionManagement/DesignReportTask/FinancialHours/index',
menu_row.[redirect] = NULL,
menu_row.[name] = 'DesignReportFinancialHours',
menu_row.[title] = N'研发财务工时',
menu_row.[icon] = 'WhiteCollarBonusesSummary',
menu_row.[模块代码] = menu_row.[id],
menu_row.[是否启用] = 1,
menu_row.[操作时间] = GETDATE()
FROM [dbo].[登录基础数据_二级菜单] AS menu_row
INNER JOIN @TargetMenus AS target ON target.[账号代码] = menu_row.[账号代码]
WHERE
menu_row.[path] = 'DesignReportTask/FinancialHours/index'
OR menu_row.[componet] = '/ProductionManagement/DesignReportTask/FinancialHours/index'
OR menu_row.[name] = 'DesignReportFinancialHours'
OR menu_row.[title] = N'研发财务工时';
INSERT INTO [dbo].[登录基础数据_二级菜单]
([id], [pid], [path], [componet], [redirect], [name], [title], [icon], [账号代码], [模块代码], [是否启用], [操作时间])
SELECT
next_id.[新菜单ID],
target.[研发管理ID],
'DesignReportTask/FinancialHours/index',
'/ProductionManagement/DesignReportTask/FinancialHours/index',
NULL,
'DesignReportFinancialHours',
N'研发财务工时',
'WhiteCollarBonusesSummary',
target.[账号代码],
next_id.[新菜单ID],
1,
GETDATE()
FROM @TargetMenus AS target
CROSS APPLY
(
SELECT ISNULL(MAX(existing.[id]), 0) + 1 AS [新菜单ID]
FROM [dbo].[登录基础数据_二级菜单] AS existing WITH (UPDLOCK, HOLDLOCK)
WHERE existing.[账号代码] = target.[账号代码]
) AS next_id
WHERE NOT EXISTS
(
SELECT 1
FROM [dbo].[登录基础数据_二级菜单] AS existing WITH (UPDLOCK, HOLDLOCK)
WHERE existing.[账号代码] = target.[账号代码]
AND
(
existing.[path] = 'DesignReportTask/FinancialHours/index'
OR existing.[componet] = '/ProductionManagement/DesignReportTask/FinancialHours/index'
OR existing.[name] = 'DesignReportFinancialHours'
OR existing.[title] = N'研发财务工时'
)
);
COMMIT TRANSACTION;
SELECT
menu_row.[id],
menu_row.[pid],
menu_row.[path],
menu_row.[componet],
menu_row.[name],
menu_row.[title],
menu_row.[icon],
menu_row.[账号代码],
menu_row.[是否启用]
FROM [dbo].[登录基础数据_二级菜单] AS menu_row
WHERE menu_row.[title] = N'研发财务工时'
ORDER BY menu_row.[账号代码], menu_row.[id];
GO