chore: 上传当前工作区修改

This commit is contained in:
2026-07-10 15:19:26 +08:00
parent bd9ca09983
commit a6a92ffeb2
35 changed files with 3031 additions and 778 deletions

View File

@@ -0,0 +1,413 @@
USE [YL_MESDB];
GO
IF COL_LENGTH(N'[dbo].[MES_设计报工_任务]', N'类别') IS NULL
BEGIN
ALTER TABLE [dbo].[MES_设计报工_任务] ADD [] nvarchar(100) NULL;
END
GO
CREATE OR ALTER PROCEDURE [dbo].[_任务_查询]
@DID int = NULL,
@ nvarchar(100) = N'',
@ nvarchar(100) = N'',
@ nvarchar(100) = N'',
@ nvarchar(100) = 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''
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''));
SELECT TOP 1000
t.[DID],
t.[],
t.[],
t.[],
t.[],
t.[],
t.[],
t.[],
t.[],
t.[],
t.[],
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 []
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
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 @ = N'全部' OR 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))
ORDER BY t.[DID] DESC;
END
GO
CREATE OR ALTER PROCEDURE [dbo].[_任务_新增]
@ nvarchar(100) = N'',
@ nvarchar(100) = N'',
@ nvarchar(200) = N'',
@ nvarchar(100) = N'',
@ nvarchar(100) = N'',
@ nvarchar(500) = N'',
@ nvarchar(100) = N'',
@ nvarchar(200) = N'',
@ nvarchar(max) = N'',
@ nvarchar(100) = N'',
@ nvarchar(500) = N'',
@ID nvarchar(1000) = N'',
@ nvarchar(1000) = N'',
@ nvarchar(30) = N'',
@ nvarchar(30) = N'',
@ nvarchar(100) = N'',
@ nvarchar(500) = N''
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO [dbo].[MES_设计报工_任务]
(
[], [], [], [], [], [],
[], [], [],
[], [], [ID], [],
[], [], [],
[], [], [], []
)
VALUES
(
NULLIF(@, N''), NULLIF(@, N''), NULLIF(@, N''), NULLIF(@, N''), NULLIF(@, N''), NULLIF(@, N''),
NULLIF(@, N''), NULLIF(@, N''), NULLIF(@, N''),
NULLIF(@, N''), NULLIF(@, N''), NULLIF(@ID, N''), NULLIF(@, N''),
TRY_CONVERT(datetime, NULLIF(@, N'')), TRY_CONVERT(datetime, NULLIF(@, N'')), N'待开始',
NULLIF(@, N''), NULLIF(@, N''), GETDATE(), NULLIF(@, N'')
);
SELECT CAST(1 AS int) AS [result], N'新增成功' AS [message], SCOPE_IDENTITY() AS [DID];
END
GO
CREATE OR ALTER PROCEDURE [dbo].[_任务_编辑]
@DID int,
@ nvarchar(100) = N'',
@ nvarchar(100) = N'',
@ nvarchar(200) = N'',
@ nvarchar(100) = N'',
@ nvarchar(100) = N'',
@ nvarchar(500) = N'',
@ nvarchar(100) = N'',
@ nvarchar(200) = N'',
@ nvarchar(max) = N'',
@ nvarchar(100) = N'',
@ nvarchar(500) = N'',
@ID nvarchar(1000) = N'',
@ nvarchar(1000) = N'',
@ nvarchar(30) = N'',
@ nvarchar(30) = N'',
@ nvarchar(100) = N'',
@ nvarchar(500) = N''
AS
BEGIN
SET NOCOUNT ON;
IF NOT EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_任务] WHERE [DID] = @DID)
BEGIN
SELECT CAST(0 AS int) AS [result], N'任务不存在' AS [message];
RETURN;
END
UPDATE [dbo].[MES_设计报工_任务]
SET
[] = NULLIF(@, N''),
[] = NULLIF(@, N''),
[] = NULLIF(@, N''),
[] = NULLIF(@, N''),
[] = NULLIF(@, N''),
[] = NULLIF(@, N''),
[] = NULLIF(@, N''),
[] = NULLIF(@, N''),
[] = NULLIF(@, N''),
[] = NULLIF(@, N''),
[] = NULLIF(@, N''),
[ID] = NULLIF(@ID, N''),
[] = NULLIF(@, N''),
[] = TRY_CONVERT(datetime, NULLIF(@, N'')),
[] = TRY_CONVERT(datetime, NULLIF(@, N'')),
[] = NULLIF(@, N''),
[] = GETDATE(),
[] = NULLIF(@, N'')
WHERE [DID] = @DID;
SELECT CAST(1 AS int) AS [result], N'编辑成功' AS [message];
END
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''
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ datetime = TRY_CONVERT(datetime, NULLIF(@, N''));
DECLARE @ datetime = TRY_CONVERT(datetime, NULLIF(@, N''));
SELECT TOP 1000
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.[],
t.[]
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)
)
ORDER BY r.[RID] DESC;
END
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'未校验'
AS
BEGIN
SET NOCOUNT ON;
EXEC [dbo].[_记录_查询]
@DID = @DID,
@ = @,
@ = @,
@ = @,
@ = @,
@ = @,
@ = @,
@ = @;
END
GO
CREATE OR ALTER PROCEDURE [dbo].[_工时报表_作业者工时_查询]
@ nvarchar(30) = N'',
@ nvarchar(30) = N'',
@ nvarchar(100) = N'',
@ nvarchar(100) = N'',
@ nvarchar(100) = N'',
@ nvarchar(100) = N'',
@DID int = NULL
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ datetime = TRY_CONVERT(datetime, NULLIF(@, N''));
DECLARE @ datetime = TRY_CONVERT(datetime, NULLIF(@, N''));
;WITH base AS
(
SELECT
r.[RID],
r.[DID],
ISNULL(r.[], N'') AS [],
CONVERT(varchar(10), r.[], 120) AS [],
t.[],
t.[],
t.[],
t.[],
t.[],
t.[],
r.[],
r.[],
ISNULL(r.[], 0) AS [],
r.[],
r.[]
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 (@DID IS NULL OR @DID = 0 OR r.[DID] = @DID)
),
result AS
(
SELECT
1 AS [Level],
N'p-' + [] AS [id],
CAST(N'' AS nvarchar(100)) AS [parentId],
[],
CAST(N'' AS nvarchar(20)) AS [],
CAST(NULL AS int) AS [RID],
CAST(NULL AS int) AS [DID],
CAST(N'' AS nvarchar(100)) AS [],
CAST(N'' AS nvarchar(100)) AS [],
CAST(N'' AS nvarchar(200)) AS [],
CAST(N'' AS nvarchar(100)) AS [],
CAST(N'' AS nvarchar(100)) AS [],
CAST(N'' AS nvarchar(500)) AS [],
CAST(N'' AS varchar(19)) AS [],
CAST(N'' AS varchar(19)) AS [],
COUNT(1) AS [],
CAST(SUM([]) / 3600.0 AS decimal(18, 2)) AS [],
CAST(N'' AS nvarchar(20)) AS [],
CAST(N'' AS nvarchar(500)) AS []
FROM base
GROUP BY []
UNION ALL
SELECT
2 AS [Level],
N'd-' + [] + N'-' + [] AS [id],
N'p-' + [] AS [parentId],
[],
[],
CAST(NULL AS int) AS [RID],
CAST(NULL AS int) AS [DID],
CAST(N'' AS nvarchar(100)) AS [],
CAST(N'' AS nvarchar(100)) AS [],
CAST(N'' AS nvarchar(200)) AS [],
CAST(N'' AS nvarchar(100)) AS [],
CAST(N'' AS nvarchar(100)) AS [],
CAST(N'' AS nvarchar(500)) AS [],
CAST(N'' AS varchar(19)) AS [],
CAST(N'' AS varchar(19)) AS [],
COUNT(1) AS [],
CAST(SUM([]) / 3600.0 AS decimal(18, 2)) AS [],
CAST(N'' AS nvarchar(20)) AS [],
CAST(N'' AS nvarchar(500)) AS []
FROM base
GROUP BY [], []
UNION ALL
SELECT
3 AS [Level],
N'r-' + CAST([RID] AS nvarchar(20)) AS [id],
N'd-' + [] + N'-' + [] AS [parentId],
[],
[],
[RID],
[DID],
ISNULL([], N'') AS [],
ISNULL([], N'') AS [],
ISNULL([], N'') AS [],
ISNULL([], N'') AS [],
ISNULL([], N'') AS [],
ISNULL([], N'') AS [],
CONVERT(varchar(19), [], 120) AS [],
CONVERT(varchar(19), [], 120) AS [],
1 AS [],
CAST([] / 3600.0 AS decimal(18, 2)) AS [],
CASE WHEN [] = 1 THEN N'已校验' ELSE N'未校验' END AS [],
ISNULL([], N'') AS []
FROM base
)
SELECT *
FROM result
ORDER BY [], [], [Level], [RID];
END
GO

