feat: 完善设计报工及生产管理功能

This commit is contained in:
2026-07-22 14:50:28 +08:00
parent 8fdd0b6803
commit f16fb81ed8
15 changed files with 1977 additions and 33 deletions

View File

@@ -0,0 +1,92 @@
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''
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 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.[],
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)
)
AND
(
@ = 1
OR
(
NULLIF(@, N'') IS NOT NULL
AND
(
LTRIM(RTRIM(ISNULL(t.[], N''))) = @
OR LTRIM(RTRIM(ISNULL(r.[], N''))) = @
)
)
)
ORDER BY r.[RID] DESC;
END
GO

View File

@@ -0,0 +1,68 @@
USE [YL_MESDB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID(N'[dbo].[MES_设计报工_附件]', N'U') IS NULL
BEGIN
CREATE TABLE [dbo].[MES_设计报工_附件]
(
[id] int IDENTITY(1,1) NOT NULL CONSTRAINT [PK_MES_设计报工_附件] PRIMARY KEY,
[num] nvarchar(200) NOT NULL,
[uid] nvarchar(200) NULL,
[name] nvarchar(500) NULL,
[suffix] nvarchar(100) NULL,
[] int NULL,
[worker] nvarchar(200) NULL,
[uploadTime] nvarchar(200) NULL
);
END
GO
IF NOT EXISTS
(
SELECT 1
FROM sys.indexes
WHERE [object_id] = OBJECT_ID(N'[dbo].[MES_设计报工_附件]')
AND [name] = N'IX_MES_设计报工_附件_任务'
)
BEGIN
CREATE INDEX [IX_MES_设计报工_附件_任务]
ON [dbo].[MES_设计报工_附件]([num], [], [id] DESC);
END
GO
CREATE OR ALTER PROCEDURE [dbo].[_附件_查询]
@DID int
AS
BEGIN
SET NOCOUNT ON;
SELECT
a.[id] AS [ID],
TRY_CONVERT(int, a.[num]) AS [DID],
CASE
WHEN CHARINDEX(N'__', ISNULL(a.[name], N'')) > 0
THEN SUBSTRING(a.[name], CHARINDEX(N'__', a.[name]) + 2, 500)
ELSE ISNULL(a.[name], N'')
END + CASE
WHEN NULLIF(LTRIM(RTRIM(ISNULL(a.[suffix], N''))), N'') IS NULL THEN N''
ELSE N'.' + a.[suffix]
END AS [],
ISNULL(a.[name], N'') + CASE
WHEN NULLIF(LTRIM(RTRIM(ISNULL(a.[suffix], N''))), N'') IS NULL THEN N''
ELSE N'.' + a.[suffix]
END AS [],
LOWER(ISNULL(a.[suffix], N'')) AS [],
ISNULL(a.[worker], N'') AS [],
ISNULL(a.[uploadTime], N'') AS []
FROM [dbo].[MES_设计报工_附件] AS a
WHERE TRY_CONVERT(int, a.[num]) = @DID
AND ISNULL(a.[], 1) = 1
ORDER BY a.[id] DESC;
END
GO

View File

@@ -0,0 +1,225 @@
USE [YL_MESDB];
GO
SET ANSI_NULLS ON;
GO
SET QUOTED_IDENTIFIER ON;
GO
CREATE OR ALTER PROCEDURE [dbo].[_看板查询]
@ nvarchar(20)
AS
BEGIN
SET NOCOUNT ON;
IF @ NOT IN (N'大厅', N'仓库', N'装配', N'质检')
BEGIN
THROW 50001, N'看板类型必须是大厅、仓库、装配或质检', 1;
END;
;WITH AS
(
SELECT
d.[TaskAID],
STRING_AGG(CONVERT(nvarchar(max), d.[]), N',')
WITHIN GROUP (ORDER BY d.[]) AS []
FROM
(
SELECT DISTINCT
[TaskAID],
NULLIF(LTRIM(RTRIM([])), N'') AS []
FROM [dbo].[YL_加工中心_操作记录表]
WHERE [] = N'开始加工'
AND [] IS NULL
AND [] LIKE N'%装配%'
AND [] IS NOT NULL
AND NULLIF(LTRIM(RTRIM([])), N'') IS NOT NULL
) AS d
GROUP BY d.[TaskAID]
),
AS
(
SELECT
[TaskAID],
SUM(CASE WHEN [] = N'终检' THEN ISNULL([], 0) ELSE 0 END) AS [],
SUM(CASE WHEN [] = N'收检' THEN ISNULL([], 0) ELSE 0 END) AS [],
SUM(CASE WHEN [] = 6 THEN ISNULL([], 0) ELSE 0 END) AS []
FROM [dbo].[View_质量检验_质检记录]
WHERE [] IN (N'收检', N'终检')
GROUP BY [TaskAID]
),
AS
(
SELECT
gs.[],
SUM(gs.[]) AS []
FROM [dbo].[View_生产工时视图] AS gs
INNER JOIN [dbo].[_人员信息] AS ry
ON gs.[] = ry.[Personnel_Name]
WHERE ry.[] = N'装配'
GROUP BY gs.[]
),
AS
(
SELECT
CAST(N'SAP' AS nvarchar(20)) AS [],
c.[DocStatus] AS [],
CONVERT(nvarchar(200), c.[]) AS [],
CONVERT(nvarchar(500), c.[]) AS [],
CONVERT(nvarchar(4000), c.[]) AS [],
c.[],
c.[],
c.[],
a.[TaskAID],
COALESCE(a.[], c.[]) AS [],
COALESCE(
NULLIF(CONVERT(nvarchar(200), a.[]), N''),
NULLIF(CONVERT(nvarchar(200), c.[]), N'')
) AS [],
a.[],
a.[],
a.[],
a.[],
a.[],
a.[],
c.[] AS [],
a.[],
a.[],
a.[],
a.[],
op.[],
ISNULL(hours.[], 0) AS [],
ISNULL(quality.[], 0) AS [],
ISNULL(quality.[], 0) AS [],
ISNULL(quality.[], 0) AS []
FROM [SAP].[SBO_YL].[dbo].[UBT_ODRF_ODLNMES] AS c
LEFT JOIN [dbo].[View_生产订单_MES] AS a
ON c.[] = a.[]
LEFT JOIN AS op ON a.[TaskAID] = op.[TaskAID]
LEFT JOIN AS quality ON a.[TaskAID] = quality.[TaskAID]
LEFT JOIN AS hours ON a.[] = hours.[]
UNION ALL
SELECT
CAST(N'MES优先' AS nvarchar(20)) AS [],
CAST(NULL AS char(1)) AS [],
CONVERT(nvarchar(200), a.[]) AS [],
CONVERT(nvarchar(500), a.[]) AS [],
CONVERT(nvarchar(4000), a.[]) AS [],
CAST(NULL AS numeric(19, 6)) AS [],
CAST(NULL AS datetime) AS [],
CAST(NULL AS int) AS [],
a.[TaskAID],
a.[],
CONVERT(nvarchar(200), a.[]) AS [],
a.[],
a.[],
a.[],
a.[],
a.[],
a.[],
a.[],
a.[],
a.[],
a.[],
a.[],
op.[],
ISNULL(hours.[], 0) AS [],
ISNULL(quality.[], 0) AS [],
ISNULL(quality.[], 0) AS [],
ISNULL(quality.[], 0) AS []
FROM [dbo].[View_生产订单_MES] AS a
LEFT JOIN AS op ON a.[TaskAID] = op.[TaskAID]
LEFT JOIN AS quality ON a.[TaskAID] = quality.[TaskAID]
LEFT JOIN AS hours ON a.[] = hours.[]
WHERE a.[] = N''
AND a.[] LIKE N'%装配%'
AND NOT EXISTS
(
SELECT 1
FROM [SAP].[SBO_YL].[dbo].[UBT_ODRF_ODLNMES] AS c
WHERE c.[] = a.[]
)
),
AS
(
SELECT
source.*,
CONVERT(date, source.[]) AS [],
CASE
WHEN source.[] LIKE N'%3420-YT%'
OR source.[] LIKE N'%3420-HT%'
OR source.[] LIKE N'%3420-YF%'
THEN N'见子任务'
WHEN ISNULL(source.[], 0) = 0 THEN N'齐套'
WHEN source.[] IS NULL THEN N'派发'
WHEN ISNULL(source.[], N'') <> N'1' THEN N'发料'
WHEN ISNULL(source.[], 0) <= 1 THEN N'开工'
WHEN ISNULL(source.[], 0) < source.[] THEN N'装配'
WHEN source.[] + source.[] < source.[] THEN N'质检'
WHEN ISNULL(source.[], 0) + source.[] < source.[] THEN N'待入库'
ELSE N''
END AS []
FROM AS source
)
SELECT
[],
[],
[],
[],
[],
[],
[],
[],
[TaskAID],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[],
[]
FROM
WHERE
(@ = N'仓库' AND [] = N'SAP')
OR
(
@ = N'大厅'
AND
(
[TaskAID] IS NULL
OR [] IS NULL
OR [] + [] <> []
)
)
OR
(
@ = N'质检'
AND [] < ISNULL([], 0)
)
OR
(
@ = N'装配'
AND ISNULL([], 0) < ISNULL([], 0)
)
ORDER BY
CASE WHEN [] IS NULL THEN 1 ELSE 0 END,
[],
[],
[],
[];
END;
GO

View File

@@ -407,6 +407,7 @@ BEGIN
PARTITION BY
[],
CASE
WHEN [] = N'外购' THEN [] + N':' + CONVERT(nvarchar(30), [SAP行号])
WHEN ISNULL([], N'') <> N'' THEN []
ELSE [] + N':' + CONVERT(nvarchar(30), [SAP行号])
END