增加刀具寿命界面

This commit is contained in:
zhangshun
2026-06-11 17:27:45 +08:00
parent 42dab65fed
commit 2ac9e1f66e
25 changed files with 3395 additions and 590 deletions

View File

@@ -0,0 +1,45 @@
IF OBJECT_ID(N'dbo.设备管理_刀具寿命_明细_查询', N'P') IS NOT NULL
DROP PROCEDURE dbo._刀具寿命_明细_查询
GO
CREATE PROCEDURE dbo._刀具寿命_明细_查询
@ NVARCHAR(100) = N''
AS
BEGIN
SET NOCOUNT ON
SELECT
LTRIM(RTRIM()) AS ,
LTRIM(RTRIM()) AS ,
ISNULL(, '') AS ,
ISNULL(, '') AS ,
ISNULL(, '') AS ,
ISNULL(, '') AS ,
ISNULL(, '') AS ,
CAST(ISNULL(寿, 0) AS DECIMAL(18, 2)) AS 寿,
CAST(ISNULL(寿, 0) AS DECIMAL(18, 2)) AS 寿,
CAST(ISNULL(1, 0) AS DECIMAL(18, 2)) AS 1,
CAST(ISNULL(寿, 0) - ISNULL(寿, 0) AS DECIMAL(18, 2)) AS 寿,
CASE
WHEN ISNULL(寿, 0) > 0 AND ISNULL(寿, 0) >= ISNULL(寿, 0) THEN N'报废'
WHEN ISNULL(1, 0) > 0 AND ISNULL(寿, 0) >= ISNULL(1, 0) THEN N'预警'
ELSE N'正常'
END AS ,
,
,
,
FROM dbo._刀具设备台账
WHERE ISNULL(LTRIM(RTRIM(@)), '') = ''
OR LTRIM(RTRIM()) = LTRIM(RTRIM(@))
ORDER BY
LTRIM(RTRIM()),
CASE
WHEN ISNULL(寿, 0) > 0 AND ISNULL(寿, 0) >= ISNULL(寿, 0) THEN 3
WHEN ISNULL(1, 0) > 0 AND ISNULL(寿, 0) >= ISNULL(1, 0) THEN 2
ELSE 1
END DESC,
ISNULL(, ''),
ISNULL(, '')
END
GO

View File

@@ -0,0 +1,23 @@
IF OBJECT_ID(N'dbo.设备管理_刀具寿命_机床列表_查询', N'P') IS NOT NULL
DROP PROCEDURE dbo._刀具寿命_机床列表_查询
GO
CREATE PROCEDURE dbo._刀具寿命_机床列表_查询
AS
BEGIN
SET NOCOUNT ON
/*
当前表“设备管理_刀具设备台账”中
1. 设备编号为空
2. 所在工位号有实际值,可作为设备/机床维度使用
*/
SELECT DISTINCT
LTRIM(RTRIM()) AS ,
LTRIM(RTRIM()) AS
FROM dbo._刀具设备台账
WHERE ISNULL(LTRIM(RTRIM()), '') <> ''
ORDER BY LTRIM(RTRIM())
END
GO

View File

@@ -0,0 +1,46 @@
CREATE OR ALTER PROCEDURE [dbo].[_测量数据发动机在线状态_工位JPH_历史]
@ nvarchar(50) = null,
@ nvarchar(50) = null,
@_check bit = null,
@ nvarchar(max) = null,
@_check bit = null,
@ nvarchar(50) = null,
@_check bit = null,
@ nvarchar(50) = null
AS
BEGIN
SET NOCOUNT ON
DECLARE @startTime datetime = null
DECLARE @endTime datetime = null
IF @ IS NOT NULL AND LTRIM(RTRIM(@)) <> N''
SET @startTime = CONVERT(datetime, @ + N' 00:00:00', 120)
IF @ IS NOT NULL AND LTRIM(RTRIM(@)) <> N''
SET @endTime = CONVERT(datetime, @ + N' 23:59:59', 120)
;WITH StationFilter AS (
SELECT LTRIM(RTRIM(value)) AS
FROM STRING_SPLIT(ISNULL(@, N''), N',')
WHERE LTRIM(RTRIM(value)) <> N''
)
SELECT
= CONVERT(nvarchar(10), CONVERT(datetime, [], 120), 23),
= RIGHT('0' + CAST(DATEPART(HOUR, CONVERT(datetime, [], 120)) AS nvarchar(2)), 2) + N':00',
= COUNT(1)
FROM [dbo].[线] m
WHERE m.[ID] <> 0
AND m.[] IS NOT NULL
AND (@startTime IS NULL OR CONVERT(datetime, m.[], 120) >= @startTime)
AND (@endTime IS NULL OR CONVERT(datetime, m.[], 120) <= @endTime)
AND (ISNULL(@_check, 0) = 0 OR m.[] = @)
AND (ISNULL(@_check, 0) = 0 OR m.[] = @)
AND (ISNULL(@_check, 0) = 0 OR EXISTS (
SELECT 1 FROM StationFilter f WHERE f. = m.[]
))
GROUP BY
CONVERT(nvarchar(10), CONVERT(datetime, m.[], 120), 23),
DATEPART(HOUR, CONVERT(datetime, m.[], 120))
ORDER BY ,
END