View File

@@ -0,0 +1,128 @@
USE [YL_MESDB]
GO
SET NOCOUNT ON;
DECLARE @TargetAccount int = 1;
DECLARE @ParentTitle varchar(100) = '生产管理';
DECLARE @ParentId int;
SELECT TOP (1)
@ParentId = [id]
FROM [dbo].[_二级菜单]
WHERE [] = @TargetAccount
AND [] = 1
AND [pid] = 0
AND [title] = @ParentTitle
ORDER BY [id];
IF @ParentId IS NULL
BEGIN
RAISERROR('未找到账号 1 的生产管理父菜单。', 16, 1);
RETURN;
END;
DECLARE @Menus TABLE
(
rn int IDENTITY(1,1) PRIMARY KEY,
[path] varchar(300) NOT NULL,
[componet] varchar(300) NOT NULL,
[name] varchar(100) NOT NULL,
[title] varchar(100) NOT NULL,
[icon] varchar(100) NULL
);
INSERT INTO @Menus ([path], [componet], [name], [title], [icon])
VALUES
('DesignReportTask/Task/index', '/ProductionManagement/DesignReportTask/Task/index', 'DesignReportTask', '设计任务', 'DocumentImport'),
('DesignReportTask/Report/index', '/ProductionManagement/DesignReportTask/Report/index', 'DesignReportWork', '设计报工', 'DocumentImport'),
('DesignReportTask/Check/index', '/ProductionManagement/DesignReportTask/Check/index', 'DesignReportCheck', '设计工时校验', 'PayStateSearch'),
('DesignReportTask/HoursReport/index', '/ProductionManagement/DesignReportTask/HoursReport/index', 'DesignReportHoursReport', '设计工时报表', 'DimensionsSummaryReport');
DECLARE @BaseId int;
SELECT @BaseId = ISNULL(MAX([id]), 0)
FROM [dbo].[_二级菜单];
;WITH MissingMenus AS
(
SELECT
ROW_NUMBER() OVER (ORDER BY m.rn) AS new_rn,
m.[path],
m.[componet],
m.[name],
m.[title],
m.[icon]
FROM @Menus AS m
WHERE NOT EXISTS
(
SELECT 1
FROM [dbo].[_二级菜单] AS existing
WHERE existing.[] = @TargetAccount
AND
(
existing.[path] = m.[path]
OR existing.[componet] = m.[componet]
OR existing.[title] = m.[title]
)
)
)
INSERT INTO [dbo].[_二级菜单]
([id], [pid], [path], [componet], [redirect], [name], [title], [icon], [], [], [], [])
SELECT
@BaseId + new_rn,
@ParentId,
[path],
[componet],
NULL,
[name],
[title],
[icon],
@TargetAccount,
@BaseId + new_rn,
1,
GETDATE()
FROM MissingMenus;
UPDATE target
SET
target.[pid] = @ParentId,
target.[path] = source.[path],
target.[componet] = source.[componet],
target.[name] = source.[name],
target.[title] = source.[title],
target.[icon] = source.[icon],
target.[] = target.[id],
target.[] = 1,
target.[] = GETDATE()
FROM [dbo].[_二级菜单] AS target
INNER JOIN @Menus AS source
ON target.[] = @TargetAccount
AND
(
target.[path] = source.[path]
OR target.[componet] = source.[componet]
OR target.[title] = source.[title]
);
SELECT
[id],
[pid],
[path],
[componet],
[name],
[title],
[icon],
[],
[],
[]
FROM [dbo].[_二级菜单]
WHERE [] = @TargetAccount
AND
(
[path] IN (SELECT [path] FROM @Menus)
OR [componet] IN (SELECT [componet] FROM @Menus)
OR [title] IN (SELECT [title] FROM @Menus)
)
ORDER BY [id];
GO

