feat: 完善设计报工及生产管理功能
This commit is contained in:
92
db_backups/add_design_report_check_permissions_20260722.sql
Normal file
92
db_backups/add_design_report_check_permissions_20260722.sql
Normal 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
|
||||
68
db_backups/create_design_report_attachments_20260722.sql
Normal file
68
db_backups/create_design_report_attachments_20260722.sql
Normal 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
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user