chore: save local MES snapshot
This commit is contained in:
188
db_backups/add_assignee_to_timesheet_export_procs_20260622.sql
Normal file
188
db_backups/add_assignee_to_timesheet_export_procs_20260622.sql
Normal file
@@ -0,0 +1,188 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[工时统计_项目工时_查询_导出]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
SELECT '项目工时统计_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype
|
||||
|
||||
SELECT 256*20 AS 合同号, 256*20 AS 订单号, 256*30 AS 产品名称, 256*40 AS 产品编码, 256*15 AS 工序名称, 256*12 AS 操作人,
|
||||
256*12 AS 指派对象, 256*12 AS 计划数量, 256*12 AS 完成数量, 256*10 AS 报工数量, 256*15 AS 计划开始, 256*15 AS 计划完成, 256*12 AS '工时(h)'
|
||||
|
||||
SELECT 0 AS 合同号, 0 AS 订单号, 0 AS 产品名称, 0 AS 产品编码, 0 AS 工序名称, 0 AS 操作人,
|
||||
0 AS 指派对象, 0 AS 计划数量, 0 AS 完成数量, 0 AS 报工数量, 0 AS 计划开始, 0 AS 计划完成, 0 AS '工时(h)'
|
||||
|
||||
SELECT
|
||||
v.订单合同号 AS 合同号,
|
||||
v.订单号,
|
||||
v.产品名称,
|
||||
v.产品编码,
|
||||
v.工序名称,
|
||||
v.操作人,
|
||||
ISNULL(v.工位名称, '') AS 指派对象,
|
||||
CASE WHEN v.计划数量 IS NULL THEN '' WHEN v.计划数量 = FLOOR(v.计划数量) THEN CAST(CAST(v.计划数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(v.计划数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS 计划数量,
|
||||
CASE WHEN v.完成数量 IS NULL THEN '' WHEN v.完成数量 = FLOOR(v.完成数量) THEN CAST(CAST(v.完成数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(v.完成数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS 完成数量,
|
||||
CASE WHEN v.操作类别 IN ('报工', '辅助结束') THEN CAST(v.操作数值 AS VARCHAR(20)) ELSE '0' END AS 报工数量,
|
||||
CONVERT(VARCHAR(10), v.报工日期, 120) AS 计划开始,
|
||||
CONVERT(VARCHAR(10), v.报工日期, 120) AS 计划完成,
|
||||
CAST(CAST(v.加工工时 / 60.0 / 60.0 AS DECIMAL(10,2)) AS VARCHAR(20)) AS '工时(h)'
|
||||
FROM View_生产工时视图 v
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR v.订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR v.操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR v.产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR v.工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR v.订单号 LIKE '%' + @订单号 + '%')
|
||||
ORDER BY v.订单合同号, v.产品编码, v.工序名称, v.操作人, v.订单号
|
||||
END
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[工时统计_作业者工时_查询_导出]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
SELECT '作业者工时统计_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype
|
||||
|
||||
SELECT 256*12 AS 操作人, 256*15 AS 工作日期, 256*20 AS 合同号, 256*12 AS 订单号, 256*40 AS 产品编码,
|
||||
256*25 AS 产品名称, 256*15 AS 工序名称, 256*12 AS 指派对象, 256*10 AS 报工数量, 256*20 AS 开始时间, 256*20 AS 结束时间, 256*12 AS '工时(h)'
|
||||
|
||||
SELECT 0 AS 操作人, 0 AS 工作日期, 0 AS 合同号, 0 AS 订单号, 0 AS 产品编码,
|
||||
0 AS 产品名称, 0 AS 工序名称, 0 AS 指派对象, 0 AS 报工数量, 0 AS 开始时间, 0 AS 结束时间, 0 AS '工时(h)'
|
||||
|
||||
SELECT
|
||||
操作人,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
ISNULL(订单合同号, '') AS 合同号,
|
||||
ISNULL(订单号, '') AS 订单号,
|
||||
ISNULL(产品编码, '') AS 产品编码,
|
||||
ISNULL(产品名称, '') AS 产品名称,
|
||||
ISNULL(工序名称, '') AS 工序名称,
|
||||
ISNULL(工位名称, '') AS 指派对象,
|
||||
CASE WHEN 操作类别 IN ('报工', '辅助结束', '加班', '异常', '开始加工') THEN CAST(操作数值 AS VARCHAR(20)) ELSE '0' END AS 报工数量,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间,
|
||||
CAST(CAST(总时长 / 60.0 / 60.0 AS DECIMAL(10,2)) AS VARCHAR(20)) AS '工时(h)'
|
||||
FROM [dbo].[View_生产工时视图]
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND ISNULL(阶段标识, 0) != -1
|
||||
ORDER BY 操作人, 开始时间
|
||||
END
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[工时统计_任务工时_查询_导出]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
SELECT '任务工时统计_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype
|
||||
|
||||
SELECT 256*20 AS 合同号, 256*12 AS 订单号, 256*40 AS 产品编码, 256*25 AS 产品名称, 256*15 AS 工序名称,
|
||||
256*12 AS 操作人, 256*12 AS 指派对象, 256*12 AS 计划数量, 256*12 AS 完成数量, 256*10 AS 报工数量, 256*20 AS 开始时间, 256*20 AS 结束时间, 256*12 AS '工时(h)'
|
||||
|
||||
SELECT 0 AS 合同号, 0 AS 订单号, 0 AS 产品编码, 0 AS 产品名称, 0 AS 工序名称,
|
||||
0 AS 操作人, 0 AS 指派对象, 0 AS 计划数量, 0 AS 完成数量, 0 AS 报工数量, 0 AS 开始时间, 0 AS 结束时间, 0 AS '工时(h)'
|
||||
|
||||
SELECT
|
||||
ISNULL(订单合同号, '') AS 合同号,
|
||||
ISNULL(订单号, '') AS 订单号,
|
||||
ISNULL(产品编码, '') AS 产品编码,
|
||||
ISNULL(产品名称, '') AS 产品名称,
|
||||
ISNULL(工序名称, '') AS 工序名称,
|
||||
ISNULL(操作人, '') AS 操作人,
|
||||
ISNULL(工位名称, '') AS 指派对象,
|
||||
CASE WHEN 计划数量 IS NULL THEN '' WHEN 计划数量 = FLOOR(计划数量) THEN CAST(CAST(计划数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(计划数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS 计划数量,
|
||||
CASE WHEN 完成数量 IS NULL THEN '' WHEN 完成数量 = FLOOR(完成数量) THEN CAST(CAST(完成数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(完成数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS 完成数量,
|
||||
CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN CAST(操作数值 AS VARCHAR(20)) ELSE '0' END AS 报工数量,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间,
|
||||
CAST(CAST(加工工时 / 60.0 / 60.0 AS DECIMAL(10,2)) AS VARCHAR(20)) AS '工时(h)'
|
||||
FROM View_生产工时视图
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
ORDER BY 订单合同号, 订单号, 产品编码, 工序名称, 开始时间
|
||||
END
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[工时统计_设备工时_查询_导出]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
SELECT '设备工时统计_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype
|
||||
|
||||
SELECT 256*12 AS 操作人, 256*15 AS 工作日期, 256*20 AS 合同号, 256*12 AS 订单号, 256*40 AS 产品编码,
|
||||
256*25 AS 产品名称, 256*15 AS 工序名称, 256*12 AS 指派对象, 256*10 AS 报工数量, 256*20 AS 开始时间, 256*20 AS 结束时间, 256*12 AS '工时(h)'
|
||||
|
||||
SELECT 0 AS 操作人, 0 AS 工作日期, 0 AS 合同号, 0 AS 订单号, 0 AS 产品编码,
|
||||
0 AS 产品名称, 0 AS 工序名称, 0 AS 指派对象, 0 AS 报工数量, 0 AS 开始时间, 0 AS 结束时间, 0 AS '工时(h)'
|
||||
|
||||
SELECT
|
||||
工位名称,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
ISNULL(订单合同号, '') AS 合同号,
|
||||
ISNULL(订单号, '') AS 订单号,
|
||||
ISNULL(产品编码, '') AS 产品编码,
|
||||
ISNULL(产品名称, '') AS 产品名称,
|
||||
ISNULL(工序名称, '') AS 工序名称,
|
||||
ISNULL(工位名称, '') AS 指派对象,
|
||||
CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN CAST(操作数值 AS VARCHAR(20)) ELSE '0' END AS 报工数量,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间,
|
||||
CAST(CAST(加工工时 / 60.0 / 60.0 AS DECIMAL(10,2)) AS VARCHAR(20)) AS '工时(h)'
|
||||
FROM View_生产工时视图
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 报工日期 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 报工日期 <= @结束日期)
|
||||
AND 工位名称 IS NOT NULL AND 工位名称 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 工位名称 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND ISNULL(阶段标识, 0) = -1
|
||||
ORDER BY 工位名称, 开始时间
|
||||
END
|
||||
GO
|
||||
492
db_backups/add_assignee_to_timesheet_query_procs_20260622.sql
Normal file
492
db_backups/add_assignee_to_timesheet_query_procs_20260622.sql
Normal file
@@ -0,0 +1,492 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[工时统计_项目工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH 订单工时汇总 AS (
|
||||
SELECT
|
||||
v.订单合同号 AS 合同号,
|
||||
v.产品编码,
|
||||
v.产品名称,
|
||||
MAX(v.计划数量) AS 计划数量,
|
||||
MAX(v.完成数量) AS 完成数量,
|
||||
SUM(CASE WHEN v.操作类别 IN ('报工', '辅助结束') THEN v.操作数值 ELSE 0 END) AS 报工数量,
|
||||
MIN(CONVERT(VARCHAR(10), v.报工日期, 120)) AS 计划开始,
|
||||
MAX(CONVERT(VARCHAR(10), v.报工日期, 120)) AS 计划完成,
|
||||
CAST(SUM(v.加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时
|
||||
FROM View_生产工时视图 v
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR v.订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR v.操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR v.产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR v.工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR v.订单号 LIKE '%' + @订单号 + '%')
|
||||
GROUP BY v.订单合同号, v.产品编码, v.产品名称
|
||||
),
|
||||
工序工时明细 AS (
|
||||
SELECT
|
||||
v.订单合同号 AS 合同号,
|
||||
v.产品编码,
|
||||
v.工序名称,
|
||||
v.操作人,
|
||||
MAX(v.工位名称) AS 指派对象,
|
||||
v.订单号,
|
||||
SUM(CASE WHEN v.操作类别 IN ('报工', '辅助结束') THEN v.操作数值 ELSE 0 END) AS 报工数量,
|
||||
CAST(SUM(v.加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 工时小时,
|
||||
MIN(CONVERT(VARCHAR(10), v.报工日期, 120)) AS 计划开始,
|
||||
MAX(CONVERT(VARCHAR(10), v.报工日期, 120)) AS 计划完成
|
||||
FROM View_生产工时视图 v
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR v.订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR v.操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR v.产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR v.工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR v.订单号 LIKE '%' + @订单号 + '%')
|
||||
GROUP BY v.订单合同号, v.产品编码, v.工序名称, v.操作人, v.订单号
|
||||
)
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
合同号 AS contractNo,
|
||||
产品名称 AS materialDesc,
|
||||
产品编码 AS materialCode,
|
||||
'' AS processName,
|
||||
'' AS operator,
|
||||
'' AS 指派对象,
|
||||
CASE WHEN 计划数量 = FLOOR(计划数量) THEN CAST(CAST(计划数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(计划数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END + '/' +
|
||||
CASE WHEN 完成数量 = FLOOR(完成数量) THEN CAST(CAST(完成数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(完成数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS qty,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
ISNULL(计划开始, '') AS planStart,
|
||||
ISNULL(计划完成, '') AS planEnd,
|
||||
CAST(总工时小时 AS VARCHAR(20)) AS workHours,
|
||||
'' AS 订单号
|
||||
FROM 订单工时汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
d.合同号 AS contractNo,
|
||||
'' AS materialDesc,
|
||||
d.产品编码 AS materialCode,
|
||||
d.工序名称 AS processName,
|
||||
d.操作人 AS operator,
|
||||
ISNULL(d.指派对象, '') AS 指派对象,
|
||||
'' AS qty,
|
||||
CAST(d.报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
d.计划开始 AS planStart,
|
||||
d.计划完成 AS planEnd,
|
||||
CAST(d.工时小时 AS VARCHAR(20)) AS workHours,
|
||||
d.订单号 AS 订单号
|
||||
FROM 工序工时明细 d
|
||||
|
||||
ORDER BY contractNo, materialCode, [Level], processName
|
||||
END
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[工时统计_作业者工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH 操作人汇总 AS (
|
||||
SELECT
|
||||
操作人,
|
||||
COUNT(*) AS 报工次数,
|
||||
SUM(CASE
|
||||
WHEN 操作类别 NOT IN ('异常') THEN 操作数值
|
||||
WHEN 操作类别 = '异常' THEN -操作数值
|
||||
ELSE 0
|
||||
END) AS 报工数量,
|
||||
CAST(SUM(CASE
|
||||
WHEN 操作类别 = '异常' THEN -总时长
|
||||
ELSE 总时长
|
||||
END) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时
|
||||
FROM [dbo].[View_生产工时视图]
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 开始时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 结束时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND ISNULL(阶段标识, 0) != -1
|
||||
GROUP BY 操作人
|
||||
),
|
||||
日期汇总 AS (
|
||||
SELECT
|
||||
操作人,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
COUNT(*) AS 报工次数,
|
||||
SUM(CASE
|
||||
WHEN 操作类别 NOT IN ('异常') THEN 操作数值
|
||||
WHEN 操作类别 = '异常' THEN -操作数值
|
||||
ELSE 0
|
||||
END) AS 报工数量,
|
||||
CAST(SUM(CASE
|
||||
WHEN 操作类别 = '异常' THEN -总时长
|
||||
ELSE 总时长
|
||||
END) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 工时小时
|
||||
FROM [dbo].[View_生产工时视图]
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 开始时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 结束时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND ISNULL(阶段标识, 0) != -1
|
||||
GROUP BY 操作人, CONVERT(VARCHAR(10), 开始时间, 120)
|
||||
),
|
||||
报工明细 AS (
|
||||
SELECT
|
||||
操作人,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
订单合同号 AS 合同号,
|
||||
订单号,
|
||||
产品编码,
|
||||
产品名称,
|
||||
工序名称,
|
||||
工位名称 AS 指派对象,
|
||||
CASE
|
||||
WHEN 操作类别 NOT IN ('异常') THEN 操作数值
|
||||
WHEN 操作类别 = '异常' THEN -操作数值
|
||||
ELSE 0
|
||||
END AS 报工数量,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间,
|
||||
CAST(CASE
|
||||
WHEN 操作类别 = '异常' THEN -总时长
|
||||
ELSE 总时长
|
||||
END / 60.0 / 60.0 AS DECIMAL(10,2)) AS 工时小时,
|
||||
异常说明,
|
||||
工序说明,
|
||||
操作类别
|
||||
FROM [dbo].[View_生产工时视图]
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 开始时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 结束时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND ISNULL(阶段标识, 0) != -1
|
||||
)
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
操作人 AS operator,
|
||||
'' AS dateLabel,
|
||||
CAST(报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
'' AS 指派对象,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
'' AS 异常说明,
|
||||
'' AS 工序说明,
|
||||
'' AS 操作类别,
|
||||
CAST(总工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 操作人汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
操作人 AS operator,
|
||||
工作日期 AS dateLabel,
|
||||
CAST(报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
'' AS 指派对象,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
'' AS 异常说明,
|
||||
'' AS 工序说明,
|
||||
'' AS 操作类别,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 日期汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
3 AS [Level],
|
||||
操作人 AS operator,
|
||||
工作日期 AS dateLabel,
|
||||
'' AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
ISNULL(合同号, '') AS contractNo,
|
||||
ISNULL(订单号, '') AS orderNo,
|
||||
ISNULL(产品编码, '') AS productCode,
|
||||
ISNULL(产品名称, '') AS productName,
|
||||
ISNULL(工序名称, '') AS processName,
|
||||
ISNULL(指派对象, '') AS 指派对象,
|
||||
ISNULL(开始时间, '') AS startTime,
|
||||
ISNULL(结束时间, '') AS endTime,
|
||||
ISNULL(异常说明, '') AS 异常说明,
|
||||
ISNULL(工序说明, '') AS 工序说明,
|
||||
ISNULL(操作类别, '') AS 操作类别,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 报工明细
|
||||
|
||||
ORDER BY operator, dateLabel, [Level]
|
||||
END
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[工时统计_任务工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH 任务汇总 AS (
|
||||
SELECT
|
||||
订单合同号 AS 合同号,
|
||||
订单号,
|
||||
产品编码,
|
||||
产品名称,
|
||||
工序名称,
|
||||
操作类别,
|
||||
MAX(计划数量) AS 计划数量,
|
||||
MAX(完成数量) AS 完成数量,
|
||||
SUM(CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN 操作数值 ELSE 0 END) AS 报工数量,
|
||||
CAST(SUM(总时长) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时
|
||||
FROM View_生产工时视图
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
GROUP BY 订单合同号, 订单号, 产品编码, 产品名称, 工序名称, 操作类别
|
||||
),
|
||||
报工明细 AS (
|
||||
SELECT
|
||||
订单合同号 AS 合同号,
|
||||
订单号,
|
||||
产品编码,
|
||||
工序名称,
|
||||
操作人,
|
||||
工位名称 AS 指派对象,
|
||||
操作类别,
|
||||
CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN 操作数值 ELSE 0 END AS 报工数量,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间,
|
||||
CAST(总时长 / 60.0 / 60.0 AS DECIMAL(10,2)) AS 工时小时
|
||||
FROM View_生产工时视图
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
)
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
ISNULL(合同号, '') AS contractNo,
|
||||
ISNULL(订单号, '') AS orderNo,
|
||||
ISNULL(产品编码, '') AS productCode,
|
||||
ISNULL(产品名称, '') AS productName,
|
||||
ISNULL(工序名称, '') AS processName,
|
||||
'' AS operator,
|
||||
'' AS 指派对象,
|
||||
CASE WHEN 计划数量 IS NULL THEN '0' WHEN 计划数量 = FLOOR(计划数量) THEN CAST(CAST(计划数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(计划数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END + '/' +
|
||||
CASE WHEN 完成数量 IS NULL THEN '0' WHEN 完成数量 = FLOOR(完成数量) THEN CAST(CAST(完成数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(完成数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS qty,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
CAST(总工时小时 AS VARCHAR(20)) AS workHours,
|
||||
操作类别
|
||||
FROM 任务汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
ISNULL(合同号, '') AS contractNo,
|
||||
ISNULL(订单号, '') AS orderNo,
|
||||
ISNULL(产品编码, '') AS productCode,
|
||||
'' AS productName,
|
||||
ISNULL(工序名称, '') AS processName,
|
||||
ISNULL(操作人, '') AS operator,
|
||||
ISNULL(指派对象, '') AS 指派对象,
|
||||
'' AS qty,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
ISNULL(开始时间, '') AS startTime,
|
||||
ISNULL(结束时间, '') AS endTime,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours,
|
||||
操作类别
|
||||
FROM 报工明细
|
||||
|
||||
ORDER BY contractNo, orderNo, productCode, processName, [Level], startTime
|
||||
END
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[工时统计_设备工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH 操作人汇总 AS (
|
||||
SELECT
|
||||
工位名称,
|
||||
COUNT(*) AS 报工次数,
|
||||
SUM(CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN 操作数值 ELSE 0 END) AS 报工数量,
|
||||
CAST(SUM(加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时
|
||||
FROM View_生产工时视图
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 工位名称 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND ISNULL(阶段标识, 0) = -1
|
||||
GROUP BY 工位名称
|
||||
),
|
||||
日期汇总 AS (
|
||||
SELECT
|
||||
工位名称,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
COUNT(*) AS 报工次数,
|
||||
SUM(CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN 操作数值 ELSE 0 END) AS 报工数量,
|
||||
CAST(SUM(加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 工时小时
|
||||
FROM View_生产工时视图
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND 工位名称 IS NOT NULL AND 工位名称 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 工位名称 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND ISNULL(阶段标识, 0) = -1
|
||||
GROUP BY 工位名称, CONVERT(VARCHAR(10), 开始时间, 120)
|
||||
),
|
||||
报工明细 AS (
|
||||
SELECT
|
||||
工位名称,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
订单合同号 AS 合同号,
|
||||
订单号,
|
||||
产品编码,
|
||||
产品名称,
|
||||
工序名称,
|
||||
工位名称 AS 指派对象,
|
||||
CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN 操作数值 ELSE 0 END AS 报工数量,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间,
|
||||
CAST(加工工时 / 60.0 / 60.0 AS DECIMAL(10,2)) AS 工时小时
|
||||
FROM View_生产工时视图
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 工位名称 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND ISNULL(阶段标识, 0) = -1
|
||||
)
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
工位名称 AS operator,
|
||||
'' AS dateLabel,
|
||||
CAST(报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
'' AS 指派对象,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
CAST(总工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 操作人汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
工位名称 AS operator,
|
||||
工作日期 AS dateLabel,
|
||||
CAST(报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
'' AS 指派对象,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 日期汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
3 AS [Level],
|
||||
工位名称 AS operator,
|
||||
工作日期 AS dateLabel,
|
||||
'' AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
ISNULL(合同号, '') AS contractNo,
|
||||
ISNULL(订单号, '') AS orderNo,
|
||||
ISNULL(产品编码, '') AS productCode,
|
||||
ISNULL(产品名称, '') AS productName,
|
||||
ISNULL(工序名称, '') AS processName,
|
||||
ISNULL(指派对象, '') AS 指派对象,
|
||||
ISNULL(开始时间, '') AS startTime,
|
||||
ISNULL(结束时间, '') AS endTime,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 报工明细
|
||||
|
||||
ORDER BY operator, dateLabel, [Level]
|
||||
END
|
||||
GO
|
||||
@@ -0,0 +1,186 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[生产管理_生产计划跟踪]
|
||||
@订单号 int = 0,
|
||||
@物料类型 nvarchar(50) = '',
|
||||
@合同号 nvarchar(50) = '',
|
||||
@产品编码 nvarchar(50) = '',
|
||||
@产品名称 nvarchar(50) = '',
|
||||
@工序名称 nvarchar(50) = '',
|
||||
@要求完工日期1 nvarchar(50) = '',
|
||||
@要求完工日期2 nvarchar(50) = '',
|
||||
@计划开始1 nvarchar(50) = '',
|
||||
@计划开始2 nvarchar(50) = '',
|
||||
@计划完成1 nvarchar(50) = '',
|
||||
@计划完成2 nvarchar(50) = '',
|
||||
@排产状态 nvarchar(50) = '全部',
|
||||
@指派对象 nvarchar(50) = '全部',
|
||||
@自制件属性 nvarchar(50) = '全部',
|
||||
@计划号 nvarchar(50) = '',
|
||||
@加急状态 nvarchar(50) = '',
|
||||
@单据状态 nvarchar(50) = ''
|
||||
AS
|
||||
BEGIN
|
||||
DECLARE @selectStr NVARCHAR(MAX)
|
||||
DECLARE @selectStrWhere NVARCHAR(4000) = ' WHERE [物料类型] = ''pit_Resource'' '
|
||||
|
||||
SET @selectStr = N'
|
||||
SELECT top 500
|
||||
v.计划号,
|
||||
加急总数,
|
||||
拣配状态,
|
||||
自制件属性,
|
||||
入库数量,
|
||||
外协分组,
|
||||
case
|
||||
when isnull(任务状态,0)=4 then ''已完成''
|
||||
when isnull(任务状态,0)=2 then ''已开工''
|
||||
when isnull(任务状态,0)=0 then ''待执行''
|
||||
when isnull(任务状态,0)=1 then ''可执行''
|
||||
else ''''
|
||||
end as [任务状态],
|
||||
case
|
||||
when isnull(加工状态,0)=2 then ''辅助开始''
|
||||
when isnull(加工状态,0)=3 then ''辅助结束''
|
||||
when isnull(加工状态,0)=4 then ''开始加工''
|
||||
when isnull(加工状态,0)=5 then ''暂停''
|
||||
when isnull(加工状态,0)=6 then ''报工''
|
||||
else ''''
|
||||
end as [加工状态],
|
||||
[计划数量订单],
|
||||
ISNULL(开工时间, 0) AS 开工时间,
|
||||
ISNULL(进度, 0) AS 进度,
|
||||
v.[TaskAID],
|
||||
[合同号],
|
||||
v.[订单编号] AS 订单号,
|
||||
[订单行号],
|
||||
[订单拆分内码] AS 拆分内码,
|
||||
[物料编号] AS 产品编码,
|
||||
[物料描述] AS 产品名称,
|
||||
TRIM(''.'' FROM TRIM(''0'' FROM CAST([计划数量] AS VARCHAR(30)))) AS 计划数量,
|
||||
ISNULL(gy.标准工时, 0) AS 标准工时,
|
||||
[计划完成] AS 要求完工日期,
|
||||
[工序名称],
|
||||
完成数量,
|
||||
收料数量,
|
||||
CASE
|
||||
WHEN [加急状态] = 1 THEN ''加急''
|
||||
ELSE ''''
|
||||
END AS 加急状态,
|
||||
加急数量,
|
||||
性质,
|
||||
ISNULL(总工时, 0) AS 总工时,
|
||||
[占用情况],
|
||||
[排产状态],
|
||||
[工序计划数量],
|
||||
指派对象编号,
|
||||
指派对象,
|
||||
TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量,
|
||||
计划开始时间,
|
||||
计划完成时间,
|
||||
最晚开始时间,
|
||||
[派工状态],
|
||||
[外协通知],
|
||||
[优先级],
|
||||
[未完成说明],
|
||||
[派工特殊说明],
|
||||
[最后编辑人],
|
||||
[最后编辑时间],
|
||||
[二次派工],
|
||||
CASE
|
||||
WHEN zj_终检.计划号 IS NOT NULL THEN ''是''
|
||||
ELSE ''否''
|
||||
END AS 终检,
|
||||
ISNULL(zj_收检.合格数合计, 0) AS 收检合格数,
|
||||
ISNULL(zj_收检.不合格数合计, 0) AS 收检不合格数,
|
||||
ISNULL(zj_收检.合格数合计, 0) + ISNULL(zj_收检.不合格数合计, 0) AS 收检总数,
|
||||
ISNULL(jl.开始时间, 0) AS 开始时间,
|
||||
ISNULL(jl.结束时间, 0) AS 结束时间,
|
||||
ISNULL(jl.外协结束时间, 0) AS 外协结束时间,
|
||||
STUFF((
|
||||
SELECT '','' + d2.工序名称
|
||||
FROM [dbo].[View_生产订单_MES] d2
|
||||
WHERE d2.订单编号 = v.订单编号 order by d2.订单行号
|
||||
FOR XML PATH('''')
|
||||
), 1, 1, '''') AS 工艺路线
|
||||
FROM [dbo].[View_生产订单全部(包括已关闭)] v
|
||||
LEFT JOIN (
|
||||
SELECT DISTINCT 计划号
|
||||
FROM dbo.YL_质量检验_质检记录
|
||||
WHERE 质检类型 = ''终检''
|
||||
) zj_终检 ON v.[订单编号] = zj_终检.计划号
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
TaskAID,
|
||||
SUM(ISNULL(合格数, 0)) AS 合格数合计,
|
||||
SUM(ISNULL(不合格数, 0)) AS 不合格数合计
|
||||
FROM dbo.YL_质量检验_质检记录
|
||||
WHERE 质检类型 = ''收检''
|
||||
GROUP BY TaskAID
|
||||
) zj_收检 ON v.[TaskAID] = zj_收检.TaskAID
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
TaskAID,
|
||||
min(ISNULL(开始时间, 0)) AS 开始时间,
|
||||
MAX(CASE WHEN 操作类别 = ''报工'' THEN ISNULL(开始时间, 0) ELSE NULL END) AS 外协结束时间,
|
||||
MAX(CASE WHEN 操作类别 = ''报工'' THEN ISNULL(结束时间, 0) ELSE NULL END) AS 结束时间
|
||||
FROM [dbo].[YL_加工中心_操作记录表]
|
||||
GROUP BY TaskAID
|
||||
) jl ON v.[TaskAID] = jl.TaskAID
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
订单编号,
|
||||
工艺顺序,
|
||||
MAX(ISNULL(标准工时, 0)) AS 标准工时
|
||||
FROM dbo.[车间生产管理工艺_零件生产工艺_工艺库]
|
||||
GROUP BY 订单编号, 工艺顺序
|
||||
) gy ON v.[订单编号] = gy.[订单编号] AND v.[订单行号] = gy.[工艺顺序]'
|
||||
|
||||
IF (@订单号 > 0)
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND v.[订单编号] = ' + CONVERT(VARCHAR(10), @订单号)
|
||||
IF (@计划号 > 0)
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND v.[计划号] = '''+@计划号+''''
|
||||
IF (@合同号 <> '')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [合同号] LIKE ''%' + @合同号 + '%'''
|
||||
IF (@产品编码 <> '')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [物料编号] LIKE ''%' + @产品编码 + '%'''
|
||||
IF (@产品名称 <> '')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [物料描述] LIKE ''%' + @产品名称 + '%'''
|
||||
IF (@工序名称 <> '')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [工序名称] = ''' + @工序名称 + ''''
|
||||
IF (@要求完工日期1 <> '')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [计划完成] >= ''' + @要求完工日期1 + ''''
|
||||
IF (@要求完工日期2 <> '')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [计划完成] <= ''' + @要求完工日期2 + ''''
|
||||
IF (@计划开始1 <> '')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [计划开始时间] >= ''' + @计划开始1 + ''''
|
||||
IF (@计划开始2 <> '')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [计划开始时间] <= ''' + @计划开始2 + ''''
|
||||
IF (@计划完成1 <> '')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [计划完成时间] >= ''' + @计划完成1 + ''''
|
||||
IF (@计划完成2 <> '')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [计划完成时间] <= ''' + @计划完成2 + ''''
|
||||
IF (@排产状态 = '未完成')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND ISNULL([排产状态], 0) = 0'
|
||||
ELSE IF (@排产状态 = '已完成')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [排产状态] = 1'
|
||||
IF (@自制件属性 = '机加')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [自制件属性] = ''机加件'''
|
||||
ELSE IF (@自制件属性 = '装配')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [自制件属性] LIKE ''%装配'''
|
||||
IF (@加急状态 = '加急')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [加急状态] = 1'
|
||||
IF (@单据状态 = '正常')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [单据状态] is null'
|
||||
ELSE IF (@单据状态 = '关闭')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [单据状态] is not null'
|
||||
IF (@指派对象 <> '全部')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [指派对象] IN (SELECT value FROM STRING_SPLIT(''' + @指派对象 + ''', '',''))'
|
||||
|
||||
SET @selectStrWhere = @selectStrWhere + ' ORDER BY v.[计划完成] ASC, v.[订单编号] ASC'
|
||||
SET @selectStr = @selectStr + @selectStrWhere
|
||||
PRINT @selectStr
|
||||
EXEC sp_executesql @selectStr
|
||||
END
|
||||
GO
|
||||
81
db_backups/alter_quality_details_query_fieldkey_20260625.sql
Normal file
81
db_backups/alter_quality_details_query_fieldkey_20260625.sql
Normal file
@@ -0,0 +1,81 @@
|
||||
ALTER PROCEDURE [dbo].[质量管理_质检明细_查询]
|
||||
@质检类型 nvarchar(4000) = '10',
|
||||
@开始日期 datetime = NULL,
|
||||
@结束日期 datetime = NULL,
|
||||
@订单号 nvarchar(4000) = '0',
|
||||
@合同号 nvarchar(4000) = '0',
|
||||
@零件编码 nvarchar(4000) = '0',
|
||||
@零件名称 nvarchar(4000) = '0',
|
||||
@PageCurrent int = 1,
|
||||
@PageSize int = 20,
|
||||
@PageCount int OUTPUT,
|
||||
@ItemCount int OUTPUT
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @tbname sysname = ' [dbo].[View_质检明细] '
|
||||
DECLARE @fieldkey sysname = 'QT_AID'
|
||||
DECLARE @where nvarchar(4000)
|
||||
DECLARE @fieldshow nvarchar(1000)
|
||||
DECLARE @fieldOrder nvarchar(1000) = ' 检测时间 DESC, QT_AID DESC '
|
||||
|
||||
SET @where = ' (1=1) '
|
||||
|
||||
IF @质检类型 = '10'
|
||||
SET @where = @where + ' AND (1=1) '
|
||||
ELSE IF @质检类型 = '0'
|
||||
SET @where = @where + ' AND 质检类型 = ''收检'' '
|
||||
ELSE IF @质检类型 = '1'
|
||||
SET @where = @where + ' AND 质检类型 = ''终检'' '
|
||||
ELSE IF @质检类型 = '2'
|
||||
SET @where = @where + ' AND 质检类型 = ''来料检验'' '
|
||||
ELSE IF @质检类型 = '3'
|
||||
SET @where = @where + ' AND 质检类型 = ''退库检验'' '
|
||||
|
||||
IF @订单号 <> '0'
|
||||
SET @where = @where + ' AND 计划号 LIKE ''%' + @订单号 + '%'' '
|
||||
|
||||
--IF @合同号 <> '0'
|
||||
-- SET @where = @where + ' AND 内部合同号 LIKE ''%' + @合同号 + '%'' '
|
||||
|
||||
IF @零件编码 <> '0'
|
||||
SET @where = @where + ' AND 零件编码 LIKE ''%' + @零件编码 + '%'' '
|
||||
|
||||
IF @零件名称 <> '0'
|
||||
SET @where = @where + ' AND 零件名称 LIKE ''%' + @零件名称 + '%'' '
|
||||
|
||||
IF @开始日期 IS NOT NULL
|
||||
SET @where = @where + ' AND 检测时间 >= ''' + CONVERT(nvarchar(30), @开始日期, 120) + ''' '
|
||||
|
||||
IF @结束日期 IS NOT NULL
|
||||
SET @where = @where + ' AND 检测时间 <= ''' + CONVERT(nvarchar(30), @结束日期, 120) + ''' '
|
||||
|
||||
SET @fieldshow = '
|
||||
[QT_AID]
|
||||
,[质检类型]
|
||||
,[零件编码]
|
||||
,[零件名称]
|
||||
,[内部合同号]
|
||||
,[计划号]
|
||||
,[工序名称]
|
||||
,[检验数量]
|
||||
,[合格数]
|
||||
,[不合格数]
|
||||
,[检测人]
|
||||
,[检测时间]
|
||||
,[检测说明]
|
||||
,[工位名称]
|
||||
,[订单类型]'
|
||||
|
||||
EXEC [dbo].[sp_xt_pagesplit]
|
||||
@tbname,
|
||||
@fieldkey,
|
||||
@where,
|
||||
@fieldshow,
|
||||
@fieldOrder,
|
||||
@PageCurrent,
|
||||
@PageSize,
|
||||
@PageCount OUTPUT,
|
||||
@ItemCount OUTPUT
|
||||
END
|
||||
@@ -0,0 +1,426 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[工时统计_设备工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
IF @开始日期 = CONVERT(DATE, '19000101', 112) SET @开始日期 = NULL;
|
||||
IF @结束日期 = CONVERT(DATE, '19000101', 112) SET @结束日期 = NULL;
|
||||
|
||||
;WITH 操作人汇总 AS (
|
||||
SELECT
|
||||
工位名称,
|
||||
COUNT(*) AS 报工次数,
|
||||
SUM(CASE WHEN 操作类别 IN (N'报工', N'辅助结束') THEN 操作数值 ELSE 0 END) AS 报工数量,
|
||||
CAST(SUM(加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时
|
||||
FROM View_生产工时视图全部
|
||||
WHERE (@开始日期 IS NULL OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR 开始时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 工位名称 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND ISNULL(阶段标识, 0) = -1
|
||||
GROUP BY 工位名称
|
||||
),
|
||||
日期汇总 AS (
|
||||
SELECT
|
||||
工位名称,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
COUNT(*) AS 报工次数,
|
||||
SUM(CASE WHEN 操作类别 IN (N'报工', N'辅助结束') THEN 操作数值 ELSE 0 END) AS 报工数量,
|
||||
CAST(SUM(加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 工时小时
|
||||
FROM View_生产工时视图全部
|
||||
WHERE (@开始日期 IS NULL OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR 开始时间 <= @结束日期)
|
||||
AND 工位名称 IS NOT NULL AND 工位名称 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 工位名称 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND ISNULL(阶段标识, 0) = -1
|
||||
GROUP BY 工位名称, CONVERT(VARCHAR(10), 开始时间, 120)
|
||||
),
|
||||
报工明细 AS (
|
||||
SELECT
|
||||
工位名称,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
订单合同号 AS 合同号,
|
||||
订单号,
|
||||
产品编码,
|
||||
产品名称,
|
||||
CAST(计划数量 AS DECIMAL(19,6)) AS 计划数量,
|
||||
工序名称,
|
||||
工位名称 AS 指派对象,
|
||||
CASE
|
||||
WHEN 操作描述 LIKE N'%白班%' THEN N'白班'
|
||||
WHEN 操作描述 LIKE N'%夜班%' THEN N'夜班'
|
||||
ELSE N''
|
||||
END AS 班次,
|
||||
操作类别 AS 报工类型,
|
||||
CASE WHEN 操作类别 IN (N'报工', N'辅助结束') THEN 操作数值 ELSE 0 END AS 报工数量,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间,
|
||||
CAST(加工工时 / 60.0 / 60.0 AS DECIMAL(10,2)) AS 工时小时
|
||||
FROM View_生产工时视图全部
|
||||
WHERE (@开始日期 IS NULL OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR 开始时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 工位名称 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND ISNULL(阶段标识, 0) = -1
|
||||
)
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
工位名称 AS operator,
|
||||
'' AS dateLabel,
|
||||
CAST(报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
CAST(NULL AS DECIMAL(19,6)) AS 计划数量,
|
||||
'' AS processName,
|
||||
'' AS 班次,
|
||||
'' AS 报工类型,
|
||||
'' AS 指派对象,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
CAST(总工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 操作人汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
工位名称 AS operator,
|
||||
工作日期 AS dateLabel,
|
||||
CAST(报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
CAST(NULL AS DECIMAL(19,6)) AS 计划数量,
|
||||
'' AS processName,
|
||||
'' AS 班次,
|
||||
'' AS 报工类型,
|
||||
'' AS 指派对象,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 日期汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
3 AS [Level],
|
||||
工位名称 AS operator,
|
||||
工作日期 AS dateLabel,
|
||||
'' AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
ISNULL(合同号, '') AS contractNo,
|
||||
ISNULL(订单号, '') AS orderNo,
|
||||
ISNULL(产品编码, '') AS productCode,
|
||||
ISNULL(产品名称, '') AS productName,
|
||||
计划数量 AS 计划数量,
|
||||
ISNULL(工序名称, '') AS processName,
|
||||
ISNULL(班次, '') AS 班次,
|
||||
ISNULL(报工类型, '') AS 报工类型,
|
||||
ISNULL(指派对象, '') AS 指派对象,
|
||||
ISNULL(开始时间, '') AS startTime,
|
||||
ISNULL(结束时间, '') AS endTime,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 报工明细
|
||||
|
||||
ORDER BY operator, dateLabel, [Level]
|
||||
END
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[工时统计_项目工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@工时类型 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
IF @开始日期 = CONVERT(DATE, '19000101', 112) SET @开始日期 = NULL;
|
||||
IF @结束日期 = CONVERT(DATE, '19000101', 112) SET @结束日期 = NULL;
|
||||
|
||||
;WITH 人员班组 AS (
|
||||
SELECT
|
||||
LTRIM(RTRIM(Personnel_Name)) AS Personnel_Name,
|
||||
MAX(NULLIF(LTRIM(RTRIM(班组)), '')) AS 班组
|
||||
FROM [YL_MESDB].[dbo].[登录基础数据_人员信息]
|
||||
WHERE Personnel_Name IS NOT NULL
|
||||
GROUP BY LTRIM(RTRIM(Personnel_Name))
|
||||
),
|
||||
工时基础 AS (
|
||||
SELECT
|
||||
v.*,
|
||||
ISNULL(p.班组, '未分类') AS 工时类型,
|
||||
CASE
|
||||
WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.加工工时, 0) > 0 THEN ISNULL(v.加工工时, 0)
|
||||
WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.总时长, 0) > 0 AND ISNULL(v.加工工时, 0) = 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 LIKE '%加班%' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 = '开始加工' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0)
|
||||
ELSE 0
|
||||
END AS 有效工时秒
|
||||
FROM View_生产工时视图全部 v
|
||||
LEFT JOIN 人员班组 p ON LTRIM(RTRIM(v.操作人)) = p.Personnel_Name
|
||||
),
|
||||
订单工时汇总 AS (
|
||||
SELECT
|
||||
v.订单合同号 AS 合同号,
|
||||
v.产品编码,
|
||||
v.产品名称,
|
||||
MAX(v.计划数量) AS 计划数量,
|
||||
MAX(v.完成数量) AS 完成数量,
|
||||
SUM(CASE WHEN v.操作类别 IN ('报工', '辅助结束') THEN v.操作数值 ELSE 0 END) AS 报工数量,
|
||||
MIN(CONVERT(VARCHAR(10), v.开始时间, 120)) AS 计划开始,
|
||||
MAX(CONVERT(VARCHAR(10), v.结束时间, 120)) AS 计划完成,
|
||||
CAST(SUM(v.有效工时秒) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时
|
||||
FROM 工时基础 v
|
||||
WHERE (@开始日期 IS NULL OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR 开始时间 <= @结束日期)
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR v.订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR v.操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR v.产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR v.工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR v.订单号 LIKE '%' + @订单号 + '%')
|
||||
AND (@工时类型 IS NULL OR @工时类型 = '' OR v.工时类型 = @工时类型)
|
||||
GROUP BY v.订单合同号, v.产品编码, v.产品名称
|
||||
),
|
||||
工序工时明细 AS (
|
||||
SELECT
|
||||
v.订单合同号 AS 合同号,
|
||||
v.产品编码,
|
||||
v.工序名称,
|
||||
MAX(v.工序说明) AS 工序说明,
|
||||
v.工时类型,
|
||||
v.操作人,
|
||||
MAX(v.工位名称) AS 指派对象,
|
||||
v.订单号,
|
||||
SUM(CASE WHEN v.操作类别 IN ('报工', '辅助结束') THEN v.操作数值 ELSE 0 END) AS 报工数量,
|
||||
CAST(SUM(v.有效工时秒) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 工时小时,
|
||||
MIN(CONVERT(VARCHAR(10), v.开始时间, 120)) AS 计划开始,
|
||||
MAX(CONVERT(VARCHAR(10), v.结束时间, 120)) AS 计划完成,
|
||||
MAX(v.计划数量) AS 计划数量
|
||||
FROM 工时基础 v
|
||||
WHERE (@开始日期 IS NULL OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR 开始时间 <= @结束日期)
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR v.订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR v.操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR v.产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR v.工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR v.订单号 LIKE '%' + @订单号 + '%')
|
||||
AND (@工时类型 IS NULL OR @工时类型 = '' OR v.工时类型 = @工时类型)
|
||||
GROUP BY v.订单合同号, v.产品编码, v.工序名称, v.工时类型, v.操作人, v.订单号
|
||||
)
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
合同号 AS contractNo,
|
||||
产品名称 AS materialDesc,
|
||||
产品编码 AS materialCode,
|
||||
CAST(NULL AS DECIMAL(19,6)) AS 计划数量,
|
||||
'' AS processName,
|
||||
'' AS 工序说明,
|
||||
'' AS 工时类型,
|
||||
'' AS operator,
|
||||
'' AS 指派对象,
|
||||
CASE WHEN 计划数量 = FLOOR(计划数量) THEN CAST(CAST(计划数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(计划数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END + '/' +
|
||||
CASE WHEN 完成数量 = FLOOR(完成数量) THEN CAST(CAST(完成数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(完成数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS qty,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
ISNULL(计划开始, '') AS planStart,
|
||||
ISNULL(计划完成, '') AS planEnd,
|
||||
CAST(总工时小时 AS VARCHAR(20)) AS workHours,
|
||||
'' AS 订单号
|
||||
FROM 订单工时汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
d.合同号 AS contractNo,
|
||||
'' AS materialDesc,
|
||||
d.产品编码 AS materialCode,
|
||||
d.计划数量 AS 计划数量,
|
||||
d.工序名称 AS processName,
|
||||
ISNULL(d.工序说明, '') AS 工序说明,
|
||||
d.工时类型 AS 工时类型,
|
||||
d.操作人 AS operator,
|
||||
ISNULL(d.指派对象, '') AS 指派对象,
|
||||
'' AS qty,
|
||||
CAST(d.报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
d.计划开始 AS planStart,
|
||||
d.计划完成 AS planEnd,
|
||||
CAST(d.工时小时 AS VARCHAR(20)) AS workHours,
|
||||
d.订单号 AS 订单号
|
||||
FROM 工序工时明细 d
|
||||
|
||||
ORDER BY contractNo, materialCode, [Level], processName, 工时类型
|
||||
END
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[工时统计_任务工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@工时类型 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
IF @开始日期 = CONVERT(DATE, '19000101', 112) SET @开始日期 = NULL;
|
||||
IF @结束日期 = CONVERT(DATE, '19000101', 112) SET @结束日期 = NULL;
|
||||
|
||||
;WITH 人员班组 AS (
|
||||
SELECT
|
||||
LTRIM(RTRIM(Personnel_Name)) AS Personnel_Name,
|
||||
MAX(NULLIF(LTRIM(RTRIM(班组)), '')) AS 班组
|
||||
FROM [YL_MESDB].[dbo].[登录基础数据_人员信息]
|
||||
WHERE Personnel_Name IS NOT NULL
|
||||
GROUP BY LTRIM(RTRIM(Personnel_Name))
|
||||
),
|
||||
工时基础 AS (
|
||||
SELECT
|
||||
v.*,
|
||||
ISNULL(p.班组, '未分类') AS 工时类型,
|
||||
CASE
|
||||
WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.加工工时, 0) > 0 THEN ISNULL(v.加工工时, 0)
|
||||
WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.总时长, 0) > 0 AND ISNULL(v.加工工时, 0) = 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 LIKE '%加班%' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 = '开始加工' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0)
|
||||
ELSE 0
|
||||
END AS 有效工时秒
|
||||
FROM View_生产工时视图全部 v
|
||||
LEFT JOIN 人员班组 p ON LTRIM(RTRIM(v.操作人)) = p.Personnel_Name
|
||||
),
|
||||
任务汇总 AS (
|
||||
SELECT
|
||||
订单合同号 AS 合同号,
|
||||
订单号,
|
||||
产品编码,
|
||||
产品名称,
|
||||
工序名称,
|
||||
MAX(工序说明) AS 工序说明,
|
||||
工时类型,
|
||||
操作类别,
|
||||
MAX(计划数量) AS 计划数量,
|
||||
MAX(完成数量) AS 完成数量,
|
||||
SUM(CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN 操作数值 ELSE 0 END) AS 报工数量,
|
||||
CAST(SUM(有效工时秒) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时
|
||||
FROM 工时基础
|
||||
WHERE (@开始日期 IS NULL OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR 开始时间 <= @结束日期)
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND (@工时类型 IS NULL OR @工时类型 = '' OR 工时类型 = @工时类型)
|
||||
GROUP BY 订单合同号, 订单号, 产品编码, 产品名称, 工序名称, 工时类型, 操作类别
|
||||
),
|
||||
报工明细 AS (
|
||||
SELECT
|
||||
订单合同号 AS 合同号,
|
||||
订单号,
|
||||
产品编码,
|
||||
工序名称,
|
||||
工序说明,
|
||||
操作人,
|
||||
工位名称 AS 指派对象,
|
||||
工时类型,
|
||||
计划数量,
|
||||
操作类别,
|
||||
CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN 操作数值 ELSE 0 END AS 报工数量,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间,
|
||||
CAST(有效工时秒 / 60.0 / 60.0 AS DECIMAL(10,2)) AS 工时小时
|
||||
FROM 工时基础
|
||||
WHERE (@开始日期 IS NULL OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR 开始时间 <= @结束日期)
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND (@工时类型 IS NULL OR @工时类型 = '' OR 工时类型 = @工时类型)
|
||||
)
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
ISNULL(合同号, '') AS contractNo,
|
||||
ISNULL(订单号, '') AS orderNo,
|
||||
ISNULL(产品编码, '') AS productCode,
|
||||
ISNULL(产品名称, '') AS productName,
|
||||
ISNULL(工序名称, '') AS processName,
|
||||
ISNULL(工序说明, '') AS 工序说明,
|
||||
CAST(计划数量 AS DECIMAL(19,6)) AS 计划数量,
|
||||
ISNULL(工时类型, '') AS 工时类型,
|
||||
'' AS operator,
|
||||
'' AS 指派对象,
|
||||
CASE WHEN 计划数量 IS NULL THEN '0' WHEN 计划数量 = FLOOR(计划数量) THEN CAST(CAST(计划数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(计划数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END + '/' +
|
||||
CASE WHEN 完成数量 IS NULL THEN '0' WHEN 完成数量 = FLOOR(完成数量) THEN CAST(CAST(完成数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(完成数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS qty,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
CAST(总工时小时 AS VARCHAR(20)) AS workHours,
|
||||
操作类别
|
||||
FROM 任务汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
ISNULL(合同号, '') AS contractNo,
|
||||
ISNULL(订单号, '') AS orderNo,
|
||||
ISNULL(产品编码, '') AS productCode,
|
||||
'' AS productName,
|
||||
ISNULL(工序名称, '') AS processName,
|
||||
ISNULL(工序说明, '') AS 工序说明,
|
||||
CAST(计划数量 AS DECIMAL(19,6)) AS 计划数量,
|
||||
ISNULL(工时类型, '') AS 工时类型,
|
||||
ISNULL(操作人, '') AS operator,
|
||||
ISNULL(指派对象, '') AS 指派对象,
|
||||
'' AS qty,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
ISNULL(开始时间, '') AS startTime,
|
||||
ISNULL(结束时间, '') AS endTime,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours,
|
||||
操作类别
|
||||
FROM 报工明细
|
||||
|
||||
ORDER BY contractNo, orderNo, productCode, processName, [Level], startTime
|
||||
END
|
||||
GO
|
||||
@@ -0,0 +1,328 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER OFF
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[工时统计_作业者工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@工时类型 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH 人员班组 AS (
|
||||
SELECT
|
||||
LTRIM(RTRIM(Personnel_Name)) AS Personnel_Name,
|
||||
MAX(NULLIF(LTRIM(RTRIM(班组)), '')) AS 班组
|
||||
FROM [YL_MESDB].[dbo].[登录基础数据_人员信息]
|
||||
WHERE Personnel_Name IS NOT NULL
|
||||
GROUP BY LTRIM(RTRIM(Personnel_Name))
|
||||
),
|
||||
工时基础 AS (
|
||||
SELECT
|
||||
v.*,
|
||||
ISNULL(p.班组, '未分类') AS 工时类型,
|
||||
CASE
|
||||
WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.加工工时, 0) > 0 THEN ISNULL(v.加工工时, 0)
|
||||
WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.总时长, 0) > 0 AND ISNULL(v.加工工时, 0) = 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 LIKE '%加班%' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 = '开始加工' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 = '异常' THEN -ISNULL(v.总时长, 0)
|
||||
ELSE 0
|
||||
END AS 有效工时秒
|
||||
FROM [dbo].[View_生产工时视图] v
|
||||
LEFT JOIN 人员班组 p ON LTRIM(RTRIM(v.操作人)) = p.Personnel_Name
|
||||
),
|
||||
操作人汇总 AS (
|
||||
SELECT
|
||||
操作人,
|
||||
COUNT(*) AS 报工次数,
|
||||
SUM(CASE
|
||||
WHEN 操作类别 NOT IN ('异常') THEN 操作数值
|
||||
WHEN 操作类别 = '异常' THEN -操作数值
|
||||
ELSE 0
|
||||
END) AS 报工数量,
|
||||
CAST(SUM(有效工时秒) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时
|
||||
FROM 工时基础
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 开始时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 结束时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND (@工时类型 IS NULL OR @工时类型 = '' OR 工时类型 = @工时类型)
|
||||
AND ISNULL(阶段标识, 0) != -1
|
||||
GROUP BY 操作人
|
||||
),
|
||||
日期汇总 AS (
|
||||
SELECT
|
||||
操作人,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
COUNT(*) AS 报工次数,
|
||||
SUM(CASE
|
||||
WHEN 操作类别 NOT IN ('异常') THEN 操作数值
|
||||
WHEN 操作类别 = '异常' THEN -操作数值
|
||||
ELSE 0
|
||||
END) AS 报工数量,
|
||||
CAST(SUM(有效工时秒) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 工时小时
|
||||
FROM 工时基础
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 开始时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 结束时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND (@工时类型 IS NULL OR @工时类型 = '' OR 工时类型 = @工时类型)
|
||||
AND ISNULL(阶段标识, 0) != -1
|
||||
GROUP BY 操作人, CONVERT(VARCHAR(10), 开始时间, 120)
|
||||
),
|
||||
报工明细 AS (
|
||||
SELECT
|
||||
操作人,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
订单合同号 AS 合同号,
|
||||
订单号,
|
||||
产品编码,
|
||||
产品名称,
|
||||
工序名称,
|
||||
工时类型,
|
||||
计划数量,
|
||||
工位名称 AS 指派对象,
|
||||
CASE
|
||||
WHEN 操作类别 NOT IN ('异常') THEN 操作数值
|
||||
WHEN 操作类别 = '异常' THEN -操作数值
|
||||
ELSE 0
|
||||
END AS 报工数量,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间,
|
||||
CAST(有效工时秒 / 60.0 / 60.0 AS DECIMAL(10,2)) AS 工时小时,
|
||||
异常说明,
|
||||
工序说明,
|
||||
操作类别
|
||||
FROM 工时基础
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 开始时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 结束时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND (@工时类型 IS NULL OR @工时类型 = '' OR 工时类型 = @工时类型)
|
||||
AND ISNULL(阶段标识, 0) != -1
|
||||
)
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
操作人 AS operator,
|
||||
'' AS dateLabel,
|
||||
CAST(报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
CAST(NULL AS DECIMAL(19,6)) AS 计划数量,
|
||||
'' AS 工时类型,
|
||||
'' AS 指派对象,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
'' AS 异常说明,
|
||||
'' AS 工序说明,
|
||||
'' AS 操作类别,
|
||||
CAST(总工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 操作人汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
操作人 AS operator,
|
||||
工作日期 AS dateLabel,
|
||||
CAST(报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
CAST(NULL AS DECIMAL(19,6)) AS 计划数量,
|
||||
'' AS 工时类型,
|
||||
'' AS 指派对象,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
'' AS 异常说明,
|
||||
'' AS 工序说明,
|
||||
'' AS 操作类别,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 日期汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
3 AS [Level],
|
||||
操作人 AS operator,
|
||||
工作日期 AS dateLabel,
|
||||
'' AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
ISNULL(合同号, '') AS contractNo,
|
||||
ISNULL(订单号, '') AS orderNo,
|
||||
ISNULL(产品编码, '') AS productCode,
|
||||
ISNULL(产品名称, '') AS productName,
|
||||
ISNULL(工序名称, '') AS processName,
|
||||
计划数量 AS 计划数量,
|
||||
ISNULL(工时类型, '') AS 工时类型,
|
||||
ISNULL(指派对象, '') AS 指派对象,
|
||||
ISNULL(开始时间, '') AS startTime,
|
||||
ISNULL(结束时间, '') AS endTime,
|
||||
ISNULL(异常说明, '') AS 异常说明,
|
||||
ISNULL(工序说明, '') AS 工序说明,
|
||||
ISNULL(操作类别, '') AS 操作类别,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 报工明细
|
||||
|
||||
ORDER BY operator, dateLabel, [Level]
|
||||
END
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[工时统计_任务工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@工时类型 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH 人员班组 AS (
|
||||
SELECT
|
||||
LTRIM(RTRIM(Personnel_Name)) AS Personnel_Name,
|
||||
MAX(NULLIF(LTRIM(RTRIM(班组)), '')) AS 班组
|
||||
FROM [YL_MESDB].[dbo].[登录基础数据_人员信息]
|
||||
WHERE Personnel_Name IS NOT NULL
|
||||
GROUP BY LTRIM(RTRIM(Personnel_Name))
|
||||
),
|
||||
工时基础 AS (
|
||||
SELECT
|
||||
v.*,
|
||||
ISNULL(p.班组, '未分类') AS 工时类型,
|
||||
CASE
|
||||
WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.加工工时, 0) > 0 THEN ISNULL(v.加工工时, 0)
|
||||
WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.总时长, 0) > 0 AND ISNULL(v.加工工时, 0) = 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 LIKE '%加班%' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 = '开始加工' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0)
|
||||
ELSE 0
|
||||
END AS 有效工时秒
|
||||
FROM View_生产工时视图 v
|
||||
LEFT JOIN 人员班组 p ON LTRIM(RTRIM(v.操作人)) = p.Personnel_Name
|
||||
),
|
||||
任务汇总 AS (
|
||||
SELECT
|
||||
订单合同号 AS 合同号,
|
||||
订单号,
|
||||
产品编码,
|
||||
产品名称,
|
||||
工序名称,
|
||||
工时类型,
|
||||
操作类别,
|
||||
MAX(计划数量) AS 计划数量,
|
||||
MAX(完成数量) AS 完成数量,
|
||||
SUM(CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN 操作数值 ELSE 0 END) AS 报工数量,
|
||||
CAST(SUM(有效工时秒) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时
|
||||
FROM 工时基础
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND (@工时类型 IS NULL OR @工时类型 = '' OR 工时类型 = @工时类型)
|
||||
GROUP BY 订单合同号, 订单号, 产品编码, 产品名称, 工序名称, 工时类型, 操作类别
|
||||
),
|
||||
报工明细 AS (
|
||||
SELECT
|
||||
订单合同号 AS 合同号,
|
||||
订单号,
|
||||
产品编码,
|
||||
工序名称,
|
||||
操作人,
|
||||
工位名称 AS 指派对象,
|
||||
工时类型,
|
||||
计划数量,
|
||||
操作类别,
|
||||
CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN 操作数值 ELSE 0 END AS 报工数量,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间,
|
||||
CAST(有效工时秒 / 60.0 / 60.0 AS DECIMAL(10,2)) AS 工时小时
|
||||
FROM 工时基础
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND (@工时类型 IS NULL OR @工时类型 = '' OR 工时类型 = @工时类型)
|
||||
)
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
ISNULL(合同号, '') AS contractNo,
|
||||
ISNULL(订单号, '') AS orderNo,
|
||||
ISNULL(产品编码, '') AS productCode,
|
||||
ISNULL(产品名称, '') AS productName,
|
||||
ISNULL(工序名称, '') AS processName,
|
||||
CAST(计划数量 AS DECIMAL(19,6)) AS 计划数量,
|
||||
ISNULL(工时类型, '') AS 工时类型,
|
||||
'' AS operator,
|
||||
'' AS 指派对象,
|
||||
CASE WHEN 计划数量 IS NULL THEN '0' WHEN 计划数量 = FLOOR(计划数量) THEN CAST(CAST(计划数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(计划数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END + '/' +
|
||||
CASE WHEN 完成数量 IS NULL THEN '0' WHEN 完成数量 = FLOOR(完成数量) THEN CAST(CAST(完成数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(完成数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS qty,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
CAST(总工时小时 AS VARCHAR(20)) AS workHours,
|
||||
操作类别
|
||||
FROM 任务汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
ISNULL(合同号, '') AS contractNo,
|
||||
ISNULL(订单号, '') AS orderNo,
|
||||
ISNULL(产品编码, '') AS productCode,
|
||||
'' AS productName,
|
||||
ISNULL(工序名称, '') AS processName,
|
||||
CAST(计划数量 AS DECIMAL(19,6)) AS 计划数量,
|
||||
ISNULL(工时类型, '') AS 工时类型,
|
||||
ISNULL(操作人, '') AS operator,
|
||||
ISNULL(指派对象, '') AS 指派对象,
|
||||
'' AS qty,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
ISNULL(开始时间, '') AS startTime,
|
||||
ISNULL(结束时间, '') AS endTime,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours,
|
||||
操作类别
|
||||
FROM 报工明细
|
||||
|
||||
ORDER BY contractNo, orderNo, productCode, processName, [Level], startTime
|
||||
END
|
||||
GO
|
||||
152
db_backups/alter_工时统计_设备工时_查询_add_shift_reporttype_20260623.sql
Normal file
152
db_backups/alter_工时统计_设备工时_查询_add_shift_reporttype_20260623.sql
Normal file
@@ -0,0 +1,152 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[工时统计_设备工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH 操作人汇总 AS (
|
||||
SELECT
|
||||
工位名称,
|
||||
COUNT(*) AS 报工次数,
|
||||
SUM(CASE WHEN 操作类别 IN (N'报工', N'辅助结束') THEN 操作数值 ELSE 0 END) AS 报工数量,
|
||||
CAST(SUM(加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时
|
||||
FROM View_生产工时视图
|
||||
WHERE (@开始日期 IS NULL OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR 开始时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 工位名称 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND ISNULL(阶段标识, 0) = -1
|
||||
GROUP BY 工位名称
|
||||
),
|
||||
日期汇总 AS (
|
||||
SELECT
|
||||
工位名称,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
COUNT(*) AS 报工次数,
|
||||
SUM(CASE WHEN 操作类别 IN (N'报工', N'辅助结束') THEN 操作数值 ELSE 0 END) AS 报工数量,
|
||||
CAST(SUM(加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 工时小时
|
||||
FROM View_生产工时视图
|
||||
WHERE (@开始日期 IS NULL OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR 开始时间 <= @结束日期)
|
||||
AND 工位名称 IS NOT NULL AND 工位名称 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 工位名称 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND ISNULL(阶段标识, 0) = -1
|
||||
GROUP BY 工位名称, CONVERT(VARCHAR(10), 开始时间, 120)
|
||||
),
|
||||
报工明细 AS (
|
||||
SELECT
|
||||
工位名称,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
订单合同号 AS 合同号,
|
||||
订单号,
|
||||
产品编码,
|
||||
产品名称,
|
||||
工序名称,
|
||||
工位名称 AS 指派对象,
|
||||
CASE
|
||||
WHEN 操作描述 LIKE N'%白班%' THEN N'白班'
|
||||
WHEN 操作描述 LIKE N'%夜班%' THEN N'夜班'
|
||||
ELSE N''
|
||||
END AS 班次,
|
||||
操作类别 AS 报工类型,
|
||||
CASE WHEN 操作类别 IN (N'报工', N'辅助结束') THEN 操作数值 ELSE 0 END AS 报工数量,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间,
|
||||
CAST(加工工时 / 60.0 / 60.0 AS DECIMAL(10,2)) AS 工时小时
|
||||
FROM View_生产工时视图
|
||||
WHERE (@开始日期 IS NULL OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR 开始时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 工位名称 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND ISNULL(阶段标识, 0) = -1
|
||||
)
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
工位名称 AS operator,
|
||||
'' AS dateLabel,
|
||||
CAST(报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
'' AS 班次,
|
||||
'' AS 报工类型,
|
||||
'' AS 指派对象,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
CAST(总工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 操作人汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
工位名称 AS operator,
|
||||
工作日期 AS dateLabel,
|
||||
CAST(报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
'' AS 班次,
|
||||
'' AS 报工类型,
|
||||
'' AS 指派对象,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 日期汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
3 AS [Level],
|
||||
工位名称 AS operator,
|
||||
工作日期 AS dateLabel,
|
||||
'' AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
ISNULL(合同号, '') AS contractNo,
|
||||
ISNULL(订单号, '') AS orderNo,
|
||||
ISNULL(产品编码, '') AS productCode,
|
||||
ISNULL(产品名称, '') AS productName,
|
||||
ISNULL(工序名称, '') AS processName,
|
||||
ISNULL(班次, '') AS 班次,
|
||||
ISNULL(报工类型, '') AS 报工类型,
|
||||
ISNULL(指派对象, '') AS 指派对象,
|
||||
ISNULL(开始时间, '') AS startTime,
|
||||
ISNULL(结束时间, '') AS endTime,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 报工明细
|
||||
|
||||
ORDER BY operator, dateLabel, [Level]
|
||||
END
|
||||
GO
|
||||
132
db_backups/alter_工时统计_项目工时_查询_add_workhour_type_20260623.sql
Normal file
132
db_backups/alter_工时统计_项目工时_查询_add_workhour_type_20260623.sql
Normal file
@@ -0,0 +1,132 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER OFF
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[工时统计_项目工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@工时类型 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH 人员班组 AS (
|
||||
SELECT
|
||||
LTRIM(RTRIM(Personnel_Name)) AS Personnel_Name,
|
||||
MAX(NULLIF(LTRIM(RTRIM(班组)), '')) AS 班组
|
||||
FROM [YL_MESDB].[dbo].[登录基础数据_人员信息]
|
||||
WHERE Personnel_Name IS NOT NULL
|
||||
GROUP BY LTRIM(RTRIM(Personnel_Name))
|
||||
),
|
||||
工时基础 AS (
|
||||
SELECT
|
||||
v.*,
|
||||
ISNULL(p.班组, '未分类') AS 工时类型,
|
||||
CASE
|
||||
WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.加工工时, 0) > 0 THEN ISNULL(v.加工工时, 0)
|
||||
WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.总时长, 0) > 0 AND ISNULL(v.加工工时, 0) = 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 LIKE '%加班%' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 = '开始加工' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0)
|
||||
ELSE 0
|
||||
END AS 有效工时秒
|
||||
FROM View_生产工时视图 v
|
||||
LEFT JOIN 人员班组 p ON LTRIM(RTRIM(v.操作人)) = p.Personnel_Name
|
||||
),
|
||||
订单工时汇总 AS (
|
||||
SELECT
|
||||
v.订单合同号 AS 合同号,
|
||||
v.产品编码,
|
||||
v.产品名称,
|
||||
MAX(v.计划数量) AS 计划数量,
|
||||
MAX(v.完成数量) AS 完成数量,
|
||||
SUM(CASE WHEN v.操作类别 IN ('报工', '辅助结束') THEN v.操作数值 ELSE 0 END) AS 报工数量,
|
||||
MIN(CONVERT(VARCHAR(10), v.报工日期, 120)) AS 计划开始,
|
||||
MAX(CONVERT(VARCHAR(10), v.报工日期, 120)) AS 计划完成,
|
||||
CAST(SUM(v.有效工时秒) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时
|
||||
FROM 工时基础 v
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR v.订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR v.操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR v.产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR v.工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR v.订单号 LIKE '%' + @订单号 + '%')
|
||||
AND (@工时类型 IS NULL OR @工时类型 = '' OR v.工时类型 = @工时类型)
|
||||
GROUP BY v.订单合同号, v.产品编码, v.产品名称
|
||||
),
|
||||
工序工时明细 AS (
|
||||
SELECT
|
||||
v.订单合同号 AS 合同号,
|
||||
v.产品编码,
|
||||
v.工序名称,
|
||||
v.工时类型,
|
||||
v.操作人,
|
||||
MAX(v.工位名称) AS 指派对象,
|
||||
v.订单号,
|
||||
SUM(CASE WHEN v.操作类别 IN ('报工', '辅助结束') THEN v.操作数值 ELSE 0 END) AS 报工数量,
|
||||
CAST(SUM(v.有效工时秒) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 工时小时,
|
||||
MIN(CONVERT(VARCHAR(10), v.报工日期, 120)) AS 计划开始,
|
||||
MAX(CONVERT(VARCHAR(10), v.报工日期, 120)) AS 计划完成,
|
||||
MAX(v.计划数量) AS 计划数量
|
||||
FROM 工时基础 v
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR v.订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR v.操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR v.产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR v.工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR v.订单号 LIKE '%' + @订单号 + '%')
|
||||
AND (@工时类型 IS NULL OR @工时类型 = '' OR v.工时类型 = @工时类型)
|
||||
GROUP BY v.订单合同号, v.产品编码, v.工序名称, v.工时类型, v.操作人, v.订单号
|
||||
)
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
合同号 AS contractNo,
|
||||
产品名称 AS materialDesc,
|
||||
产品编码 AS materialCode,
|
||||
CAST(NULL AS DECIMAL(19,6)) AS 计划数量,
|
||||
'' AS processName,
|
||||
'' AS 工时类型,
|
||||
'' AS operator,
|
||||
'' AS 指派对象,
|
||||
CASE WHEN 计划数量 = FLOOR(计划数量) THEN CAST(CAST(计划数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(计划数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END + '/' +
|
||||
CASE WHEN 完成数量 = FLOOR(完成数量) THEN CAST(CAST(完成数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(完成数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS qty,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
ISNULL(计划开始, '') AS planStart,
|
||||
ISNULL(计划完成, '') AS planEnd,
|
||||
CAST(总工时小时 AS VARCHAR(20)) AS workHours,
|
||||
'' AS 订单号
|
||||
FROM 订单工时汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
d.合同号 AS contractNo,
|
||||
'' AS materialDesc,
|
||||
d.产品编码 AS materialCode,
|
||||
d.计划数量 AS 计划数量,
|
||||
d.工序名称 AS processName,
|
||||
d.工时类型 AS 工时类型,
|
||||
d.操作人 AS operator,
|
||||
ISNULL(d.指派对象, '') AS 指派对象,
|
||||
'' AS qty,
|
||||
CAST(d.报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
d.计划开始 AS planStart,
|
||||
d.计划完成 AS planEnd,
|
||||
CAST(d.工时小时 AS VARCHAR(20)) AS workHours,
|
||||
d.订单号 AS 订单号
|
||||
FROM 工序工时明细 d
|
||||
|
||||
ORDER BY contractNo, materialCode, [Level], processName, 工时类型
|
||||
END
|
||||
GO
|
||||
@@ -0,0 +1,94 @@
|
||||
CREATE PROCEDURE [dbo].[sp_xt_pagesplit]
|
||||
@tbname sysname,
|
||||
@fieldkey sysname,
|
||||
@where nvarchar(1000),
|
||||
@fieldshow nvarchar(max),
|
||||
@fieldOrder nvarchar(1000),
|
||||
@PageCurrent int=1,
|
||||
@PageSize int=30,
|
||||
@PageCount int OUTPUT,
|
||||
@ItemCount int output
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON
|
||||
|
||||
-- 参数检查
|
||||
IF ISNULL(@PageCurrent,0)<1 SET @PageCurrent=1
|
||||
IF ISNULL(@PageSize,0)<1 SET @PageSize=10
|
||||
IF ISNULL(@FieldShow,N'')=N'' SET @FieldShow=N'*'
|
||||
|
||||
-- 处理排序
|
||||
DECLARE @OrderBy nvarchar(1000)
|
||||
IF ISNULL(@FieldOrder,N'')=N''
|
||||
SET @OrderBy = N''
|
||||
ELSE
|
||||
SET @OrderBy = N'ORDER BY ' + LTRIM(@FieldOrder)
|
||||
|
||||
-- 处理条件 - 重要:去掉WHERE关键字,只保留条件内容
|
||||
DECLARE @WhereCondition nvarchar(1000)
|
||||
IF ISNULL(@Where,N'')=N''
|
||||
SET @WhereCondition = N''
|
||||
ELSE
|
||||
SET @WhereCondition = @Where -- 只保存条件内容,不加WHERE
|
||||
|
||||
-- 清理字段名
|
||||
SET @fieldkey = LTRIM(RTRIM(@fieldkey))
|
||||
DECLARE @quotedKey NVARCHAR(128) = QUOTENAME(@fieldkey)
|
||||
|
||||
-- 计算总记录数
|
||||
DECLARE @sql nvarchar(MAX)
|
||||
IF @WhereCondition = N''
|
||||
SET @sql = N'SELECT @ItemCount = COUNT(*) FROM ' + @tbname
|
||||
ELSE
|
||||
SET @sql = N'SELECT @ItemCount = COUNT(*) FROM ' + @tbname + N' WHERE ' + @WhereCondition
|
||||
|
||||
EXEC sp_executesql @sql, N'@ItemCount int OUTPUT', @ItemCount OUTPUT
|
||||
|
||||
-- 计算总页数
|
||||
SET @PageCount = CEILING((@ItemCount + 0.0) / @PageSize)
|
||||
IF @PageCount = 0 SET @PageCount = 1
|
||||
|
||||
-- 返回当前页数据
|
||||
DECLARE @TopRows INT = (@PageCurrent - 1) * @PageSize
|
||||
|
||||
IF @PageCurrent = 1
|
||||
BEGIN
|
||||
-- 第一页
|
||||
IF @WhereCondition = N''
|
||||
SET @sql = N'SELECT TOP ' + CONVERT(NVARCHAR, @PageSize) + N' ' + @FieldShow + N'
|
||||
FROM ' + @tbname + N' ' + @OrderBy
|
||||
ELSE
|
||||
SET @sql = N'SELECT TOP ' + CONVERT(NVARCHAR, @PageSize) + N' ' + @FieldShow + N'
|
||||
FROM ' + @tbname + N' WHERE ' + @WhereCondition + N' ' + @OrderBy
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
-- 其他页
|
||||
IF @WhereCondition = N''
|
||||
BEGIN
|
||||
-- 无条件的情况
|
||||
SET @sql = N'SELECT TOP ' + CONVERT(NVARCHAR, @PageSize) + N' ' + @FieldShow + N'
|
||||
FROM ' + @tbname + N'
|
||||
WHERE ' + @quotedKey + N' NOT IN (
|
||||
SELECT TOP ' + CONVERT(NVARCHAR, @TopRows) + N' ' + @quotedKey + N'
|
||||
FROM ' + @tbname + N' ' + @OrderBy + N'
|
||||
) ' + @OrderBy
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
-- 有条件的情况
|
||||
SET @sql = N'SELECT TOP ' + CONVERT(NVARCHAR, @PageSize) + N' ' + @FieldShow + N'
|
||||
FROM ' + @tbname + N'
|
||||
WHERE ' + @quotedKey + N' NOT IN (
|
||||
SELECT TOP ' + CONVERT(NVARCHAR, @TopRows) + N' ' + @quotedKey + N'
|
||||
FROM ' + @tbname + N' WHERE ' + @WhereCondition + N' ' + @OrderBy + N'
|
||||
) AND ' + @WhereCondition + N' ' + @OrderBy
|
||||
END
|
||||
END
|
||||
|
||||
-- 调试用,可以注释掉
|
||||
-- PRINT @sql
|
||||
|
||||
-- 执行
|
||||
EXEC(@sql)
|
||||
END
|
||||
@@ -0,0 +1,94 @@
|
||||
|
||||
CREATE PROCEDURE [dbo].[工时统计_任务工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH 任务汇总 AS (
|
||||
SELECT
|
||||
订单合同号 AS 合同号,
|
||||
订单号,
|
||||
产品编码,
|
||||
产品名称,
|
||||
工序名称,
|
||||
操作类别,
|
||||
MAX(计划数量) AS 计划数量,
|
||||
MAX(完成数量) AS 完成数量,
|
||||
SUM(CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN 操作数值 ELSE 0 END) AS 报工数量,
|
||||
CAST(SUM(总时长) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时
|
||||
FROM View_生产工时视图
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
GROUP BY 订单合同号, 订单号, 产品编码, 产品名称, 工序名称,操作类别
|
||||
),
|
||||
报工明细 AS (
|
||||
SELECT
|
||||
订单合同号 AS 合同号,
|
||||
订单号,
|
||||
产品编码,
|
||||
工序名称,
|
||||
操作人,
|
||||
操作类别,
|
||||
CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN 操作数值 ELSE 0 END AS 报工数量,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间,
|
||||
CAST(总时长 / 60.0 / 60.0 AS DECIMAL(10,2)) AS 工时小时
|
||||
FROM View_生产工时视图
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
)
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
ISNULL(合同号, '') AS contractNo,
|
||||
ISNULL(订单号, '') AS orderNo,
|
||||
ISNULL(产品编码, '') AS productCode,
|
||||
ISNULL(产品名称, '') AS productName,
|
||||
ISNULL(工序名称, '') AS processName,
|
||||
'' AS operator,
|
||||
CASE WHEN 计划数量 IS NULL THEN '0' WHEN 计划数量 = FLOOR(计划数量) THEN CAST(CAST(计划数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(计划数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END + '/' +
|
||||
CASE WHEN 完成数量 IS NULL THEN '0' WHEN 完成数量 = FLOOR(完成数量) THEN CAST(CAST(完成数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(完成数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS qty,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
CAST(总工时小时 AS VARCHAR(20)) AS workHours,
|
||||
操作类别
|
||||
FROM 任务汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
ISNULL(合同号, '') AS contractNo,
|
||||
ISNULL(订单号, '') AS orderNo,
|
||||
ISNULL(产品编码, '') AS productCode,
|
||||
'' AS productName,
|
||||
ISNULL(工序名称, '') AS processName,
|
||||
ISNULL(操作人, '') AS operator,
|
||||
'' AS qty,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
ISNULL(开始时间, '') AS startTime,
|
||||
ISNULL(结束时间, '') AS endTime,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours,
|
||||
操作类别
|
||||
FROM 报工明细
|
||||
|
||||
ORDER BY contractNo, orderNo, productCode, processName, [Level], startTime
|
||||
END
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
|
||||
CREATE PROCEDURE [dbo].[工时统计_任务工时_查询_导出]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
-- 导出文件名和类型
|
||||
SELECT '任务工时统计_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype
|
||||
|
||||
-- 字段宽度
|
||||
SELECT 256*20 AS 合同号, 256*12 AS 订单号, 256*40 AS 产品编码, 256*25 AS 产品名称, 256*15 AS 工序名称,
|
||||
256*12 AS 操作人, 256*12 AS 计划数量, 256*12 AS 完成数量, 256*10 AS 报工数量, 256*20 AS 开始时间, 256*20 AS 结束时间, 256*12 AS '工时(h)'
|
||||
|
||||
-- 是否计算列
|
||||
SELECT 0 AS 合同号, 0 AS 订单号, 0 AS 产品编码, 0 AS 产品名称, 0 AS 工序名称,
|
||||
0 AS 操作人, 0 AS 计划数量, 0 AS 完成数量, 0 AS 报工数量, 0 AS 开始时间, 0 AS 结束时间, 0 AS '工时(h)'
|
||||
|
||||
-- 导出数据:每行都填满完整信息
|
||||
SELECT
|
||||
ISNULL(订单合同号, '') AS 合同号,
|
||||
ISNULL(订单号, '') AS 订单号,
|
||||
ISNULL(产品编码, '') AS 产品编码,
|
||||
ISNULL(产品名称, '') AS 产品名称,
|
||||
ISNULL(工序名称, '') AS 工序名称,
|
||||
ISNULL(操作人, '') AS 操作人,
|
||||
CASE WHEN 计划数量 IS NULL THEN '' WHEN 计划数量 = FLOOR(计划数量) THEN CAST(CAST(计划数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(计划数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS 计划数量,
|
||||
CASE WHEN 完成数量 IS NULL THEN '' WHEN 完成数量 = FLOOR(完成数量) THEN CAST(CAST(完成数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(完成数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS 完成数量,
|
||||
CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN CAST(操作数值 AS VARCHAR(20)) ELSE '0' END AS 报工数量,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间,
|
||||
CAST(CAST(加工工时 / 60.0 / 60.0 AS DECIMAL(10,2)) AS VARCHAR(20)) AS '工时(h)'
|
||||
FROM View_生产工时视图
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
ORDER BY 订单合同号, 订单号, 产品编码, 工序名称, 开始时间
|
||||
END
|
||||
|
||||
164
db_backups/工时统计_作业者工时_查询_before_add_assignee_20260622_172419.sql
Normal file
164
db_backups/工时统计_作业者工时_查询_before_add_assignee_20260622_172419.sql
Normal file
@@ -0,0 +1,164 @@
|
||||
|
||||
CREATE PROCEDURE [dbo].[工时统计_作业者工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH 操作人汇总 AS (
|
||||
SELECT
|
||||
操作人,
|
||||
COUNT(*) AS 报工次数,
|
||||
SUM(CASE
|
||||
--WHEN 操作类别 IN ('报工', '辅助结束', '加班', '开始加工') THEN 操作数值
|
||||
WHEN 操作类别 NOT IN ('异常') THEN 操作数值
|
||||
WHEN 操作类别 = '异常' THEN -操作数值 -- 异常工时记为负数
|
||||
ELSE 0
|
||||
END) AS 报工数量,
|
||||
CAST(SUM(CASE
|
||||
WHEN 操作类别 = '异常' THEN -总时长 -- 异常时长记为负数
|
||||
ELSE 总时长
|
||||
END) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时
|
||||
FROM [dbo].[View_生产工时视图]
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 开始时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 结束时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
and isNull(阶段标识,0) != -1
|
||||
GROUP BY 操作人
|
||||
),
|
||||
日期汇总 AS (
|
||||
SELECT
|
||||
操作人,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
COUNT(*) AS 报工次数,
|
||||
SUM(CASE
|
||||
--WHEN 操作类别 IN ('报工', '辅助结束', '加班', '开始加工') THEN 操作数值
|
||||
WHEN 操作类别 NOT IN ('异常') THEN 操作数值
|
||||
WHEN 操作类别 = '异常' THEN -操作数值 -- 异常工时记为负数
|
||||
ELSE 0
|
||||
END) AS 报工数量,
|
||||
CAST(SUM(CASE
|
||||
WHEN 操作类别 = '异常' THEN -总时长 -- 异常时长记为负数
|
||||
ELSE 总时长
|
||||
END) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 工时小时
|
||||
FROM [dbo].[View_生产工时视图]
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 开始时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 结束时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
and isNull(阶段标识,0) != -1
|
||||
GROUP BY 操作人, CONVERT(VARCHAR(10), 开始时间, 120)
|
||||
),
|
||||
报工明细 AS (
|
||||
SELECT
|
||||
操作人,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
订单合同号 AS 合同号,
|
||||
订单号,
|
||||
产品编码,
|
||||
产品名称,
|
||||
工序名称,
|
||||
CASE
|
||||
--WHEN 操作类别 IN ('报工', '辅助结束', '加班', '开始加工') THEN 操作数值
|
||||
WHEN 操作类别 NOT IN ('异常') THEN 操作数值
|
||||
WHEN 操作类别 = '异常' THEN -操作数值 -- 异常数量记为负数
|
||||
ELSE 0
|
||||
END AS 报工数量,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间,
|
||||
CAST(CASE
|
||||
WHEN 操作类别 = '异常' THEN -总时长 -- 异常时长记为负数
|
||||
ELSE 总时长
|
||||
END / 60.0 / 60.0 AS DECIMAL(10,2)) AS 工时小时,
|
||||
异常说明,
|
||||
工序说明,
|
||||
操作类别
|
||||
FROM [dbo].[View_生产工时视图]
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 开始时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 结束时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
and isNull(阶段标识,0) != -1
|
||||
)
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
操作人 AS operator,
|
||||
'' AS dateLabel,
|
||||
CAST(报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
'' AS 异常说明,
|
||||
'' AS 工序说明,
|
||||
'' AS 操作类别,
|
||||
CAST(总工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 操作人汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
操作人 AS operator,
|
||||
工作日期 AS dateLabel,
|
||||
CAST(报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
'' AS 异常说明,
|
||||
'' AS 工序说明,
|
||||
'' AS 操作类别,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 日期汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
3 AS [Level],
|
||||
操作人 AS operator,
|
||||
工作日期 AS dateLabel,
|
||||
'' AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
ISNULL(合同号, '') AS contractNo,
|
||||
ISNULL(订单号, '') AS orderNo,
|
||||
ISNULL(产品编码, '') AS productCode,
|
||||
ISNULL(产品名称, '') AS productName,
|
||||
ISNULL(工序名称, '') AS processName,
|
||||
ISNULL(开始时间, '') AS startTime,
|
||||
ISNULL(结束时间, '') AS endTime,
|
||||
ISNULL(异常说明, '') AS 异常说明,
|
||||
ISNULL(工序说明, '') AS 工序说明,
|
||||
ISNULL(操作类别, '') AS 操作类别,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 报工明细
|
||||
|
||||
ORDER BY operator, dateLabel, [Level]
|
||||
END
|
||||
@@ -0,0 +1,50 @@
|
||||
|
||||
CREATE PROCEDURE [dbo].[工时统计_作业者工时_查询_导出]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
-- 导出文件名和类型
|
||||
SELECT '作业者工时统计_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype
|
||||
|
||||
-- 字段宽度
|
||||
SELECT 256*12 AS 操作人, 256*15 AS 工作日期, 256*20 AS 合同号, 256*12 AS 订单号, 256*40 AS 产品编码,
|
||||
256*25 AS 产品名称, 256*15 AS 工序名称, 256*10 AS 报工数量, 256*20 AS 开始时间, 256*20 AS 结束时间, 256*12 AS '工时(h)'
|
||||
|
||||
-- 是否计算列
|
||||
SELECT 0 AS 操作人, 0 AS 工作日期, 0 AS 合同号, 0 AS 订单号, 0 AS 产品编码,
|
||||
0 AS 产品名称, 0 AS 工序名称, 0 AS 报工数量, 0 AS 开始时间, 0 AS 结束时间, 0 AS '工时(h)'
|
||||
|
||||
-- 导出数据:每行都填满完整信息
|
||||
SELECT
|
||||
操作人,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
ISNULL(订单合同号, '') AS 合同号,
|
||||
ISNULL(订单号, '') AS 订单号,
|
||||
ISNULL(产品编码, '') AS 产品编码,
|
||||
ISNULL(产品名称, '') AS 产品名称,
|
||||
ISNULL(工序名称, '') AS 工序名称,
|
||||
CASE WHEN 操作类别 IN ('报工', '辅助结束','加班','异常','开始加工') THEN CAST(操作数值 AS VARCHAR(20)) ELSE '0' END AS 报工数量,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间,
|
||||
CAST(CAST(总时长 / 60.0 / 60.0 AS DECIMAL(10,2)) AS VARCHAR(20)) AS '工时(h)'
|
||||
FROM [dbo].[View_生产工时视图]
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
and isNull(阶段标识,0) != -1
|
||||
ORDER BY 操作人, 开始时间
|
||||
END
|
||||
|
||||
129
db_backups/工时统计_设备工时_查询_before_add_assignee_20260622_172419.sql
Normal file
129
db_backups/工时统计_设备工时_查询_before_add_assignee_20260622_172419.sql
Normal file
@@ -0,0 +1,129 @@
|
||||
|
||||
CREATE PROCEDURE [dbo].[工时统计_设备工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH 操作人汇总 AS (
|
||||
SELECT
|
||||
工位名称,
|
||||
COUNT(*) AS 报工次数,
|
||||
SUM(CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN 操作数值 ELSE 0 END) AS 报工数量,
|
||||
CAST(SUM(加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时
|
||||
FROM View_生产工时视图
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 工位名称 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
and isNull(阶段标识,0) = -1
|
||||
GROUP BY 工位名称
|
||||
),
|
||||
日期汇总 AS (
|
||||
SELECT
|
||||
工位名称,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
COUNT(*) AS 报工次数,
|
||||
SUM(CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN 操作数值 ELSE 0 END) AS 报工数量,
|
||||
CAST(SUM(加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 工时小时
|
||||
FROM View_生产工时视图
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND 工位名称 IS NOT NULL AND 工位名称 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 工位名称 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
and isNull(阶段标识,0) = -1
|
||||
GROUP BY 工位名称, CONVERT(VARCHAR(10), 开始时间, 120)
|
||||
),
|
||||
报工明细 AS (
|
||||
SELECT
|
||||
工位名称,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
订单合同号 AS 合同号,
|
||||
订单号,
|
||||
产品编码,
|
||||
产品名称,
|
||||
工序名称,
|
||||
CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN 操作数值 ELSE 0 END AS 报工数量,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间,
|
||||
CAST(加工工时 / 60.0 / 60.0 AS DECIMAL(10,2)) AS 工时小时
|
||||
FROM View_生产工时视图
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 工位名称 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
and isNull(阶段标识,0) = -1
|
||||
)
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
工位名称 AS operator,
|
||||
'' AS dateLabel,
|
||||
CAST(报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
CAST(总工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 操作人汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
工位名称 AS operator,
|
||||
工作日期 AS dateLabel,
|
||||
CAST(报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 日期汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
3 AS [Level],
|
||||
工位名称 AS operator,
|
||||
工作日期 AS dateLabel,
|
||||
'' AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
ISNULL(合同号, '') AS contractNo,
|
||||
ISNULL(订单号, '') AS orderNo,
|
||||
ISNULL(产品编码, '') AS productCode,
|
||||
ISNULL(产品名称, '') AS productName,
|
||||
ISNULL(工序名称, '') AS processName,
|
||||
ISNULL(开始时间, '') AS startTime,
|
||||
ISNULL(结束时间, '') AS endTime,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 报工明细
|
||||
|
||||
ORDER BY operator, dateLabel, [Level]
|
||||
END
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
|
||||
CREATE PROCEDURE [dbo].[工时统计_设备工时_查询_导出]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
-- 导出文件名和类型
|
||||
SELECT '设备工时统计_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype
|
||||
|
||||
-- 字段宽度
|
||||
SELECT 256*12 AS 操作人, 256*15 AS 工作日期, 256*20 AS 合同号, 256*12 AS 订单号, 256*40 AS 产品编码,
|
||||
256*25 AS 产品名称, 256*15 AS 工序名称, 256*10 AS 报工数量, 256*20 AS 开始时间, 256*20 AS 结束时间, 256*12 AS '工时(h)'
|
||||
|
||||
-- 是否计算列
|
||||
SELECT 0 AS 操作人, 0 AS 工作日期, 0 AS 合同号, 0 AS 订单号, 0 AS 产品编码,
|
||||
0 AS 产品名称, 0 AS 工序名称, 0 AS 报工数量, 0 AS 开始时间, 0 AS 结束时间, 0 AS '工时(h)'
|
||||
|
||||
-- 导出数据:每行都填满完整信息
|
||||
SELECT
|
||||
工位名称,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
ISNULL(订单合同号, '') AS 合同号,
|
||||
ISNULL(订单号, '') AS 订单号,
|
||||
ISNULL(产品编码, '') AS 产品编码,
|
||||
ISNULL(产品名称, '') AS 产品名称,
|
||||
ISNULL(工序名称, '') AS 工序名称,
|
||||
CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN CAST(操作数值 AS VARCHAR(20)) ELSE '0' END AS 报工数量,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间,
|
||||
CAST(CAST(加工工时 / 60.0 / 60.0 AS DECIMAL(10,2)) AS VARCHAR(20)) AS '工时(h)'
|
||||
FROM View_生产工时视图
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 报工日期 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 报工日期 <= @结束日期)
|
||||
AND 工位名称 IS NOT NULL AND 工位名称 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 工位名称 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
and isNull(阶段标识,0) = -1
|
||||
ORDER BY 工位名称, 开始时间
|
||||
END
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
CREATE PROCEDURE [dbo].[工时统计_项目工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH 订单工时汇总 AS (
|
||||
SELECT
|
||||
v.订单合同号 AS 合同号,
|
||||
v.产品编码,
|
||||
v.产品名称,
|
||||
MAX(v.计划数量) AS 计划数量,
|
||||
MAX(v.完成数量) AS 完成数量,
|
||||
SUM(CASE WHEN v.操作类别 IN ('报工', '辅助结束') THEN v.操作数值 ELSE 0 END) AS 报工数量,
|
||||
MIN(CONVERT(VARCHAR(10), v.报工日期, 120)) AS 计划开始,
|
||||
MAX(CONVERT(VARCHAR(10), v.报工日期, 120)) AS 计划完成,
|
||||
CAST(SUM(v.加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时
|
||||
FROM View_生产工时视图 v
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR v.订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR v.操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR v.产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR v.工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR v.订单号 LIKE '%' + @订单号 + '%')
|
||||
GROUP BY v.订单合同号, v.产品编码, v.产品名称
|
||||
),
|
||||
工序工时明细 AS (
|
||||
SELECT
|
||||
v.订单合同号 AS 合同号,
|
||||
v.产品编码,
|
||||
v.工序名称,
|
||||
v.操作人,
|
||||
v.订单号,
|
||||
SUM(CASE WHEN v.操作类别 IN ('报工', '辅助结束') THEN v.操作数值 ELSE 0 END) AS 报工数量,
|
||||
CAST(SUM(v.加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 工时小时,
|
||||
MIN(CONVERT(VARCHAR(10), v.报工日期, 120)) AS 计划开始,
|
||||
MAX(CONVERT(VARCHAR(10), v.报工日期, 120)) AS 计划完成
|
||||
FROM View_生产工时视图 v
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR v.订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR v.操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR v.产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR v.工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR v.订单号 LIKE '%' + @订单号 + '%')
|
||||
GROUP BY v.订单合同号, v.产品编码, v.工序名称, v.操作人,v.订单号
|
||||
)
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
合同号 AS contractNo,
|
||||
产品名称 AS materialDesc,
|
||||
产品编码 AS materialCode,
|
||||
'' AS processName,
|
||||
'' AS operator,
|
||||
CASE WHEN 计划数量 = FLOOR(计划数量) THEN CAST(CAST(计划数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(计划数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END + '/' +
|
||||
CASE WHEN 完成数量 = FLOOR(完成数量) THEN CAST(CAST(完成数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(完成数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS qty,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
ISNULL(计划开始, '') AS planStart,
|
||||
ISNULL(计划完成, '') AS planEnd,
|
||||
CAST(总工时小时 AS VARCHAR(20)) AS workHours,
|
||||
'' AS 订单号
|
||||
FROM 订单工时汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
d.合同号 AS contractNo,
|
||||
'' AS materialDesc,
|
||||
d.产品编码 AS materialCode,
|
||||
d.工序名称 AS processName,
|
||||
d.操作人 AS operator,
|
||||
'' AS qty,
|
||||
CAST(d.报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
d.计划开始 AS planStart,
|
||||
d.计划完成 AS planEnd,
|
||||
CAST(d.工时小时 AS VARCHAR(20)) AS workHours,
|
||||
d.订单号 AS 订单号
|
||||
FROM 工序工时明细 d
|
||||
|
||||
ORDER BY contractNo, materialCode, [Level], processName
|
||||
END
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
CREATE PROCEDURE [dbo].[工时统计_项目工时_查询_导出]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
-- 导出文件名和类型
|
||||
SELECT '项目工时统计_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype
|
||||
|
||||
-- 字段宽度
|
||||
SELECT 256*20 AS 合同号, 256*20 AS 订单号,256*30 AS 产品名称, 256*40 AS 产品编码, 256*15 AS 工序名称, 256*12 AS 操作人,
|
||||
256*12 AS 计划数量, 256*12 AS 完成数量, 256*10 AS 报工数量, 256*15 AS 计划开始, 256*15 AS 计划完成, 256*12 AS '工时(h)'
|
||||
|
||||
-- 是否计算列
|
||||
SELECT 0 AS 合同号, 0 AS 订单号,0 AS 产品名称, 0 AS 产品编码, 0 AS 工序名称, 0 AS 操作人,
|
||||
0 AS 计划数量, 0 AS 完成数量, 0 AS 报工数量, 0 AS 计划开始, 0 AS 计划完成, 0 AS '工时(h)'
|
||||
|
||||
-- 导出数据:每行都填满完整信息
|
||||
SELECT
|
||||
v.订单合同号 AS 合同号,
|
||||
v.订单号,
|
||||
v.产品名称,
|
||||
v.产品编码,
|
||||
v.工序名称,
|
||||
v.操作人,
|
||||
CASE WHEN v.计划数量 IS NULL THEN '' WHEN v.计划数量 = FLOOR(v.计划数量) THEN CAST(CAST(v.计划数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(v.计划数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS 计划数量,
|
||||
CASE WHEN v.完成数量 IS NULL THEN '' WHEN v.完成数量 = FLOOR(v.完成数量) THEN CAST(CAST(v.完成数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(v.完成数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS 完成数量,
|
||||
CASE WHEN v.操作类别 IN ('报工', '辅助结束') THEN CAST(v.操作数值 AS VARCHAR(20)) ELSE '0' END AS 报工数量,
|
||||
CONVERT(VARCHAR(10), v.报工日期, 120) AS 计划开始,
|
||||
CONVERT(VARCHAR(10), v.报工日期, 120) AS 计划完成,
|
||||
CAST(CAST(v.加工工时 / 60.0 / 60.0 AS DECIMAL(10,2)) AS VARCHAR(20)) AS '工时(h)'
|
||||
FROM View_生产工时视图 v
|
||||
WHERE(@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR v.订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR v.操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR v.产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR v.工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR v.订单号 LIKE '%' + @订单号 + '%')
|
||||
ORDER BY v.订单合同号, v.产品编码, v.工序名称, v.操作人,v.订单号
|
||||
END
|
||||
|
||||
@@ -0,0 +1,196 @@
|
||||
|
||||
CREATE PROCEDURE [dbo].[生产管理_生产计划跟踪]
|
||||
@订单号 int = 0,
|
||||
@物料类型 nvarchar(50) = '', --自制件、装配件
|
||||
@合同号 nvarchar(50) = '',
|
||||
@产品编码 nvarchar(50) = '',
|
||||
@产品名称 nvarchar(50) = '',
|
||||
@工序名称 nvarchar(50) = '',
|
||||
@要求完工日期1 nvarchar(50) = '',
|
||||
@要求完工日期2 nvarchar(50) = '',
|
||||
@计划开始1 nvarchar(50) = '',
|
||||
@计划开始2 nvarchar(50) = '',
|
||||
@计划完成1 nvarchar(50) = '',
|
||||
@计划完成2 nvarchar(50) = '',
|
||||
@排产状态 nvarchar(50) = '全部', --全部,已完成、未完成
|
||||
@指派对象 nvarchar(50) = '全部',
|
||||
@自制件属性 nvarchar(50) = '全部',
|
||||
@计划号 nvarchar(50) = '',
|
||||
@加急状态 nvarchar(50) = '',
|
||||
@单据状态 nvarchar(50) = ''
|
||||
AS
|
||||
BEGIN
|
||||
DECLARE @selectStr NVARCHAR(MAX)
|
||||
DECLARE @selectStrWhere NVARCHAR(4000) = ' WHERE [物料类型] = ''pit_Resource'' '
|
||||
|
||||
SET @selectStr = N'
|
||||
SELECT top 500
|
||||
v.计划号,
|
||||
加急总数,
|
||||
拣配状态,
|
||||
自制件属性,
|
||||
入库数量,
|
||||
外协分组,
|
||||
case
|
||||
when isnull(任务状态,0)=4 then ''已完成''
|
||||
when isnull(任务状态,0)=2 then ''已开工''
|
||||
when isnull(任务状态,0)=0 then ''待执行''
|
||||
when isnull(任务状态,0)=1 then ''可执行''
|
||||
else ''''
|
||||
end as [任务状态],
|
||||
case
|
||||
when isnull(加工状态,0)=2 then ''辅助开始''
|
||||
when isnull(加工状态,0)=3 then ''辅助结束''
|
||||
when isnull(加工状态,0)=4 then ''开始加工''
|
||||
when isnull(加工状态,0)=5 then ''暂停''
|
||||
when isnull(加工状态,0)=6 then ''报工''
|
||||
else ''''
|
||||
end as [加工状态],
|
||||
[计划数量订单],
|
||||
ISNULL(开工时间, 0) AS 开工时间,
|
||||
ISNULL(进度, 0) AS 进度,
|
||||
v.[TaskAID],
|
||||
[合同号],
|
||||
v.[订单编号] AS 订单号,
|
||||
[订单行号],
|
||||
[订单拆分内码] AS 拆分内码,
|
||||
[物料编号] AS 产品编码,
|
||||
[物料描述] AS 产品名称,
|
||||
TRIM(''.'' FROM TRIM(''0'' FROM CAST([计划数量] AS VARCHAR(30)))) AS 计划数量,
|
||||
[计划完成] AS 要求完工日期,
|
||||
[工序名称],
|
||||
完成数量,
|
||||
收料数量,
|
||||
CASE
|
||||
WHEN [加急状态] = 1 THEN ''加急''
|
||||
ELSE ''''
|
||||
END AS 加急状态,
|
||||
加急数量,
|
||||
性质,
|
||||
ISNULL(总工时, 0) AS 总工时,
|
||||
[占用情况],
|
||||
[排产状态],
|
||||
[工序计划数量],
|
||||
指派对象编号,
|
||||
指派对象,
|
||||
TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量,
|
||||
计划开始时间,
|
||||
计划完成时间,
|
||||
最晚开始时间,
|
||||
[派工状态],
|
||||
[外协通知],
|
||||
[优先级],
|
||||
[未完成说明],
|
||||
[派工特殊说明],
|
||||
[最后编辑人],
|
||||
[最后编辑时间],
|
||||
[二次派工],
|
||||
CASE
|
||||
WHEN zj_终检.计划号 IS NOT NULL THEN ''是''
|
||||
ELSE ''否''
|
||||
END AS 终检,
|
||||
-- 新增收检相关字段
|
||||
ISNULL(zj_收检.合格数合计, 0) AS 收检合格数,
|
||||
ISNULL(zj_收检.不合格数合计, 0) AS 收检不合格数,
|
||||
ISNULL(zj_收检.合格数合计, 0) + ISNULL(zj_收检.不合格数合计, 0) AS 收检总数,
|
||||
ISNULL(jl.开始时间, 0) AS 开始时间,
|
||||
ISNULL(jl.结束时间, 0) AS 结束时间,
|
||||
ISNULL(jl.外协结束时间, 0) AS 外协结束时间,
|
||||
STUFF((
|
||||
SELECT '','' + d2.工序名称
|
||||
FROM [dbo].[View_生产订单_MES] d2
|
||||
WHERE d2.订单编号 = v.订单编号 order by d2.订单行号
|
||||
FOR XML PATH('''')
|
||||
), 1, 1, '''') AS 工艺路线
|
||||
FROM [dbo].[View_生产订单全部(包括已关闭)] v
|
||||
-- 终检判断
|
||||
LEFT JOIN (
|
||||
SELECT DISTINCT 计划号
|
||||
FROM dbo.YL_质量检验_质检记录
|
||||
WHERE 质检类型 = ''终检''
|
||||
) zj_终检 ON v.[订单编号] = zj_终检.计划号
|
||||
-- 收检数量统计
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
TaskAID,
|
||||
SUM(ISNULL(合格数, 0)) AS 合格数合计,
|
||||
SUM(ISNULL(不合格数, 0)) AS 不合格数合计
|
||||
FROM dbo.YL_质量检验_质检记录
|
||||
WHERE 质检类型 = ''收检''
|
||||
GROUP BY TaskAID
|
||||
) zj_收检 ON v.[TaskAID] = zj_收检.TaskAID
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
TaskAID,
|
||||
min(ISNULL(开始时间, 0)) AS 开始时间,
|
||||
MAX(CASE WHEN 操作类别 = ''报工'' THEN ISNULL(开始时间, 0) ELSE NULL END) AS 外协结束时间,
|
||||
MAX(CASE WHEN 操作类别 = ''报工'' THEN ISNULL(结束时间, 0) ELSE NULL END) AS 结束时间
|
||||
FROM [dbo].[YL_加工中心_操作记录表]
|
||||
GROUP BY TaskAID
|
||||
) jl ON v.[TaskAID] = jl.TaskAID'
|
||||
|
||||
-- 添加筛选条件
|
||||
IF (@订单号 > 0)
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [订单编号] = ' + CONVERT(VARCHAR(10), @订单号)
|
||||
IF (@计划号 > 0)
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND v.[计划号] = '''+@计划号+''''
|
||||
IF (@合同号 <> '')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [合同号] LIKE ''%' + @合同号 + '%'''
|
||||
|
||||
IF (@产品编码 <> '')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [物料编号] LIKE ''%' + @产品编码 + '%'''
|
||||
|
||||
IF (@产品名称 <> '')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [物料描述] LIKE ''%' + @产品名称 + '%'''
|
||||
|
||||
IF (@工序名称 <> '')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [工序名称] = ''' + @工序名称 + ''''
|
||||
|
||||
IF (@要求完工日期1 <> '')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [计划完成] >= ''' + @要求完工日期1 + ''''
|
||||
|
||||
IF (@要求完工日期2 <> '')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [计划完成] <= ''' + @要求完工日期2 + ''''
|
||||
|
||||
IF (@计划开始1 <> '')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [计划开始时间] >= ''' + @计划开始1 + ''''
|
||||
|
||||
IF (@计划开始2 <> '')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [计划开始时间] <= ''' + @计划开始2 + ''''
|
||||
|
||||
IF (@计划完成1 <> '')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [计划完成时间] >= ''' + @计划完成1 + ''''
|
||||
|
||||
IF (@计划完成2 <> '')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [计划完成时间] <= ''' + @计划完成2 + ''''
|
||||
|
||||
IF (@排产状态 = '未完成')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND ISNULL([排产状态], 0) = 0'
|
||||
ELSE IF (@排产状态 = '已完成')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [排产状态] = 1'
|
||||
IF (@自制件属性 = '机加')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [自制件属性] = ''机加件'''
|
||||
ELSE IF (@自制件属性 = '装配')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [自制件属性] LIKE ''%装配'''
|
||||
|
||||
IF (@加急状态 = '加急')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [加急状态] = 1'
|
||||
IF (@单据状态 = '正常')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [单据状态] is null'
|
||||
ELSE IF (@单据状态 = '关闭')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [单据状态] is not null'
|
||||
IF (@指派对象 <> '全部')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [指派对象] IN (SELECT value FROM STRING_SPLIT(''' + @指派对象 + ''', '',''))'
|
||||
|
||||
-- 添加排序
|
||||
SET @selectStrWhere = @selectStrWhere + ' ORDER BY [计划完成] ASC, [订单编号] ASC'
|
||||
|
||||
-- 合并SQL
|
||||
SET @selectStr = @selectStr + @selectStrWhere
|
||||
|
||||
-- 打印SQL(调试用)
|
||||
PRINT @selectStr
|
||||
|
||||
-- 执行查询
|
||||
EXEC sp_executesql @selectStr
|
||||
END
|
||||
94
db_backups/质量管理_质检明细_查询_before_fieldkey_20260625.sql
Normal file
94
db_backups/质量管理_质检明细_查询_before_fieldkey_20260625.sql
Normal file
@@ -0,0 +1,94 @@
|
||||
|
||||
-- 质量管理_质检明细_查询
|
||||
CREATE PROCEDURE [dbo].[质量管理_质检明细_查询]
|
||||
@质检类型 nvarchar(4000) = '10', -- 修改为字符串类型,因为传入的是字符串
|
||||
@开始日期 datetime = NULL,
|
||||
@结束日期 datetime = NULL,
|
||||
@订单号 nvarchar(4000) = '0', -- 修改为字符串类型,避免类型转换问题
|
||||
@合同号 nvarchar(4000) = '0',
|
||||
@零件编码 nvarchar(4000) = '0',
|
||||
@零件名称 nvarchar(4000) = '0',
|
||||
@PageCurrent int = 1, -- 要显示的页码
|
||||
@PageSize int = 20, -- 每页的大小(记录数)
|
||||
@PageCount int OUTPUT, -- 总页数
|
||||
@ItemCount int OUTPUT -- 数据总数
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @tbname sysname = ' [dbo].[View_质检明细] ' -- 要分页显示的表名
|
||||
DECLARE @fieldkey sysname = ' ' -- 用于定位记录的主键(惟一键)字段
|
||||
DECLARE @where nvarchar(4000) -- 查询条件
|
||||
DECLARE @fieldshow nvarchar(1000) -- 要显示的字段列表
|
||||
DECLARE @fieldOrder nvarchar(1000) = ' 检测时间 DESC ' -- 排序字段
|
||||
|
||||
-- 构建查询条件(使用参数化方式,避免SQL注入)
|
||||
SET @where = ' (1=1) '
|
||||
|
||||
-- 质检类型过滤
|
||||
IF @质检类型 = '10' -- 全部
|
||||
SET @where = @where + ' AND (1=1) '
|
||||
ELSE IF @质检类型 = '0'
|
||||
SET @where = @where + ' AND 质检类型 = ''收检'' '
|
||||
ELSE IF @质检类型 = '1'
|
||||
SET @where = @where + ' AND 质检类型 = ''终检'' '
|
||||
ELSE IF @质检类型 = '2'
|
||||
SET @where = @where + ' AND 质检类型 = ''来料检验'' '
|
||||
ELSE IF @质检类型 = '3'
|
||||
SET @where = @where + ' AND 质检类型 = ''退库检验'' '
|
||||
|
||||
-- 订单号过滤条件(修正:使用LIKE时加引号)
|
||||
IF @订单号 <> '0'
|
||||
SET @where = @where + ' AND 计划号 LIKE ''%' + @订单号 + '%'' '
|
||||
|
||||
-- 合同号过滤条件
|
||||
--IF @合同号 <> '0'
|
||||
-- SET @where = @where + ' AND 内部合同号 LIKE ''%' + @合同号 + '%'' '
|
||||
|
||||
-- 零件编码过滤条件
|
||||
IF @零件编码 <> '0'
|
||||
SET @where = @where + ' AND 零件编码 LIKE ''%' + @零件编码 + '%'' '
|
||||
|
||||
-- 零件名称过滤条件
|
||||
IF @零件名称 <> '0'
|
||||
SET @where = @where + ' AND 零件名称 LIKE ''%' + @零件名称 + '%'' '
|
||||
|
||||
-- 日期范围过滤(如果提供了日期参数)
|
||||
IF @开始日期 IS NOT NULL
|
||||
SET @where = @where + ' AND 检测时间 >= ''' + CONVERT(nvarchar(30), @开始日期, 120) + ''' '
|
||||
|
||||
IF @结束日期 IS NOT NULL
|
||||
SET @where = @where + ' AND 检测时间 <= ''' + CONVERT(nvarchar(30), @结束日期, 120) + ''' '
|
||||
|
||||
SET @fieldshow = '
|
||||
[QT_AID]
|
||||
,[质检类型]
|
||||
,[零件编码]
|
||||
,[零件名称]
|
||||
,[内部合同号]
|
||||
,[计划号]
|
||||
,[工序名称]
|
||||
,[检验数量]
|
||||
,[合格数]
|
||||
,[不合格数]
|
||||
,[检测人]
|
||||
,[检测时间]
|
||||
,[检测说明]
|
||||
,[工位名称]
|
||||
,[订单类型]'
|
||||
|
||||
-- 调试用(可以注释掉)
|
||||
PRINT @where
|
||||
|
||||
-- 执行分页存储过程
|
||||
EXEC [dbo].[sp_xt_pagesplit]
|
||||
@tbname,
|
||||
@fieldkey,
|
||||
@where,
|
||||
@fieldshow,
|
||||
@fieldOrder,
|
||||
@PageCurrent,
|
||||
@PageSize,
|
||||
@PageCount OUTPUT,
|
||||
@ItemCount OUTPUT
|
||||
END
|
||||
Reference in New Issue
Block a user