View File

@@ -21,6 +21,7 @@ BEGIN
[] nvarchar(100) NULL,
[] nvarchar(200) NULL,
[] nvarchar(100) NULL,
[] nvarchar(100) NULL,
[] nvarchar(500) NULL,
[] nvarchar(100) NULL,
[] nvarchar(200) NULL,
@@ -41,6 +42,12 @@ BEGIN
END
GO
IF COL_LENGTH(N'[dbo].[MES_设计报工_任务]', N'类别') IS NULL
BEGIN
ALTER TABLE [dbo].[MES_设计报工_任务] ADD [] nvarchar(100) NULL;
END
GO
IF OBJECT_ID(N'[dbo].[MES_设计报工_记录]', N'U') IS NULL
BEGIN
CREATE TABLE [dbo].[MES_设计报工_记录]
@@ -157,12 +164,18 @@ AS
BEGIN
SET NOCOUNT ON;
SELECT DISTINCT TOP 100
[]
FROM [dbo].[MES_设计报工_任务]
SELECT DISTINCT TOP 200
CAST([] AS nvarchar(100)) AS [],
CAST([] AS nvarchar(200)) AS []
FROM [SAP].[SBO_YL].[dbo].[VIEW_OPRJ]
WHERE
ISNULL([], N'') <> N''
AND (ISNULL(@, N'') = N'' OR [] LIKE N'%' + @ + N'%')
ISNULL([], N'') <> N''
AND
(
ISNULL(@, N'') = N''
OR CAST([] AS nvarchar(100)) LIKE N'%' + @ + N'%'
OR CAST(ISNULL([], N'') AS nvarchar(200)) LIKE N'%' + @ + N'%'
)
ORDER BY [];
END
GO
@@ -172,12 +185,15 @@ CREATE OR ALTER PROCEDURE [dbo].[设计报工_任务_查询]
@ nvarchar(100) = N'',
@ nvarchar(100) = N'',
@ nvarchar(100) = N'',
@ nvarchar(100) = N'',
@ nvarchar(100) = N'',
@_Start nvarchar(30) = N'',
@_End nvarchar(30) = N'',
@_Start nvarchar(30) = N'',
@_End nvarchar(30) = N'',
@ nvarchar(50) = N''
@ nvarchar(50) = N'',
@ID nvarchar(100) = N'',
@ nvarchar(100) = N''
AS
BEGIN
SET NOCOUNT ON;
@@ -193,6 +209,7 @@ BEGIN
t.[],
t.[],
t.[],
t.[],
t.[],
t.[],
t.[],
@@ -211,6 +228,8 @@ BEGIN
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 []
FROM [dbo].[MES_设计报工_任务] AS t
@@ -219,16 +238,35 @@ BEGIN
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
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 @ = N'全部' OR t.[] = @)
AND (@1 IS NULL OR t.[] >= @1)
@@ -244,6 +282,7 @@ CREATE OR ALTER PROCEDURE [dbo].[设计报工_任务_新增]
@ nvarchar(100) = N'',
@ nvarchar(200) = N'',
@ nvarchar(100) = N'',
@ nvarchar(100) = N'',
@ nvarchar(500) = N'',
@ nvarchar(100) = N'',
@ nvarchar(200) = N'',
@@ -262,7 +301,7 @@ BEGIN
INSERT INTO [dbo].[MES_设计报工_任务]
(
[], [], [], [], [],
[], [], [], [], [], [],
[], [], [],
[], [], [ID], [],
[], [], [],
@@ -270,7 +309,7 @@ BEGIN
)
VALUES
(
NULLIF(@, N''), NULLIF(@, N''), NULLIF(@, N''), NULLIF(@, N''), NULLIF(@, N''),
NULLIF(@, N''), NULLIF(@, N''), NULLIF(@, N''), NULLIF(@, N''), NULLIF(@, N''), NULLIF(@, N''),
NULLIF(@, N''), NULLIF(@, N''), NULLIF(@, N''),
NULLIF(@, N''), NULLIF(@, N''), NULLIF(@ID, N''), NULLIF(@, N''),
TRY_CONVERT(datetime, NULLIF(@, N'')), TRY_CONVERT(datetime, NULLIF(@, N'')), N'待开始',
@@ -287,6 +326,7 @@ CREATE OR ALTER PROCEDURE [dbo].[设计报工_任务_编辑]
@ nvarchar(100) = N'',
@ nvarchar(200) = N'',
@ nvarchar(100) = N'',
@ nvarchar(100) = N'',
@ nvarchar(500) = N'',
@ nvarchar(100) = N'',
@ nvarchar(200) = N'',
@@ -315,6 +355,7 @@ BEGIN
[] = NULLIF(@, N''),
[] = NULLIF(@, N''),
[] = NULLIF(@, N''),
[] = NULLIF(@, N''),
[] = NULLIF(@, N''),
[] = NULLIF(@, N''),
[] = NULLIF(@, N''),
@@ -340,16 +381,70 @@ AS
BEGIN
SET NOCOUNT ON;
IF EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_记录] WHERE [DID] = @DID)
BEGIN
SELECT CAST(0 AS int) AS [result], N'该任务已有设计报工记录,不能删除' AS [message];
RETURN;
END
DECLARE @ nvarchar(50);
DECLARE @ int;
DELETE FROM [dbo].[MES_设计报工_任务]
WHERE [DID] = @DID;
BEGIN TRY
BEGIN TRANSACTION;
SELECT CAST(1 AS int) AS [result], N'删除成功' AS [message];
SELECT @ = []
FROM [dbo].[MES_设计报工_任务] WITH (UPDLOCK, HOLDLOCK)
WHERE [DID] = @DID;
IF @ IS NULL
BEGIN
ROLLBACK TRANSACTION;
SELECT CAST(0 AS int) AS [result], N'删除失败:任务不存在或已被删除' AS [message];
RETURN;
END
IF EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_记录] WITH (HOLDLOCK) WHERE [DID] = @DID)
BEGIN
ROLLBACK TRANSACTION;
SELECT CAST(0 AS int) AS [result], N'删除失败:该任务已有设计报工记录,不能删除' AS [message];
RETURN;
END
IF EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_校验记录] WITH (HOLDLOCK) WHERE [DID] = @DID)
BEGIN
ROLLBACK TRANSACTION;
SELECT CAST(0 AS int) AS [result], N'删除失败:该任务已有设计工时校验记录,不能删除' AS [message];
RETURN;
END
IF @ = N'已完成'
BEGIN
ROLLBACK TRANSACTION;
SELECT CAST(0 AS int) AS [result], N'删除失败:任务已完成,不能删除' AS [message];
RETURN;
END
IF @ <> N'待开始'
BEGIN
ROLLBACK TRANSACTION;
SELECT CAST(0 AS int) AS [result], N'删除失败:任务状态为' + @ + N',不能删除' AS [message];
RETURN;
END
DELETE FROM [dbo].[MES_设计报工_任务]
WHERE [DID] = @DID;
SET @ = @@ROWCOUNT;
IF @ <> 1
BEGIN
ROLLBACK TRANSACTION;
SELECT CAST(0 AS int) AS [result], N'删除失败:任务不存在或已被删除' AS [message];
RETURN;
END
COMMIT TRANSACTION;
SELECT CAST(1 AS int) AS [result], N'删除成功' AS [message];
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION;
SELECT CAST(0 AS int) AS [result], N'删除失败:' + ERROR_MESSAGE() AS [message];
END CATCH
END
GO
@@ -361,6 +456,16 @@ AS
BEGIN
SET NOCOUNT ON;
DECLARE @ID nvarchar(100) = NULLIF(@ID, N'');
DECLARE @ nvarchar(100) = NULLIF(@, N'');
DECLARE @RID int;
IF @ID IS NULL AND @ IS NULL
BEGIN
SELECT CAST(0 AS int) AS [result], N'未获取到当前操作人,不能开始' AS [message];
RETURN;
END
IF NOT EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_任务] WHERE [DID] = @DID)
BEGIN
SELECT CAST(0 AS int) AS [result], N'任务不存在' AS [message];
@@ -373,20 +478,32 @@ BEGIN
RETURN;
END
IF EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_记录] WHERE [DID] = @DID AND [] IS NULL)
IF EXISTS
(
SELECT 1
FROM [dbo].[MES_设计报工_记录]
WHERE [DID] = @DID
AND [] IS NULL
AND (
(@ID IS NOT NULL AND ISNULL([ID], N'') = @ID)
OR (@ID IS NULL AND @ IS NOT NULL AND ISNULL([], N'') = @)
)
)
BEGIN
SELECT CAST(0 AS int) AS [result], N'该任务存在未结束的报工记录' AS [message];
SELECT CAST(0 AS int) AS [result], N'当前人员已存在未结束的报工记录' AS [message];
RETURN;
END
INSERT INTO [dbo].[MES_设计报工_记录]([DID], [ID], [], [], [])
VALUES(@DID, NULLIF(@ID, N''), NULLIF(@, N''), GETDATE(), N'执行中');
VALUES(@DID, @ID, @, GETDATE(), N'执行中');
SET @RID = CONVERT(int, SCOPE_IDENTITY());
UPDATE [dbo].[MES_设计报工_任务]
SET [] = N'执行中', [] = NULLIF(@, N''), [] = GETDATE()
SET [] = N'执行中', [] = @, [] = GETDATE()
WHERE [DID] = @DID;
SELECT CAST(1 AS int) AS [result], N'开始成功' AS [message], SCOPE_IDENTITY() AS [RID];
SELECT CAST(1 AS int) AS [result], N'开始成功' AS [message], @RID AS [RID];
END
GO
@@ -398,15 +515,41 @@ AS
BEGIN
SET NOCOUNT ON;
DECLARE @ID nvarchar(100) = NULLIF(@ID, N'');
DECLARE @ nvarchar(100) = NULLIF(@, N'');
DECLARE @RID int;
IF @ID IS NULL AND @ IS NULL
BEGIN
SELECT CAST(0 AS int) AS [result], N'未获取到当前操作人,不能结束' AS [message];
RETURN;
END
IF NOT EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_任务] WHERE [DID] = @DID)
BEGIN
SELECT CAST(0 AS int) AS [result], N'任务不存在' AS [message];
RETURN;
END
IF EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_任务] WHERE [DID] = @DID AND [] = N'已完成')
BEGIN
SELECT CAST(0 AS int) AS [result], N'任务已完成,不能结束' AS [message];
RETURN;
END
SELECT TOP 1 @RID = [RID]
FROM [dbo].[MES_设计报工_记录]
WHERE [DID] = @DID AND [] IS NULL
WHERE [DID] = @DID
AND [] IS NULL
AND (
(@ID IS NOT NULL AND ISNULL([ID], N'') = @ID)
OR (@ID IS NULL AND @ IS NOT NULL AND ISNULL([], N'') = @)
)
ORDER BY [] DESC, [RID] DESC;
IF @RID IS NULL
BEGIN
SELECT CAST(0 AS int) AS [result], N'没有未结束的报工记录' AS [message];
SELECT CAST(0 AS int) AS [result], N'当前人员没有未结束的报工记录' AS [message];
RETURN;
END
@@ -418,7 +561,14 @@ BEGIN
WHERE [RID] = @RID;
UPDATE [dbo].[MES_设计报工_任务]
SET [] = N'已结束', [] = NULLIF(@, N''), [] = GETDATE()
SET
[] = CASE
WHEN EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_记录] WHERE [DID] = @DID AND [] IS NULL)
THEN N'执行中'
ELSE N'已结束'
END,
[] = @,
[] = GETDATE()
WHERE [DID] = @DID AND [] <> N'已完成';
SELECT CAST(1 AS int) AS [result], N'结束成功' AS [message], @RID AS [RID];
@@ -432,15 +582,26 @@ AS
BEGIN
SET NOCOUNT ON;
DECLARE @ nvarchar(max);
IF NOT EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_任务] WHERE [DID] = @DID)
BEGIN
SELECT CAST(0 AS int) AS [result], N'任务不存在' AS [message];
RETURN;
END
IF EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_记录] WHERE [DID] = @DID AND [] IS NULL)
SELECT @ = STRING_AGG(CONVERT(nvarchar(max), x.[]), N'')
FROM
(
SELECT DISTINCT COALESCE(NULLIF([], N''), NULLIF([ID], N''), N'未填写操作人') AS []
FROM [dbo].[MES_设计报工_记录]
WHERE [DID] = @DID
AND [] IS NULL
) AS x;
IF NULLIF(@, N'') IS NOT NULL
BEGIN
SELECT CAST(0 AS int) AS [result], N'任务存在未结束报工,不能完成' AS [message];
SELECT CAST(0 AS int) AS [result], N'以下人员还未点击结束:' + @ AS [message], @ AS [];
RETURN;
END
@@ -462,6 +623,7 @@ 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'',
@@ -480,6 +642,7 @@ BEGIN
t.[],
t.[],
t.[],
t.[],
t.[],
t.[],
r.[ID],
@@ -501,6 +664,7 @@ BEGIN
(@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, @))
@@ -518,6 +682,7 @@ 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'',
@@ -530,6 +695,7 @@ BEGIN
@DID = @DID,
@ = @,
@ = @,
@ = @,
@ = @,
@ = @,
@ = @,
@@ -658,6 +824,7 @@ CREATE OR ALTER PROCEDURE [dbo].[设计报工_工时报表_作业者工时_查
@ nvarchar(100) = N'',
@ nvarchar(100) = N'',
@ nvarchar(100) = N'',
@ nvarchar(100) = N'',
@DID int = NULL
AS
BEGIN
@@ -677,6 +844,7 @@ BEGIN
t.[],
t.[],
t.[],
t.[],
t.[],
r.[],
r.[],
@@ -693,6 +861,7 @@ BEGIN
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 (@DID IS NULL OR @DID = 0 OR r.[DID] = @DID)
),
result AS
@@ -709,6 +878,7 @@ BEGIN
CAST(N'' AS nvarchar(100)) AS [],
CAST(N'' AS nvarchar(200)) AS [],
CAST(N'' AS nvarchar(100)) AS [],
CAST(N'' AS nvarchar(100)) AS [],
CAST(N'' AS nvarchar(500)) AS [],
CAST(N'' AS varchar(19)) AS [],
CAST(N'' AS varchar(19)) AS [],
@@ -733,6 +903,7 @@ BEGIN
CAST(N'' AS nvarchar(100)) AS [],
CAST(N'' AS nvarchar(200)) AS [],
CAST(N'' AS nvarchar(100)) AS [],
CAST(N'' AS nvarchar(100)) AS [],
CAST(N'' AS nvarchar(500)) AS [],
CAST(N'' AS varchar(19)) AS [],
CAST(N'' AS varchar(19)) AS [],
@@ -757,6 +928,7 @@ BEGIN
ISNULL([], N'') AS [],
ISNULL([], N'') AS [],
ISNULL([], N'') AS [],
ISNULL([], N'') AS [],
ISNULL([], N'') AS [],
CONVERT(varchar(19), [], 120) AS [],
CONVERT(varchar(19), [], 120) AS [],