View File

@@ -0,0 +1,23 @@
CREATE OR ALTER PROCEDURE [dbo].[_测量数据发动机在线状态_工位JPH_历史_导出]
@ nvarchar(50) = null,
@ nvarchar(50) = null,
@_check bit = null,
@ nvarchar(max) = null,
@_check bit = null,
@ nvarchar(50) = null,
@_check bit = null,
@ nvarchar(50) = null
AS
BEGIN
SET NOCOUNT ON
EXEC [dbo].[_测量数据发动机在线状态_工位JPH_历史]
@ = @,
@ = @,
@_check = @_check,
@ = @,
@_check = @_check,
@ = @,
@_check = @_check,
@ = @
END

View File

@@ -0,0 +1,25 @@
CREATE OR ALTER PROCEDURE [dbo].[_测量数据发动机在线状态_工位JPH_实时]
@ nvarchar(50) = null,
@ nvarchar(50) = null,
@_check bit = null,
@ nvarchar(max) = null,
@_check bit = null,
@ nvarchar(50) = null,
@_check bit = null,
@ nvarchar(50) = null
AS
BEGIN
SET NOCOUNT ON
DECLARE @today nvarchar(10) = CONVERT(nvarchar(10), GETDATE(), 23)
EXEC [dbo].[_测量数据发动机在线状态_工位JPH_历史]
@ = @today,
@ = @today,
@_check = @_check,
@ = @,
@_check = @_check,
@ = @,
@_check = @_check,
@ = @
END

View File

@@ -0,0 +1,71 @@
CREATE OR ALTER PROCEDURE [dbo].[_测量数据发动机在线状态_工位节拍统计]
@ nvarchar(50) = null,
@ nvarchar(50) = null,
@_check bit = null,
@ nvarchar(max) = null,
@_check bit = null,
@ nvarchar(50) = null,
@_check bit = null,
@ nvarchar(50) = null
AS
BEGIN
SET NOCOUNT ON
DECLARE @startTime datetime = null
DECLARE @endTime datetime = null
IF @ IS NOT NULL AND LTRIM(RTRIM(@)) <> N''
SET @startTime = CONVERT(datetime, @ + N' 00:00:00', 120)
IF @ IS NOT NULL AND LTRIM(RTRIM(@)) <> N''
SET @endTime = CONVERT(datetime, @ + N' 23:59:59', 120)
;WITH StationFilter AS (
SELECT LTRIM(RTRIM(value)) AS
FROM STRING_SPLIT(ISNULL(@, N''), N',')
WHERE LTRIM(RTRIM(value)) <> N''
),
SourceData AS (
SELECT
s.[] AS ,
CONVERT(nvarchar(10), CONVERT(datetime, m.[], 120), 23) AS ,
CAST(m.[线] AS decimal(18, 2)) AS 线
FROM [dbo].[线] m
INNER JOIN [dbo].[MES_计划BOM_工位与名称] s
ON m.[] = s.[]
WHERE m.[ID] <> 0
AND m.[] IS NOT NULL
AND m.[线] IS NOT NULL
AND ISNUMERIC(CONVERT(nvarchar(50), m.[线])) = 1
AND (@startTime IS NULL OR CONVERT(datetime, m.[], 120) >= @startTime)
AND (@endTime IS NULL OR CONVERT(datetime, m.[], 120) <= @endTime)
AND (ISNULL(@_check, 0) = 0 OR m.[] = @)
AND (ISNULL(@_check, 0) = 0 OR m.[] = @)
AND (ISNULL(@_check, 0) = 0 OR EXISTS (
SELECT 1 FROM StationFilter f WHERE f. = m.[]
))
),
DailyAgg AS (
SELECT
,
,
CAST(AVG(线) AS decimal(18, 2)) AS
FROM SourceData
GROUP BY ,
),
TotalAgg AS (
SELECT
,
CAST(AVG(线) AS decimal(18, 2)) AS
FROM SourceData
GROUP BY
)
SELECT
d.,
t.,
d.,
d.
FROM DailyAgg d
INNER JOIN TotalAgg t ON d. = t.
ORDER BY d., d.
END

View File

