feat: 完善设计报工与研发工时功能
This commit is contained in:
122
db_backups/add_design_report_check_pagination_20260723.sql
Normal file
122
db_backups/add_design_report_check_pagination_20260723.sql
Normal 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
|
||||
204
db_backups/add_design_report_task_view_permissions_20260723.sql
Normal file
204
db_backups/add_design_report_task_view_permissions_20260723.sql
Normal 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
|
||||
197
db_backups/add_research_financial_hours_20260723.sql
Normal file
197
db_backups/add_research_financial_hours_20260723.sql
Normal 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
|
||||
Reference in New Issue
Block a user