View File

@@ -0,0 +1,48 @@
[
{
"DID": 2,
"项目号": "CW-260001",
"物料编码": "101101-105",
"物料名称": "圆棒",
"图号": "123",
"任务描述": "测试",
"关联父件物料编码": "101101-100",
"关联父件物料名称": "圆棒",
"设计要求": "123456",
"研发立项号": "234",
"研发目的": "456",
"指派对象ID": "95,50,74",
"指派对象": "蔡根,曹元,曹作梁",
"预计开始时间": "\/Date(1783526400000)\/",
"预计结束时间": "\/Date(1783612800000)\/",
"单据状态": "已完成",
"创建日期": "\/Date(1783563588967)\/",
"创建人": "超级管理员",
"最后编辑人": "超级管理员",
"最后编辑时间": "\/Date(1783563771493)\/",
"备注": "的伟大的我无法"
},
{
"DID": 3,
"项目号": "CW-260003",
"物料编码": "101105-30x23x72",
"物料名称": "板材",
"图号": null,
"任务描述": "测试",
"关联父件物料编码": "101101-45",
"关联父件物料名称": "圆棒",
"设计要求": null,
"研发立项号": null,
"研发目的": null,
"指派对象ID": "95,50,74",
"指派对象": "蔡根,曹元,曹作梁",
"预计开始时间": null,
"预计结束时间": null,
"单据状态": "已完成",
"创建日期": "\/Date(1783564298800)\/",
"创建人": "超级管理员",
"最后编辑人": "超级管理员",
"最后编辑时间": "\/Date(1783565606673)\/",
"备注": null
}
]