@@ -0,0 +1,140 @@
CREATE OR ALTER PROCEDURE [dbo].[_测量数据发动机在线状态_工位节拍统计_导出]
@ nvarchar(50) = null,
@ nvarchar(50) = null,
@_check bit = null,
@ nvarchar(max) = null,
@_check bit = null,
@ nvarchar(50) = null,
@_check bit = null,
@ nvarchar(50) = null
AS
BEGIN
SET NOCOUNT ON
DECLARE @startTime datetime = null
DECLARE @endTime datetime = null
DECLARE @cols nvarchar(max) = N''
DECLARE @sql nvarchar(max)
IF @ IS NOT NULL AND LTRIM(RTRIM(@)) <> N''
SET @startTime = CONVERT(datetime, @ + N' 00:00:00', 120)
IF @ IS NOT NULL AND LTRIM(RTRIM(@)) <> N''
SET @endTime = CONVERT(datetime, @ + N' 23:59:59', 120)
;WITH StationFilter AS (
SELECT LTRIM(RTRIM(value)) AS
FROM STRING_SPLIT(ISNULL(@, N''), N',')
WHERE LTRIM(RTRIM(value)) <> N''
),
SourceData AS (
SELECT
m.[] AS ,
CONVERT(nvarchar(10), CONVERT(datetime, m.[], 120), 23) AS ,
CAST(m.[线] AS decimal(18, 2)) AS 线
FROM [dbo].[线] m
INNER JOIN [dbo].[MES_计划BOM_工位与名称] s
ON m.[] = s.[]
WHERE m.[ID] <> 0
AND m.[] IS NOT NULL
AND m.[线] IS NOT NULL
AND ISNUMERIC(CONVERT(nvarchar(50), m.[线])) = 1
AND (@startTime IS NULL OR CONVERT(datetime, m.[], 120) >= @startTime)
AND (@endTime IS NULL OR CONVERT(datetime, m.[], 120) <= @endTime)
AND (ISNULL(@_check, 0) = 0 OR m.[] = @)
AND (ISNULL(@_check, 0) = 0 OR m.[] = @)
AND (ISNULL(@_check, 0) = 0 OR EXISTS (
SELECT 1 FROM StationFilter f WHERE f. = m.[]
))
),
DailyAgg AS (
SELECT
,
,
CAST(AVG(线) AS decimal(18, 2)) AS
FROM SourceData
GROUP BY ,
)
SELECT @cols = STUFF((
SELECT N',' + QUOTENAME()
FROM (SELECT DISTINCT FROM DailyAgg) d
ORDER BY
FOR XML PATH(''), TYPE
).value('.', 'nvarchar(max)'), 1, 1, N'')
IF ISNULL(@cols, N'') = N''
BEGIN
SELECT CAST(N'' AS nvarchar(50)) AS , CAST(0 AS decimal(18, 2)) AS
WHERE 1 = 0
RETURN
END
SET @sql = N'
;WITH StationFilter AS (
SELECT LTRIM(RTRIM(value)) AS 工位号
FROM STRING_SPLIT(ISNULL(@工位列表, N''''), N'','')
WHERE LTRIM(RTRIM(value)) <> N''''
),
SourceData AS (
SELECT
m.[工位号] AS 工位,
CONVERT(nvarchar(10), CONVERT(datetime, m.[离开时间], 120), 23) AS 日期,
CAST(m.[在线时间] AS decimal(18, 2)) AS 在线时间
FROM [dbo].[测量数据发动机在线状态] m
INNER JOIN [dbo].[MES_计划BOM_工位与名称] s
ON m.[工位号] = s.[工位号]
WHERE m.[ID] <> 0
AND m.[离开时间] IS NOT NULL
AND m.[在线时间] IS NOT NULL
AND ISNUMERIC(CONVERT(nvarchar(50), m.[在线时间])) = 1
AND (@startTime IS NULL OR CONVERT(datetime, m.[离开时间], 120) >= @startTime)
AND (@endTime IS NULL OR CONVERT(datetime, m.[离开时间], 120) <= @endTime)
AND (ISNULL(@订单号_check, 0) = 0 OR m.[订单号] = @订单号)
AND (ISNULL(@产品型号代码_check, 0) = 0 OR m.[机型代码] = @产品型号代码)
AND (ISNULL(@工位_check, 0) = 0 OR EXISTS (
SELECT 1 FROM StationFilter f WHERE f.工位号 = m.[工位号]
))
),
DailyAgg AS (
SELECT
工位,
日期,
CAST(AVG(在线时间) AS decimal(18, 2)) AS 当日平均节拍
FROM SourceData
GROUP BY 工位, 日期
),
TotalAgg AS (
SELECT
工位,
CAST(AVG(在线时间) AS decimal(18, 2)) AS 总平均节拍
FROM SourceData
GROUP BY 工位
),
PivotData AS (
SELECT 工位, 日期, 当日平均节拍
FROM DailyAgg
)
SELECT 工位, 总平均节拍, ' + @cols + N'
FROM (
SELECT p.工位, t.总平均节拍, p.日期, p.当日平均节拍
FROM PivotData p
INNER JOIN TotalAgg t ON p.工位 = t.工位
) src
PIVOT (
MAX(当日平均节拍)
FOR 日期 IN (' + @cols + N')
) p
ORDER BY 工位'
EXEC sp_executesql
@sql,
N'@startTime datetime, @endTime datetime, @工位_check bit, @工位列表 nvarchar(max), @订单号_check bit, @订单号 nvarchar(50), @产品型号代码_check bit, @产品型号代码 nvarchar(50)',
@startTime = @startTime,
@endTime = @endTime,
@_check = @_check,
@ = @,
@_check = @_check,
@ = @,
@_check = @_check,
@ = @
END