diff --git a/MES_Manage_View_V20/db_backups/add_assignee_to_timesheet_export_procs_20260622.sql b/MES_Manage_View_V20/db_backups/add_assignee_to_timesheet_export_procs_20260622.sql new file mode 100644 index 0000000..aa399fa --- /dev/null +++ b/MES_Manage_View_V20/db_backups/add_assignee_to_timesheet_export_procs_20260622.sql @@ -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 diff --git a/MES_Manage_View_V20/db_backups/add_assignee_to_timesheet_query_procs_20260622.sql b/MES_Manage_View_V20/db_backups/add_assignee_to_timesheet_query_procs_20260622.sql new file mode 100644 index 0000000..8ed69ee --- /dev/null +++ b/MES_Manage_View_V20/db_backups/add_assignee_to_timesheet_query_procs_20260622.sql @@ -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 diff --git a/MES_Manage_View_V20/db_backups/add_standard_hours_to_production_plan_track_20260622.sql b/MES_Manage_View_V20/db_backups/add_standard_hours_to_production_plan_track_20260622.sql new file mode 100644 index 0000000..6d7e346 --- /dev/null +++ b/MES_Manage_View_V20/db_backups/add_standard_hours_to_production_plan_track_20260622.sql @@ -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 diff --git a/MES_Manage_View_V20/db_backups/工时统计_任务工时_查询_before_add_assignee_20260622_172419.sql b/MES_Manage_View_V20/db_backups/工时统计_任务工时_查询_before_add_assignee_20260622_172419.sql new file mode 100644 index 0000000..c0e8318 --- /dev/null +++ b/MES_Manage_View_V20/db_backups/工时统计_任务工时_查询_before_add_assignee_20260622_172419.sql @@ -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 + diff --git a/MES_Manage_View_V20/db_backups/工时统计_任务工时_查询_导出_before_add_assignee_20260622_172419.sql b/MES_Manage_View_V20/db_backups/工时统计_任务工时_查询_导出_before_add_assignee_20260622_172419.sql new file mode 100644 index 0000000..eeff329 --- /dev/null +++ b/MES_Manage_View_V20/db_backups/工时统计_任务工时_查询_导出_before_add_assignee_20260622_172419.sql @@ -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 + diff --git a/MES_Manage_View_V20/db_backups/工时统计_作业者工时_查询_before_add_assignee_20260622_172419.sql b/MES_Manage_View_V20/db_backups/工时统计_作业者工时_查询_before_add_assignee_20260622_172419.sql new file mode 100644 index 0000000..4d977bb --- /dev/null +++ b/MES_Manage_View_V20/db_backups/工时统计_作业者工时_查询_before_add_assignee_20260622_172419.sql @@ -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 diff --git a/MES_Manage_View_V20/db_backups/工时统计_作业者工时_查询_导出_before_add_assignee_20260622_172419.sql b/MES_Manage_View_V20/db_backups/工时统计_作业者工时_查询_导出_before_add_assignee_20260622_172419.sql new file mode 100644 index 0000000..4af8454 --- /dev/null +++ b/MES_Manage_View_V20/db_backups/工时统计_作业者工时_查询_导出_before_add_assignee_20260622_172419.sql @@ -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 + diff --git a/MES_Manage_View_V20/db_backups/工时统计_设备工时_查询_before_add_assignee_20260622_172419.sql b/MES_Manage_View_V20/db_backups/工时统计_设备工时_查询_before_add_assignee_20260622_172419.sql new file mode 100644 index 0000000..1a730a7 --- /dev/null +++ b/MES_Manage_View_V20/db_backups/工时统计_设备工时_查询_before_add_assignee_20260622_172419.sql @@ -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 + diff --git a/MES_Manage_View_V20/db_backups/工时统计_设备工时_查询_导出_before_add_assignee_20260622_172419.sql b/MES_Manage_View_V20/db_backups/工时统计_设备工时_查询_导出_before_add_assignee_20260622_172419.sql new file mode 100644 index 0000000..99c138d --- /dev/null +++ b/MES_Manage_View_V20/db_backups/工时统计_设备工时_查询_导出_before_add_assignee_20260622_172419.sql @@ -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 + diff --git a/MES_Manage_View_V20/db_backups/工时统计_项目工时_查询_before_add_assignee_20260622_172419.sql b/MES_Manage_View_V20/db_backups/工时统计_项目工时_查询_before_add_assignee_20260622_172419.sql new file mode 100644 index 0000000..f722360 --- /dev/null +++ b/MES_Manage_View_V20/db_backups/工时统计_项目工时_查询_before_add_assignee_20260622_172419.sql @@ -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 + diff --git a/MES_Manage_View_V20/db_backups/工时统计_项目工时_查询_导出_before_add_assignee_20260622_172419.sql b/MES_Manage_View_V20/db_backups/工时统计_项目工时_查询_导出_before_add_assignee_20260622_172419.sql new file mode 100644 index 0000000..a57fb15 --- /dev/null +++ b/MES_Manage_View_V20/db_backups/工时统计_项目工时_查询_导出_before_add_assignee_20260622_172419.sql @@ -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 + diff --git a/MES_Manage_View_V20/db_backups/生产管理_生产计划跟踪_before_add_standard_hours_20260622_173740.sql b/MES_Manage_View_V20/db_backups/生产管理_生产计划跟踪_before_add_standard_hours_20260622_173740.sql new file mode 100644 index 0000000..7974e70 --- /dev/null +++ b/MES_Manage_View_V20/db_backups/生产管理_生产计划跟踪_before_add_standard_hours_20260622_173740.sql @@ -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 diff --git a/MES_Manage_View_V20/script.sql b/MES_Manage_View_V20/script.sql deleted file mode 100644 index 44fc3e1..0000000 Binary files a/MES_Manage_View_V20/script.sql and /dev/null differ diff --git a/MES_Manage_View_V20/sql_异常提醒_装配及时送检_查询.sql b/MES_Manage_View_V20/sql_异常提醒_装配及时送检_查询.sql new file mode 100644 index 0000000..0723a24 --- /dev/null +++ b/MES_Manage_View_V20/sql_异常提醒_装配及时送检_查询.sql @@ -0,0 +1,81 @@ +USE [YL_MESDB] +GO + +SET ANSI_NULLS ON +GO +SET QUOTED_IDENTIFIER ON +GO + +CREATE OR ALTER PROCEDURE [dbo].[异常提醒_装配及时送检_查询] + @订单号 int = 0, + @合同号 nvarchar(50) = N'', + @产品编码 nvarchar(50) = N'', + @产品名称 nvarchar(50) = N'', + @工序名称 nvarchar(50) = N'', + @辅助配件 nvarchar(50) = N'不含' +AS +BEGIN + SET NOCOUNT ON; + + ;WITH 装配任务 AS ( + SELECT + CASE WHEN v.[物料描述] LIKE N'%系统%' THEN N'系统类' ELSE N'阀类' END AS 任务类型, + v.[合同号], + v.[订单编号] AS 订单号, + v.[物料编号] AS 产品编码, + v.[物料描述] AS 产品名称, + TRIM('.' FROM TRIM('0' FROM CAST(v.[计划数量] AS varchar(30)))) AS 计划数量, + v.[工序名称], + v.[指派对象], + v.[计划开始时间], + v.[计划完成时间], + v.[齐套时间], + v.[钣金预达时间], + CASE + WHEN v.[物料描述] LIKE N'%系统%' + THEN ISNULL(v.[预计送检日期], DATEADD(DAY, 3, v.[钣金预达时间])) + ELSE ISNULL(v.[预计送检日期], DATEADD(DAY, 3, v.[齐套时间])) + END AS 预计送检日期, + CASE WHEN ISNULL(v.[加急状态], 0) = 1 THEN N'加急' ELSE N'' END AS 加急状态 + FROM [dbo].[View_生产订单_MES] v + WHERE v.[物料类型] = 'pit_Resource' + AND v.[自制件属性] LIKE N'%装配%' + AND ISNULL(v.[任务状态], 0) < 4 + AND (@订单号 <= 0 OR v.[订单编号] = @订单号) + AND (@合同号 = N'' OR v.[合同号] LIKE N'%' + @合同号 + N'%') + AND (@产品编码 = N'' OR v.[物料编号] LIKE N'%' + @产品编码 + N'%') + AND (@产品名称 = N'' OR v.[物料描述] LIKE N'%' + @产品名称 + N'%') + AND (@工序名称 = N'' OR v.[工序名称] = @工序名称) + AND ( + @辅助配件 <> N'不含' + OR ( + v.[物料描述] NOT LIKE N'%软管总成%' + AND v.[物料描述] NOT LIKE N'%发货部件%' + ) + ) + AND v.[不装配] <> N'否' + ) + SELECT + 任务类型, + 合同号, + 订单号, + 产品编码, + 产品名称, + 计划数量, + 工序名称, + 指派对象, + 计划开始时间, + 计划完成时间, + 齐套时间, + 钣金预达时间, + 预计送检日期, + 加急状态 + FROM 装配任务 + WHERE 预计送检日期 IS NOT NULL + AND CONVERT(date, 预计送检日期) <= CONVERT(date, GETDATE()) + ORDER BY + CONVERT(date, 预计送检日期), + CASE WHEN 加急状态 = N'加急' THEN 0 ELSE 1 END, + 订单号; +END +GO diff --git a/MES_Manage_View_V20/src/views/AnomalousManagement/AssemblyPunctualInspection/index.vue b/MES_Manage_View_V20/src/views/AnomalousManagement/AssemblyPunctualInspection/index.vue new file mode 100644 index 0000000..3c65fa6 --- /dev/null +++ b/MES_Manage_View_V20/src/views/AnomalousManagement/AssemblyPunctualInspection/index.vue @@ -0,0 +1,267 @@ + + + + + diff --git a/MES_Manage_View_V20/src/views/ProductionManagement/ProductionPlanTrack/index.vue b/MES_Manage_View_V20/src/views/ProductionManagement/ProductionPlanTrack/index.vue index 1282b78..d36dc74 100644 --- a/MES_Manage_View_V20/src/views/ProductionManagement/ProductionPlanTrack/index.vue +++ b/MES_Manage_View_V20/src/views/ProductionManagement/ProductionPlanTrack/index.vue @@ -54,6 +54,7 @@ +