View File

@@ -0,0 +1,14 @@
{
"VID": 1,
"RID": 2,
"DID": 2,
"校验前开始时间": "\/Date(1783563746910)\/",
"校验前结束时间": "\/Date(1783563764437)\/",
"校验后开始时间": "\/Date(1783563746000)\/",
"校验后结束时间": "\/Date(1783563808000)\/",
"校验后工时秒数": 62,
"校验人ID": "1",
"校验人": "超级管理员",
"校验时间": "\/Date(1783563815987)\/",
"校验备注": "测试"
}

View File

@@ -0,0 +1,34 @@
[
{
"RID": 2,
"DID": 2,
"操作人ID": "1",
"操作人": "超级管理员",
"开始时间": "\/Date(1783563746000)\/",
"结束时间": "\/Date(1783563808000)\/",
"工时秒数": 62,
"报工状态": "已结束",
"已校验": true,
"校验人ID": "1",
"校验人": "超级管理员",
"校验时间": "\/Date(1783563815990)\/",
"创建时间": "\/Date(1783563746910)\/",
"备注": "测试"
},
{
"RID": 3,
"DID": 3,
"操作人ID": "1",
"操作人": "超级管理员",
"开始时间": "\/Date(1783564338263)\/",
"结束时间": "\/Date(1783565595690)\/",
"工时秒数": 1257,
"报工状态": "已结束",
"已校验": false,
"校验人ID": null,
"校验人": null,
"校验时间": null,
"创建时间": "\/Date(1783564338263)\/",
"备注": null
}
]

View File

@@ -0,0 +1,17 @@
[
{
"表名": "MES_设计报工_任务",
"行数": 2,
"备份文件": "C:\\WorkYuanLy\\MES_Manage_View_V20\\db_backups\\design_report_data_backup_20260709_110417\\MES_设计报工_任务.json"
},
{
"表名": "MES_设计报工_记录",
"行数": 2,
"备份文件": "C:\\WorkYuanLy\\MES_Manage_View_V20\\db_backups\\design_report_data_backup_20260709_110417\\MES_设计报工_记录.json"
},
{
"表名": "MES_设计报工_校验记录",
"行数": 1,
"备份文件": "C:\\WorkYuanLy\\MES_Manage_View_V20\\db_backups\\design_report_data_backup_20260709_110417\\MES_设计报工_校验记录.json"
}
]

View File

@@ -0,0 +1,242 @@
USE [YL_MESDB];
GO
CREATE OR ALTER PROCEDURE [dbo].[_任务_开始]
@DID int,
@ID nvarchar(100) = N'',
@ nvarchar(100) = N''
AS
BEGIN
SET NOCOUNT ON;
SET XACT_ABORT OFF;
DECLARE @ID nvarchar(100) = NULLIF(@ID, N'');
DECLARE @ nvarchar(100) = NULLIF(@, N'');
DECLARE @RID int;
DECLARE @ int = @@TRANCOUNT;
DECLARE @ sysname = N'DRT_Task_Start';
IF @ID IS NULL AND @ IS NULL
BEGIN
SELECT CAST(0 AS int) AS [result], N'未获取到当前操作人,不能开始' AS [message];
RETURN;
END
BEGIN TRY
IF @ = 0 BEGIN TRANSACTION;
ELSE SAVE TRANSACTION @;
IF NOT EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_任务] WITH (UPDLOCK, HOLDLOCK) WHERE [DID] = @DID)
BEGIN
IF @ = 0 ROLLBACK TRANSACTION;
ELSE ROLLBACK TRANSACTION @;
SELECT CAST(0 AS int) AS [result], N'任务不存在' AS [message];
RETURN;
END
IF EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_任务] WHERE [DID] = @DID AND [] = N'已完成')
BEGIN
IF @ = 0 ROLLBACK TRANSACTION;
ELSE ROLLBACK TRANSACTION @;
SELECT CAST(0 AS int) AS [result], N'任务已完成,不能开始' AS [message];
RETURN;
END
IF EXISTS
(
SELECT 1
FROM [dbo].[MES_设计报工_记录] WITH (UPDLOCK, HOLDLOCK)
WHERE [DID] = @DID
AND [] IS NULL
AND (
(@ID IS NOT NULL AND ISNULL([ID], N'') = @ID)
OR (@ID IS NULL AND @ IS NOT NULL AND ISNULL([], N'') = @)
)
)
BEGIN
IF @ = 0 ROLLBACK TRANSACTION;
ELSE ROLLBACK TRANSACTION @;
SELECT CAST(0 AS int) AS [result], N'当前人员已存在未结束的报工记录' AS [message];
RETURN;
END
INSERT INTO [dbo].[MES_设计报工_记录]([DID], [ID], [], [], [])
VALUES(@DID, @ID, @, GETDATE(), N'执行中');
SET @RID = CONVERT(int, SCOPE_IDENTITY());
UPDATE [dbo].[MES_设计报工_任务]
SET [] = N'执行中', [] = @, [] = GETDATE()
WHERE [DID] = @DID;
IF @ = 0 COMMIT TRANSACTION;
SELECT CAST(1 AS int) AS [result], N'开始成功' AS [message], @RID AS [RID];
END TRY
BEGIN CATCH
IF XACT_STATE() <> 0
BEGIN
IF @ = 0 ROLLBACK TRANSACTION;
ELSE IF XACT_STATE() = 1 ROLLBACK TRANSACTION @;
END
SELECT CAST(0 AS int) AS [result], ERROR_MESSAGE() AS [message];
END CATCH
END
GO
CREATE OR ALTER PROCEDURE [dbo].[_任务_结束]
@DID int,
@ID nvarchar(100) = N'',
@ nvarchar(100) = N''
AS
BEGIN
SET NOCOUNT ON;
SET XACT_ABORT OFF;
DECLARE @ID nvarchar(100) = NULLIF(@ID, N'');
DECLARE @ nvarchar(100) = NULLIF(@, N'');
DECLARE @RID int;
DECLARE @ int = @@TRANCOUNT;
DECLARE @ sysname = N'DRT_Task_End';
IF @ID IS NULL AND @ IS NULL
BEGIN
SELECT CAST(0 AS int) AS [result], N'未获取到当前操作人,不能结束' AS [message];
RETURN;
END
BEGIN TRY
IF @ = 0 BEGIN TRANSACTION;
ELSE SAVE TRANSACTION @;
IF NOT EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_任务] WITH (UPDLOCK, HOLDLOCK) WHERE [DID] = @DID)
BEGIN
IF @ = 0 ROLLBACK TRANSACTION;
ELSE ROLLBACK TRANSACTION @;
SELECT CAST(0 AS int) AS [result], N'任务不存在' AS [message];
RETURN;
END
SELECT TOP 1 @RID = [RID]
FROM [dbo].[MES_设计报工_记录] WITH (UPDLOCK, HOLDLOCK)
WHERE [DID] = @DID
AND [] IS NULL
AND (
(@ID IS NOT NULL AND ISNULL([ID], N'') = @ID)
OR (@ID IS NULL AND @ IS NOT NULL AND ISNULL([], N'') = @)
)
ORDER BY [] DESC, [RID] DESC;
IF @RID IS NULL
BEGIN
IF @ = 0 ROLLBACK TRANSACTION;
ELSE ROLLBACK TRANSACTION @;
SELECT CAST(0 AS int) AS [result], N'当前人员没有未结束的报工记录' AS [message];
RETURN;
END
UPDATE [dbo].[MES_设计报工_记录]
SET
[] = GETDATE(),
[] = DATEDIFF(second, [], GETDATE()),
[] = N'已结束'
WHERE [RID] = @RID;
UPDATE [dbo].[MES_设计报工_任务]
SET
[] = CASE
WHEN [] = N'已完成' THEN N'已完成'
WHEN EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_记录] WHERE [DID] = @DID AND [] IS NULL) THEN N'执行中'
ELSE N'已结束'
END,
[] = @,
[] = GETDATE()
WHERE [DID] = @DID;
IF @ = 0 COMMIT TRANSACTION;
SELECT CAST(1 AS int) AS [result], N'结束成功' AS [message], @RID AS [RID];
END TRY
BEGIN CATCH
IF XACT_STATE() <> 0
BEGIN
IF @ = 0 ROLLBACK TRANSACTION;
ELSE IF XACT_STATE() = 1 ROLLBACK TRANSACTION @;
END
SELECT CAST(0 AS int) AS [result], ERROR_MESSAGE() AS [message];
END CATCH
END
GO
CREATE OR ALTER PROCEDURE [dbo].[_任务_完成]
@DID int,
@ nvarchar(100) = N''
AS
BEGIN
SET NOCOUNT ON;
SET XACT_ABORT OFF;
DECLARE @ nvarchar(max);
DECLARE @ int = @@TRANCOUNT;
DECLARE @ sysname = N'DRT_Task_Complete';
BEGIN TRY
IF @ = 0 BEGIN TRANSACTION;
ELSE SAVE TRANSACTION @;
IF NOT EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_任务] WITH (UPDLOCK, HOLDLOCK) WHERE [DID] = @DID)
BEGIN
IF @ = 0 ROLLBACK TRANSACTION;
ELSE ROLLBACK TRANSACTION @;
SELECT CAST(0 AS int) AS [result], N'任务不存在' AS [message];
RETURN;
END
SELECT @ = STRING_AGG(CONVERT(nvarchar(max), x.[]), N'')
FROM
(
SELECT DISTINCT COALESCE(NULLIF([], N''), NULLIF([ID], N''), N'未填写操作人') AS []
FROM [dbo].[MES_设计报工_记录] WITH (UPDLOCK, HOLDLOCK)
WHERE [DID] = @DID
AND [] IS NULL
) AS x;
IF NULLIF(@, N'') IS NOT NULL
BEGIN
IF @ = 0 ROLLBACK TRANSACTION;
ELSE ROLLBACK TRANSACTION @;
SELECT CAST(0 AS int) AS [result], N'以下人员还未点击结束:' + @ AS [message], @ AS [];
RETURN;
END
IF EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_任务] WHERE [DID] = @DID AND [] = N'已完成')
BEGIN
IF @ = 0 ROLLBACK TRANSACTION;
ELSE ROLLBACK TRANSACTION @;
SELECT CAST(0 AS int) AS [result], N'任务已完成' AS [message];
RETURN;
END
IF NOT EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_记录] WITH (HOLDLOCK) WHERE [DID] = @DID AND [] IS NOT NULL)
BEGIN
IF @ = 0 ROLLBACK TRANSACTION;
ELSE ROLLBACK TRANSACTION @;
SELECT CAST(0 AS int) AS [result], N'任务未产生已结束报工,不能完成' AS [message];
RETURN;
END
UPDATE [dbo].[MES_设计报工_任务]
SET [] = N'已完成', [] = NULLIF(@, N''), [] = GETDATE()
WHERE [DID] = @DID;
IF @ = 0 COMMIT TRANSACTION;
SELECT CAST(1 AS int) AS [result], N'完成成功' AS [message];
END TRY
BEGIN CATCH
IF XACT_STATE() <> 0
BEGIN
IF @ = 0 ROLLBACK TRANSACTION;
ELSE IF XACT_STATE() = 1 ROLLBACK TRANSACTION @;
END
SELECT CAST(0 AS int) AS [result], ERROR_MESSAGE() AS [message];
END CATCH
END
GO

View File

@@ -0,0 +1,76 @@
USE [YL_MESDB];
GO
CREATE OR ALTER PROCEDURE [dbo].[_任务_删除]
@DID int
AS
BEGIN
SET NOCOUNT ON;
SET XACT_ABORT ON;
DECLARE @ nvarchar(50);
DECLARE @ int;
BEGIN TRY
BEGIN TRANSACTION;
SELECT @ = []
FROM [dbo].[MES_设计报工_任务] WITH (UPDLOCK, HOLDLOCK)
WHERE [DID] = @DID;
IF @ IS NULL
BEGIN
ROLLBACK TRANSACTION;
SELECT CAST(0 AS int) AS [result], N'删除失败:任务不存在或已被删除' AS [message];
RETURN;
END
IF EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_记录] WITH (HOLDLOCK) WHERE [DID] = @DID)
BEGIN
ROLLBACK TRANSACTION;
SELECT CAST(0 AS int) AS [result], N'删除失败:该任务已有设计报工记录,不能删除' AS [message];
RETURN;
END
IF EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_校验记录] WITH (HOLDLOCK) WHERE [DID] = @DID)
BEGIN
ROLLBACK TRANSACTION;
SELECT CAST(0 AS int) AS [result], N'删除失败:该任务已有设计工时校验记录,不能删除' AS [message];
RETURN;
END
IF @ = N'已完成'
BEGIN
ROLLBACK TRANSACTION;
SELECT CAST(0 AS int) AS [result], N'删除失败:任务已完成,不能删除' AS [message];
RETURN;
END
IF @ <> N'待开始'
BEGIN
ROLLBACK TRANSACTION;
SELECT CAST(0 AS int) AS [result], N'删除失败:任务状态为' + @ + N',不能删除' AS [message];
RETURN;
END
DELETE FROM [dbo].[MES_设计报工_任务]
WHERE [DID] = @DID;
SET @ = @@ROWCOUNT;
IF @ <> 1
BEGIN
ROLLBACK TRANSACTION;
SELECT CAST(0 AS int) AS [result], N'删除失败:任务不存在或已被删除' AS [message];
RETURN;
END
COMMIT TRANSACTION;
SELECT CAST(1 AS int) AS [result], N'删除成功' AS [message];
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION;
SELECT CAST(0 AS int) AS [result], N'删除失败:' + ERROR_MESSAGE() AS [message];
END CATCH
END
GO

View File

@@ -0,0 +1,267 @@
USE [YL_MESDB];
GO
CREATE OR ALTER PROCEDURE [dbo].[_任务_查询]
@DID int = NULL,
@ nvarchar(100) = N'',
@ nvarchar(100) = N'',
@ nvarchar(100) = 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''
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''));
SELECT TOP 1000
t.[DID],
t.[],
t.[],
t.[],
t.[],
t.[],
t.[],
t.[],
t.[],
t.[],
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 []
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
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 @ = N'全部' OR 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))
ORDER BY t.[DID] DESC;
END
GO
CREATE OR ALTER PROCEDURE [dbo].[_任务_开始]
@DID int,
@ID nvarchar(100) = N'',
@ nvarchar(100) = N''
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ID nvarchar(100) = NULLIF(@ID, N'');
DECLARE @ nvarchar(100) = NULLIF(@, N'');
DECLARE @RID int;
IF @ID IS NULL AND @ IS NULL
BEGIN
SELECT CAST(0 AS int) AS [result], N'未获取到当前操作人,不能开始' AS [message];
RETURN;
END
IF NOT EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_任务] WHERE [DID] = @DID)
BEGIN
SELECT CAST(0 AS int) AS [result], N'任务不存在' AS [message];
RETURN;
END
IF EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_任务] WHERE [DID] = @DID AND [] = N'已完成')
BEGIN
SELECT CAST(0 AS int) AS [result], N'任务已完成,不能开始' AS [message];
RETURN;
END
IF EXISTS
(
SELECT 1
FROM [dbo].[MES_设计报工_记录]
WHERE [DID] = @DID
AND [] IS NULL
AND (
(@ID IS NOT NULL AND ISNULL([ID], N'') = @ID)
OR (@ID IS NULL AND @ IS NOT NULL AND ISNULL([], N'') = @)
)
)
BEGIN
SELECT CAST(0 AS int) AS [result], N'当前人员已存在未结束的报工记录' AS [message];
RETURN;
END
INSERT INTO [dbo].[MES_设计报工_记录]([DID], [ID], [], [], [])
VALUES(@DID, @ID, @, GETDATE(), N'执行中');
SET @RID = CONVERT(int, SCOPE_IDENTITY());
UPDATE [dbo].[MES_设计报工_任务]
SET [] = N'执行中', [] = @, [] = GETDATE()
WHERE [DID] = @DID;
SELECT CAST(1 AS int) AS [result], N'开始成功' AS [message], @RID AS [RID];
END
GO
CREATE OR ALTER PROCEDURE [dbo].[_任务_结束]
@DID int,
@ID nvarchar(100) = N'',
@ nvarchar(100) = N''
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ID nvarchar(100) = NULLIF(@ID, N'');
DECLARE @ nvarchar(100) = NULLIF(@, N'');
DECLARE @RID int;
IF @ID IS NULL AND @ IS NULL
BEGIN
SELECT CAST(0 AS int) AS [result], N'未获取到当前操作人,不能结束' AS [message];
RETURN;
END
IF NOT EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_任务] WHERE [DID] = @DID)
BEGIN
SELECT CAST(0 AS int) AS [result], N'任务不存在' AS [message];
RETURN;
END
IF EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_任务] WHERE [DID] = @DID AND [] = N'已完成')
BEGIN
SELECT CAST(0 AS int) AS [result], N'任务已完成,不能结束' AS [message];
RETURN;
END
SELECT TOP 1 @RID = [RID]
FROM [dbo].[MES_设计报工_记录]
WHERE [DID] = @DID
AND [] IS NULL
AND (
(@ID IS NOT NULL AND ISNULL([ID], N'') = @ID)
OR (@ID IS NULL AND @ IS NOT NULL AND ISNULL([], N'') = @)
)
ORDER BY [] DESC, [RID] DESC;
IF @RID IS NULL
BEGIN
SELECT CAST(0 AS int) AS [result], N'当前人员没有未结束的报工记录' AS [message];
RETURN;
END
UPDATE [dbo].[MES_设计报工_记录]
SET
[] = GETDATE(),
[] = DATEDIFF(second, [], GETDATE()),
[] = N'已结束'
WHERE [RID] = @RID;
UPDATE [dbo].[MES_设计报工_任务]
SET
[] = CASE
WHEN EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_记录] WHERE [DID] = @DID AND [] IS NULL)
THEN N'执行中'
ELSE N'已结束'
END,
[] = @,
[] = GETDATE()
WHERE [DID] = @DID AND [] <> N'已完成';
SELECT CAST(1 AS int) AS [result], N'结束成功' AS [message], @RID AS [RID];
END
GO
CREATE OR ALTER PROCEDURE [dbo].[_任务_完成]
@DID int,
@ nvarchar(100) = N''
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ nvarchar(max);
IF NOT EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_任务] WHERE [DID] = @DID)
BEGIN
SELECT CAST(0 AS int) AS [result], N'任务不存在' AS [message];
RETURN;
END
SELECT @ = STRING_AGG(CONVERT(nvarchar(max), x.[]), N'')
FROM
(
SELECT DISTINCT COALESCE(NULLIF([], N''), NULLIF([ID], N''), N'未填写操作人') AS []
FROM [dbo].[MES_设计报工_记录]
WHERE [DID] = @DID
AND [] IS NULL
) AS x;
IF NULLIF(@, N'') IS NOT NULL
BEGIN
SELECT CAST(0 AS int) AS [result], N'以下人员还未点击结束:' + @ AS [message], @ AS [];
RETURN;
END
IF NOT EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_记录] WHERE [DID] = @DID AND [] IS NOT NULL)
BEGIN
SELECT CAST(0 AS int) AS [result], N'任务未产生已结束报工,不能完成' AS [message];
RETURN;
END
UPDATE [dbo].[MES_设计报工_任务]
SET [] = N'已完成', [] = NULLIF(@, N''), [] = GETDATE()
WHERE [DID] = @DID;
SELECT CAST(1 AS int) AS [result], N'完成成功' AS [message];
END
GO

View File

@@ -0,0 +1,29 @@
USE [YL_MESDB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE OR ALTER PROCEDURE [dbo].[_项目查询]
@ nvarchar(100) = N''
AS
BEGIN
SET NOCOUNT ON;
SELECT DISTINCT TOP 200
CAST([] AS nvarchar(100)) AS [],
CAST([] AS nvarchar(200)) AS []
FROM [SAP].[SBO_YL].[dbo].[VIEW_OPRJ]
WHERE
ISNULL([], N'') <> N''
AND
(
ISNULL(@, N'') = N''
OR CAST([] AS nvarchar(100)) LIKE N'%' + @ + N'%'
OR CAST(ISNULL([], N'') AS nvarchar(200)) LIKE N'%' + @ + N'%'
)
ORDER BY [];
END
GO