Compare commits
13 Commits
c6444092cb
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
77d1a97e83 | ||
|
|
b5bc8d7358 | ||
|
|
1e3f9299df | ||
|
|
20c6d587ad | ||
|
|
ab508369c9 | ||
|
|
1a781b02c2 | ||
|
|
134f9d888a | ||
|
|
0bf5f3f704 | ||
|
|
6f9f8fe148 | ||
|
|
6ecd0b5bd5 | ||
|
|
acca29b36b | ||
|
|
39638e9032 | ||
|
|
c96b10fb0c |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -25,6 +25,7 @@ selenium-debug.log
|
|||||||
**/.idea/
|
**/.idea/
|
||||||
.vscode/
|
.vscode/
|
||||||
**/.vscode/
|
**/.vscode/
|
||||||
|
~$*.docx
|
||||||
*.suo
|
*.suo
|
||||||
*.ntvs*
|
*.ntvs*
|
||||||
*.njsproj
|
*.njsproj
|
||||||
|
|||||||
7
MES_Manage_View_V20/MacroinfManage_MES.code-workspace
Normal file
7
MES_Manage_View_V20/MacroinfManage_MES.code-workspace
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"folders": [
|
||||||
|
{
|
||||||
|
"path": ".."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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,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
|
||||||
|
|
||||||
@@ -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
|
||||||
|
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
69
MES_Manage_View_V20/fix_机加设备生产运营看板_加急任务查询.sql
Normal file
69
MES_Manage_View_V20/fix_机加设备生产运营看板_加急任务查询.sql
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
USE [YL_MESDB]
|
||||||
|
GO
|
||||||
|
|
||||||
|
SET ANSI_NULLS ON
|
||||||
|
GO
|
||||||
|
SET QUOTED_IDENTIFIER ON
|
||||||
|
GO
|
||||||
|
|
||||||
|
ALTER PROCEDURE [dbo].[机加设备生产运营看板_加急任务查询]
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
SET NOCOUNT ON;
|
||||||
|
|
||||||
|
SELECT
|
||||||
|
[订单编号]
|
||||||
|
,[合同号]
|
||||||
|
,[订单类型]
|
||||||
|
,[订单状态]
|
||||||
|
,[物料编号]
|
||||||
|
,[物料描述]
|
||||||
|
,[计划数量]
|
||||||
|
,[计量单位]
|
||||||
|
,[下达日期]
|
||||||
|
,[计划开始时间]
|
||||||
|
,[计划完成]
|
||||||
|
,[自制件属性]
|
||||||
|
,加急总数 as 加急数量
|
||||||
|
,工序名称
|
||||||
|
,指派对象
|
||||||
|
,外协分组
|
||||||
|
,REPLACE(STUFF((
|
||||||
|
SELECT
|
||||||
|
' -> ' + ISNULL(d2.工序名称, '') + '(' + ISNULL(d2.指派对象, '') + ')'
|
||||||
|
+ '|' + ISNULL(CAST(d2.加工状态 AS VARCHAR(10)), '0')
|
||||||
|
+ '|' + ISNULL(CAST(CAST(ISNULL((
|
||||||
|
SELECT SUM(合格数)
|
||||||
|
FROM [dbo].[YL_质量检验_质检记录]
|
||||||
|
WHERE TaskAID = d2.TaskAID
|
||||||
|
), 0) AS INT) AS VARCHAR(10)), '0')
|
||||||
|
+ '|' + ISNULL(CONVERT(VARCHAR(2), MONTH(d2.计划开始时间)) + '月' + CONVERT(VARCHAR(2), DAY(d2.计划开始时间)) + '日', '')
|
||||||
|
+ '|' + ISNULL(CAST(d2.订单行号 AS VARCHAR(10)), '')
|
||||||
|
+ '|' + ISNULL(CAST(d2.外协分组 AS NVARCHAR(50)), '')
|
||||||
|
+ '|' + ISNULL(CAST(CAST(ISNULL((
|
||||||
|
SELECT SUM(操作数值)
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表]
|
||||||
|
WHERE TaskAID = d2.TaskAID
|
||||||
|
AND 操作类别 = '收料'
|
||||||
|
), 0) AS INT) AS VARCHAR(10)), '0')
|
||||||
|
+ '|' + ISNULL(CAST(CAST(ISNULL((
|
||||||
|
SELECT SUM(不合格数)
|
||||||
|
FROM [dbo].[YL_质量检验_质检记录]
|
||||||
|
WHERE TaskAID = d2.TaskAID
|
||||||
|
), 0) AS INT) AS VARCHAR(10)), '0')
|
||||||
|
FROM [dbo].[View_生产订单_MES] d2
|
||||||
|
WHERE d2.订单编号 = v.订单编号
|
||||||
|
ORDER BY d2.订单行号
|
||||||
|
FOR XML PATH('')
|
||||||
|
), 1, 6, ''), '>', '>') AS 工序进度详情
|
||||||
|
,(SELECT COUNT(DISTINCT 订单编号) FROM [YL_MESDB].[dbo].[View_生产订单_MES] WHERE 加急总数 > 0 AND 指派对象 NOT LIKE '%装配%') AS [加急订单总数]
|
||||||
|
FROM [YL_MESDB].[dbo].[View_生产订单_MES] v
|
||||||
|
WHERE 加急总数 > 0
|
||||||
|
AND 指派对象 NOT LIKE '%装配%'
|
||||||
|
AND 订单行号 = (
|
||||||
|
SELECT MIN(订单行号)
|
||||||
|
FROM [YL_MESDB].[dbo].[View_生产订单_MES]
|
||||||
|
WHERE 订单编号 = v.订单编号
|
||||||
|
)
|
||||||
|
|
||||||
|
END
|
||||||
Binary file not shown.
81
MES_Manage_View_V20/sql_异常提醒_装配及时送检_查询.sql
Normal file
81
MES_Manage_View_V20/sql_异常提醒_装配及时送检_查询.sql
Normal file
@@ -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
|
||||||
@@ -0,0 +1,267 @@
|
|||||||
|
<template>
|
||||||
|
<div class="assembly-punctual-inspection">
|
||||||
|
<el-card>
|
||||||
|
<div class="search-container">
|
||||||
|
<span class="show-text">生产订单:</span>
|
||||||
|
<el-input
|
||||||
|
v-model="productionOrder"
|
||||||
|
placeholder="请输入生产订单"
|
||||||
|
clearable
|
||||||
|
style="width: 150px; margin-right: 10px"
|
||||||
|
@keyup.enter.native="searchTable"
|
||||||
|
/>
|
||||||
|
<span class="show-text">销售订单:</span>
|
||||||
|
<el-input
|
||||||
|
v-model="salesOrder"
|
||||||
|
placeholder="请输入销售订单"
|
||||||
|
clearable
|
||||||
|
style="width: 150px; margin-right: 10px"
|
||||||
|
@keyup.enter.native="searchTable"
|
||||||
|
/>
|
||||||
|
<span class="show-text">物料编码:</span>
|
||||||
|
<el-input
|
||||||
|
v-model="materialCode"
|
||||||
|
placeholder="请输入物料编码"
|
||||||
|
clearable
|
||||||
|
style="width: 180px; margin-right: 10px"
|
||||||
|
@keyup.enter.native="searchTable"
|
||||||
|
/>
|
||||||
|
<span class="show-text">物料名称:</span>
|
||||||
|
<el-input
|
||||||
|
v-model="materialName"
|
||||||
|
placeholder="请输入物料名称"
|
||||||
|
clearable
|
||||||
|
style="width: 180px; margin-right: 10px"
|
||||||
|
@keyup.enter.native="searchTable"
|
||||||
|
/>
|
||||||
|
<span class="show-text">工序名称:</span>
|
||||||
|
<el-input
|
||||||
|
v-model="processName"
|
||||||
|
placeholder="请输入工序名称"
|
||||||
|
clearable
|
||||||
|
style="width: 150px; margin-right: 10px"
|
||||||
|
@keyup.enter.native="searchTable"
|
||||||
|
/>
|
||||||
|
<el-button :disabled="loading" icon="el-icon-search" plain type="primary" @click="searchTable">查询</el-button>
|
||||||
|
<el-button :disabled="loading || tableData.length === 0" icon="el-icon-download" plain type="success" @click="exportToExcel">导出</el-button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="table-tip">
|
||||||
|
仅显示预计送检日期小于等于今天的数据
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<el-table
|
||||||
|
v-loading="loading"
|
||||||
|
:data="tableData"
|
||||||
|
:height="'70vh'"
|
||||||
|
:row-class-name="tableRowClassName"
|
||||||
|
border
|
||||||
|
element-loading-background="rgba(0, 0, 0, 0.2)"
|
||||||
|
element-loading-spinner="el-icon-loading"
|
||||||
|
highlight-current-row
|
||||||
|
size="mini"
|
||||||
|
style="width: 100%; margin-top: 16px"
|
||||||
|
tooltip-effect="dark"
|
||||||
|
>
|
||||||
|
<el-table-column align="center" label="序号" type="index" width="60" fixed />
|
||||||
|
<el-table-column align="center" prop="任务类型" label="任务类型" width="90" fixed />
|
||||||
|
<el-table-column align="center" prop="预计送检日期" label="预计送检日期" width="120" fixed show-overflow-tooltip>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
{{ formatDate(scope.row.预计送检日期) }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" prop="订单号" label="生产订单" width="100" fixed />
|
||||||
|
<el-table-column align="center" prop="合同号" label="销售订单" width="120" fixed show-overflow-tooltip />
|
||||||
|
<el-table-column align="center" prop="产品编码" label="物料编码" width="180" show-overflow-tooltip />
|
||||||
|
<el-table-column align="center" prop="产品名称" label="物料名称" width="220" show-overflow-tooltip />
|
||||||
|
<el-table-column align="center" prop="工序名称" label="工序名称" width="120" show-overflow-tooltip />
|
||||||
|
<el-table-column align="center" prop="计划数量" label="计划数量" width="100" />
|
||||||
|
<el-table-column align="center" prop="指派对象" label="指派对象" width="140" show-overflow-tooltip />
|
||||||
|
<el-table-column align="center" prop="计划开始时间" label="计划开始时间" width="120">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
{{ formatDate(scope.row.计划开始时间) }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" prop="计划完成时间" label="计划完成时间" width="120">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
{{ formatDate(scope.row.计划完成时间) }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" prop="齐套时间" label="齐套时间" width="120">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
{{ formatDate(scope.row.齐套时间) }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" prop="钣金预达时间" label="钣金预达时间" width="120">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
{{ formatDate(scope.row.钣金预达时间) }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" prop="加急状态" label="加急状态" width="90" />
|
||||||
|
</el-table>
|
||||||
|
|
||||||
|
</el-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import * as XLSX from 'xlsx'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'AssemblyPunctualInspection',
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
productionOrder: '',
|
||||||
|
salesOrder: '',
|
||||||
|
materialCode: '',
|
||||||
|
materialName: '',
|
||||||
|
processName: '',
|
||||||
|
loading: false,
|
||||||
|
tableData: []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.searchTable()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
formatDate(value) {
|
||||||
|
if (!value) return ''
|
||||||
|
return String(value).split(' ')[0]
|
||||||
|
},
|
||||||
|
tableRowClassName({ row }) {
|
||||||
|
if (this.isOverdue(row.预计送检日期)) {
|
||||||
|
return 'overdue-row'
|
||||||
|
}
|
||||||
|
if (this.isToday(row.预计送检日期)) {
|
||||||
|
return 'today-row'
|
||||||
|
}
|
||||||
|
return ''
|
||||||
|
},
|
||||||
|
async searchTable() {
|
||||||
|
this.loading = true
|
||||||
|
try {
|
||||||
|
const param = []
|
||||||
|
param.push(['订单号', this.productionOrder || 0])
|
||||||
|
param.push(['合同号', this.salesOrder])
|
||||||
|
param.push(['产品编码', this.materialCode])
|
||||||
|
param.push(['产品名称', this.materialName])
|
||||||
|
param.push(['工序名称', this.processName])
|
||||||
|
param.push(['辅助配件', '不含'])
|
||||||
|
|
||||||
|
const data = this.CreateData('11', '异常提醒_装配及时送检_查询', param)
|
||||||
|
const response = await this.ExecDatabase(data)
|
||||||
|
this.tableData = response.data || []
|
||||||
|
} catch (error) {
|
||||||
|
this.$message.error('查询失败: ' + error.message)
|
||||||
|
this.tableData = []
|
||||||
|
} finally {
|
||||||
|
this.loading = false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
isOverdue(value) {
|
||||||
|
const targetTime = this.getDateTime(value)
|
||||||
|
if (targetTime === Infinity) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return targetTime < this.getTodayTime()
|
||||||
|
},
|
||||||
|
isToday(value) {
|
||||||
|
const targetTime = this.getDateTime(value)
|
||||||
|
if (targetTime === Infinity) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return targetTime === this.getTodayTime()
|
||||||
|
},
|
||||||
|
getTodayTime() {
|
||||||
|
const now = new Date()
|
||||||
|
now.setHours(0, 0, 0, 0)
|
||||||
|
return now.getTime()
|
||||||
|
},
|
||||||
|
getDateTime(value) {
|
||||||
|
if (!value) {
|
||||||
|
return Infinity
|
||||||
|
}
|
||||||
|
const dateText = this.formatDate(value).replace(/-/g, '/')
|
||||||
|
const date = new Date(dateText)
|
||||||
|
if (Number.isNaN(date.getTime())) {
|
||||||
|
return Infinity
|
||||||
|
}
|
||||||
|
date.setHours(0, 0, 0, 0)
|
||||||
|
return date.getTime()
|
||||||
|
},
|
||||||
|
exportToExcel() {
|
||||||
|
const exportData = this.tableData.map((item, index) => ({
|
||||||
|
序号: index + 1,
|
||||||
|
任务类型: item.任务类型,
|
||||||
|
预计送检日期: item.预计送检日期,
|
||||||
|
生产订单: item.订单号,
|
||||||
|
销售订单: item.合同号,
|
||||||
|
物料编码: item.产品编码,
|
||||||
|
物料名称: item.产品名称,
|
||||||
|
工序名称: item.工序名称,
|
||||||
|
计划数量: item.计划数量,
|
||||||
|
指派对象: item.指派对象,
|
||||||
|
计划开始时间: this.formatDate(item.计划开始时间),
|
||||||
|
计划完成时间: this.formatDate(item.计划完成时间),
|
||||||
|
齐套时间: this.formatDate(item.齐套时间),
|
||||||
|
钣金预达时间: this.formatDate(item.钣金预达时间),
|
||||||
|
加急状态: item.加急状态
|
||||||
|
}))
|
||||||
|
|
||||||
|
const wb = XLSX.utils.book_new()
|
||||||
|
const ws = XLSX.utils.json_to_sheet(exportData)
|
||||||
|
ws['!cols'] = [
|
||||||
|
{ wch: 8 },
|
||||||
|
{ wch: 10 },
|
||||||
|
{ wch: 14 },
|
||||||
|
{ wch: 14 },
|
||||||
|
{ wch: 14 },
|
||||||
|
{ wch: 22 },
|
||||||
|
{ wch: 28 },
|
||||||
|
{ wch: 14 },
|
||||||
|
{ wch: 10 },
|
||||||
|
{ wch: 14 },
|
||||||
|
{ wch: 14 },
|
||||||
|
{ wch: 14 },
|
||||||
|
{ wch: 14 },
|
||||||
|
{ wch: 14 },
|
||||||
|
{ wch: 10 }
|
||||||
|
]
|
||||||
|
XLSX.utils.book_append_sheet(wb, ws, '装配及时送检')
|
||||||
|
XLSX.writeFile(wb, '装配及时送检.xlsx')
|
||||||
|
this.$message.success('导出成功')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.assembly-punctual-inspection {
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-container {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.show-text {
|
||||||
|
font-size: 14px;
|
||||||
|
margin-right: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-tip {
|
||||||
|
margin-top: 12px;
|
||||||
|
color: #909399;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .overdue-row > td {
|
||||||
|
background-color: #fde2e2 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .today-row > td {
|
||||||
|
background-color: #faecd8 !important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,489 @@
|
|||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<el-card style="height: 850px">
|
||||||
|
<div style="margin-top: 7px; margin-bottom: 7px">
|
||||||
|
<span class="show-text">生产订单:</span>
|
||||||
|
<el-input
|
||||||
|
v-model="orderNo"
|
||||||
|
placeholder="请输入生产订单"
|
||||||
|
clearable
|
||||||
|
style="width: 150px; margin-right: 10px"
|
||||||
|
@change="searchTable()"
|
||||||
|
/>
|
||||||
|
<span class="show-text">计划号:</span>
|
||||||
|
<el-input
|
||||||
|
v-model="plannum"
|
||||||
|
placeholder="请输入生产订单"
|
||||||
|
clearable
|
||||||
|
style="width: 150px; margin-right: 10px"
|
||||||
|
/>
|
||||||
|
<span class="show-text">物料编码:</span>
|
||||||
|
<el-input
|
||||||
|
v-model="productCode"
|
||||||
|
placeholder="请输入物料编码"
|
||||||
|
clearable
|
||||||
|
style="width: 150px; margin-right: 10px"
|
||||||
|
/>
|
||||||
|
<span class="show-text">物料名称:</span>
|
||||||
|
<el-input
|
||||||
|
v-model="itemName"
|
||||||
|
placeholder="请输入物料名称"
|
||||||
|
clearable
|
||||||
|
style="width: 150px; margin-right: 10px"
|
||||||
|
/>
|
||||||
|
<span class="show-text">工序名称:</span>
|
||||||
|
<el-input
|
||||||
|
v-model="processName"
|
||||||
|
placeholder="请输入工序名称"
|
||||||
|
clearable
|
||||||
|
style="width: 150px; margin-right: 10px"
|
||||||
|
/>
|
||||||
|
<span class="show-text">执行状态:</span>
|
||||||
|
<el-select v-model="dostate" placeholder="请选择">
|
||||||
|
<el-option
|
||||||
|
v-for="item in dostateoptions"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
<el-button
|
||||||
|
icon="el-icon-search"
|
||||||
|
plain
|
||||||
|
type="primary"
|
||||||
|
@click="searchTable()"
|
||||||
|
>查询</el-button
|
||||||
|
>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<el-table
|
||||||
|
:data="mergedTableData"
|
||||||
|
highlight-current-row
|
||||||
|
border
|
||||||
|
size="small"
|
||||||
|
style="margin-top: 10px"
|
||||||
|
height="75vh"
|
||||||
|
@selection-change="handleSelectionChange"
|
||||||
|
@row-click="handleRowClick">
|
||||||
|
<el-table-column type="selection" width="50"></el-table-column>
|
||||||
|
<el-table-column label="序号" type="index" align="center" width="50"/>
|
||||||
|
<el-table-column label="生产订单" align="center" prop="订单号" width="80" />
|
||||||
|
<el-table-column label="计划号" align="center" prop="计划号" width="80" />
|
||||||
|
<el-table-column label="工序名称" align="center" prop="工序名称" width="120"/>
|
||||||
|
<el-table-column label="物料名称" align="center" prop="产品名称" width="200"/>
|
||||||
|
<el-table-column label="同步状态" align="center" width="100">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
{{scope.row.派工状态 === 1 ? '已同步':'未同步'}}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="上序合格数" align="center" prop="上序合格数" width="100"/>
|
||||||
|
<el-table-column label="指派数量" align="center" prop="指派数量" width="80"/>
|
||||||
|
<el-table-column label="打印数量" align="center" prop="打印数量" width="80"/>
|
||||||
|
<el-table-column label="发料数量" align="center" prop="收料数量" width="80"/>
|
||||||
|
<el-table-column label="收货数量" align="center" prop="完成数量" width="80"/>
|
||||||
|
<el-table-column label="备注" align="center" prop="外协备注" width="200"/>
|
||||||
|
<el-table-column label="单重" align="center" prop="单重" width="80"/>
|
||||||
|
<el-table-column label="物料编码" align="center" prop="产品编码" width="200"/>
|
||||||
|
|
||||||
|
<el-table-column label="打印次数" align="center" prop="外协打印次数" width="120"/>
|
||||||
|
<el-table-column label="计划开始时间" align="center" prop="计划开始时间" width="120">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
{{formatDate(scope.row.计划开始时间)}}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="计划完成时间" align="center" prop="计划完成时间" width="120">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
{{formatDate(scope.row.计划完成时间)}}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
|
||||||
|
</el-table>
|
||||||
|
</el-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { mapGetters } from 'vuex'
|
||||||
|
import { postB1 } from '@/api/b1s';
|
||||||
|
import $ from 'jquery'
|
||||||
|
import QRCode from 'qrcode'
|
||||||
|
import { set } from 'nprogress';
|
||||||
|
import { MESDownFile } from '@/utils/request'
|
||||||
|
import { seepdf, initPDFKeyboardShortcuts, setZoom } from '@/utils/pdf';
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
downPDF:MESDownFile,
|
||||||
|
seeVisible:false,
|
||||||
|
qrCodeDataUrl:'',
|
||||||
|
printDataList2:[],
|
||||||
|
historyVisible:false,
|
||||||
|
printdata2:[],
|
||||||
|
historydata:[],
|
||||||
|
dialogFormVisible1: false,
|
||||||
|
tableData: [], // 原始数据
|
||||||
|
mergedTableData: [], // 合并后的数据
|
||||||
|
selectedRow:'',
|
||||||
|
selectedRow2:'',
|
||||||
|
productCode:'',
|
||||||
|
orderNo:'',
|
||||||
|
plannum:'',
|
||||||
|
processName:'',
|
||||||
|
itemName:'',
|
||||||
|
sessionId:'',
|
||||||
|
currentTime:'',
|
||||||
|
receiveVisible:false,
|
||||||
|
receiveData: {},
|
||||||
|
receiveNum: 0,
|
||||||
|
doVisible:false,
|
||||||
|
doData: {},
|
||||||
|
doNum: 0,
|
||||||
|
// 新增:存储合并数据的原始信息
|
||||||
|
mergedDataMap: new Map(), // 用于存储合并数据对应的原始数据组
|
||||||
|
workstate:0,
|
||||||
|
orderstate:0,
|
||||||
|
dostate:1,
|
||||||
|
workstateoptions:[{
|
||||||
|
value: 0,
|
||||||
|
label: '未同步'
|
||||||
|
}, {
|
||||||
|
value: 1,
|
||||||
|
label: '已同步',
|
||||||
|
disabled: true
|
||||||
|
}],
|
||||||
|
stateoptions:[{
|
||||||
|
value: 0,
|
||||||
|
label: '未完成',
|
||||||
|
disabled: true
|
||||||
|
}, {
|
||||||
|
value: 1,
|
||||||
|
label: '已完成',
|
||||||
|
|
||||||
|
}],
|
||||||
|
dostateoptions:[{
|
||||||
|
value: 0,
|
||||||
|
label: '全部',
|
||||||
|
disabled: true
|
||||||
|
}, {
|
||||||
|
value: 1,
|
||||||
|
label: '可执行',
|
||||||
|
|
||||||
|
},{
|
||||||
|
value: 2,
|
||||||
|
label: '不可执行',
|
||||||
|
|
||||||
|
}],
|
||||||
|
multipleSelection: [],
|
||||||
|
printDataList: [] ,// 新增:存储多个打印数据
|
||||||
|
numname:'',
|
||||||
|
textweight:'',
|
||||||
|
textsum:'',
|
||||||
|
textcontent:'',
|
||||||
|
textData:{},
|
||||||
|
textVisible:false,
|
||||||
|
qrCodeCache: new Map(),
|
||||||
|
qrCodeUrl: '',
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
...mapGetters([
|
||||||
|
'id',
|
||||||
|
'token'
|
||||||
|
]),
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.searchTable()
|
||||||
|
setInterval(this.getCurrentTime, 1000);
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
|
||||||
|
handleSelectionChange(val) {
|
||||||
|
this.multipleSelection = val;
|
||||||
|
},
|
||||||
|
getCurrentTime() {
|
||||||
|
const now = new Date();
|
||||||
|
const year = now.getFullYear();
|
||||||
|
const month = String(now.getMonth() + 1).padStart(2, "0");
|
||||||
|
const day = String(now.getDate()).padStart(2, "0");
|
||||||
|
const hours = String(now.getHours()).padStart(2, "0");
|
||||||
|
const minutes = String(now.getMinutes()).padStart(2, "0");
|
||||||
|
const seconds = String(now.getSeconds()).padStart(2, "0");
|
||||||
|
this.currentTime = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
|
||||||
|
},
|
||||||
|
handleRowClick(row) {
|
||||||
|
this.selectedRow = row
|
||||||
|
},
|
||||||
|
handleRowClick2(row) {
|
||||||
|
this.selectedRow2 = row
|
||||||
|
},
|
||||||
|
searchTable() {
|
||||||
|
this.loading = true
|
||||||
|
var param = []
|
||||||
|
param.push(["订单号",this.orderNo])
|
||||||
|
param.push(["产品编码",this.productCode])
|
||||||
|
param.push(["产品名称",this.itemName])
|
||||||
|
param.push(["工序名称",this.processName])
|
||||||
|
param.push(["计划号",this.plannum])
|
||||||
|
var Data = this.CreateData('11', '异常提醒_外协及时开工_查询',param)
|
||||||
|
this.ExecDatabase(Data).then(response => {
|
||||||
|
this.tableData = response.data
|
||||||
|
this.mergeTableData() // 处理数据合并
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
// 合并表格数据的方法
|
||||||
|
mergeTableData() {
|
||||||
|
if (!this.tableData || this.tableData.length === 0) {
|
||||||
|
this.mergedTableData = [];
|
||||||
|
this.mergedDataMap.clear();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const groupedByOrder = {};
|
||||||
|
this.tableData.forEach(item => {
|
||||||
|
const groupKey = `${item.订单号}_${item.拆分内码}`;
|
||||||
|
|
||||||
|
if (!groupedByOrder[groupKey]) {
|
||||||
|
groupedByOrder[groupKey] = [];
|
||||||
|
}
|
||||||
|
groupedByOrder[groupKey].push(item);
|
||||||
|
});
|
||||||
|
|
||||||
|
const mergedData = [];
|
||||||
|
this.mergedDataMap.clear();
|
||||||
|
|
||||||
|
Object.keys(groupedByOrder).forEach(orderNo => {
|
||||||
|
const orderItems = groupedByOrder[orderNo];
|
||||||
|
orderItems.sort((a, b) => a.订单行号 - b.订单行号);
|
||||||
|
|
||||||
|
let currentGroup = [orderItems[0]];
|
||||||
|
|
||||||
|
for (let i = 1; i < orderItems.length; i++) {
|
||||||
|
const currentItem = orderItems[i];
|
||||||
|
const lastItem = orderItems[i - 1];
|
||||||
|
|
||||||
|
if (currentItem.订单行号 === lastItem.订单行号 + 1 && currentItem.外协分组 === lastItem.外协分组 && currentItem.拆分内码 === lastItem.拆分内码) {
|
||||||
|
currentGroup.push(currentItem);
|
||||||
|
} else {
|
||||||
|
// 检查组内最小计划开始时间是否小于今天
|
||||||
|
if (this.checkGroupPlanStartValid(currentGroup)) {
|
||||||
|
if (this.checkGroupAllZero(currentGroup)) {
|
||||||
|
const mergedItem = this.mergeGroup(currentGroup);
|
||||||
|
if (this.shouldIncludeByExecutionStatus(mergedItem)) {
|
||||||
|
mergedData.push(mergedItem);
|
||||||
|
this.mergedDataMap.set(mergedItem.uniqueKey, currentGroup);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
currentGroup = [currentItem];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 处理最后一组
|
||||||
|
if (currentGroup.length > 0) {
|
||||||
|
if (this.checkGroupPlanStartValid(currentGroup)) {
|
||||||
|
if (this.checkGroupAllZero(currentGroup)) {
|
||||||
|
const mergedItem = this.mergeGroup(currentGroup);
|
||||||
|
if (this.shouldIncludeByExecutionStatus(mergedItem)) {
|
||||||
|
mergedData.push(mergedItem);
|
||||||
|
this.mergedDataMap.set(mergedItem.uniqueKey, currentGroup);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
this.mergedTableData = mergedData;
|
||||||
|
},
|
||||||
|
|
||||||
|
// 新增:检查组内最小计划开始时间是否小于今天
|
||||||
|
checkGroupPlanStartValid(group) {
|
||||||
|
const today = new Date();
|
||||||
|
today.setHours(0, 0, 0, 0);
|
||||||
|
|
||||||
|
// 获取组内最小的计划开始时间
|
||||||
|
const minPlanStart = group.reduce((min, item) => {
|
||||||
|
if (!item.计划开始时间) return min;
|
||||||
|
const planDate = new Date(item.计划开始时间);
|
||||||
|
planDate.setHours(0, 0, 0, 0);
|
||||||
|
return planDate < min ? planDate : min;
|
||||||
|
}, new Date('2099-12-31'));
|
||||||
|
|
||||||
|
return minPlanStart < today;
|
||||||
|
},
|
||||||
|
// 新增:检查组内所有数据的收料数量是否都为0
|
||||||
|
checkGroupAllZero(group) {
|
||||||
|
// 只有组内所有数据的收料数量都等于0,才返回true
|
||||||
|
return group.every(item => {
|
||||||
|
const 收料数量 = Number(item.收料数量) || 0;
|
||||||
|
return 收料数量 === 0;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
// 新增:根据执行状态筛选数据(纯前端筛选)
|
||||||
|
shouldIncludeByExecutionStatus(mergedItem) {
|
||||||
|
const 执行状态 = this.dostate; // 0=全部, 1=可执行, 2=不可执行
|
||||||
|
|
||||||
|
if (执行状态 === 0) {
|
||||||
|
return true; // 全部,不筛选
|
||||||
|
}
|
||||||
|
|
||||||
|
const itemExecutionStatus = mergedItem.执行状态 || 1; // 默认可执行
|
||||||
|
|
||||||
|
if (执行状态 === 1) {
|
||||||
|
return itemExecutionStatus === 1; // 只显示可执行
|
||||||
|
} else if (执行状态 === 2) {
|
||||||
|
return itemExecutionStatus === 2; // 只显示不可执行
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
|
||||||
|
// 合并单个组的数据
|
||||||
|
mergeGroup(group) {
|
||||||
|
if (group.length === 1) {
|
||||||
|
const item = group[0];
|
||||||
|
item.uniqueKey = `${item.订单号}_${item.订单行号}_${item.TaskAID}`;
|
||||||
|
// 确保TaskAID是字符串类型
|
||||||
|
item.TaskAID = String(item.TaskAID);
|
||||||
|
|
||||||
|
// 计算单条记录的执行状态
|
||||||
|
const 上序合格数 = item.上序合格数 || 0;
|
||||||
|
const 订单行号 = item.订单行号;
|
||||||
|
item.执行状态 = (订单行号 === 1 || 上序合格数 > 0) ? 1 : 2;
|
||||||
|
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
|
||||||
|
const mergedItem = { ...group[0] };
|
||||||
|
|
||||||
|
// 生成唯一标识key
|
||||||
|
mergedItem.uniqueKey = group.map(item => `${item.订单号}_${item.订单行号}_${item.TaskAID}`).join('|');
|
||||||
|
|
||||||
|
// 拼接工序名称(逗号间隔)
|
||||||
|
const processNames = group.map(item => item.工序名称);
|
||||||
|
mergedItem.工序名称 = processNames.join(',');
|
||||||
|
|
||||||
|
// 拼接TaskAID(逗号间隔)
|
||||||
|
const taskAIDs = [...new Set(group.map(item => String(item.TaskAID)))];
|
||||||
|
mergedItem.TaskAID = taskAIDs.join(',');
|
||||||
|
|
||||||
|
// 取计划开始时间的最小值
|
||||||
|
const startTimes = group.map(item => new Date(item.计划开始时间));
|
||||||
|
mergedItem.计划开始时间 = new Date(Math.min(...startTimes)).toISOString().slice(0, 19).replace('T', ' ');
|
||||||
|
|
||||||
|
// 取计划完成时间的最大值
|
||||||
|
const endTimes = group.map(item => new Date(item.计划完成时间));
|
||||||
|
mergedItem.计划完成时间 = new Date(Math.max(...endTimes)).toISOString().slice(0, 19).replace('T', ' ');
|
||||||
|
|
||||||
|
// 取最大值
|
||||||
|
const wcnum = group.map(item => item.完成数量);
|
||||||
|
mergedItem.完成数量 = Math.max(...wcnum);
|
||||||
|
|
||||||
|
const printnum = group.map(item => item.外协打印次数);
|
||||||
|
mergedItem.外协打印次数 = Math.max(...printnum);
|
||||||
|
|
||||||
|
const slnum = group.map(item => item.收料数量);
|
||||||
|
mergedItem.收料数量 = Math.max(...slnum);
|
||||||
|
|
||||||
|
// 计算上序合格数(取组内最大值)
|
||||||
|
const shxnum = group.map(item => item.上序合格数 || 0);
|
||||||
|
mergedItem.上序合格数 = Math.max(...shxnum);
|
||||||
|
|
||||||
|
// 计算执行状态:只要一组内包含订单行号=1 或者包含上序合格数>0,都属于可执行
|
||||||
|
const hasFirstProcess = group.some(item => item.订单行号 === 1);
|
||||||
|
const hasPreviousQualified = group.some(item => (item.上序合格数 || 0) > 0);
|
||||||
|
mergedItem.执行状态 = (hasFirstProcess || hasPreviousQualified) ? 1 : 2;
|
||||||
|
|
||||||
|
// 存储原始组数据引用
|
||||||
|
mergedItem.originalGroup = group;
|
||||||
|
|
||||||
|
return mergedItem;
|
||||||
|
},
|
||||||
|
|
||||||
|
// 获取订单行号最大的TaskAID
|
||||||
|
getMaxOrderLineTaskAID(row) {
|
||||||
|
// 如果是单条数据,直接返回TaskAID
|
||||||
|
if (typeof row.TaskAID === 'number' || !row.TaskAID.includes(',')) {
|
||||||
|
return String(row.TaskAID);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 如果是合并数据,从原始数据组中找订单行号最大的TaskAID
|
||||||
|
if (row.originalGroup) {
|
||||||
|
const maxOrderLineItem = row.originalGroup.reduce((max, item) => {
|
||||||
|
return item.订单行号 > max.订单行号 ? item : max;
|
||||||
|
}, row.originalGroup[0]);
|
||||||
|
return String(maxOrderLineItem.TaskAID);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 如果没有原始组数据,从TaskAID字符串中取最后一个
|
||||||
|
const taskAIDs = row.TaskAID.split(',');
|
||||||
|
return taskAIDs[taskAIDs.length - 1];
|
||||||
|
},
|
||||||
|
// 获取订单行号最小的TaskAID
|
||||||
|
getMinOrderLineTaskAID(row) {
|
||||||
|
// 如果是单条数据,直接返回TaskAID
|
||||||
|
if (typeof row.TaskAID === 'number' || !row.TaskAID.includes(',')) {
|
||||||
|
return String(row.TaskAID);
|
||||||
|
}
|
||||||
|
// 如果是合并数据,从原始数据组中找订单行号最大的TaskAID
|
||||||
|
console.log(row)
|
||||||
|
if (row.originalGroup) {
|
||||||
|
const minOrderLineItem = row.originalGroup.reduce((min, item) => {
|
||||||
|
return item.订单行号 < min.订单行号 ? item : min;
|
||||||
|
}, row.originalGroup[0]);
|
||||||
|
|
||||||
|
return String(minOrderLineItem.TaskAID);
|
||||||
|
}
|
||||||
|
// 如果没有原始组数据,从TaskAID字符串中取最后一个
|
||||||
|
const taskAIDs = row.TaskAID.split(',');
|
||||||
|
return taskAIDs[taskAIDs.length - 1];
|
||||||
|
},
|
||||||
|
formatDate(date) {
|
||||||
|
if (!date) return ''
|
||||||
|
return date.split(' ').length > 1 ? date.split(' ')[0] : date
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style>
|
||||||
|
.field-container {
|
||||||
|
border: 1px solid #000;
|
||||||
|
border-bottom:0px
|
||||||
|
}
|
||||||
|
.field-row {
|
||||||
|
display: flex;
|
||||||
|
width: 100%;
|
||||||
|
border-bottom: 1px solid #000;
|
||||||
|
}
|
||||||
|
.field-group {
|
||||||
|
display: flex;
|
||||||
|
width: 25%;
|
||||||
|
align-items: stretch;
|
||||||
|
border-right: 1px solid #000;
|
||||||
|
}
|
||||||
|
.field-group:last-child {
|
||||||
|
border-right: none;
|
||||||
|
}
|
||||||
|
.field-label {
|
||||||
|
width: 40%;
|
||||||
|
color: #000;
|
||||||
|
text-align: right;
|
||||||
|
padding: 12px 5px;
|
||||||
|
border-right: 1px solid #000;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: flex-end;
|
||||||
|
}
|
||||||
|
.field-value {
|
||||||
|
width: 60%;
|
||||||
|
color: #303133;
|
||||||
|
word-break: break-word;
|
||||||
|
overflow-wrap: break-word;
|
||||||
|
padding: 12px 10px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -64,6 +64,14 @@
|
|||||||
<el-option label="已开工" value="2" />
|
<el-option label="已开工" value="2" />
|
||||||
<el-option label="已完成" value="4" />
|
<el-option label="已完成" value="4" />
|
||||||
</el-select>
|
</el-select>
|
||||||
|
<el-switch
|
||||||
|
v-model="stationFilterMode"
|
||||||
|
active-text="工位正选"
|
||||||
|
inactive-text="工位反选"
|
||||||
|
active-value="include"
|
||||||
|
inactive-value="exclude"
|
||||||
|
style="margin-left: 20px;"
|
||||||
|
/>
|
||||||
<el-button
|
<el-button
|
||||||
:disabled="loading"
|
:disabled="loading"
|
||||||
icon="el-icon-search"
|
icon="el-icon-search"
|
||||||
@@ -76,6 +84,7 @@
|
|||||||
<el-checkbox v-for="item in Doingoptions" :key="item.工位号" :label="item.指南工位号" :value="item.工位号"> </el-checkbox>
|
<el-checkbox v-for="item in Doingoptions" :key="item.工位号" :label="item.指南工位号" :value="item.工位号"> </el-checkbox>
|
||||||
</el-checkbox-group>
|
</el-checkbox-group>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<el-table
|
<el-table
|
||||||
v-loading="loading"
|
v-loading="loading"
|
||||||
@@ -320,6 +329,7 @@ export default {
|
|||||||
],
|
],
|
||||||
Doing: [],
|
Doing: [],
|
||||||
Doingoptions: [],
|
Doingoptions: [],
|
||||||
|
stationFilterMode: 'include',
|
||||||
// DoingData: {
|
// DoingData: {
|
||||||
// 订单编号: "",
|
// 订单编号: "",
|
||||||
// 合同号: "",
|
// 合同号: "",
|
||||||
@@ -549,6 +559,7 @@ export default {
|
|||||||
|
|
||||||
param.push(["生产状态", this.productionStatus2]||-1);
|
param.push(["生产状态", this.productionStatus2]||-1);
|
||||||
param.push(["工位名称", this.Doing]);
|
param.push(["工位名称", this.Doing]);
|
||||||
|
param.push(["工位筛选模式", this.stationFilterMode]);
|
||||||
param.push(["用户ID" , this.$store.state.user.id])
|
param.push(["用户ID" , this.$store.state.user.id])
|
||||||
param.push(["计划号" , this.plannum])
|
param.push(["计划号" , this.plannum])
|
||||||
param.push(["销售订单" , this.salenum])
|
param.push(["销售订单" , this.salenum])
|
||||||
|
|||||||
@@ -0,0 +1,966 @@
|
|||||||
|
、<template>
|
||||||
|
<div>
|
||||||
|
<el-card>
|
||||||
|
<div class="search-container" @keyup.enter="searchTable">
|
||||||
|
<span class="show-text">生产订单:</span>
|
||||||
|
<el-input v-model="orderNo" placeholder="请输入生产订单" clearable style="width: 150px;margin-right: 10px" />
|
||||||
|
<span class="show-text">销售订单:</span>
|
||||||
|
<el-input v-model="contractNo" placeholder="请输入销售订单" clearable style="width: 150px;margin-right: 10px" />
|
||||||
|
<span class="show-text">产品编码:</span>
|
||||||
|
<el-input v-model="productCode" placeholder="请输入产品编码" clearable style="width: 150px;margin-right: 10px" />
|
||||||
|
<span class="show-text">计划号:</span>
|
||||||
|
<el-input v-model="plannum" placeholder="请输入计划号" clearable style="width: 150px;margin-right: 10px" />
|
||||||
|
<span class="show-text">自制件属性:</span>
|
||||||
|
<el-select v-model="selfStatus" clearable placeholder="请选择自制件属性" style="width: 150px;margin-right: 10px">
|
||||||
|
<el-option label="全部" value="全部" />
|
||||||
|
<el-option label="机加" value="机加" />
|
||||||
|
<el-option label="装配" value="装配" />
|
||||||
|
</el-select>
|
||||||
|
|
||||||
|
<!-- 新增外协过滤 -->
|
||||||
|
<span class="show-text">外协状态:</span>
|
||||||
|
<el-select v-model="outsourceStatus" clearable placeholder="请选择外协状态" style="width: 150px;margin-right: 10px">
|
||||||
|
<el-option label="全部" value="全部" />
|
||||||
|
<el-option label="是" value="是" />
|
||||||
|
<el-option label="否" value="否" />
|
||||||
|
</el-select>
|
||||||
|
|
||||||
|
<!-- 新增加急过滤 -->
|
||||||
|
<span class="show-text">加急状态:</span>
|
||||||
|
<el-select v-model="urgentStatus" clearable placeholder="请选择加急状态" style="width: 150px;margin-right: 10px">
|
||||||
|
<el-option label="全部" value="全部" />
|
||||||
|
<el-option label="加急" value="加急" />
|
||||||
|
<el-option label="正常" value="正常" />
|
||||||
|
</el-select>
|
||||||
|
<span class="show-text">单据状态:</span>
|
||||||
|
<el-select v-model="orderStatus" clearable placeholder="请选择单据状态" style="width: 150px;margin-right: 10px">
|
||||||
|
<el-option label="全部" value="全部" />
|
||||||
|
<el-option label="关闭" value="关闭" />
|
||||||
|
<el-option label="正常" value="正常" />
|
||||||
|
</el-select>
|
||||||
|
|
||||||
|
<!-- 其他搜索条件保持不变 -->
|
||||||
|
<el-button :disabled="loading" icon="el-icon-search" plain type="primary" @click="searchTable()">查询</el-button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<el-table v-loading="loading" :data="tableData" :height="'80vh'" border
|
||||||
|
element-loading-background="rgba(0, 0, 0, 0.2)" element-loading-spinner="el-icon-loading" highlight-current-row
|
||||||
|
size="mini" style="width: 100%;margin-top: 20px;" tooltip-effect="dark" @row-click="handleRowClick">
|
||||||
|
|
||||||
|
<el-table-column type="expand">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-form label-position="left" class="demo-table-expand">
|
||||||
|
<el-table :data="scope.row.子数据" :row-class-name="getHeaderClass" border >
|
||||||
|
<el-table-column align="center" label="序号" type="index" width="50" />
|
||||||
|
<el-table-column align="center" label="工序名称" prop="工序名称" width="100" />
|
||||||
|
<el-table-column align="center" label="计划数量" prop="计划数量" width="100" />
|
||||||
|
<el-table-column align="center" label="指派对象" prop="指派对象" width="100" />
|
||||||
|
<!-- 在子数据中显示外协标识 -->
|
||||||
|
<!-- <el-table-column align="center" label="外协" width="80">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<div class="status-light" :class="scope.row.是否外协 ? 'status-light-green' : 'status-light-gray'" />
|
||||||
|
</template>
|
||||||
|
</el-table-column> -->
|
||||||
|
<el-table-column align="center" label="计划开始时间" prop="计划开始时间" width="100">
|
||||||
|
<template slot-scope="scope">{{ formatDate(scope.row.计划开始时间) }}</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" label="计划结束时间" prop="计划完成时间" width="100">
|
||||||
|
<template slot-scope="scope">{{ formatDate(scope.row.计划完成时间) }}</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" label="实际开始时间" prop="开始时间" width="100">
|
||||||
|
<template slot-scope="scope">{{ scope.row.开始时间 === '1900-01-01 00:00:00'? '':scope.row.开始时间}}</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" label="实际结束时间" width="100">
|
||||||
|
<template slot-scope="scope">{{ scope.row.指派对象 === '外协' ? scope.row.外协结束时间 === '1900-01-01 00:00:00'? '':scope.row.外协结束时间 : scope.row.结束时间 === '1900-01-01 00:00:00'? '':scope.row.结束时间}}</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" label="完成进度" prop="进度" width="100">
|
||||||
|
<template slot-scope="scope">{{ scope.row.进度}}%</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" label="完成数量" prop="完成数量" width="100" />
|
||||||
|
<el-table-column align="center" label="外协发料数量" prop="收料数量" width="100" >
|
||||||
|
<template slot-scope="scope">{{scope.row.指派对象 === '外协' ? scope.row.收料数量:''}}</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" label="合格数" prop="收检合格数" width="100" />
|
||||||
|
<el-table-column align="center" label="不良数" prop="收检不合格数" width="100" />
|
||||||
|
<el-table-column align="center" label="任务状态" prop="任务状态" width="100" />
|
||||||
|
<el-table-column align="center" label="加工状态" prop="加工状态" width="100" />
|
||||||
|
</el-table>
|
||||||
|
</el-form>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
|
||||||
|
<!-- 主表列定义 -->
|
||||||
|
<el-table-column align="center" label="序号" type="index" width="50" />
|
||||||
|
<el-table-column align="center" prop="合同号" label="销售订单" width="120" />
|
||||||
|
|
||||||
|
<el-table-column align="center" prop="订单号" label="生产订单" width="100" />
|
||||||
|
<el-table-column align="center" prop="产品编码" label="产品编码" width="220" />
|
||||||
|
<el-table-column align="center" prop="产品名称" label="产品名称" width="190" />
|
||||||
|
<el-table-column align="center" prop="计划数量订单" label="计划数量" width="80" />
|
||||||
|
<el-table-column align="center" label="加急数量" width="80">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<div @click="Urgent(scope.row)" style="color: aqua;">
|
||||||
|
{{ scope.row.加急总数 }}
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" label="工艺路线" width="550">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<div class="process-route" v-html="formatProcessRoute(scope.row)" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" prop="入库数量" label="入库数量" width="80" />
|
||||||
|
<el-table-column align="center" label="要求完工日" width="120">
|
||||||
|
<template slot-scope="scope">{{ formatDate(scope.row.要求完工日期) }}</template>
|
||||||
|
</el-table-column>
|
||||||
|
|
||||||
|
<!-- 主表显示外协状态 -->
|
||||||
|
<!-- <el-table-column align="center" label="外协" width="80">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<div class="status-light" :class="scope.row.是否外协 ? 'status-light-green' : 'status-light-gray'" />
|
||||||
|
</template>
|
||||||
|
</el-table-column> -->
|
||||||
|
|
||||||
|
<!-- 其他状态列保持不变 -->
|
||||||
|
<el-table-column align="center" label="排产" width="80">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<div class="status-light" :class="scope.row.排产状态 === 1 ? 'status-light-green' : 'status-light-gray'" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" label="拣配" width="80">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<div class="status-light" :class="Number(scope.row.拣配状态) === 1 ? 'status-light-green' : 'status-light-gray'" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" label="开工" width="80">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<div class="status-light" :class="scope.row.开工时间 === 1 ? 'status-light-green' : 'status-light-gray'" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" label="终检" width="80">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<div class="status-light" :class="scope.row.终检 === '是' ? 'status-light-green' : 'status-light-gray'" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" label="加急" width="80">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<div class="status-light" :class="scope.row.加急状态 === '加急' ? 'status-light-green' : 'status-light-gray'" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" label="优先级" width="80">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<div class="status-light" :class="scope.row.优先级 === '是' ? 'status-light-green' : 'status-light-gray'" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" prop="当前序" label="当前序" width="80" />
|
||||||
|
|
||||||
|
<el-table-column align="center" prop="计划号" label="计划号" width="120" />
|
||||||
|
</el-table>
|
||||||
|
</el-card>
|
||||||
|
<el-dialog
|
||||||
|
:visible.sync="UrgentVisible"
|
||||||
|
title="加急明细"
|
||||||
|
width="1200px"
|
||||||
|
center
|
||||||
|
:close-on-click-modal="false"
|
||||||
|
>
|
||||||
|
<el-form ref="Urgentarr" :model="Urgentarr" size="mini">
|
||||||
|
<el-form-item v-for="item in Urgentarr" :key="item.订单编号" >
|
||||||
|
<div class="info-container" >
|
||||||
|
<div class="info-item">
|
||||||
|
<span class="info-label" style="width: 80px">生产订单</span>
|
||||||
|
<span class="info-value">
|
||||||
|
<el-input
|
||||||
|
v-model="item.订单编号"
|
||||||
|
size="mini"
|
||||||
|
readonly
|
||||||
|
style="width: 300px"
|
||||||
|
/>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="info-item">
|
||||||
|
<span class="info-label" style="width: 80px">加急数量</span>
|
||||||
|
<span class="info-value">
|
||||||
|
<el-input
|
||||||
|
v-model="item.加急数量"
|
||||||
|
size="mini"
|
||||||
|
style="width: 150px"
|
||||||
|
readonly
|
||||||
|
/>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="info-item">
|
||||||
|
<span class="info-label" style="width: 80px">物料编号</span>
|
||||||
|
<span class="info-value">
|
||||||
|
<el-input
|
||||||
|
v-model="item.物料编号"
|
||||||
|
size="mini"
|
||||||
|
style="width: 150px"
|
||||||
|
readonly
|
||||||
|
/>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<div slot="footer" class="dialog-footer">
|
||||||
|
<el-button @click="UrgentVisible = false">关闭</el-button>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
orderNo: '',
|
||||||
|
contractNo: '',
|
||||||
|
productCode: '',
|
||||||
|
plannum: '',
|
||||||
|
productName: '',
|
||||||
|
processName: '',
|
||||||
|
nature: '',
|
||||||
|
productionStatus: '全部',
|
||||||
|
selfStatus: '全部',
|
||||||
|
// 新增过滤字段
|
||||||
|
outsourceStatus: '全部', // 外协状态
|
||||||
|
urgentStatus: '全部', // 加急状态
|
||||||
|
orderStatus:'正常',
|
||||||
|
completionTime: [],
|
||||||
|
loading: false,
|
||||||
|
tableData: [],
|
||||||
|
selectedRow: null,
|
||||||
|
editDialogVisible: false,
|
||||||
|
editSubmitLoading: false,
|
||||||
|
currentRow: {},
|
||||||
|
editForm: {
|
||||||
|
优先级: '',
|
||||||
|
未完成说明: '',
|
||||||
|
派工特殊说明: ''
|
||||||
|
},
|
||||||
|
splitTaskDialogVisible: false,
|
||||||
|
splitTaskSubmitLoading: false,
|
||||||
|
stationOptions: [],
|
||||||
|
splitTaskForm: {
|
||||||
|
分配数量: 0,
|
||||||
|
指派对象: '',
|
||||||
|
指派对象编号: '',
|
||||||
|
派工特殊备注: '',
|
||||||
|
计划开始时间: '',
|
||||||
|
计划结束时间: '',
|
||||||
|
最晚开始时间: '',
|
||||||
|
任务概述: ''
|
||||||
|
},
|
||||||
|
planStartTime: [],
|
||||||
|
planendTime: [],
|
||||||
|
UrgentVisible: false,
|
||||||
|
Urgentarr: {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
var now = new Date()
|
||||||
|
var start = new Date(Date.UTC(now.getFullYear() - 2, now.getMonth(), now.getDate(), 0, 0, 0)).toISOString().replace('T', ' ').replace('.000Z', '')
|
||||||
|
var end = new Date(Date.UTC(now.getFullYear(), now.getMonth(), now.getDate(), 23, 59, 59)).toISOString().replace('T', ' ').replace('.000Z', '')
|
||||||
|
this.searchTable()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
Urgent(row){
|
||||||
|
var param = []
|
||||||
|
param.push(["物料编号",row.产品编码])
|
||||||
|
this.UrgentVisible = true
|
||||||
|
var Data = this.CreateData("11", "加急订单_加急明细查询",param);
|
||||||
|
this.ExecDatabase(Data).then((response) => {
|
||||||
|
this.Urgentarr = response.data
|
||||||
|
});
|
||||||
|
},
|
||||||
|
getHeaderClass({ row, rowIndex }) {
|
||||||
|
if (row.绿 == 1) {
|
||||||
|
return 'warning-row'
|
||||||
|
} else if (row.蓝 === 1) {
|
||||||
|
return 'error-row'
|
||||||
|
} else if (row.橙 === 1) {
|
||||||
|
return 'success-row'
|
||||||
|
} else {
|
||||||
|
return ''
|
||||||
|
}
|
||||||
|
},
|
||||||
|
formatDate(date) {
|
||||||
|
if (!date) return ''
|
||||||
|
return date.split(' ').length > 1 ? date.split(' ')[0] : date
|
||||||
|
},
|
||||||
|
formatProcessRouteDate(date) {
|
||||||
|
const formattedDate = this.formatDate(date)
|
||||||
|
const match = formattedDate.match(/^(\d{4})-(\d{2})-(\d{2})$/)
|
||||||
|
return match ? `${match[2]}-${match[3]}` : formattedDate
|
||||||
|
},
|
||||||
|
toProcessNumber(value) {
|
||||||
|
const num = Number(value)
|
||||||
|
return Number.isFinite(num) ? num : 0
|
||||||
|
},
|
||||||
|
escapeProcessHtml(value) {
|
||||||
|
return String(value == null ? '' : value)
|
||||||
|
.replace(/&/g, '&')
|
||||||
|
.replace(/</g, '<')
|
||||||
|
.replace(/>/g, '>')
|
||||||
|
.replace(/"/g, '"')
|
||||||
|
.replace(/'/g, ''')
|
||||||
|
},
|
||||||
|
isOutsourceProcess(process) {
|
||||||
|
return process.指派对象 === '外协'
|
||||||
|
},
|
||||||
|
getProcessStatusNum(status) {
|
||||||
|
const statusNum = parseInt(status)
|
||||||
|
if (Number.isFinite(statusNum)) {
|
||||||
|
return statusNum
|
||||||
|
}
|
||||||
|
|
||||||
|
const statusMap = {
|
||||||
|
辅助开始: 2,
|
||||||
|
辅助结束: 3,
|
||||||
|
开始加工: 4,
|
||||||
|
暂停: 5,
|
||||||
|
报工: 6,
|
||||||
|
装配加工: 4
|
||||||
|
}
|
||||||
|
return statusMap[status] || 0
|
||||||
|
},
|
||||||
|
isBlueProcess(process) {
|
||||||
|
const statusNum = this.getProcessStatusNum(process.加工状态)
|
||||||
|
const countNum = parseInt(process.收检合格数)
|
||||||
|
return statusNum === 6 || statusNum === 3 || countNum > 0
|
||||||
|
},
|
||||||
|
isGreenProcess(process) {
|
||||||
|
console.log(process)
|
||||||
|
console.log( this.toProcessNumber(process.收料数量), this.toProcessNumber(process.完成数量),this.isOutsourceProcess(process))
|
||||||
|
return this.isOutsourceProcess(process) &&
|
||||||
|
this.toProcessNumber(process.收料数量) > this.toProcessNumber(process.完成数量) + this.toProcessNumber(process.收检不合格数)
|
||||||
|
},
|
||||||
|
getProcessBaseClass(process) {
|
||||||
|
if (this.isGreenProcess(process)) {
|
||||||
|
return 'process-route-green'
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.isBlueProcess(process)) {
|
||||||
|
return 'process-route-blue'
|
||||||
|
}
|
||||||
|
|
||||||
|
const statusNum = this.getProcessStatusNum(process.加工状态)
|
||||||
|
if (statusNum === 2 || statusNum === 4) {
|
||||||
|
return 'process-route-green'
|
||||||
|
}
|
||||||
|
|
||||||
|
return 'process-route-red'
|
||||||
|
},
|
||||||
|
getOutsourceGroupClassState(processes) {
|
||||||
|
const classes = new Map()
|
||||||
|
let currentIndexes = []
|
||||||
|
let lastProcess = null
|
||||||
|
|
||||||
|
const flushOutsourceRun = () => {
|
||||||
|
if (currentIndexes.length > 0 && lastProcess) {
|
||||||
|
const className = this.getProcessBaseClass(lastProcess)
|
||||||
|
currentIndexes.forEach(index => classes.set(index, className))
|
||||||
|
}
|
||||||
|
currentIndexes = []
|
||||||
|
lastProcess = null
|
||||||
|
}
|
||||||
|
|
||||||
|
const isSameContinuousGroup = process => {
|
||||||
|
if (!lastProcess) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
const lineNo = this.toProcessNumber(process.订单行号)
|
||||||
|
const lastLineNo = this.toProcessNumber(lastProcess.订单行号)
|
||||||
|
return lineNo === lastLineNo + 1 &&
|
||||||
|
String(process.外协分组 || '') === String(lastProcess.外协分组 || '')
|
||||||
|
}
|
||||||
|
processes.forEach((process, index) => {
|
||||||
|
if (!this.isOutsourceProcess(process)) {
|
||||||
|
flushOutsourceRun()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (!isSameContinuousGroup(process)) {
|
||||||
|
flushOutsourceRun()
|
||||||
|
}
|
||||||
|
currentIndexes.push(index)
|
||||||
|
lastProcess = process
|
||||||
|
})
|
||||||
|
flushOutsourceRun()
|
||||||
|
console.log(classes)
|
||||||
|
return classes
|
||||||
|
|
||||||
|
},
|
||||||
|
getProcessClass(process, index, outsourceGroupClasses) {
|
||||||
|
if (this.isOutsourceProcess(process)) {
|
||||||
|
return outsourceGroupClasses.get(index) || this.getProcessBaseClass(process)
|
||||||
|
}
|
||||||
|
return this.getProcessBaseClass(process)
|
||||||
|
},
|
||||||
|
getProcessRouteName(process) {
|
||||||
|
const name = String(process.工序名称 || '')
|
||||||
|
const assignee = String(process.指派对象 || '')
|
||||||
|
if (!assignee || name.includes(`(${assignee})`) || name.includes(`(${assignee})`)) {
|
||||||
|
return name
|
||||||
|
}
|
||||||
|
return `${name}(${assignee})`
|
||||||
|
},
|
||||||
|
getRouteProcesses(row) {
|
||||||
|
if (Array.isArray(row.子数据) && row.子数据.length > 0) {
|
||||||
|
return row.子数据
|
||||||
|
}
|
||||||
|
|
||||||
|
return String(row.工艺路线 || '')
|
||||||
|
.split(',')
|
||||||
|
.map(name => name.trim())
|
||||||
|
.filter(Boolean)
|
||||||
|
.map(name => ({
|
||||||
|
工序名称: name,
|
||||||
|
加工状态: 0,
|
||||||
|
收检合格数: 0,
|
||||||
|
计划开始时间: '',
|
||||||
|
指派对象: '',
|
||||||
|
订单行号: 0,
|
||||||
|
收料数量: 0,
|
||||||
|
收检不合格数: 0
|
||||||
|
}))
|
||||||
|
},
|
||||||
|
formatProcessRoute(row) {
|
||||||
|
const processes = this.getRouteProcesses(row)
|
||||||
|
if (processes.length === 0) {
|
||||||
|
return ''
|
||||||
|
}
|
||||||
|
|
||||||
|
const outsourceGroupClasses = this.getOutsourceGroupClassState(processes)
|
||||||
|
const maxPerRow = 8
|
||||||
|
const rows = Math.ceil(processes.length / maxPerRow)
|
||||||
|
let tableHtml = '<div class="process-route-wrap"><table class="process-route-table"><tbody>'
|
||||||
|
|
||||||
|
for (let rowIndex = 0; rowIndex < rows; rowIndex++) {
|
||||||
|
const startIndex = rowIndex * maxPerRow
|
||||||
|
const endIndex = Math.min(startIndex + maxPerRow, processes.length)
|
||||||
|
const rowProcesses = processes.slice(startIndex, endIndex)
|
||||||
|
|
||||||
|
if (rowIndex > 0) {
|
||||||
|
tableHtml += '<tr class="process-route-spacer"><td colspan="' + (maxPerRow * 2 - 1) + '"></td></tr>'
|
||||||
|
}
|
||||||
|
|
||||||
|
tableHtml += '<tr>'
|
||||||
|
rowProcesses.forEach((process, index) => {
|
||||||
|
const className = this.getProcessClass(process, startIndex + index, outsourceGroupClasses)
|
||||||
|
const planDate = this.formatProcessRouteDate(process.计划开始时间 || process.计划完成时间 || '')
|
||||||
|
tableHtml += `<td class="process-route-date ${className}">${this.escapeProcessHtml(planDate)}</td>`
|
||||||
|
if (index < rowProcesses.length - 1) {
|
||||||
|
tableHtml += '<td class="process-route-arrow-hidden"></td>'
|
||||||
|
}
|
||||||
|
})
|
||||||
|
tableHtml += '</tr>'
|
||||||
|
|
||||||
|
tableHtml += '<tr>'
|
||||||
|
rowProcesses.forEach((process, index) => {
|
||||||
|
const className = this.getProcessClass(process, startIndex + index, outsourceGroupClasses)
|
||||||
|
const name = this.getProcessRouteName(process)
|
||||||
|
tableHtml += `<td class="${className}">${this.escapeProcessHtml(name)}</td>`
|
||||||
|
if (index < rowProcesses.length - 1) {
|
||||||
|
tableHtml += '<td class="process-route-arrow">→</td>'
|
||||||
|
}
|
||||||
|
})
|
||||||
|
tableHtml += '</tr>'
|
||||||
|
|
||||||
|
tableHtml += '<tr>'
|
||||||
|
rowProcesses.forEach((process, index) => {
|
||||||
|
const className = this.getProcessClass(process, startIndex + index, outsourceGroupClasses)
|
||||||
|
const count = this.toProcessNumber(process.收检合格数)
|
||||||
|
tableHtml += `<td class="process-route-count ${className}">合格${this.escapeProcessHtml(count)}</td>`
|
||||||
|
if (index < rowProcesses.length - 1) {
|
||||||
|
tableHtml += '<td class="process-route-arrow-hidden"></td>'
|
||||||
|
}
|
||||||
|
})
|
||||||
|
tableHtml += '</tr>'
|
||||||
|
}
|
||||||
|
|
||||||
|
tableHtml += '</tbody></table></div>'
|
||||||
|
return tableHtml
|
||||||
|
},
|
||||||
|
mergeOrderData(dataList) {
|
||||||
|
// 第一步:先按照订单行号对原始数据进行排序
|
||||||
|
const sortedDataList = [...dataList].sort((a, b) => {
|
||||||
|
const rowA = parseInt(a.订单行号 || 0)
|
||||||
|
const rowB = parseInt(b.订单行号 || 0)
|
||||||
|
return rowA - rowB
|
||||||
|
})
|
||||||
|
|
||||||
|
const orderMap = new Map()
|
||||||
|
|
||||||
|
sortedDataList.forEach((item, index) => {
|
||||||
|
const orderNumber = item.订单号
|
||||||
|
if (!orderMap.has(orderNumber)) {
|
||||||
|
// 判断该工序是否外协
|
||||||
|
const isOutsource = item.指派对象 && item.指派对象.includes('外协')
|
||||||
|
|
||||||
|
orderMap.set(orderNumber, {
|
||||||
|
...item,
|
||||||
|
当前序: '',
|
||||||
|
|
||||||
|
开工时间: 0,
|
||||||
|
序检: item.序检,
|
||||||
|
是否外协: isOutsource, // 新增:记录订单是否包含外协
|
||||||
|
子数据: [{
|
||||||
|
工序名称: item.工序名称,
|
||||||
|
指派对象: item.指派对象,
|
||||||
|
计划完成时间: item.计划完成时间,
|
||||||
|
计划开始时间: item.计划开始时间,
|
||||||
|
进度: item.进度,
|
||||||
|
拆分内码: item.拆分内码,
|
||||||
|
计划数量: item.计划数量,
|
||||||
|
开工时间: item.开工时间,
|
||||||
|
完成数量: item.完成数量,
|
||||||
|
收料数量: item.收料数量,
|
||||||
|
收检合格数: item.收检合格数,
|
||||||
|
收检不合格数: item.收检不合格数,
|
||||||
|
任务状态: item.任务状态,
|
||||||
|
加工状态: item.加工状态,
|
||||||
|
终检: item.终检,
|
||||||
|
是否外协: isOutsource, // 新增:记录该工序是否外协
|
||||||
|
绿: 0,
|
||||||
|
橙: 0,
|
||||||
|
蓝: 0,
|
||||||
|
订单行号: item.订单行号,
|
||||||
|
加急总数:item.加急总数,
|
||||||
|
外协结束时间:item.外协结束时间,
|
||||||
|
开始时间:item.开始时间,
|
||||||
|
外协分组: item.外协分组
|
||||||
|
}]
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
const existingItem = orderMap.get(orderNumber)
|
||||||
|
|
||||||
|
// 判断该工序是否外协
|
||||||
|
const isOutsource = item.指派对象 && item.指派对象.includes('外协')
|
||||||
|
|
||||||
|
// 如果发现外协工序,更新订单的外协状态
|
||||||
|
if (isOutsource) {
|
||||||
|
existingItem.是否外协 = true
|
||||||
|
}
|
||||||
|
|
||||||
|
// 插入子数据时保持排序
|
||||||
|
existingItem.子数据.push({
|
||||||
|
工序名称: item.工序名称,
|
||||||
|
指派对象: item.指派对象,
|
||||||
|
计划完成时间: item.计划完成时间,
|
||||||
|
计划开始时间: item.计划开始时间,
|
||||||
|
进度: item.进度,
|
||||||
|
拆分内码: item.拆分内码,
|
||||||
|
计划数量: item.计划数量,
|
||||||
|
开工时间: item.开工时间,
|
||||||
|
完成数量: item.完成数量,
|
||||||
|
收料数量: item.收料数量,
|
||||||
|
收检合格数: item.收检合格数,
|
||||||
|
收检不合格数: item.收检不合格数,
|
||||||
|
任务状态: item.任务状态,
|
||||||
|
加工状态: item.加工状态,
|
||||||
|
终检: item.终检,
|
||||||
|
是否外协: isOutsource, // 新增:记录该工序是否外协
|
||||||
|
绿: 0,
|
||||||
|
橙: 0,
|
||||||
|
蓝: 0,
|
||||||
|
订单行号: item.订单行号,
|
||||||
|
加急总数:item.加急总数,
|
||||||
|
开始时间:item.开始时间,
|
||||||
|
结束时间:item.结束时间,
|
||||||
|
外协结束时间:item.外协结束时间,
|
||||||
|
外协分组: item.外协分组
|
||||||
|
})
|
||||||
|
|
||||||
|
// 对子数据按照订单行号排序
|
||||||
|
existingItem.子数据.sort((a, b) => {
|
||||||
|
const rowA = parseInt(a.订单行号 || 0)
|
||||||
|
const rowB = parseInt(b.订单行号 || 0)
|
||||||
|
return rowA - rowB
|
||||||
|
})
|
||||||
|
|
||||||
|
existingItem.子数据.forEach((element, index) => {
|
||||||
|
if (new Date(element.开工时间) > new Date('1900-01-01 00:00:00')) {
|
||||||
|
element.绿 = 1
|
||||||
|
} else {
|
||||||
|
element.绿 = 0
|
||||||
|
}
|
||||||
|
if (element.进度 == 100) {
|
||||||
|
element.蓝 = 1
|
||||||
|
element.绿 = 0
|
||||||
|
} else {
|
||||||
|
element.蓝 = 0
|
||||||
|
}
|
||||||
|
if (index > 0) {
|
||||||
|
if (new Date(element.开工时间) == new Date('1900-01-01 00:00:00') && existingItem.子数据[index - 1].进度 == 100) {
|
||||||
|
element.橙 = 1
|
||||||
|
element.绿 = 0
|
||||||
|
} else {
|
||||||
|
element.橙 = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
if (item.收检合格数 > 0) {
|
||||||
|
|
||||||
|
existingItem.当前序 = item.工序名称
|
||||||
|
}
|
||||||
|
|
||||||
|
if (item.优先级 == '是') {
|
||||||
|
existingItem.优先级 = item.优先级
|
||||||
|
}
|
||||||
|
if (item.终检 == '是') {
|
||||||
|
existingItem.终检 = item.终检
|
||||||
|
}
|
||||||
|
if (new Date(item.开工时间) > new Date('1900-01-01 00:00:00')) {
|
||||||
|
existingItem.开工时间 = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
// 确保加急状态正确传递
|
||||||
|
if (item.加急状态 === '加急') {
|
||||||
|
existingItem.加急状态 = '加急'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
// 应用过滤条件
|
||||||
|
let filteredData = Array.from(orderMap.values()).map(item => ({
|
||||||
|
订单号: item.订单号,
|
||||||
|
合同号: item.合同号,
|
||||||
|
产品编码: item.产品编码,
|
||||||
|
产品名称: item.产品名称,
|
||||||
|
计划数量订单: item.计划数量订单,
|
||||||
|
要求完工日期: item.要求完工日期,
|
||||||
|
排产状态: item.排产状态,
|
||||||
|
优先级: item.优先级,
|
||||||
|
当前序: item.当前序,
|
||||||
|
工艺路线: item.工艺路线,
|
||||||
|
计划数量: item.计划数量,
|
||||||
|
开工时间: item.开工时间,
|
||||||
|
序检: item.序检,
|
||||||
|
子数据: item.子数据,
|
||||||
|
加急状态: item.加急状态,
|
||||||
|
终检: item.终检,
|
||||||
|
计划号: item.计划号,
|
||||||
|
拣配状态: item.拣配状态,
|
||||||
|
是否外协: item.是否外协, // 新增:是否外协订单
|
||||||
|
加急数量: item.加急数量,
|
||||||
|
加急总数: item.加急总数,
|
||||||
|
入库数量: item.入库数量,
|
||||||
|
}))
|
||||||
|
|
||||||
|
// 应用外协过滤
|
||||||
|
if (this.outsourceStatus !== '全部') {
|
||||||
|
const isOutsource = this.outsourceStatus === '是'
|
||||||
|
filteredData = filteredData.filter(item => item.是否外协 === isOutsource)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 应用加急过滤
|
||||||
|
if (this.urgentStatus !== '全部') {
|
||||||
|
const isUrgent = this.urgentStatus === '加急'
|
||||||
|
filteredData = filteredData.filter(item =>
|
||||||
|
isUrgent ? item.加急状态 === '加急' : (!item.加急状态 || item.加急状态 !== '加急')
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
this.tableData = filteredData
|
||||||
|
},
|
||||||
|
searchTable() {
|
||||||
|
this.loading = true
|
||||||
|
this.tableData = []
|
||||||
|
var param = []
|
||||||
|
param.push(['订单号', this.orderNo || 0])
|
||||||
|
param.push(['物料类型', '自制件'])
|
||||||
|
param.push(['合同号', this.contractNo])
|
||||||
|
param.push(['产品编码', this.productCode])
|
||||||
|
param.push(['产品名称', this.productName])
|
||||||
|
param.push(['工序名称', this.processName])
|
||||||
|
param.push(['计划开始1', this.planStartTime[0]])
|
||||||
|
param.push(['计划开始2', this.planStartTime[1]])
|
||||||
|
param.push(['计划完成1', this.planendTime[0]])
|
||||||
|
param.push(['计划完成2', this.planendTime[1]])
|
||||||
|
param.push(['要求完工日期1', this.completionTime ? this.completionTime[0] : ''])
|
||||||
|
param.push(['要求完工日期2', this.completionTime ? this.completionTime[1] : ''])
|
||||||
|
param.push(['排产状态', this.productionStatus])
|
||||||
|
param.push(['自制件属性', this.selfStatus])
|
||||||
|
param.push(['指派对象', '全部'])
|
||||||
|
param.push(['计划号', this.plannum])
|
||||||
|
param.push(['加急状态', this.urgentStatus])
|
||||||
|
param.push(['单据状态', this.orderStatus])
|
||||||
|
// // 添加外协状态过滤条件
|
||||||
|
// if (this.outsourceStatus !== '全部') {
|
||||||
|
// param.push(['是否外协', this.outsourceStatus === '是' ? 1 : 0])
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
var Data = this.CreateData('11', '生产管理_生产计划跟踪', param)
|
||||||
|
this.ExecDatabase(Data).then(response => {
|
||||||
|
this.loading = false
|
||||||
|
if (response.data.length !== 0) {
|
||||||
|
this.mergeOrderData(response.data)
|
||||||
|
}
|
||||||
|
}).catch(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 其他方法保持不变...
|
||||||
|
handleRowClick(row) {
|
||||||
|
this.selectedRow = row
|
||||||
|
},
|
||||||
|
editTask(row) {
|
||||||
|
this.currentRow = row
|
||||||
|
this.editForm = {
|
||||||
|
优先级: row.优先级 || '',
|
||||||
|
未完成说明: row.未完成说明 || '',
|
||||||
|
派工特殊说明: row.派工特殊说明 || ''
|
||||||
|
}
|
||||||
|
this.editDialogVisible = true
|
||||||
|
},
|
||||||
|
submitEditForm() {
|
||||||
|
this.editSubmitLoading = true
|
||||||
|
const params = []
|
||||||
|
params.push(['订单号', this.currentRow.订单号])
|
||||||
|
params.push(['订单行号', this.currentRow.订单行号])
|
||||||
|
params.push(['订单拆分内码', this.currentRow.拆分内码])
|
||||||
|
params.push(['优先级', this.editForm.优先级])
|
||||||
|
params.push(['未完成说明', this.editForm.未完成说明])
|
||||||
|
params.push(['派工特殊说明', this.editForm.派工特殊说明])
|
||||||
|
params.push(['最后编辑人', this.$store.state.user.name])
|
||||||
|
|
||||||
|
const Data = this.CreateData('12', 'MES_OrderPlanned_DescriptionEdit', params)
|
||||||
|
this.ExecDatabase(Data).then(() => {
|
||||||
|
this.$message.success('保存成功')
|
||||||
|
this.editDialogVisible = false
|
||||||
|
this.searchTable()
|
||||||
|
}).catch(() => {
|
||||||
|
this.$message.error('保存失败')
|
||||||
|
}).finally(() => {
|
||||||
|
this.editSubmitLoading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleOutsourceNotify(row) {
|
||||||
|
this.$confirm('确认同计划发起外协通知吗?', '确认', {
|
||||||
|
confirmButtonText: '是',
|
||||||
|
cancelButtonText: '否',
|
||||||
|
type: 'warning',
|
||||||
|
center: true
|
||||||
|
}).then(() => {
|
||||||
|
this.$message.success('外协通知已发送')
|
||||||
|
}).catch(() => {
|
||||||
|
})
|
||||||
|
},
|
||||||
|
openSplitTask() {
|
||||||
|
if (!this.selectedRow) {
|
||||||
|
this.$message.warning('请先选择需要操作的行')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.getStationList()
|
||||||
|
this.splitTaskForm = {
|
||||||
|
分配数量: this.selectedRow.计划数量 || 0,
|
||||||
|
指派对象: this.selectedRow.指派对象 || '',
|
||||||
|
指派对象编号: this.selectedRow.指派对象编号 || '',
|
||||||
|
派工特殊备注: this.selectedRow.派工特殊说明 || '',
|
||||||
|
计划开始时间: this.selectedRow.计划开始时间 || '',
|
||||||
|
计划结束时间: this.selectedRow.计划完成时间 || '',
|
||||||
|
最晚开始时间: this.selectedRow.最晚开始时间 || '',
|
||||||
|
任务概述: this.selectedRow.计划数量 || ''
|
||||||
|
}
|
||||||
|
this.splitTaskDialogVisible = true
|
||||||
|
},
|
||||||
|
submitSplitTaskForm() {
|
||||||
|
this.splitTaskSubmitLoading = true
|
||||||
|
this.$confirm('确认要拆分子任务吗?', '提示', {
|
||||||
|
confirmButtonText: '确定',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
type: 'warning'
|
||||||
|
}).then(() => {
|
||||||
|
// 空逻辑
|
||||||
|
this.splitTaskSubmitLoading = false
|
||||||
|
this.splitTaskDialogVisible = false
|
||||||
|
this.$message.success('操作成功')
|
||||||
|
this.searchTable()
|
||||||
|
}).catch(() => {
|
||||||
|
this.splitTaskSubmitLoading = false
|
||||||
|
this.$message.info('已取消操作')
|
||||||
|
})
|
||||||
|
},
|
||||||
|
getStationList() {
|
||||||
|
const params = []
|
||||||
|
const Data = this.CreateData('11', 'Prog_MES_LoadStations', params)
|
||||||
|
this.ExecDatabase(Data).then(response => {
|
||||||
|
if (response.data && response.data.length > 0) {
|
||||||
|
this.stationOptions = response.data.map(item => ({
|
||||||
|
label: item.OPName,
|
||||||
|
value: item.OPName,
|
||||||
|
code: item.VisCode
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleStationChange(value) {
|
||||||
|
const selected = this.stationOptions.find(item => item.value === value)
|
||||||
|
if (selected) {
|
||||||
|
this.splitTaskForm.指派对象编号 = selected.code
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
::v-deep .el-table th.el-table__cell>.cell{
|
||||||
|
white-space: pre-wrap;
|
||||||
|
}
|
||||||
|
.process{
|
||||||
|
width: 120px;
|
||||||
|
display: inline-flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.process-route {
|
||||||
|
line-height: 1.4;
|
||||||
|
white-space: normal;
|
||||||
|
word-break: break-all;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .process-route-wrap {
|
||||||
|
width: 100%;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .process-route-table {
|
||||||
|
width: auto;
|
||||||
|
border-collapse: collapse;
|
||||||
|
text-align: left;
|
||||||
|
table-layout: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .process-route-table td {
|
||||||
|
text-align: left;
|
||||||
|
padding: 2px 2px;
|
||||||
|
font-size: 11px;
|
||||||
|
white-space: nowrap;
|
||||||
|
line-height: 1.4;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .process-route-date {
|
||||||
|
font-size: 10px !important;
|
||||||
|
color: #8899aa !important;
|
||||||
|
padding: 2px 2px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .process-route-count {
|
||||||
|
font-weight: 700;
|
||||||
|
font-size: 12px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .process-route-spacer td {
|
||||||
|
height: 4px;
|
||||||
|
padding: 0 !important;
|
||||||
|
line-height: 1 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .process-route-green {
|
||||||
|
color: #28d961;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .process-route-blue {
|
||||||
|
color: #09a8ff;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .process-route-red {
|
||||||
|
color: #ff3f37;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .process-route-arrow {
|
||||||
|
color: rgba(0, 164, 255, 0.6) !important;
|
||||||
|
font-size: 10px !important;
|
||||||
|
padding: 2px 0 !important;
|
||||||
|
width: 8px;
|
||||||
|
text-align: center !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .process-route-arrow-hidden {
|
||||||
|
padding: 2px 0 !important;
|
||||||
|
width: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-container {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.show-text {
|
||||||
|
margin-right: 5px;
|
||||||
|
line-height: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.status-light {
|
||||||
|
display: inline-block;
|
||||||
|
width: 12px;
|
||||||
|
height: 12px;
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.status-light-green {
|
||||||
|
background-color: #67C23A;
|
||||||
|
}
|
||||||
|
|
||||||
|
.status-light-gray {
|
||||||
|
background-color: #909399;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dialog-footer {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
::v-deep .warning-row {
|
||||||
|
background-color: #67c23a !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .error-row {
|
||||||
|
background-color: #409eff !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .success-row {
|
||||||
|
background-color: #f2a201 !important;
|
||||||
|
}
|
||||||
|
::v-deep .el-table td.el-table__cell{
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
.info-container {
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-item {
|
||||||
|
display: flex;
|
||||||
|
flex: 1;
|
||||||
|
border-right: 1px solid #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-item:last-child {
|
||||||
|
border-right: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-label {
|
||||||
|
width: 30%;
|
||||||
|
padding: 8px;
|
||||||
|
background-color: #f5f7fa;
|
||||||
|
border-right: 1px solid #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-value {
|
||||||
|
flex: 1;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info-label,
|
||||||
|
.info-value {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.el-table tr{
|
||||||
|
background-color: initial;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
<span class="show-text">设备:</span>
|
<span class="show-text">设备:</span>
|
||||||
<el-select v-model="equipmentType" placeholder="请选择设备" filterable size="small" style="width:200px" @change="searchTable" >
|
<el-select v-model="equipmentType" placeholder="请选择设备" filterable size="small" style="width:100px" @change="searchTable" >
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in basedatalx"
|
v-for="item in basedatalx"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="参数值" align="center">
|
<el-table-column label="参数值" align="center">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ scope.row.参数值 }}
|
{{ scope.row.参数值 }}{{ scope.row.参数单位 }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作" align="center" width="100px">
|
<el-table-column label="操作" align="center" width="100px">
|
||||||
@@ -53,7 +53,7 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
</div>
|
</div>
|
||||||
<div style="width: 600px;margin-left: 5px">
|
<div style="width: 800px;margin-left: 5px">
|
||||||
<el-table v-if="dataType === 1" :data="tableData1" v-loading="loading" border size="small" stripe highlight-current-row height="740px" >
|
<el-table v-if="dataType === 1" :data="tableData1" v-loading="loading" border size="small" stripe highlight-current-row height="740px" >
|
||||||
<el-table-column label="开始时间" prop="Zone" align="center" width="150px" >
|
<el-table-column label="开始时间" prop="Zone" align="center" width="150px" >
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
@@ -70,29 +70,130 @@
|
|||||||
{{ scope.row.状态名称 }}
|
{{ scope.row.状态名称 }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="时长(m)" align="center">
|
<el-table-column label="时长(min)" align="center">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ scope.row.累计分钟数 }}
|
{{ scope.row.累计分钟数 }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
<el-table v-if="dataType === 2" :data="tableData1" border size="small" stripe highlight-current-row height="740px" >
|
<div v-if="dataType === 2">
|
||||||
<el-table-column label="订单编号" prop="Zone" align="center" width="150px" >
|
<span class="show-text">订单编号:</span>
|
||||||
|
<el-input
|
||||||
|
v-model="orderNo"
|
||||||
|
placeholder="请输入订单编号"
|
||||||
|
clearable
|
||||||
|
style="width: 150px; margin-right: 10px"
|
||||||
|
/>
|
||||||
|
<el-button type="primary" icon="el-icon-search" size="small" style="margin-left: 20px" plain @click="handleSearch(currentRow)">查询</el-button>
|
||||||
|
<el-table :data="tableData1" border size="small" stripe highlight-current-row height="700px" style="margin-top: 5px" >
|
||||||
|
<el-table-column label="订单编号" prop="Zone" align="center" width="100px" >
|
||||||
|
<template slot-scope="scope">
|
||||||
|
{{ scope.row.订单编号 }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="加工时长(min)" prop="TagName" align="center">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
{{ scope.row.循环时间 }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="换件时长(min)" prop="TagName" align="center">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
{{ scope.row.换件时间 }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="采集时间" align="center" width="150px" >
|
||||||
|
<template slot-scope="scope">
|
||||||
|
{{ scope.row.采集时间 }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<div class="block" style="margin-top: 10px;">
|
||||||
|
<el-pagination
|
||||||
|
:current-page="pageCurrent"
|
||||||
|
:page-sizes="[20, 40, 50, 100]"
|
||||||
|
:page-size="pageSize"
|
||||||
|
:total="total"
|
||||||
|
:small="true"
|
||||||
|
layout="total, sizes, prev, pager, next"
|
||||||
|
@size-change="handleSizeChanges"
|
||||||
|
@current-change="handleCurrentChanges"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<el-table v-if="dataType === 3" :data="tableData1" border size="small" stripe highlight-current-row height="740px" >
|
||||||
|
<el-table-column label="订单编号" prop="Zone" align="center" width="100px" >
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ scope.row.订单编号 }}
|
{{ scope.row.订单编号 }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="加工时长" prop="TagName" align="center">
|
<el-table-column label="程序时长(min)" prop="Zone" align="center" width="120px" >
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ scope.row.循环时间 }}
|
<span style="color: #0ba9e3">{{ scope.row.程序时长 }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="采集时间" align="center" width="150px" >
|
<el-table-column label="最小时长(min)" prop="Zone" align="center" width="120px" >
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ scope.row.采集时间 }}
|
{{ scope.row.最小时长 }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="最大时长(min)" prop="Zone" align="center" width="120px" >
|
||||||
|
<template slot-scope="scope">
|
||||||
|
{{ scope.row.最大时长 }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<!-- <el-table-column label="频次/总数" prop="Zone" align="center" >-->
|
||||||
|
<!-- <template slot-scope="scope">-->
|
||||||
|
<!-- {{ scope.row.频次 }} / {{ scope.row.总记录数 }}-->
|
||||||
|
<!-- </template>-->
|
||||||
|
<!-- </el-table-column>-->
|
||||||
|
<el-table-column label="产品编码" prop="Zone" align="center">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
{{ scope.row.产品编码 }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="产品名称" prop="Zone" align="center" >
|
||||||
|
<template slot-scope="scope">
|
||||||
|
{{ scope.row.产品名称 }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
|
<el-table v-if="dataType === 4" :data="tableData1" border size="small" stripe highlight-current-row height="740px" >
|
||||||
|
<el-table-column label="订单编号" prop="Zone" align="center" width="100px" >
|
||||||
|
<template slot-scope="scope">
|
||||||
|
{{ scope.row.订单编号 }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="换件时长(min)" prop="Zone" align="center" width="120px" >
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span style="color: #0ba9e3">{{ scope.row.换件时长 }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="最小时长(min)" prop="Zone" align="center" width="120px" >
|
||||||
|
<template slot-scope="scope">
|
||||||
|
{{ scope.row.最小时长 }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="最大时长(min)" prop="Zone" align="center" width="120px" >
|
||||||
|
<template slot-scope="scope">
|
||||||
|
{{ scope.row.最大时长 }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<!-- <el-table-column label="频次/总数" prop="Zone" align="center" >-->
|
||||||
|
<!-- <template slot-scope="scope">-->
|
||||||
|
<!-- {{ scope.row.频次 }} / {{ scope.row.总记录数 }}-->
|
||||||
|
<!-- </template>-->
|
||||||
|
<!-- </el-table-column>-->
|
||||||
|
<el-table-column label="产品编码" prop="Zone" align="center" >
|
||||||
|
<template slot-scope="scope">
|
||||||
|
{{ scope.row.产品编码 }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="产品名称" prop="Zone" align="center" >
|
||||||
|
<template slot-scope="scope">
|
||||||
|
{{ scope.row.产品名称 }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -120,6 +221,7 @@ export default {
|
|||||||
completionTime: [],
|
completionTime: [],
|
||||||
routineCheckType: [],
|
routineCheckType: [],
|
||||||
dataType: 0,
|
dataType: 0,
|
||||||
|
orderNo: '',
|
||||||
loading: false,
|
loading: false,
|
||||||
dialogFormVisible: false,
|
dialogFormVisible: false,
|
||||||
title: '',
|
title: '',
|
||||||
@@ -146,6 +248,7 @@ export default {
|
|||||||
设备类型: [{ required: true, message: '请选择' }]
|
设备类型: [{ required: true, message: '请选择' }]
|
||||||
},
|
},
|
||||||
original: '',
|
original: '',
|
||||||
|
currentRow: null,
|
||||||
total: 0, // 分页总数
|
total: 0, // 分页总数
|
||||||
tableData: [], // 设备信息表
|
tableData: [], // 设备信息表
|
||||||
tableData1: [], // 设备信息表
|
tableData1: [], // 设备信息表
|
||||||
@@ -274,16 +377,31 @@ export default {
|
|||||||
this.loading = true
|
this.loading = true
|
||||||
this.tableData1 = []
|
this.tableData1 = []
|
||||||
this.dataType = row.数据类型
|
this.dataType = row.数据类型
|
||||||
|
this.currentRow = row
|
||||||
var param = []
|
var param = []
|
||||||
|
param.push(['PageCurrent', this.pageCurrent])
|
||||||
|
param.push(['PageSize', this.pageSize])
|
||||||
|
param.push(['PageCount', '1111', 'int', '1'])
|
||||||
|
param.push(['ItemCount', '1111', 'int', '1'])
|
||||||
param.push(['开始时间', this.completionTime[0]])
|
param.push(['开始时间', this.completionTime[0]])
|
||||||
param.push(['结束时间', this.completionTime[1]])
|
param.push(['结束时间', this.completionTime[1]])
|
||||||
param.push(['设备名称', this.equipmentType])
|
param.push(['设备名称', this.equipmentType])
|
||||||
param.push(['参数名称', row.参数名称])
|
param.push(['参数名称', row.参数名称])
|
||||||
param.push(['数据类型', row.数据类型])
|
param.push(['数据类型', row.数据类型])
|
||||||
|
param.push(['订单编号', this.orderNo])
|
||||||
var Data = this.CreateData('11', '设备管理_设备数据_统计数据查询_通过类型', param)
|
var Data = this.CreateData('11', '设备管理_设备数据_统计数据查询_通过类型', param)
|
||||||
this.ExecDatabase(Data).then(response => {
|
this.ExecDatabase(Data).then(response => {
|
||||||
this.loading = false
|
this.loading = false
|
||||||
this.tableData1 = row.数据类型 === 1 ? this.mergeContinuousStatus(response.data) : response.data
|
console.log(response.data)
|
||||||
|
if (row.数据类型 === 1) {
|
||||||
|
this.tableData1 = this.mergeContinuousStatus(response.data.result)
|
||||||
|
} else if (row.数据类型 === 2) {
|
||||||
|
this.tableData1 = response.data.result
|
||||||
|
this.total = parseInt(response.data.output[0].ItemCount)
|
||||||
|
} else {
|
||||||
|
this.tableData1 = response.data.result
|
||||||
|
}
|
||||||
|
|
||||||
// this.tableData = response.data.result
|
// this.tableData = response.data.result
|
||||||
// this.total = parseInt(response.data.output[0].ItemCount)
|
// this.total = parseInt(response.data.output[0].ItemCount)
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
@@ -293,11 +411,11 @@ export default {
|
|||||||
handleSizeChanges(val) {
|
handleSizeChanges(val) {
|
||||||
this.pageCurrent = 1
|
this.pageCurrent = 1
|
||||||
this.pageSize = val
|
this.pageSize = val
|
||||||
this.searchTable()
|
this.handleSearch(this.currentRow)
|
||||||
},
|
},
|
||||||
handleCurrentChanges(val) {
|
handleCurrentChanges(val) {
|
||||||
this.pageCurrent = val
|
this.pageCurrent = val
|
||||||
this.searchTable()
|
this.handleSearch(this.currentRow)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -213,7 +213,7 @@
|
|||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column align="center" prop="备注" label="备注" width="150" />
|
<el-table-column align="center" prop="备注" label="备注" width="150" show-overflow-tooltip />
|
||||||
<el-table-column align="center" prop="未完成说明" label="未完成说明" width="120" />
|
<el-table-column align="center" prop="未完成说明" label="未完成说明" width="120" />
|
||||||
<el-table-column align="center" prop="派工特殊说明" label="派工特殊备注" width="120" />
|
<el-table-column align="center" prop="派工特殊说明" label="派工特殊备注" width="120" />
|
||||||
<el-table-column align="center" label="编辑" width="120">
|
<el-table-column align="center" label="编辑" width="120">
|
||||||
@@ -221,6 +221,8 @@
|
|||||||
<el-button type="text" size="mini" @click="editRemark(scope.row)">编辑</el-button>
|
<el-button type="text" size="mini" @click="editRemark(scope.row)">编辑</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column align="center" prop="行文本备注" label="工艺备注" width="120" />
|
||||||
|
<el-table-column align="center" prop="任务概述" label="工艺说明" width="120" />
|
||||||
<el-table-column align="center" label="二次派工" width="200">
|
<el-table-column align="center" label="二次派工" width="200">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-select
|
<el-select
|
||||||
|
|||||||
@@ -15,16 +15,16 @@
|
|||||||
<el-input v-model="doneprocessName" placeholder="请输入工序名称" clearable style="width: 150px;margin-right: 10px" />
|
<el-input v-model="doneprocessName" placeholder="请输入工序名称" clearable style="width: 150px;margin-right: 10px" />
|
||||||
<br>
|
<br>
|
||||||
<br>
|
<br>
|
||||||
<span class="show-text">排产状态:</span>
|
<!-- <span class="show-text">排产状态:</span>
|
||||||
<el-select v-model="doneproductionStatus" clearable placeholder="请选择状态" style="width: 150px;margin-right: 10px">
|
<el-select v-model="doneproductionStatus" clearable placeholder="请选择状态" style="width: 150px;margin-right: 10px">
|
||||||
<el-option label="全部" value="全部" />
|
<el-option label="全部" value="全部" />
|
||||||
<el-option label="已完成" value="已完成" />
|
<el-option label="已完成" value="已完成" />
|
||||||
<el-option label="未完成" value="未完成" />
|
<el-option label="未完成" value="未完成" />
|
||||||
</el-select>
|
</el-select> -->
|
||||||
<span class="show-text">要求完工日期:</span>
|
<span class="show-text">要求完工日期:</span>
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="completionTime"
|
v-model="completionTime"
|
||||||
:clearable="false"
|
|
||||||
end-placeholder="结束时间"
|
end-placeholder="结束时间"
|
||||||
format="yyyy-MM-dd"
|
format="yyyy-MM-dd"
|
||||||
popper-class="virtual-cell-time-picker"
|
popper-class="virtual-cell-time-picker"
|
||||||
@@ -36,26 +36,21 @@
|
|||||||
<span class="show-text">计划开始:</span>
|
<span class="show-text">计划开始:</span>
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="planStartTime"
|
v-model="planStartTime"
|
||||||
:clearable="false"
|
|
||||||
end-placeholder="结束时间"
|
|
||||||
format="yyyy-MM-dd"
|
placeholder="计划开始时间"
|
||||||
popper-class="virtual-cell-time-picker"
|
style="width: 150px;
|
||||||
range-separator="-"
|
vertical-align: top"
|
||||||
start-placeholder="开始时间"
|
type="date"
|
||||||
style="width: 280px;vertical-align: top"
|
|
||||||
type="datetimerange"
|
|
||||||
value-format="yyyy-MM-dd" />
|
value-format="yyyy-MM-dd" />
|
||||||
<span class="show-text">计划完成:</span>
|
<span class="show-text">计划完成:</span>
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="planendTime"
|
v-model="planendTime"
|
||||||
:clearable="false"
|
|
||||||
end-placeholder="结束时间"
|
placeholder="计划完成时间"
|
||||||
format="yyyy-MM-dd"
|
style="width: 150px;
|
||||||
popper-class="virtual-cell-time-picker"
|
vertical-align: top"
|
||||||
range-separator="-"
|
type="date"
|
||||||
start-placeholder="开始时间"
|
|
||||||
style="width: 280px;vertical-align: top"
|
|
||||||
type="datetimerange"
|
|
||||||
value-format="yyyy-MM-dd" />
|
value-format="yyyy-MM-dd" />
|
||||||
<el-button :disabled="loading" icon="el-icon-search" plain type="primary" @click="donesearchTable()">查询</el-button>
|
<el-button :disabled="loading" icon="el-icon-search" plain type="primary" @click="donesearchTable()">查询</el-button>
|
||||||
</div>
|
</div>
|
||||||
@@ -185,8 +180,10 @@
|
|||||||
@click="getitemdata(scope.row.订单号)">查看</el-button>
|
@click="getitemdata(scope.row.订单号)">查看</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column align="center" prop="备注" label="备注" width="150" />
|
<el-table-column align="center" prop="备注" label="备注" width="150" show-overflow-tooltip/>
|
||||||
<el-table-column align="center" label="最晚开始" width="160">
|
<el-table-column align="center" prop="行文本备注" label="工艺备注" width="120" />
|
||||||
|
<el-table-column align="center" prop="任务概述" label="工艺说明" width="120" />
|
||||||
|
<!-- <el-table-column align="center" label="最晚开始" width="160">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="scope.row.最晚开始时间"
|
v-model="scope.row.最晚开始时间"
|
||||||
type="date"
|
type="date"
|
||||||
@@ -197,7 +194,7 @@
|
|||||||
value-format="yyyy-MM-dd"
|
value-format="yyyy-MM-dd"
|
||||||
@change = "editlateTask">
|
@change = "editlateTask">
|
||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
</el-table-column>
|
</el-table-column> -->
|
||||||
<!-- <el-table-column align="center" label="派工" width="100">
|
<!-- <el-table-column align="center" label="派工" width="100">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-button type="primary" size="mini"
|
<el-button type="primary" size="mini"
|
||||||
@@ -375,8 +372,8 @@ export default {
|
|||||||
station:'全部',
|
station:'全部',
|
||||||
completids:[],
|
completids:[],
|
||||||
completionTime: [],
|
completionTime: [],
|
||||||
planStartTime: [],
|
planStartTime: '',
|
||||||
planendTime: [],
|
planendTime: '',
|
||||||
loading: false,
|
loading: false,
|
||||||
tableData: [],
|
tableData: [],
|
||||||
donetableData: [],
|
donetableData: [],
|
||||||
@@ -770,13 +767,11 @@ export default {
|
|||||||
// param.push(['性质', this.nature])
|
// param.push(['性质', this.nature])
|
||||||
param.push(['要求完工日期1', this.completionTime[0]])
|
param.push(['要求完工日期1', this.completionTime[0]])
|
||||||
param.push(['要求完工日期2', this.completionTime[1]])
|
param.push(['要求完工日期2', this.completionTime[1]])
|
||||||
param.push(['计划开始1', this.planStartTime[0]])
|
param.push(['计划开始', this.planStartTime])
|
||||||
param.push(['计划开始2', this.planStartTime[1]])
|
param.push(['计划完成', this.planendTime])
|
||||||
param.push(['计划完成1', this.planendTime[0]])
|
|
||||||
param.push(['计划完成2', this.planendTime[1]])
|
|
||||||
param.push(['排产状态', this.productionStatus])
|
param.push(['排产状态', this.productionStatus])
|
||||||
param.push(['指派对象', this.station])
|
param.push(['指派对象', this.station])
|
||||||
var Data = this.CreateData('11', 'MES_OrderPlanned_Query', param,this.pageSize, this.pageCurrent)
|
var Data = this.CreateData('11', '机加已排产_获取任务列表', param,this.pageSize, this.pageCurrent)
|
||||||
this.ExecDatabase(Data).then(response => {
|
this.ExecDatabase(Data).then(response => {
|
||||||
|
|
||||||
this.loading = false
|
this.loading = false
|
||||||
@@ -825,16 +820,13 @@ export default {
|
|||||||
param.push(['产品编码', this.doneproductCode])
|
param.push(['产品编码', this.doneproductCode])
|
||||||
param.push(['产品名称', this.doneproductName])
|
param.push(['产品名称', this.doneproductName])
|
||||||
param.push(['工序名称', this.doneprocessName])
|
param.push(['工序名称', this.doneprocessName])
|
||||||
// param.push(['性质', this.donenature])
|
|
||||||
param.push(['要求完工日期1', this.completionTime[0]])
|
param.push(['要求完工日期1', this.completionTime[0]])
|
||||||
param.push(['要求完工日期2', this.completionTime[1]])
|
param.push(['要求完工日期2', this.completionTime[1]])
|
||||||
param.push(['计划开始1', this.planStartTime[0]])
|
param.push(['计划开始', this.planStartTime])
|
||||||
param.push(['计划开始2', this.planStartTime[1]])
|
param.push(['计划完成', this.planendTime])
|
||||||
param.push(['计划完成1', this.planendTime[0]])
|
|
||||||
param.push(['计划完成2', this.planendTime[1]])
|
|
||||||
param.push(['排产状态', this.doneproductionStatus])
|
param.push(['排产状态', this.doneproductionStatus])
|
||||||
param.push(['指派对象', this.station])
|
param.push(['指派对象', this.station])
|
||||||
var Data = this.CreateData('11', 'MES_OrderPlanned_Query', param,this.pageSize, this.pageCurrent)
|
var Data = this.CreateData('11', '机加已排产_获取任务列表', param,this.pageSize, this.pageCurrent)
|
||||||
this.ExecDatabase(Data).then(response => {
|
this.ExecDatabase(Data).then(response => {
|
||||||
|
|
||||||
this.loading = false
|
this.loading = false
|
||||||
@@ -1491,4 +1483,5 @@ export default {
|
|||||||
.el-picker-panel__icon-btn{
|
.el-picker-panel__icon-btn{
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -734,6 +734,7 @@ export default {
|
|||||||
var orderids = []
|
var orderids = []
|
||||||
var ordernums = []
|
var ordernums = []
|
||||||
var orderitems = []
|
var orderitems = []
|
||||||
|
|
||||||
multipleSelection.forEach(item => {
|
multipleSelection.forEach(item => {
|
||||||
if(item.标准工艺 == 1 & item.生产工艺 !=1 ){
|
if(item.标准工艺 == 1 & item.生产工艺 !=1 ){
|
||||||
orderids.push(item.订单编号)
|
orderids.push(item.订单编号)
|
||||||
@@ -749,7 +750,7 @@ export default {
|
|||||||
param.push(['订单编号',orderids])
|
param.push(['订单编号',orderids])
|
||||||
param.push(['零件图号',orderitems])
|
param.push(['零件图号',orderitems])
|
||||||
param.push(['计划数量',ordernums])
|
param.push(['计划数量',ordernums])
|
||||||
|
console.log(param)
|
||||||
var Data = this.CreateData('12', '工艺管理_零件工序_生产工艺_批量生成生产工艺', param)
|
var Data = this.CreateData('12', '工艺管理_零件工序_生产工艺_批量生成生产工艺', param)
|
||||||
this.ExecDatabase(Data).then(response => {
|
this.ExecDatabase(Data).then(response => {
|
||||||
this.searchTable()
|
this.searchTable()
|
||||||
@@ -1141,6 +1142,7 @@ export default {
|
|||||||
this.ExecDatabase(Data1).then(response => {
|
this.ExecDatabase(Data1).then(response => {
|
||||||
param1[0] = ['物料编号', this.selectedRow.物料编号]
|
param1[0] = ['物料编号', this.selectedRow.物料编号]
|
||||||
param1[1] = ['订单编号', this.selectedRow.订单编号]
|
param1[1] = ['订单编号', this.selectedRow.订单编号]
|
||||||
|
this.$message.success('操作成功')
|
||||||
// 参数数量与名称要与存储过程对应
|
// 参数数量与名称要与存储过程对应
|
||||||
// var Data3 = this.CreateData('11', '工艺管理_生产工艺_查询生产工艺', param1)
|
// var Data3 = this.CreateData('11', '工艺管理_生产工艺_查询生产工艺', param1)
|
||||||
// this.ExecDatabase(Data3).then(response => {
|
// this.ExecDatabase(Data3).then(response => {
|
||||||
|
|||||||
@@ -796,6 +796,7 @@ export default {
|
|||||||
this.ExecDatabase(Data1).then(response => {
|
this.ExecDatabase(Data1).then(response => {
|
||||||
var param3 = []
|
var param3 = []
|
||||||
param3[0] = ['物料编号', this.partNameValue3]
|
param3[0] = ['物料编号', this.partNameValue3]
|
||||||
|
this.$message.success('保存成功')
|
||||||
// 参数数量与名称要与存储过程对应
|
// 参数数量与名称要与存储过程对应
|
||||||
// var Data3 = this.CreateData('11', '车间生产管理工艺_零件工序_查询工序信息_工艺库', param3)
|
// var Data3 = this.CreateData('11', '车间生产管理工艺_零件工序_查询工序信息_工艺库', param3)
|
||||||
// this.ExecDatabase(Data3).then(response => {
|
// this.ExecDatabase(Data3).then(response => {
|
||||||
|
|||||||
1057
MES_Manage_View_V20/src/views/ProductionManagement/AGVtask/index.vue
Normal file
1057
MES_Manage_View_V20/src/views/ProductionManagement/AGVtask/index.vue
Normal file
File diff suppressed because it is too large
Load Diff
@@ -43,6 +43,13 @@
|
|||||||
clearable
|
clearable
|
||||||
style="width: 150px; margin-right: 10px"
|
style="width: 150px; margin-right: 10px"
|
||||||
/>
|
/>
|
||||||
|
<span class="show-text">物料名称:</span>
|
||||||
|
<el-input
|
||||||
|
v-model="productname2"
|
||||||
|
placeholder="请输入零件名称"
|
||||||
|
clearable
|
||||||
|
style="width: 150px; margin-right: 10px"
|
||||||
|
/>
|
||||||
<!-- <span class="show-text">计划开工:</span>
|
<!-- <span class="show-text">计划开工:</span>
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="completionTime"
|
v-model="completionTime"
|
||||||
@@ -259,6 +266,14 @@
|
|||||||
prop="工序名称"
|
prop="工序名称"
|
||||||
label="工序名称"
|
label="工序名称"
|
||||||
width="80"
|
width="80"
|
||||||
|
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
align="center"
|
||||||
|
prop="上序合格数"
|
||||||
|
label="上序合格数"
|
||||||
|
width="80"
|
||||||
|
|
||||||
/>
|
/>
|
||||||
<!-- <el-table-column align="center" label="开工时间" width="100">
|
<!-- <el-table-column align="center" label="开工时间" width="100">
|
||||||
<template slot-scope="scope">{{formatDate(scope.row.开工时间)}}</template>
|
<template slot-scope="scope">{{formatDate(scope.row.开工时间)}}</template>
|
||||||
@@ -1825,6 +1840,7 @@ export default {
|
|||||||
salenum:'',
|
salenum:'',
|
||||||
contractNo: "",
|
contractNo: "",
|
||||||
productCode2: "",
|
productCode2: "",
|
||||||
|
productname2: "",
|
||||||
process: "",
|
process: "",
|
||||||
processList2: [],
|
processList2: [],
|
||||||
nature: "",
|
nature: "",
|
||||||
@@ -2703,6 +2719,7 @@ getUserId() {
|
|||||||
param.push(["TaskAID", this.TaskAID || 0]);
|
param.push(["TaskAID", this.TaskAID || 0]);
|
||||||
param.push(["订单号", this.orderNo2 || 0]);
|
param.push(["订单号", this.orderNo2 || 0]);
|
||||||
param.push(["零件编号", this.productCode2]);
|
param.push(["零件编号", this.productCode2]);
|
||||||
|
param.push(["零件名称", this.productname2]);
|
||||||
param.push(["计划开工_Start", ""]);
|
param.push(["计划开工_Start", ""]);
|
||||||
param.push(["计划开工_End", ""]);
|
param.push(["计划开工_End", ""]);
|
||||||
param.push(["生产状态", this.productionStatus2 || -1]);
|
param.push(["生产状态", this.productionStatus2 || -1]);
|
||||||
|
|||||||
@@ -87,6 +87,7 @@
|
|||||||
@row-click="handleRowClick">
|
@row-click="handleRowClick">
|
||||||
<el-table-column type="selection" width="50"></el-table-column>
|
<el-table-column type="selection" width="50"></el-table-column>
|
||||||
<el-table-column label="序号" type="index" align="center" width="50"/>
|
<el-table-column label="序号" type="index" align="center" width="50"/>
|
||||||
|
<el-table-column label="状态" align="center" prop="单据状态" width="80" />
|
||||||
<el-table-column label="生产订单" align="center" prop="订单号" width="80" />
|
<el-table-column label="生产订单" align="center" prop="订单号" width="80" />
|
||||||
<el-table-column label="计划号" align="center" prop="计划号" width="80" />
|
<el-table-column label="计划号" align="center" prop="计划号" width="80" />
|
||||||
<el-table-column label="工序名称" align="center" prop="工序名称" width="120"/>
|
<el-table-column label="工序名称" align="center" prop="工序名称" width="120"/>
|
||||||
|
|||||||
@@ -32,6 +32,12 @@
|
|||||||
<el-option label="加急" value="加急" />
|
<el-option label="加急" value="加急" />
|
||||||
<el-option label="正常" value="正常" />
|
<el-option label="正常" value="正常" />
|
||||||
</el-select>
|
</el-select>
|
||||||
|
<span class="show-text">单据状态:</span>
|
||||||
|
<el-select v-model="orderStatus" clearable placeholder="请选择单据状态" style="width: 150px;margin-right: 10px">
|
||||||
|
<el-option label="全部" value="全部" />
|
||||||
|
<el-option label="关闭" value="关闭" />
|
||||||
|
<el-option label="正常" value="正常" />
|
||||||
|
</el-select>
|
||||||
|
|
||||||
<!-- 其他搜索条件保持不变 -->
|
<!-- 其他搜索条件保持不变 -->
|
||||||
<el-button :disabled="loading" icon="el-icon-search" plain type="primary" @click="searchTable()">查询</el-button>
|
<el-button :disabled="loading" icon="el-icon-search" plain type="primary" @click="searchTable()">查询</el-button>
|
||||||
@@ -48,6 +54,7 @@
|
|||||||
<el-table-column align="center" label="序号" type="index" width="50" />
|
<el-table-column align="center" label="序号" type="index" width="50" />
|
||||||
<el-table-column align="center" label="工序名称" prop="工序名称" width="100" />
|
<el-table-column align="center" label="工序名称" prop="工序名称" width="100" />
|
||||||
<el-table-column align="center" label="计划数量" prop="计划数量" width="100" />
|
<el-table-column align="center" label="计划数量" prop="计划数量" width="100" />
|
||||||
|
<el-table-column align="center" label="标准工时" prop="标准工时" width="100" />
|
||||||
<el-table-column align="center" label="指派对象" prop="指派对象" width="100" />
|
<el-table-column align="center" label="指派对象" prop="指派对象" width="100" />
|
||||||
<!-- 在子数据中显示外协标识 -->
|
<!-- 在子数据中显示外协标识 -->
|
||||||
<!-- <el-table-column align="center" label="外协" width="80">
|
<!-- <el-table-column align="center" label="外协" width="80">
|
||||||
@@ -86,7 +93,7 @@
|
|||||||
<!-- 主表列定义 -->
|
<!-- 主表列定义 -->
|
||||||
<el-table-column align="center" label="序号" type="index" width="50" />
|
<el-table-column align="center" label="序号" type="index" width="50" />
|
||||||
<el-table-column align="center" prop="合同号" label="销售订单" width="120" />
|
<el-table-column align="center" prop="合同号" label="销售订单" width="120" />
|
||||||
<el-table-column align="center" prop="计划号" label="计划号" width="120" />
|
|
||||||
<el-table-column align="center" prop="订单号" label="生产订单" width="100" />
|
<el-table-column align="center" prop="订单号" label="生产订单" width="100" />
|
||||||
<el-table-column align="center" prop="产品编码" label="产品编码" width="220" />
|
<el-table-column align="center" prop="产品编码" label="产品编码" width="220" />
|
||||||
<el-table-column align="center" prop="产品名称" label="产品名称" width="190" />
|
<el-table-column align="center" prop="产品名称" label="产品名称" width="190" />
|
||||||
@@ -142,7 +149,12 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column align="center" prop="当前序" label="当前序" width="80" />
|
<el-table-column align="center" prop="当前序" label="当前序" width="80" />
|
||||||
<el-table-column align="center" prop="工艺路线" label="工艺路线" width="180" />
|
<el-table-column align="center" label="工艺路线" width="550">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<div class="process-route" v-html="formatProcessRoute(scope.row)" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" prop="计划号" label="计划号" width="120" />
|
||||||
</el-table>
|
</el-table>
|
||||||
</el-card>
|
</el-card>
|
||||||
<el-dialog
|
<el-dialog
|
||||||
@@ -214,6 +226,7 @@ export default {
|
|||||||
// 新增过滤字段
|
// 新增过滤字段
|
||||||
outsourceStatus: '全部', // 外协状态
|
outsourceStatus: '全部', // 外协状态
|
||||||
urgentStatus: '全部', // 加急状态
|
urgentStatus: '全部', // 加急状态
|
||||||
|
orderStatus:'正常',
|
||||||
completionTime: [],
|
completionTime: [],
|
||||||
loading: false,
|
loading: false,
|
||||||
tableData: [],
|
tableData: [],
|
||||||
@@ -276,6 +289,199 @@ export default {
|
|||||||
if (!date) return ''
|
if (!date) return ''
|
||||||
return date.split(' ').length > 1 ? date.split(' ')[0] : date
|
return date.split(' ').length > 1 ? date.split(' ')[0] : date
|
||||||
},
|
},
|
||||||
|
formatProcessRouteDate(date) {
|
||||||
|
const formattedDate = this.formatDate(date)
|
||||||
|
const match = formattedDate.match(/^(\d{4})-(\d{2})-(\d{2})$/)
|
||||||
|
return match ? `${match[2]}-${match[3]}` : formattedDate
|
||||||
|
},
|
||||||
|
toProcessNumber(value) {
|
||||||
|
const num = Number(value)
|
||||||
|
return Number.isFinite(num) ? num : 0
|
||||||
|
},
|
||||||
|
escapeProcessHtml(value) {
|
||||||
|
return String(value == null ? '' : value)
|
||||||
|
.replace(/&/g, '&')
|
||||||
|
.replace(/</g, '<')
|
||||||
|
.replace(/>/g, '>')
|
||||||
|
.replace(/"/g, '"')
|
||||||
|
.replace(/'/g, ''')
|
||||||
|
},
|
||||||
|
isOutsourceProcess(process) {
|
||||||
|
return process.指派对象 === '外协' ||
|
||||||
|
String(process.工序名称 || '').includes('(外协)') ||
|
||||||
|
String(process.工序名称 || '').includes('(外协)')
|
||||||
|
},
|
||||||
|
getProcessStatusNum(status) {
|
||||||
|
const statusNum = parseInt(status)
|
||||||
|
if (Number.isFinite(statusNum)) {
|
||||||
|
return statusNum
|
||||||
|
}
|
||||||
|
|
||||||
|
const statusMap = {
|
||||||
|
辅助开始: 2,
|
||||||
|
辅助结束: 3,
|
||||||
|
开始加工: 4,
|
||||||
|
暂停: 5,
|
||||||
|
报工: 6,
|
||||||
|
装配加工: 4
|
||||||
|
}
|
||||||
|
return statusMap[status] || 0
|
||||||
|
},
|
||||||
|
isBlueProcess(process) {
|
||||||
|
const statusNum = this.getProcessStatusNum(process.加工状态)
|
||||||
|
const countNum = parseInt(process.收检合格数)
|
||||||
|
return statusNum === 6 || statusNum === 3 || countNum > 0
|
||||||
|
},
|
||||||
|
isGreenProcess(process) {
|
||||||
|
return this.isOutsourceProcess(process) &&
|
||||||
|
this.toProcessNumber(process.收料数量) > this.toProcessNumber(process.收检合格数) + this.toProcessNumber(process.收检不合格数)
|
||||||
|
},
|
||||||
|
getProcessBaseClass(process) {
|
||||||
|
if (this.isGreenProcess(process)) {
|
||||||
|
return 'process-route-green'
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.isBlueProcess(process)) {
|
||||||
|
return 'process-route-blue'
|
||||||
|
}
|
||||||
|
|
||||||
|
const statusNum = this.getProcessStatusNum(process.加工状态)
|
||||||
|
if (statusNum === 2 || statusNum === 4) {
|
||||||
|
return 'process-route-green'
|
||||||
|
}
|
||||||
|
|
||||||
|
return 'process-route-red'
|
||||||
|
},
|
||||||
|
getOutsourceGroupClassState(processes) {
|
||||||
|
const classes = new Map()
|
||||||
|
let currentIndexes = []
|
||||||
|
let lastProcess = null
|
||||||
|
|
||||||
|
const flushOutsourceRun = () => {
|
||||||
|
if (currentIndexes.length > 0 && lastProcess) {
|
||||||
|
const className = this.getProcessBaseClass(lastProcess)
|
||||||
|
currentIndexes.forEach(index => classes.set(index, className))
|
||||||
|
}
|
||||||
|
currentIndexes = []
|
||||||
|
lastProcess = null
|
||||||
|
}
|
||||||
|
|
||||||
|
const isSameContinuousGroup = process => {
|
||||||
|
if (!lastProcess) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
const lineNo = this.toProcessNumber(process.订单行号)
|
||||||
|
const lastLineNo = this.toProcessNumber(lastProcess.订单行号)
|
||||||
|
return lineNo === lastLineNo + 1 &&
|
||||||
|
String(process.外协分组 || '') === String(lastProcess.外协分组 || '')
|
||||||
|
}
|
||||||
|
|
||||||
|
processes.forEach((process, index) => {
|
||||||
|
if (!this.isOutsourceProcess(process)) {
|
||||||
|
flushOutsourceRun()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (!isSameContinuousGroup(process)) {
|
||||||
|
flushOutsourceRun()
|
||||||
|
}
|
||||||
|
currentIndexes.push(index)
|
||||||
|
lastProcess = process
|
||||||
|
})
|
||||||
|
flushOutsourceRun()
|
||||||
|
|
||||||
|
return classes
|
||||||
|
},
|
||||||
|
getProcessClass(process, index, outsourceGroupClasses) {
|
||||||
|
if (this.isOutsourceProcess(process)) {
|
||||||
|
return outsourceGroupClasses.get(index) || this.getProcessBaseClass(process)
|
||||||
|
}
|
||||||
|
return this.getProcessBaseClass(process)
|
||||||
|
},
|
||||||
|
getProcessRouteName(process) {
|
||||||
|
const name = String(process.工序名称 || '')
|
||||||
|
const assignee = String(process.指派对象 || '')
|
||||||
|
if (!assignee || name.includes(`(${assignee})`) || name.includes(`(${assignee})`)) {
|
||||||
|
return name
|
||||||
|
}
|
||||||
|
return `${name}(${assignee})`
|
||||||
|
},
|
||||||
|
getRouteProcesses(row) {
|
||||||
|
if (Array.isArray(row.子数据) && row.子数据.length > 0) {
|
||||||
|
return row.子数据
|
||||||
|
}
|
||||||
|
|
||||||
|
return String(row.工艺路线 || '')
|
||||||
|
.split(',')
|
||||||
|
.map(name => name.trim())
|
||||||
|
.filter(Boolean)
|
||||||
|
.map(name => ({
|
||||||
|
工序名称: name,
|
||||||
|
加工状态: 0,
|
||||||
|
收检合格数: 0,
|
||||||
|
计划开始时间: '',
|
||||||
|
指派对象: '',
|
||||||
|
订单行号: 0,
|
||||||
|
收料数量: 0,
|
||||||
|
收检不合格数: 0
|
||||||
|
}))
|
||||||
|
},
|
||||||
|
formatProcessRoute(row) {
|
||||||
|
const processes = this.getRouteProcesses(row)
|
||||||
|
if (processes.length === 0) {
|
||||||
|
return ''
|
||||||
|
}
|
||||||
|
|
||||||
|
const outsourceGroupClasses = this.getOutsourceGroupClassState(processes)
|
||||||
|
const maxPerRow = 8
|
||||||
|
const rows = Math.ceil(processes.length / maxPerRow)
|
||||||
|
let tableHtml = '<div class="process-route-wrap"><table class="process-route-table"><tbody>'
|
||||||
|
|
||||||
|
for (let rowIndex = 0; rowIndex < rows; rowIndex++) {
|
||||||
|
const startIndex = rowIndex * maxPerRow
|
||||||
|
const endIndex = Math.min(startIndex + maxPerRow, processes.length)
|
||||||
|
const rowProcesses = processes.slice(startIndex, endIndex)
|
||||||
|
|
||||||
|
if (rowIndex > 0) {
|
||||||
|
tableHtml += '<tr class="process-route-spacer"><td colspan="' + (maxPerRow * 2 - 1) + '"></td></tr>'
|
||||||
|
}
|
||||||
|
|
||||||
|
tableHtml += '<tr>'
|
||||||
|
rowProcesses.forEach((process, index) => {
|
||||||
|
const className = this.getProcessClass(process, startIndex + index, outsourceGroupClasses)
|
||||||
|
const planDate = this.formatProcessRouteDate(process.计划开始时间 || process.计划完成时间 || '')
|
||||||
|
tableHtml += `<td class="process-route-date ${className}">${this.escapeProcessHtml(planDate)}</td>`
|
||||||
|
if (index < rowProcesses.length - 1) {
|
||||||
|
tableHtml += '<td class="process-route-arrow-hidden"></td>'
|
||||||
|
}
|
||||||
|
})
|
||||||
|
tableHtml += '</tr>'
|
||||||
|
|
||||||
|
tableHtml += '<tr>'
|
||||||
|
rowProcesses.forEach((process, index) => {
|
||||||
|
const className = this.getProcessClass(process, startIndex + index, outsourceGroupClasses)
|
||||||
|
const name = this.getProcessRouteName(process)
|
||||||
|
tableHtml += `<td class="${className}">${this.escapeProcessHtml(name)}</td>`
|
||||||
|
if (index < rowProcesses.length - 1) {
|
||||||
|
tableHtml += '<td class="process-route-arrow">→</td>'
|
||||||
|
}
|
||||||
|
})
|
||||||
|
tableHtml += '</tr>'
|
||||||
|
|
||||||
|
tableHtml += '<tr>'
|
||||||
|
rowProcesses.forEach((process, index) => {
|
||||||
|
const className = this.getProcessClass(process, startIndex + index, outsourceGroupClasses)
|
||||||
|
const count = this.toProcessNumber(process.收检合格数)
|
||||||
|
tableHtml += `<td class="process-route-count ${className}">合格${this.escapeProcessHtml(count)}</td>`
|
||||||
|
if (index < rowProcesses.length - 1) {
|
||||||
|
tableHtml += '<td class="process-route-arrow-hidden"></td>'
|
||||||
|
}
|
||||||
|
})
|
||||||
|
tableHtml += '</tr>'
|
||||||
|
}
|
||||||
|
|
||||||
|
tableHtml += '</tbody></table></div>'
|
||||||
|
return tableHtml
|
||||||
|
},
|
||||||
mergeOrderData(dataList) {
|
mergeOrderData(dataList) {
|
||||||
// 第一步:先按照订单行号对原始数据进行排序
|
// 第一步:先按照订单行号对原始数据进行排序
|
||||||
const sortedDataList = [...dataList].sort((a, b) => {
|
const sortedDataList = [...dataList].sort((a, b) => {
|
||||||
@@ -307,6 +513,7 @@ export default {
|
|||||||
进度: item.进度,
|
进度: item.进度,
|
||||||
拆分内码: item.拆分内码,
|
拆分内码: item.拆分内码,
|
||||||
计划数量: item.计划数量,
|
计划数量: item.计划数量,
|
||||||
|
标准工时: item.标准工时,
|
||||||
开工时间: item.开工时间,
|
开工时间: item.开工时间,
|
||||||
完成数量: item.完成数量,
|
完成数量: item.完成数量,
|
||||||
收料数量: item.收料数量,
|
收料数量: item.收料数量,
|
||||||
@@ -322,7 +529,8 @@ export default {
|
|||||||
订单行号: item.订单行号,
|
订单行号: item.订单行号,
|
||||||
加急总数:item.加急总数,
|
加急总数:item.加急总数,
|
||||||
外协结束时间:item.外协结束时间,
|
外协结束时间:item.外协结束时间,
|
||||||
开始时间:item.开始时间
|
开始时间:item.开始时间,
|
||||||
|
外协分组: item.外协分组
|
||||||
}]
|
}]
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
@@ -345,6 +553,7 @@ export default {
|
|||||||
进度: item.进度,
|
进度: item.进度,
|
||||||
拆分内码: item.拆分内码,
|
拆分内码: item.拆分内码,
|
||||||
计划数量: item.计划数量,
|
计划数量: item.计划数量,
|
||||||
|
标准工时: item.标准工时,
|
||||||
开工时间: item.开工时间,
|
开工时间: item.开工时间,
|
||||||
完成数量: item.完成数量,
|
完成数量: item.完成数量,
|
||||||
收料数量: item.收料数量,
|
收料数量: item.收料数量,
|
||||||
@@ -362,6 +571,7 @@ export default {
|
|||||||
开始时间:item.开始时间,
|
开始时间:item.开始时间,
|
||||||
结束时间:item.结束时间,
|
结束时间:item.结束时间,
|
||||||
外协结束时间:item.外协结束时间,
|
外协结束时间:item.外协结束时间,
|
||||||
|
外协分组: item.外协分组
|
||||||
})
|
})
|
||||||
|
|
||||||
// 对子数据按照订单行号排序
|
// 对子数据按照订单行号排序
|
||||||
@@ -477,6 +687,7 @@ export default {
|
|||||||
param.push(['指派对象', '全部'])
|
param.push(['指派对象', '全部'])
|
||||||
param.push(['计划号', this.plannum])
|
param.push(['计划号', this.plannum])
|
||||||
param.push(['加急状态', this.urgentStatus])
|
param.push(['加急状态', this.urgentStatus])
|
||||||
|
param.push(['单据状态', this.orderStatus])
|
||||||
// // 添加外协状态过滤条件
|
// // 添加外协状态过滤条件
|
||||||
// if (this.outsourceStatus !== '全部') {
|
// if (this.outsourceStatus !== '全部') {
|
||||||
// param.push(['是否外协', this.outsourceStatus === '是' ? 1 : 0])
|
// param.push(['是否外协', this.outsourceStatus === '是' ? 1 : 0])
|
||||||
@@ -606,6 +817,78 @@ export default {
|
|||||||
width: 120px;
|
width: 120px;
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.process-route {
|
||||||
|
line-height: 1.4;
|
||||||
|
white-space: normal;
|
||||||
|
word-break: break-all;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .process-route-wrap {
|
||||||
|
width: 100%;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .process-route-table {
|
||||||
|
width: auto;
|
||||||
|
border-collapse: collapse;
|
||||||
|
text-align: left;
|
||||||
|
table-layout: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .process-route-table td {
|
||||||
|
text-align: left;
|
||||||
|
padding: 2px 2px;
|
||||||
|
font-size: 11px;
|
||||||
|
white-space: nowrap;
|
||||||
|
line-height: 1.4;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .process-route-date {
|
||||||
|
font-size: 10px !important;
|
||||||
|
color: #8899aa !important;
|
||||||
|
padding: 2px 2px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .process-route-count {
|
||||||
|
font-weight: 700;
|
||||||
|
font-size: 12px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .process-route-spacer td {
|
||||||
|
height: 4px;
|
||||||
|
padding: 0 !important;
|
||||||
|
line-height: 1 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .process-route-green {
|
||||||
|
color: #28d961;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .process-route-blue {
|
||||||
|
color: #09a8ff;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .process-route-red {
|
||||||
|
color: #ff3f37;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .process-route-arrow {
|
||||||
|
color: rgba(0, 164, 255, 0.6) !important;
|
||||||
|
font-size: 10px !important;
|
||||||
|
padding: 2px 0 !important;
|
||||||
|
width: 8px;
|
||||||
|
text-align: center !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .process-route-arrow-hidden {
|
||||||
|
padding: 2px 0 !important;
|
||||||
|
width: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
.search-container {
|
.search-container {
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
}
|
}
|
||||||
@@ -679,4 +962,7 @@ export default {
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
.el-table tr{
|
||||||
|
background-color: initial;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
@@ -97,6 +97,7 @@
|
|||||||
@row-click="handleRowClick">
|
@row-click="handleRowClick">
|
||||||
<el-table-column type="selection" width="50"></el-table-column>
|
<el-table-column type="selection" width="50"></el-table-column>
|
||||||
<!-- <el-table-column label="序号" type="index" align="center" width="50"/> -->
|
<!-- <el-table-column label="序号" type="index" align="center" width="50"/> -->
|
||||||
|
<el-table-column label="单据状态" align="center" prop="单据状态" width="80" />
|
||||||
<el-table-column label="生产订单" align="center" prop="订单号" width="80" />
|
<el-table-column label="生产订单" align="center" prop="订单号" width="80" />
|
||||||
<!-- <el-table-column label="计划号" align="center" prop="计划号" width="80" /> -->
|
<!-- <el-table-column label="计划号" align="center" prop="计划号" width="80" /> -->
|
||||||
<el-table-column label="物料名称" align="center" prop="产品名称" width="120"/>
|
<el-table-column label="物料名称" align="center" prop="产品名称" width="120"/>
|
||||||
|
|||||||
@@ -81,6 +81,12 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
|
<el-table-column prop="指派对象" label="指派对象" width="120" align="center" show-overflow-tooltip>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
{{ scope.row.level === 2 ? scope.row.指派对象 : '' }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
|
||||||
<el-table-column prop="qty" label="计划/完成" width="100" align="center" />
|
<el-table-column prop="qty" label="计划/完成" width="100" align="center" />
|
||||||
|
|
||||||
<el-table-column prop="reportQty" label="报工数量" width="90" align="center" />
|
<el-table-column prop="reportQty" label="报工数量" width="90" align="center" />
|
||||||
@@ -162,6 +168,12 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
|
<el-table-column prop="指派对象" label="指派对象" width="120" align="center" show-overflow-tooltip>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
{{ scope.row.level === 3 ? scope.row.指派对象 : '' }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
|
||||||
<el-table-column prop="startTime" label="开始时间" width="150" align="center">
|
<el-table-column prop="startTime" label="开始时间" width="150" align="center">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ scope.row.level === 3 ? scope.row.startTime : '' }}
|
{{ scope.row.level === 3 ? scope.row.startTime : '' }}
|
||||||
@@ -247,6 +259,12 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
|
<el-table-column prop="指派对象" label="指派对象" width="120" align="center" show-overflow-tooltip>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
{{ scope.row.level === 2 ? scope.row.指派对象 : '' }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
|
||||||
<el-table-column prop="qty" label="计划/完成" width="100" align="center">
|
<el-table-column prop="qty" label="计划/完成" width="100" align="center">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span :class="{'bold-text': scope.row.level === 1}">{{ scope.row.level === 1 ? scope.row.qty : '' }}</span>
|
<span :class="{'bold-text': scope.row.level === 1}">{{ scope.row.level === 1 ? scope.row.qty : '' }}</span>
|
||||||
@@ -349,6 +367,12 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
|
<el-table-column prop="指派对象" label="指派对象" width="120" align="center" show-overflow-tooltip>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
{{ scope.row.level === 3 ? scope.row.指派对象 : '' }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
|
||||||
<el-table-column prop="startTime" label="开始时间" width="150" align="center">
|
<el-table-column prop="startTime" label="开始时间" width="150" align="center">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ scope.row.level === 3 ? scope.row.startTime : '' }}
|
{{ scope.row.level === 3 ? scope.row.startTime : '' }}
|
||||||
@@ -510,6 +534,7 @@ export default {
|
|||||||
materialCode: row.materialCode,
|
materialCode: row.materialCode,
|
||||||
processName: row.processName,
|
processName: row.processName,
|
||||||
operator: row.operator,
|
operator: row.operator,
|
||||||
|
指派对象: row.指派对象,
|
||||||
qty: row.qty,
|
qty: row.qty,
|
||||||
reportQty: row.reportQty,
|
reportQty: row.reportQty,
|
||||||
planStart: row.planStart,
|
planStart: row.planStart,
|
||||||
@@ -613,6 +638,7 @@ export default {
|
|||||||
productCode: row.productCode,
|
productCode: row.productCode,
|
||||||
productName: row.productName,
|
productName: row.productName,
|
||||||
processName: row.processName,
|
processName: row.processName,
|
||||||
|
指派对象: row.指派对象,
|
||||||
reportQty: row.reportQty,
|
reportQty: row.reportQty,
|
||||||
startTime: row.startTime,
|
startTime: row.startTime,
|
||||||
endTime: row.endTime,
|
endTime: row.endTime,
|
||||||
@@ -683,6 +709,7 @@ export default {
|
|||||||
productCode: row.productCode,
|
productCode: row.productCode,
|
||||||
processName: row.processName,
|
processName: row.processName,
|
||||||
operator: row.operator,
|
operator: row.operator,
|
||||||
|
指派对象: row.指派对象,
|
||||||
reportQty: row.reportQty,
|
reportQty: row.reportQty,
|
||||||
startTime: row.startTime,
|
startTime: row.startTime,
|
||||||
endTime: row.endTime,
|
endTime: row.endTime,
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -59,7 +59,10 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
<el-button :disabled="!!loading" icon="el-icon-search" plain type="primary" @click="searchTable()">查询</el-button>
|
<el-button :disabled="!!loading" icon="el-icon-search" plain type="primary" @click="searchTable()">查询</el-button>
|
||||||
<el-button :disabled="!!multipleSelection.length === 0 || loading" icon="el-icon-check" plain type="success" style="width: 100px;" @click="batchValidate">一键校验</el-button>
|
<el-button :disabled="!!multipleSelection.length === 0 || loading" icon="el-icon-check" plain type="success" style="width: 100px;" @click="batchValidate">一键校验</el-button>
|
||||||
<el-button :disabled=" uesrname != '付延辉'" icon="el-icon-check" plain type="danger" style="width: 100px;" @click="saveValidationRecord2(multipleSelection)">直接校验</el-button>
|
<el-button :disabled=" uesrname != '付延辉'" icon="el-icon-check" plain type="danger" style="position: absolute;
|
||||||
|
width: 100px;
|
||||||
|
right: 36px;
|
||||||
|
top: 70px;width: 100px;" @click="saveValidationRecord2(multipleSelection)">直接校验</el-button>
|
||||||
<!-- <el-button :disabled="!!loading" icon="el-icon-plus" plain type="warning" style="width: 130px;" @click="addWorkTimeRecord">新增工时记录</el-button> -->
|
<!-- <el-button :disabled="!!loading" icon="el-icon-plus" plain type="warning" style="width: 130px;" @click="addWorkTimeRecord">新增工时记录</el-button> -->
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -728,6 +731,40 @@ async uploadToSAP(record, detail) {
|
|||||||
|
|
||||||
// ========== 9. 提交工时单据到SAP ==========
|
// ========== 9. 提交工时单据到SAP ==========
|
||||||
if (params.length > 0) {
|
if (params.length > 0) {
|
||||||
|
try {
|
||||||
|
await new Promise(resolve => setTimeout(resolve, 500))
|
||||||
|
|
||||||
|
const reorderResult = await getB1("/ProductionOrders", {
|
||||||
|
"$filter": `AbsoluteEntry eq ${record.订单编号}`
|
||||||
|
})
|
||||||
|
|
||||||
|
if (!reorderResult.success || !reorderResult.data?.value?.length) {
|
||||||
|
return { success: false, error: '重新获取生产订单失败' }
|
||||||
|
}
|
||||||
|
|
||||||
|
const updatedOrder = reorderResult.data.value[0]
|
||||||
|
const lines = updatedOrder.ProductionOrderLines || []
|
||||||
|
|
||||||
|
lines.forEach(line => {
|
||||||
|
const matched = params.find(param => Number(line.LineNumber) === Number(param.BaseLine))
|
||||||
|
if (matched) {
|
||||||
|
line.PlannedQuantity = Number(line.IssuedQuantity) + Number(matched.Quantity)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
const patchResult = await patchB1(`ProductionOrders(${updatedOrder.AbsoluteEntry})`, {
|
||||||
|
ProductionOrderLines: lines,
|
||||||
|
ProductionOrdersStages: updatedOrder.ProductionOrdersStages || []
|
||||||
|
})
|
||||||
|
|
||||||
|
if (!patchResult.success) {
|
||||||
|
this.$message.error(patchResult.message)
|
||||||
|
return { success: false, error: patchResult.message || '更新生产订单PlannedQuantity失败' }
|
||||||
|
}
|
||||||
|
} catch (reorderError) {
|
||||||
|
console.warn(`重新获取订单数据失败:`, reorderError)
|
||||||
|
return { success: false, error: reorderError.message || '更新生产订单PlannedQuantity异常' }
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
const startDate = record.开始时间 ? record.开始时间.split(' ')[0] : this.currentdate
|
const startDate = record.开始时间 ? record.开始时间.split(' ')[0] : this.currentdate
|
||||||
const result = await postB1("/InventoryGenExits", {
|
const result = await postB1("/InventoryGenExits", {
|
||||||
|
|||||||
@@ -215,7 +215,7 @@
|
|||||||
</el-input>
|
</el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="班次标准工时">
|
<el-form-item label="班次标准工时">
|
||||||
<el-input v-model="editForm.班次标准工时" readonly />
|
<el-input v-model="editForm.当日班次最小标准工时" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- <el-form-item label="工序顺序">
|
<!-- <el-form-item label="工序顺序">
|
||||||
<el-input v-model="editForm.工艺顺序" readonly />
|
<el-input v-model="editForm.工艺顺序" readonly />
|
||||||
@@ -682,7 +682,7 @@ export default {
|
|||||||
加工工时: row.加工工时 || 0,
|
加工工时: row.加工工时 || 0,
|
||||||
总时长: row.总时长 || 0,
|
总时长: row.总时长 || 0,
|
||||||
工艺顺序: row.订单行号 || 0,
|
工艺顺序: row.订单行号 || 0,
|
||||||
当日班次最小标准工时 : row.当日班次最小标准工时 || 0
|
当日班次最小标准工时 : row.当日班次最小标准工时 || 8
|
||||||
}
|
}
|
||||||
this.editDialogVisible = true
|
this.editDialogVisible = true
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -175,6 +175,7 @@
|
|||||||
style="width: 100%; margin-top: 20px"
|
style="width: 100%; margin-top: 20px"
|
||||||
tooltip-effect="dark"
|
tooltip-effect="dark"
|
||||||
@row-click="handleRowClick"
|
@row-click="handleRowClick"
|
||||||
|
:row-class-name="tableRowClassName"
|
||||||
>
|
>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
align="center"
|
align="center"
|
||||||
@@ -743,6 +744,14 @@ export default {
|
|||||||
this.loading = false;
|
this.loading = false;
|
||||||
if (response.data.rows && response.data.rows.length !== 0) {
|
if (response.data.rows && response.data.rows.length !== 0) {
|
||||||
this.tableData = response.data.rows;
|
this.tableData = response.data.rows;
|
||||||
|
this.tableData.sort((a, b) => {
|
||||||
|
const aIsUrgent = a.加急状态 === '1';
|
||||||
|
const bIsUrgent = b.加急状态 === '1';
|
||||||
|
|
||||||
|
if (aIsUrgent && !bIsUrgent) return -1;
|
||||||
|
if (!aIsUrgent && bIsUrgent) return 1;
|
||||||
|
return 0;
|
||||||
|
});
|
||||||
this.total = response.data.total
|
this.total = response.data.total
|
||||||
} else {
|
} else {
|
||||||
this.tableData = [];
|
this.tableData = [];
|
||||||
@@ -1122,10 +1131,27 @@ export default {
|
|||||||
const seconds = String(date.getSeconds()).padStart(2, "0");
|
const seconds = String(date.getSeconds()).padStart(2, "0");
|
||||||
return `${year}${month}${day}_${hours}${minutes}${seconds}`;
|
return `${year}${month}${day}_${hours}${minutes}${seconds}`;
|
||||||
},
|
},
|
||||||
|
tableRowClassName({ row, rowIndex }) {
|
||||||
|
const isUrgent = row.加急状态 == "1";
|
||||||
|
if (isUrgent) {
|
||||||
|
return "priority-row";
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
<style scoped>
|
||||||
|
::v-deep .priority-row {
|
||||||
|
background-color: #f56c6c !important;
|
||||||
|
color: #000000 !important;
|
||||||
|
}
|
||||||
|
::v-deep .priority-row td {
|
||||||
|
background-color: #f56c6c !important;
|
||||||
|
color: #000000 !important;
|
||||||
|
border: #f56c6c;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
<style>
|
<style>
|
||||||
.search-container {
|
.search-container {
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
|
|||||||
@@ -221,6 +221,18 @@
|
|||||||
width="80"
|
width="80"
|
||||||
prop="工位名称"
|
prop="工位名称"
|
||||||
/>
|
/>
|
||||||
|
<el-table-column
|
||||||
|
align="center"
|
||||||
|
label="供应商"
|
||||||
|
width="80"
|
||||||
|
prop="供应商"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
align="center"
|
||||||
|
label="采购收货单"
|
||||||
|
width="100"
|
||||||
|
prop="采购收货单"
|
||||||
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
align="center"
|
align="center"
|
||||||
label="加急数量"
|
label="加急数量"
|
||||||
@@ -273,7 +285,7 @@
|
|||||||
width="180"
|
width="180"
|
||||||
prop="检测说明"
|
prop="检测说明"
|
||||||
/>
|
/>
|
||||||
<el-table-column label="操作" align="center" width="250" fixed="right">
|
<el-table-column label="操作" align="center" width="350" fixed="right">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-button
|
<el-button
|
||||||
class="operation-btn"
|
class="operation-btn"
|
||||||
@@ -287,9 +299,15 @@
|
|||||||
type="primary"
|
type="primary"
|
||||||
size="mini"
|
size="mini"
|
||||||
@click="getitemdraw(scope.row)"
|
@click="getitemdraw(scope.row)"
|
||||||
>图纸</el-button
|
>零件图纸</el-button
|
||||||
|
>
|
||||||
|
<el-button
|
||||||
|
class="operation-btn"
|
||||||
|
type="primary"
|
||||||
|
size="mini"
|
||||||
|
@click="getitemdraw2(scope.row)"
|
||||||
|
>工艺图纸</el-button
|
||||||
>
|
>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@@ -586,31 +604,23 @@ export default {
|
|||||||
this.$message.error('未上传图纸');
|
this.$message.error('未上传图纸');
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
// this.ExecDatabase(Data).then(async (response) => {
|
|
||||||
// console.log(response);
|
|
||||||
// if (response.data.length > 0) {
|
|
||||||
// var pdfSrc = "" + this.downPDF + "" + response.data[0].uid + ".pdf";
|
|
||||||
|
|
||||||
// // 1. 先打开对话框
|
},
|
||||||
// this.seeVisible = true;
|
getitemdraw2(row) {
|
||||||
|
var param = [];
|
||||||
|
param[0] = ['物料编号', row.零件编码];
|
||||||
|
var Data = this.CreateData('11', '工艺管理_工艺维护_查看图纸', param);
|
||||||
|
this.ExecDatabase(Data).then(response => {
|
||||||
|
console.log(response)
|
||||||
|
if (response.data.length > 0) {
|
||||||
|
var pdfSrc =""+this.downPDF+""+ response.data[0].uid+".pdf"
|
||||||
|
|
||||||
// // 2. 等待对话框完全渲染(使用 $nextTick 确保 DOM 已更新)
|
window.open(pdfSrc,'_blank')
|
||||||
// await this.$nextTick();
|
}else {
|
||||||
|
this.$message.error('未上传图纸');
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
// // 3. 等待一小段时间确保对话框内的容器完全渲染
|
|
||||||
// setTimeout(async () => {
|
|
||||||
// try {
|
|
||||||
// await seepdf(pdfSrc, 'see');
|
|
||||||
// } catch (error) {
|
|
||||||
// console.error('PDF 渲染失败:', error);
|
|
||||||
// this.$message.error('PDF 渲染失败: ' + error.message);
|
|
||||||
// }
|
|
||||||
// }, 300); // 增加延迟确保 DOM 完全渲染
|
|
||||||
|
|
||||||
// } else {
|
|
||||||
// this.$message.error('未上传图纸');
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
},
|
},
|
||||||
Urgent(row){
|
Urgent(row){
|
||||||
var param = []
|
var param = []
|
||||||
@@ -813,6 +823,7 @@ export default {
|
|||||||
param.push(["检测时间", this.receiveCheckData.检测时间]);
|
param.push(["检测时间", this.receiveCheckData.检测时间]);
|
||||||
param.push(["检测说明", this.receiveCheckData.检测说明]);
|
param.push(["检测说明", this.receiveCheckData.检测说明]);
|
||||||
param.push(["放行数量", this.receiveCheckData.放行数量]);
|
param.push(["放行数量", this.receiveCheckData.放行数量]);
|
||||||
|
param.push(["工位名称", this.receiveCheckData.工位名称]);
|
||||||
console.log(param);
|
console.log(param);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -965,6 +965,7 @@ export default {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// 调用存储过程保存数据
|
// 调用存储过程保存数据
|
||||||
|
this.receiveCheckVisible = false;
|
||||||
this.saveReceiveCheck();
|
this.saveReceiveCheck();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -40,7 +40,7 @@
|
|||||||
format="yyyy-MM-dd"
|
format="yyyy-MM-dd"
|
||||||
value-format="yyyy-MM-dd"
|
value-format="yyyy-MM-dd"
|
||||||
style="width: 150px; margin-right: 10px" />
|
style="width: 150px; margin-right: 10px" />
|
||||||
<el-button :disabled="!!loading" icon="el-icon-search" plain type="primary" @click="searchTable()">查询</el-button>
|
<el-button :disabled="!!loading" icon="el-icon-search" plain type="primary" @click="handleSearch">查询</el-button>
|
||||||
<el-button style="width: 100px;" icon="el-icon-download" type="primary" @click="exportExcel">Excel导出</el-button>
|
<el-button style="width: 100px;" icon="el-icon-download" type="primary" @click="exportExcel">Excel导出</el-button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -165,10 +165,10 @@ export default {
|
|||||||
param.push(["质检类型", this.QualityStatus]);
|
param.push(["质检类型", this.QualityStatus]);
|
||||||
param.push(["开始日期", this.startDate]);
|
param.push(["开始日期", this.startDate]);
|
||||||
param.push(["结束日期", this.endDate]);
|
param.push(["结束日期", this.endDate]);
|
||||||
param.push(["订单号", this.orderNo ]);
|
param.push(["订单号", this.normalizeQueryValue(this.orderNo) ]);
|
||||||
param.push(["合同号", this.contractNo ]);
|
param.push(["合同号", this.normalizeQueryValue(this.contractNo) ]);
|
||||||
param.push(["零件编码", this.productCode ]);
|
param.push(["零件编码", this.normalizeQueryValue(this.productCode) ]);
|
||||||
param.push(["零件名称", this.productName ]);
|
param.push(["零件名称", this.normalizeQueryValue(this.productName) ]);
|
||||||
|
|
||||||
this.exporting = true
|
this.exporting = true
|
||||||
const Data = this.CreateData('2001', '质量管理_质检明细_导出', param)
|
const Data = this.CreateData('2001', '质量管理_质检明细_导出', param)
|
||||||
@@ -218,6 +218,11 @@ export default {
|
|||||||
|
|
||||||
|
|
||||||
// ============ 分页方法 ============
|
// ============ 分页方法 ============
|
||||||
|
handleSearch() {
|
||||||
|
this.pageCurrent = 1
|
||||||
|
this.searchTable()
|
||||||
|
},
|
||||||
|
|
||||||
handleSizeChanges(val) {
|
handleSizeChanges(val) {
|
||||||
this.pageCurrent = 1
|
this.pageCurrent = 1
|
||||||
this.pageSize = val
|
this.pageSize = val
|
||||||
@@ -236,12 +241,12 @@ export default {
|
|||||||
param.push(["质检类型", this.QualityStatus]);
|
param.push(["质检类型", this.QualityStatus]);
|
||||||
param.push(["开始日期", this.startDate]);
|
param.push(["开始日期", this.startDate]);
|
||||||
param.push(["结束日期", this.endDate]);
|
param.push(["结束日期", this.endDate]);
|
||||||
param.push(["订单号", this.orderNo ]);
|
param.push(["订单号", this.normalizeQueryValue(this.orderNo) ]);
|
||||||
param.push(["合同号", this.contractNo ]);
|
param.push(["合同号", this.normalizeQueryValue(this.contractNo) ]);
|
||||||
param.push(["零件编码", this.productCode ]);
|
param.push(["零件编码", this.normalizeQueryValue(this.productCode) ]);
|
||||||
param.push(["零件名称", this.productName ]);
|
param.push(["零件名称", this.normalizeQueryValue(this.productName) ]);
|
||||||
param.push(['PageCurrent', this.pageCurrent])
|
param.push(['PageCurrent', this.pageCurrent])
|
||||||
param.push(['pageSize', this.pageSize])
|
param.push(['PageSize', this.pageSize])
|
||||||
param.push(['PageCount', '1111', 'int', '1'])
|
param.push(['PageCount', '1111', 'int', '1'])
|
||||||
param.push(['ItemCount', '1111', 'int', '1'])
|
param.push(['ItemCount', '1111', 'int', '1'])
|
||||||
|
|
||||||
@@ -258,6 +263,10 @@ export default {
|
|||||||
|
|
||||||
// ============ 工具方法 ============
|
// ============ 工具方法 ============
|
||||||
|
|
||||||
|
normalizeQueryValue(value) {
|
||||||
|
return value === null || value === undefined || value === '' ? '0' : value
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
getCurrentUser() {
|
getCurrentUser() {
|
||||||
return this.$store.state.user.name
|
return this.$store.state.user.name
|
||||||
|
|||||||
@@ -0,0 +1,247 @@
|
|||||||
|
<template>
|
||||||
|
<div class="test-assembly-task">
|
||||||
|
<el-card>
|
||||||
|
<div class="search-container">
|
||||||
|
<span class="show-text">任务类型:</span>
|
||||||
|
<el-select
|
||||||
|
v-model="taskType"
|
||||||
|
placeholder="请选择任务类型"
|
||||||
|
style="width: 150px; margin-right: 10px"
|
||||||
|
@change="searchTable"
|
||||||
|
>
|
||||||
|
<el-option label="全部" value="全部" />
|
||||||
|
<el-option label="阀类" value="阀类" />
|
||||||
|
<el-option label="系统类" value="系统类" />
|
||||||
|
</el-select>
|
||||||
|
<span class="show-text">生产订单:</span>
|
||||||
|
<el-input
|
||||||
|
v-model="productionOrder"
|
||||||
|
placeholder="请输入生产订单"
|
||||||
|
clearable
|
||||||
|
style="width: 150px; margin-right: 10px"
|
||||||
|
@keyup.enter.native="searchTable"
|
||||||
|
/>
|
||||||
|
<span class="show-text">销售订单:</span>
|
||||||
|
<el-input
|
||||||
|
v-model="salesOrder"
|
||||||
|
placeholder="请输入销售订单"
|
||||||
|
clearable
|
||||||
|
style="width: 150px; margin-right: 10px"
|
||||||
|
@keyup.enter.native="searchTable"
|
||||||
|
/>
|
||||||
|
<span class="show-text">物料名称:</span>
|
||||||
|
<el-input
|
||||||
|
v-model="materialName"
|
||||||
|
placeholder="请输入物料名称"
|
||||||
|
clearable
|
||||||
|
style="width: 160px; margin-right: 10px"
|
||||||
|
@keyup.enter.native="searchTable"
|
||||||
|
/>
|
||||||
|
<span class="show-text">物料编码:</span>
|
||||||
|
<el-input
|
||||||
|
v-model="materialCode"
|
||||||
|
placeholder="请输入物料编码"
|
||||||
|
clearable
|
||||||
|
style="width: 180px; margin-right: 10px"
|
||||||
|
@keyup.enter.native="searchTable"
|
||||||
|
/>
|
||||||
|
<el-button :disabled="loading" icon="el-icon-search" plain type="primary" @click="searchTable">查询</el-button>
|
||||||
|
<el-button :disabled="loading" icon="el-icon-download" plain type="success" @click="exportToExcel">导出</el-button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<el-table
|
||||||
|
v-loading="loading"
|
||||||
|
:data="tableData"
|
||||||
|
:height="'72vh'"
|
||||||
|
border
|
||||||
|
element-loading-background="rgba(0, 0, 0, 0.2)"
|
||||||
|
element-loading-spinner="el-icon-loading"
|
||||||
|
highlight-current-row
|
||||||
|
:row-class-name="tableRowClassName"
|
||||||
|
size="mini"
|
||||||
|
style="width: 100%; margin-top: 20px"
|
||||||
|
tooltip-effect="dark"
|
||||||
|
>
|
||||||
|
<el-table-column align="center" label="序号" type="index" width="60" fixed />
|
||||||
|
<el-table-column align="center" prop="预计送检日期" label="预计送检日期" width="120" fixed show-overflow-tooltip >
|
||||||
|
<template slot-scope="scope">
|
||||||
|
{{ formatDate(scope.row.预计送检日期) }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" prop="销售订单" label="销售订单" width="120" fixed show-overflow-tooltip />
|
||||||
|
<el-table-column align="center" prop="生产订单" label="生产订单" width="100" fixed />
|
||||||
|
<el-table-column align="center" prop="物料名称" label="物料名称" width="170" show-overflow-tooltip />
|
||||||
|
<el-table-column align="center" prop="物料编码" label="物料编码" width="180" show-overflow-tooltip />
|
||||||
|
<el-table-column align="center" prop="计划数量" label="计划数量" width="100" />
|
||||||
|
<el-table-column align="center" prop="完成数量" label="完成数量" width="100" />
|
||||||
|
<el-table-column align="center" prop="检验数量" label="检验数量" width="100" />
|
||||||
|
<el-table-column align="center" prop="检验合格数量" label="检验合格数量" width="120" />
|
||||||
|
<el-table-column align="center" prop="检验不合格数量" label="检验不合格数量" width="130" />
|
||||||
|
</el-table>
|
||||||
|
</el-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import * as XLSX from 'xlsx'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'TestAssemblyTask',
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
taskType: '全部',
|
||||||
|
productionOrder: '',
|
||||||
|
salesOrder: '',
|
||||||
|
materialName: '',
|
||||||
|
materialCode: '',
|
||||||
|
loading: false,
|
||||||
|
tableData: []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.searchTable()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
formatDate(date) {
|
||||||
|
if (!date) return ''
|
||||||
|
return date.split(' ').length > 1 ? date.split(' ')[0] : date
|
||||||
|
},
|
||||||
|
tableRowClassName({ row }) {
|
||||||
|
return this.isInspectionUnfinished(row) ? 'inspection-unfinished-row' : ''
|
||||||
|
},
|
||||||
|
searchTable() {
|
||||||
|
this.loading = true
|
||||||
|
const param = []
|
||||||
|
param.push(['任务类型', this.taskType])
|
||||||
|
param.push(['生产订单', this.productionOrder])
|
||||||
|
param.push(['销售订单', this.salesOrder])
|
||||||
|
param.push(['物料名称', this.materialName])
|
||||||
|
param.push(['物料编码', this.materialCode])
|
||||||
|
const data = this.CreateData('11', '质量管理_测试装配任务_查询', param)
|
||||||
|
this.ExecDatabase(data).then(response => {
|
||||||
|
this.tableData = this.sortTableData(response.data || [])
|
||||||
|
}).catch(error => {
|
||||||
|
this.$message.error('查询失败:' + error.message)
|
||||||
|
}).finally(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
exportToExcel() {
|
||||||
|
if (this.tableData.length === 0) {
|
||||||
|
this.$message.warning('没有数据可导出')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
const exportData = this.tableData.map((item, index) => ({
|
||||||
|
序号: index + 1,
|
||||||
|
预计送检日期: this.formatDate(item['预计送检日期']),
|
||||||
|
销售订单: item['销售订单'] || '',
|
||||||
|
生产订单: item['生产订单'] || '',
|
||||||
|
物料名称: item['物料名称'] || '',
|
||||||
|
物料编码: item['物料编码'] || '',
|
||||||
|
计划数量: item['计划数量'] || 0,
|
||||||
|
完成数量: item['完成数量'] || 0,
|
||||||
|
检验数量: item['检验数量'] || 0,
|
||||||
|
检验合格数量: item['检验合格数量'] || 0,
|
||||||
|
检验不合格数量: item['检验不合格数量'] || 0
|
||||||
|
}))
|
||||||
|
|
||||||
|
const wb = XLSX.utils.book_new()
|
||||||
|
const ws = XLSX.utils.json_to_sheet(exportData)
|
||||||
|
ws['!cols'] = [
|
||||||
|
{ wch: 8 },
|
||||||
|
{ wch: 15 },
|
||||||
|
{ wch: 15 },
|
||||||
|
{ wch: 15 },
|
||||||
|
{ wch: 24 },
|
||||||
|
{ wch: 20 },
|
||||||
|
{ wch: 12 },
|
||||||
|
{ wch: 12 },
|
||||||
|
{ wch: 12 },
|
||||||
|
{ wch: 16 },
|
||||||
|
{ wch: 18 }
|
||||||
|
]
|
||||||
|
XLSX.utils.book_append_sheet(wb, ws, '测试装配任务')
|
||||||
|
XLSX.writeFile(wb, `测试装配任务_${this.formatDateForFileName(new Date())}.xlsx`)
|
||||||
|
this.$message.success('导出成功')
|
||||||
|
} catch (error) {
|
||||||
|
console.error('导出失败:', error)
|
||||||
|
this.$message.error('导出失败')
|
||||||
|
}
|
||||||
|
},
|
||||||
|
sortTableData(data) {
|
||||||
|
return data.slice().sort((a, b) => {
|
||||||
|
const unfinishedA = this.isInspectionUnfinished(a)
|
||||||
|
const unfinishedB = this.isInspectionUnfinished(b)
|
||||||
|
|
||||||
|
if (unfinishedA !== unfinishedB) {
|
||||||
|
return unfinishedA ? -1 : 1
|
||||||
|
}
|
||||||
|
|
||||||
|
const timeA = this.getDateTime(a['预计送检日期'])
|
||||||
|
const timeB = this.getDateTime(b['预计送检日期'])
|
||||||
|
|
||||||
|
if (timeA === timeB) {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
if (timeA === Infinity) {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
if (timeB === Infinity) {
|
||||||
|
return -1
|
||||||
|
}
|
||||||
|
return timeA - timeB
|
||||||
|
})
|
||||||
|
},
|
||||||
|
isInspectionUnfinished(row) {
|
||||||
|
return this.getNumber(row['完成数量']) > this.getNumber(row['检验数量'])
|
||||||
|
},
|
||||||
|
getNumber(value) {
|
||||||
|
if (value === null || value === undefined || value === '') {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
const number = Number(String(value).replace(/,/g, ''))
|
||||||
|
return Number.isNaN(number) ? 0 : number
|
||||||
|
},
|
||||||
|
getDateTime(value) {
|
||||||
|
if (!value) {
|
||||||
|
return Infinity
|
||||||
|
}
|
||||||
|
const time = new Date(String(value).replace(/-/g, '/')).getTime()
|
||||||
|
return Number.isNaN(time) ? Infinity : time
|
||||||
|
},
|
||||||
|
formatDateForFileName(date) {
|
||||||
|
const year = date.getFullYear()
|
||||||
|
const month = String(date.getMonth() + 1).padStart(2, '0')
|
||||||
|
const day = String(date.getDate()).padStart(2, '0')
|
||||||
|
const hours = String(date.getHours()).padStart(2, '0')
|
||||||
|
const minutes = String(date.getMinutes()).padStart(2, '0')
|
||||||
|
const seconds = String(date.getSeconds()).padStart(2, '0')
|
||||||
|
return `${year}${month}${day}_${hours}${minutes}${seconds}`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.test-assembly-task {
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-container {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.show-text {
|
||||||
|
font-size: 14px;
|
||||||
|
margin-right: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .inspection-unfinished-row > td {
|
||||||
|
background-color: #e6a23c !important;
|
||||||
|
color: #1f1f1f;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -52,6 +52,11 @@
|
|||||||
<span type="success">{{ scope.row.roles_function }}</span>
|
<span type="success">{{ scope.row.roles_function }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column align="center" label="班组" prop="班组" show-overflow-tooltip>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span type="success">{{ scope.row.班组 }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column align="center" label="操作" min-width="450">
|
<el-table-column align="center" label="操作" min-width="450">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-button icon="el-icon-refresh-right" style="font-family: MiSans Regular,serif;color: #4d77d6"
|
<el-button icon="el-icon-refresh-right" style="font-family: MiSans Regular,serif;color: #4d77d6"
|
||||||
@@ -111,6 +116,27 @@
|
|||||||
<el-form-item label="工号" prop="account">
|
<el-form-item label="工号" prop="account">
|
||||||
<el-input v-model="form1.account" placeholder="请输入工号" readonly style="width: 240px;border-radius: 4px" />
|
<el-input v-model="form1.account" placeholder="请输入工号" readonly style="width: 240px;border-radius: 4px" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="班组" prop="班组">
|
||||||
|
<el-select
|
||||||
|
v-model="form1.team"
|
||||||
|
clearable
|
||||||
|
placeholder="请选择"
|
||||||
|
style="width: 150px; margin-right: 10px"
|
||||||
|
>
|
||||||
|
<el-option label="装配" value="装配" />
|
||||||
|
<el-option label="电气" value="电气" />
|
||||||
|
<el-option label="机加" value="机加" />
|
||||||
|
<el-option label="质检" value="质检" />
|
||||||
|
<el-option label="技术" value="技术" />
|
||||||
|
<el-option label="计划" value="计划" />
|
||||||
|
<el-option label="库房" value="库房" />
|
||||||
|
<el-option label="采购" value="采购" />
|
||||||
|
<el-option label="销售" value="销售" />
|
||||||
|
<el-option label="售后" value="售后" />
|
||||||
|
<el-option label="工艺" value="工艺" />
|
||||||
|
<el-option label="其他" value="其他" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
<!-- <el-form-item label="密码" prop="password">-->
|
<!-- <el-form-item label="密码" prop="password">-->
|
||||||
<!-- <el-input-->
|
<!-- <el-input-->
|
||||||
<!-- v-model="form1.password"-->
|
<!-- v-model="form1.password"-->
|
||||||
@@ -167,7 +193,8 @@ export default {
|
|||||||
PersonalName: '',
|
PersonalName: '',
|
||||||
account: '',
|
account: '',
|
||||||
password: '',
|
password: '',
|
||||||
PersonalroleValue: ''
|
PersonalroleValue: '',
|
||||||
|
team:''
|
||||||
},
|
},
|
||||||
rules1: {
|
rules1: {
|
||||||
PersonalName: [{ required: true, message: '请输入姓名', trigger: 'blur' }],
|
PersonalName: [{ required: true, message: '请输入姓名', trigger: 'blur' }],
|
||||||
@@ -179,7 +206,8 @@ export default {
|
|||||||
tableData: [],
|
tableData: [],
|
||||||
total: 0, // 总条数
|
total: 0, // 总条数
|
||||||
pageSize: 10, // 每页显示条数
|
pageSize: 10, // 每页显示条数
|
||||||
pageList: 1 // 后台获取页
|
pageList: 1, // 后台获取页
|
||||||
|
team:''
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
@@ -251,7 +279,8 @@ export default {
|
|||||||
password: response.data.result[i].password,
|
password: response.data.result[i].password,
|
||||||
roles_number: parseInt(response.data.result[i].Roles_number),
|
roles_number: parseInt(response.data.result[i].Roles_number),
|
||||||
roles_function: response.data.result[i].Roles_Function,
|
roles_function: response.data.result[i].Roles_Function,
|
||||||
isClient: response.data.result[i].isClient
|
isClient: response.data.result[i].isClient,
|
||||||
|
班组:response.data.result[i].班组
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -270,6 +299,7 @@ export default {
|
|||||||
this.form1.account = row.account
|
this.form1.account = row.account
|
||||||
this.form1.password = row.password
|
this.form1.password = row.password
|
||||||
this.form1.PersonalroleValue = row.roles_number
|
this.form1.PersonalroleValue = row.roles_number
|
||||||
|
this.form1.team = row.班组
|
||||||
this.title1 = '编辑人员'
|
this.title1 = '编辑人员'
|
||||||
this.dialogFormVisible1 = true
|
this.dialogFormVisible1 = true
|
||||||
},
|
},
|
||||||
@@ -284,6 +314,7 @@ export default {
|
|||||||
param[2] = ['password', this.form1.password]
|
param[2] = ['password', this.form1.password]
|
||||||
param[3] = ['Personnel_Name', this.form1.PersonalName]
|
param[3] = ['Personnel_Name', this.form1.PersonalName]
|
||||||
param[4] = ['Roles_number', this.form1.PersonalroleValue]
|
param[4] = ['Roles_number', this.form1.PersonalroleValue]
|
||||||
|
param[5] = ['班组', this.form1.team]
|
||||||
if (this.form1.account === '' || this.form1.account === null) {
|
if (this.form1.account === '' || this.form1.account === null) {
|
||||||
this.$message.error('请输入工号')
|
this.$message.error('请输入工号')
|
||||||
} else if (this.form1.password === '' || this.form1.password === null) {
|
} else if (this.form1.password === '' || this.form1.password === null) {
|
||||||
|
|||||||
77
MES_Manage_View_V20/今后开发计划_2026-05-27.md
Normal file
77
MES_Manage_View_V20/今后开发计划_2026-05-27.md
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
# 今后开发计划与新增需求分析记录
|
||||||
|
|
||||||
|
生成日期:2026-05-27
|
||||||
|
项目:MES_Manage_View_V20
|
||||||
|
|
||||||
|
## 一、排期口径
|
||||||
|
|
||||||
|
- 按“最终调整”数字从小到大排序。
|
||||||
|
- 从 2026-05-28 开始排期。
|
||||||
|
- 按工作日递推,跳过周六、周日。
|
||||||
|
- 跳过端午节、中秋节、国庆节法定放假日期。
|
||||||
|
- 调休日按工作日处理。
|
||||||
|
- 暂按单开发线串行排期。
|
||||||
|
|
||||||
|
节假日口径:
|
||||||
|
|
||||||
|
- 端午节:2026-06-19 至 2026-06-21。
|
||||||
|
- 中秋节:2026-09-25 至 2026-09-27。
|
||||||
|
- 国庆节:2026-10-01 至 2026-10-07。
|
||||||
|
- 调休上班日:2026-09-20、2026-10-10。
|
||||||
|
|
||||||
|
## 二、开发计划排期
|
||||||
|
|
||||||
|
| 顺序 | 需求 | 预估 | 开始 | 结束 | 备注 |
|
||||||
|
|---:|---|---:|---|---|---|
|
||||||
|
| 1 | 及时开工报表 | 1天 | 5.28 | 5.29 | 增加正选/反选查询 |
|
||||||
|
| 2 | 机加件排产-表单 | 4天 | 5.29 | 6.04 | 日期筛选优化 + 历史工时查询;SAP新增字段不算MES开发 |
|
||||||
|
| 3 | 装配已排产需求 | 12天 | 6.04 | 6.23 | 大需求,建议分阶段交付 |
|
||||||
|
| 4 | 生产日报-送检(机加/装配) | 3天 | 6.23 | 6.26 | 建议统一报表,部门做筛选维度 |
|
||||||
|
| 5 | 及时齐套跟踪结果报表 | 5天 | 6.26 | 7.03 | 依赖SAP缺件明细实时接口 |
|
||||||
|
| 6 | 生产计划跟踪 | 3天 | 7.03 | 7.08 | 工序状态、颜色、标准工时、订单状态 |
|
||||||
|
| 7 | 外协任务检验 | 3天 | 7.08 | 7.13 | 增加指派对象、供应商、SAP采购收货单号 |
|
||||||
|
| 8 | 异常管控 | 5天 | 7.13 | 7.20 | 报工页面直接报异常,多审批人可见一人处理 |
|
||||||
|
| 9 | 机加班次产量表 | 3天 | 7.20 | 7.23 | 新增报表 |
|
||||||
|
| 10 | 发货通知列表 | 1天 | 7.23 | 7.24 | SAP数据已提供,可新增查询报表 |
|
||||||
|
| 11 | 质检任务早知道 | 1天 | 7.24 | 7.27 | 依赖“装配已排产需求”的装配完成时间 |
|
||||||
|
| 12 | 生产工艺 | 2天 | 7.27 | 7.29 | 无生产工艺时自动带出标准工艺 |
|
||||||
|
| 13 | 工时报表 + 备注类小改 | 2天 | 7.29 | 7.31 | 指派对象、机加领料备注、机加/装配退库备注、保存提示等合并处理 |
|
||||||
|
| 14 | 生产订单关闭 | 4天 | 7.31 | 8.06 | 批量更新SAP订单状态,风险较高 |
|
||||||
|
| 15 | 及时检验报表 | 4天 | 8.06 | 8.12 | 报工超过2天未检验 |
|
||||||
|
| 16 | 工序流转卡 | 1天 | 8.12 | 8.13 | 增加打印原料编码 |
|
||||||
|
| 17 | 一楼质检大屏幕 | 4天 | 8.13 | 8.19 | 及时率、关键工序 |
|
||||||
|
| 18 | 机加现场大屏幕 | 3天 | 8.19 | 8.24 | 缺勤、关键工序 |
|
||||||
|
| 19 | 装配现场大屏幕 | 4天 | 8.24 | 8.28 | 缺勤、及时送检 |
|
||||||
|
| 20 | 编程任务清单 | 4天 | 8.28 | 9.03 | 按装配类似逻辑做编程报工 |
|
||||||
|
| 21 | 设备档案管理 | 2天 | 9.03 | 9.07 | 需先确认字段归属 |
|
||||||
|
| 22 | 设备数据采集 | 8天 | 9.07 | 9.17 | 采集接口、落库、状态汇总 |
|
||||||
|
| 23 | 设备指标/OEE | 6天 | 9.17 | 9.24 | 依赖设备采集和标准工时口径 |
|
||||||
|
| 24 | 工时查询-设备采集联动 | 2天 | 9.24 | 9.29 | 程序工时字段对接采集数据 |
|
||||||
|
| 25 | 手续确认报表 | 3天 | 9.29 | 10.09 | 装配/电气齐套列表 + 手续确认 |
|
||||||
|
| 26 | 产品合格率(工位) | 3天 | 10.09 | 10.13 | 需确认良品/总产量口径 |
|
||||||
|
| 27 | 让步接收记录 | 2天 | 10.13 | 10.15 | 新增查询页面 |
|
||||||
|
| 28 | 设计任务报工模块 | 6天 | 10.15 | 10.23 | MES自建设计任务、设计工时 |
|
||||||
|
| 29 | 工时异常报表 | 2天 | 10.23 | 10.27 | 依赖标准工时和实际单件工时 |
|
||||||
|
| 30 | 正在加工状态 | 1天 | 10.27 | 10.28 | 机加正在进行中状态 |
|
||||||
|
|
||||||
|
## 三、暂不直接排期 / 需等前置条件
|
||||||
|
|
||||||
|
| 需求 | 原因 |
|
||||||
|
|---|---|
|
||||||
|
| 及时拣配(机加)MES | 等SAP数据、条码规则、状态写回规则 |
|
||||||
|
| 及时拣配(装配)MES | 等SAP数据、条码规则、状态写回规则 |
|
||||||
|
| 及时送检报表 | 需确认发料齐套时间/SAP字段是否稳定;若SAP数据已到,可插入0.5天 |
|
||||||
|
| 工艺内容修改 | 已开工任务怎么处理未定 |
|
||||||
|
| 标牌打印操作 | 需求未确定 |
|
||||||
|
| 首检、巡检 | 需求内容为空,无法估时 |
|
||||||
|
| 外协采购订单收检结果 | 需求内容为空,无法估时 |
|
||||||
|
| 不合格品单据打印 | 需求内容为空,无法估时 |
|
||||||
|
|
||||||
|
## 四、排期结论
|
||||||
|
|
||||||
|
按以上单线工作日计划,已明确可做事项预计到 2026-10-28 完成。
|
||||||
|
|
||||||
|
实际执行建议先做 5.28 到 6.23 的前三项,因为它们优先级最高,且“装配已排产需求”会影响后面的质检早知道、日计划、及时送检等需求。
|
||||||
|
|
||||||
|
## 五、新增需求分析与开发记录原文
|
||||||
|
|
||||||
BIN
MES_Manage_View_V20/今后开发计划与新增需求分析记录_2026-05-27.docx
Normal file
BIN
MES_Manage_View_V20/今后开发计划与新增需求分析记录_2026-05-27.docx
Normal file
Binary file not shown.
137
MES_Manage_View_V20/今日工作汇报_2026-05-23.txt
Normal file
137
MES_Manage_View_V20/今日工作汇报_2026-05-23.txt
Normal file
@@ -0,0 +1,137 @@
|
|||||||
|
今日工作汇报
|
||||||
|
|
||||||
|
日期:2026年5月23日
|
||||||
|
|
||||||
|
一、今日已处理问题
|
||||||
|
|
||||||
|
1. 修复采购收货检备注问题
|
||||||
|
已处理采购收货检验相关备注字段异常,保证备注信息能够正常记录、查询和展示。
|
||||||
|
|
||||||
|
2. 查询序检因已入库导致质检失败的原因
|
||||||
|
已排查序检过程中因生产订单或物料已入库导致质检失败的问题,明确该类失败与当前入库状态校验逻辑有关,后续如需优化,需要结合入库状态、质检状态和业务允许范围进一步确认处理规则。
|
||||||
|
|
||||||
|
3. 修改生产任务看板未按期齐套任务数据
|
||||||
|
已调整生产任务看板中“未按期齐套任务”相关数据逻辑,修正看板展示数据与实际业务状态不一致的问题。
|
||||||
|
|
||||||
|
二、今日需求分析记录
|
||||||
|
|
||||||
|
1. 工艺内容修改
|
||||||
|
已分析该需求。由于涉及已开工任务,当前结论是不允许直接修改。后续如要支持,需要设计工艺版本、任务快照和已开工任务处理规则,目前暂不开发。
|
||||||
|
|
||||||
|
2. 机加件排产-表单
|
||||||
|
已分析计划开始时间、计划完成时间筛选逻辑,后续改为按单日期查询。
|
||||||
|
同时分析新增历史工时查询:在机加件已排产页面增加总工时字段,点击后弹窗查看明细,按设备、日期分组显示生产任务和工时合计,查询方式参考工时查询页面。
|
||||||
|
|
||||||
|
3. 工序流转卡
|
||||||
|
已确认打印内容需要增加原料编码,开发周期约0.2天。
|
||||||
|
|
||||||
|
4. 生产计划跟踪
|
||||||
|
已分析当前序展示逻辑。后续需要在当前序中显示完整工艺路线,并根据任务状态判断哪道序正在加工、哪些序等待加工。
|
||||||
|
进度显示规则示例:当前工序加工中显示“打磨中”,当前工序完成后显示“打磨毕待喷漆”。
|
||||||
|
括号内容为指派对象,外协工序括号中也显示指派对象。
|
||||||
|
同时需要增加标准工时和订单状态字段。
|
||||||
|
|
||||||
|
5. 设计任务报工模块
|
||||||
|
已分析该模块为MES自建任务,不依赖生产订单,不上传SAP。
|
||||||
|
设计工时单独记录,后续用于报表和工时统计。
|
||||||
|
质量、装配、机加工时分别来自各自业务模块,后续可按系统角色权限区分。
|
||||||
|
|
||||||
|
6. 工时报表
|
||||||
|
已确认作业者工时新增指派对象字段,开发周期约0.1天。
|
||||||
|
作业者工时一对多计算问题当前暂不修改,因为当前版本已不再按旧逻辑计算,需要后续重新确认规则。
|
||||||
|
|
||||||
|
7. 工时查询
|
||||||
|
程序工时字段需要结合设备数据采集计算,后续可能新增设备信息。目前等待设备采集数据,不进入开发。
|
||||||
|
|
||||||
|
8. 生产领料(补充)-机加
|
||||||
|
已确认领料单需要新增备注字段,开发周期约0.2天。
|
||||||
|
|
||||||
|
9. 生产退库-机加
|
||||||
|
已确认按照装配退库方式增加备注字段,开发周期约0.2天。
|
||||||
|
|
||||||
|
10. 生产退库-装配
|
||||||
|
已确认需要增加备注字段,开发周期约0.1天。
|
||||||
|
|
||||||
|
11. 机加班次产量表
|
||||||
|
已分析为新增报表,按设备分组,设备下按日期、班次展示每天每班次干了哪些任务,支持时间和班次筛选。
|
||||||
|
|
||||||
|
12. 外协任务报表(采购)
|
||||||
|
已确认增加采购到货期说明字段,开发周期约0.1天。
|
||||||
|
|
||||||
|
13. 外协任务检验 / 序检
|
||||||
|
已分析需要记录指派对象、供应商、SAP采购收货单号。
|
||||||
|
当前表中没有记录设备,只记录工序,所以后续如果要做设备合格率暂时无法实现;增加供应商后,可以支持外协供应商合格率相关统计。
|
||||||
|
|
||||||
|
14. 手续确认报表
|
||||||
|
已分析为新增页面。装配、电气发料齐套时间列表合并显示,展示内容参考装配中心。
|
||||||
|
新增“手续确认”字段,点击选择已完成后消失。
|
||||||
|
消失条件包括:手续确认已完成、生产订单取消/关闭、整单已入库。
|
||||||
|
|
||||||
|
15. 及时检验报表
|
||||||
|
已分析为新增报表。统计生产报工完成后超过2天未检验的任务。
|
||||||
|
数据依据为[YL_加工中心_操作记录表],条件包括操作类别为报工、操作数值大于0,并以结束时间作为起算时间。
|
||||||
|
|
||||||
|
16. 及时齐套跟踪结果报表
|
||||||
|
已分析为新增报表。缺件明细为实时数据,来源SAP,通过生产订单号查询加急件明细。
|
||||||
|
缺料物料的生产订单号需要绑定主生产订单号,支持多个子订单包含关系。
|
||||||
|
页面需要支持展开查看缺件明细,并显示当前进度、排序、预计完成时间、预计可执行时间等信息。
|
||||||
|
|
||||||
|
17. 及时送检报表
|
||||||
|
已确认为新需求,基于发料齐套时间,SAP数据已到,预计开发周期约0.5天。
|
||||||
|
|
||||||
|
18. 生产日报-送检(机加 / 装配)
|
||||||
|
已分析后续可能根据多个部门拆分多个报表,也可以先按部门筛选方式设计,避免重复开发。
|
||||||
|
|
||||||
|
19. 编程任务清单
|
||||||
|
已分析本质为编程报工,类似装配中心的任务列表算法。
|
||||||
|
后续需要按设备展示任务清单,并支持编程开始、结束、工时统计等功能。
|
||||||
|
|
||||||
|
20. 标牌打印操作
|
||||||
|
当前需求未确定,暂不排开发周期。
|
||||||
|
|
||||||
|
21. 发货通知列表
|
||||||
|
SAP已提供数据,大屏已显示,后续需要新增报表页面,预计开发周期约0.5天。
|
||||||
|
|
||||||
|
22. 生产订单关闭
|
||||||
|
已分析需要新增批量更新SAP订单状态功能。
|
||||||
|
后续开发时需要支持批量选择、调用SAP、记录成功失败结果,并防止重复关闭。
|
||||||
|
|
||||||
|
23. 制定标准工艺
|
||||||
|
已确认点击保存时增加提示信息,开发周期约0.1天。
|
||||||
|
|
||||||
|
24. 生产工艺
|
||||||
|
已分析编辑时如果没有生产工艺,需要自动带出标准工艺。
|
||||||
|
带出内容作为编辑草稿,不应直接覆盖保存,避免误改生产工艺。
|
||||||
|
|
||||||
|
25. 异常管控
|
||||||
|
已分析报工页面需要支持选择任务后直接报异常,不再进入异常页面后重新选择任务。
|
||||||
|
审批人改为多选,一人处理即可,其他被选审批人也能看到任务。
|
||||||
|
审批人来源不固定,可能来自部门、角色、组织层级或任意人员,因此都需要支持。
|
||||||
|
|
||||||
|
26. 及时开工报表
|
||||||
|
已分析当前是指派对象反选查询,客户还需要正选查询页面。
|
||||||
|
后续需要支持指派对象正选和反选两种查询方式。
|
||||||
|
|
||||||
|
27. 让步接收记录
|
||||||
|
已分析为新增查询页面。数据来源为质检记录中让步接收字段不为空的数据。
|
||||||
|
|
||||||
|
28. 装配已排产需求
|
||||||
|
已完成重点分析。该需求需要新增装配已排产需求界面,增加系统/非系统筛选。
|
||||||
|
高压单元为系统,阀类为非系统,判断方式暂按物料名称关键字。
|
||||||
|
新增装配完成时间,来源为发料齐套时间加3天,可手动修改,字段落库到生产计划表。
|
||||||
|
还需要显示SAP派工时间、合同交货期,增加钣金预达、钣金到达、泵、当前对应人员、当前对应内容、累计工时、预计总工时、合同工时汇总、合同进度参考、预计剩余工时、生产异常等字段。
|
||||||
|
工时按装配、质量、设计分类,装配来自装配报工,质量来自质检报工,设计来自新设计任务报工模块。
|
||||||
|
同步需要做日计划报表,按装配完成时间分组,支持导出和打印。
|
||||||
|
|
||||||
|
29. 质检任务早知道
|
||||||
|
已分析为新增页面,基于装配已排产需求中的装配完成时间,去掉已完成任务后,按装配完成时间分组展示。
|
||||||
|
|
||||||
|
三、今日分析结论
|
||||||
|
|
||||||
|
今日除已处理的三个问题外,主要完成了新增需求的逐项梳理,明确了哪些可以直接开发、哪些依赖SAP、哪些依赖设备采集、哪些需求暂不明确、哪些当前无法修改。
|
||||||
|
|
||||||
|
其中可直接进入开发的小项包括:工序流转卡原料编码、工时报表指派对象、领料/退库备注、外协采购到货期说明、发货通知列表、标准工艺保存提示等。
|
||||||
|
|
||||||
|
需要重点设计后再开发的需求包括:装配已排产需求、生产计划跟踪、及时齐套跟踪结果报表、设计任务报工、异常管控、手续确认报表。
|
||||||
|
|
||||||
|
依赖外部数据的需求包括:SAP派工时间、合同交货期、发料齐套时间、及时齐套缺件明细、设备数据采集工时。
|
||||||
151
MES_Manage_View_V20/今日工作汇报_2026-05-25.md
Normal file
151
MES_Manage_View_V20/今日工作汇报_2026-05-25.md
Normal file
@@ -0,0 +1,151 @@
|
|||||||
|
# 元利 MES 项目 — 今日工作汇报
|
||||||
|
|
||||||
|
日期:2026-05-25
|
||||||
|
项目:MES_Manage_View_V20
|
||||||
|
|
||||||
|
## 一、今日主要工作
|
||||||
|
|
||||||
|
### 1. 完成 `src/views` 页面与 SAP 交互分析整理
|
||||||
|
|
||||||
|
基于 `元利项目详细分析.md`,对主系统 `src/views` 中涉及 SAP 的页面调用进行了梳理,明确了 SAP 交互主要集中在以下业务链路:
|
||||||
|
|
||||||
|
| 业务链路 | 涉及页面 | SAP 交互内容 |
|
||||||
|
|---|---|---|
|
||||||
|
| 机加/装配排产 | `SelfMakePlan`、`SelfMakePlando`、`SelfMakePlandone`、`InstallMakePlan`、`InstallMakePlanDo` | 回写 SAP 生产订单计划日期、派工信息、优先级、未完成说明 |
|
||||||
|
| 生产订单关闭 | `PlannOrderClose` | 更新 SAP 生产订单关闭状态 |
|
||||||
|
| 工序基础数据 | `ProcedureManagement` | 新增、查询、修改 SAP RouteStages |
|
||||||
|
| 工位资源维护 | `WorkstationManagement` | 新增、修改 SAP Resources |
|
||||||
|
| 外协业务 | `OutsourceMange`、`SaleOutsourceMange`、装配排产相关页面 | 创建 SAP 采购申请 |
|
||||||
|
| 工时校验/投料 | `WorkHoursCheck` | 查询 SAP 生产订单、更新工序资源、提交 InventoryGenExits |
|
||||||
|
| 质检/收货 | `processReceive`、`materialReturn`、`QualityCenter` | 查询 SAP 订单、创建采购收货单、生成库存任务 |
|
||||||
|
|
||||||
|
分析结论:
|
||||||
|
- 当前系统不是单点 SAP 对接,而是计划、工艺、工位、生产、外协、质检、工时多个模块共同对接 SAP。
|
||||||
|
- SAP 写操作失败会造成 MES 与 SAP 状态不一致,需要在后续开发中保留失败原因、同步状态和重试依据。
|
||||||
|
- 生产订单关闭、工时校验、外协采购申请、采购收货是高风险操作,需要重点检查重复提交和半成功问题。
|
||||||
|
|
||||||
|
### 2. 生成元利项目详细流程图
|
||||||
|
|
||||||
|
已根据 `元利项目详细分析.md` 生成:
|
||||||
|
|
||||||
|
- `元利项目详细流程图.md`
|
||||||
|
|
||||||
|
内容包括:
|
||||||
|
- 系统总体架构流程
|
||||||
|
- 登录、菜单、权限流程
|
||||||
|
- 基础资料维护流程
|
||||||
|
- 标准工艺/生产工艺流程
|
||||||
|
- 机加排产与 SAP 回写流程
|
||||||
|
- 装配排产与采购申请流程
|
||||||
|
- 机加生产执行流程
|
||||||
|
- 装配中心执行流程
|
||||||
|
- 质检流程
|
||||||
|
- 外协流程
|
||||||
|
- 工时校验与 SAP 投料流程
|
||||||
|
- 异常管控流程
|
||||||
|
- 生产订单关闭与 SAP 状态同步流程
|
||||||
|
- 看板数据汇总流程
|
||||||
|
- 新增需求与维护入口判断流程
|
||||||
|
|
||||||
|
### 3. 生成新增需求界面原型设计
|
||||||
|
|
||||||
|
已根据 `新增需求分析与开发记录_2026-05-23.md` 生成:
|
||||||
|
|
||||||
|
- `新增需求界面原型设计_2026-05-25.md`
|
||||||
|
|
||||||
|
主要覆盖以下页面原型:
|
||||||
|
- 设计任务报工
|
||||||
|
- 机加班次产量表
|
||||||
|
- 手续确认报表
|
||||||
|
- 及时检验报表
|
||||||
|
- 及时齐套跟踪结果报表
|
||||||
|
- 生产日报-送检
|
||||||
|
- 编程任务清单/编程报工
|
||||||
|
- 让步接收记录
|
||||||
|
- 装配已排产需求
|
||||||
|
- 质检任务早知道
|
||||||
|
- 及时送检报表
|
||||||
|
- 发货通知列表
|
||||||
|
- 工时异常报表
|
||||||
|
|
||||||
|
同时补充了现有页面改造说明,包括机加已排产、生产计划跟踪、序检收检、生产订单关闭、生产工艺、异常管控、及时开工报表、工时报表、领料/退库/外协小字段等。
|
||||||
|
|
||||||
|
### 4. 生成元利项目详细用户使用说明书
|
||||||
|
|
||||||
|
已根据 `元利项目详细分析.md` 生成:
|
||||||
|
|
||||||
|
- `元利项目详细用户使用说明书.md`
|
||||||
|
|
||||||
|
内容覆盖:
|
||||||
|
- 登录与通用操作
|
||||||
|
- 基础资料维护
|
||||||
|
- 工艺与图纸管理
|
||||||
|
- 计划排产管理
|
||||||
|
- 生产执行管理
|
||||||
|
- 外协业务
|
||||||
|
- 质检管理
|
||||||
|
- 工时与报表
|
||||||
|
- 异常管控
|
||||||
|
- 设备管理与采集
|
||||||
|
- 看板使用
|
||||||
|
- 销售与交付查询
|
||||||
|
- 新增需求相关页面使用
|
||||||
|
- 系统维护
|
||||||
|
- 常见问题和名词解释
|
||||||
|
|
||||||
|
### 5. 修正新增需求分析口径
|
||||||
|
|
||||||
|
对前期新增需求分析进行了补充修正,重点明确不能只判断“是否新增页面”,还必须判断:
|
||||||
|
|
||||||
|
1. 数据来源是什么。
|
||||||
|
2. 字段在哪里维护。
|
||||||
|
3. 是否已有业务页面承载。
|
||||||
|
4. 是否需要新增维护页面。
|
||||||
|
5. 是否影响历史任务、报表和看板。
|
||||||
|
|
||||||
|
已补充的关键结论:
|
||||||
|
- 缺勤人员不能从“没有报工”反推,必须有应到人员和实到人员来源。
|
||||||
|
- 关键工序应在标准工艺和生产工艺中维护,任务下发时做快照。
|
||||||
|
- 看板只读取缺勤、关键工序、OEE、及时率等指标,不作为主维护入口。
|
||||||
|
|
||||||
|
## 二、今日修改工作
|
||||||
|
|
||||||
|
### 1. 工时校验报工培训
|
||||||
|
|
||||||
|
今日进行了工时校验和报工相关培训,重点说明:
|
||||||
|
- 报工数据与工时校验之间的关系。
|
||||||
|
- MES 工时与 SAP 工时提交的关系。
|
||||||
|
- 工时校验页面中 SAP 订单、工序、资源、投料的核对方式。
|
||||||
|
- SAP 提交失败时需要查看失败原因,避免重复提交。
|
||||||
|
|
||||||
|
### 2. 质检历史数据修复
|
||||||
|
|
||||||
|
已处理质检历史数据修复工作,重点围绕历史质检记录、任务状态和相关查询口径进行校正,减少历史数据对当前质检查询和报表统计的影响。
|
||||||
|
|
||||||
|
### 3. 修改生产订单关闭判断条件
|
||||||
|
|
||||||
|
已修改生产订单关闭相关判断条件,调整关闭前校验逻辑,避免不符合条件的订单被错误关闭,同时减少已完成、已入库、已取消等状态判断不一致带来的问题。
|
||||||
|
|
||||||
|
### 4. 修复休息日加班和法定加班计算 Bug
|
||||||
|
|
||||||
|
已修复休息日加班和法定加班计算异常问题,调整加班类型对应的计算逻辑,避免休息日加班和法定加班工时统计错误。
|
||||||
|
|
||||||
|
## 三、今日产出文档
|
||||||
|
|
||||||
|
| 文档 | 说明 |
|
||||||
|
|---|---|
|
||||||
|
| `元利项目详细流程图.md` | 根据详细分析生成系统级和业务级流程图 |
|
||||||
|
| `新增需求界面原型设计_2026-05-25.md` | 根据新增需求生成界面原型和页面说明 |
|
||||||
|
| `元利项目详细用户使用说明书.md` | 根据详细分析生成面向用户的完整操作说明 |
|
||||||
|
| `新增需求分析与开发记录_2026-05-23.md` | 补充数据来源、维护入口、是否新建页面等分析 |
|
||||||
|
| `隐性需求综合分析_2026-05-25.md` | 补充维护入口和隐性需求判断规则 |
|
||||||
|
| `MES_Manage_View_V20_src_views_逐页面详细分析.md` | 补充页面归属、缺勤、关键工序、看板维护边界说明 |
|
||||||
|
|
||||||
|
## 四、当前结论
|
||||||
|
|
||||||
|
1. 元利 MES 与 SAP 的交互范围较广,后续所有涉及 SAP 写操作的功能都需要补同步状态、失败原因和重试机制。
|
||||||
|
2. 新增需求不能简单按“新增页面”评估,要同步判断维护入口、数据来源、历史数据和看板影响。
|
||||||
|
3. 工时、质检、订单关闭、加班计算属于当前重点稳定性工作,已完成培训和部分修复。
|
||||||
|
4. 后续开发建议优先处理低风险、小范围功能,再推进装配已排产需求、及时齐套、设计/编程报工、OEE 等跨模块功能。
|
||||||
|
|
||||||
|
|
||||||
143
MES_Manage_View_V20/今日工作汇报_2026-05-26.md
Normal file
143
MES_Manage_View_V20/今日工作汇报_2026-05-26.md
Normal file
@@ -0,0 +1,143 @@
|
|||||||
|
# 元利 MES 项目 — 今日工作汇报
|
||||||
|
|
||||||
|
日期:2026-05-26
|
||||||
|
项目:MES_Manage_View_V20
|
||||||
|
|
||||||
|
## 一、今日主要工作
|
||||||
|
|
||||||
|
### 1. 丰富并修改元利项目详细流程图
|
||||||
|
|
||||||
|
今日继续完善 `元利项目详细流程图.md`,在原有系统级流程基础上,进一步补充页面级、业务级流程说明。
|
||||||
|
|
||||||
|
重点补充内容:
|
||||||
|
- 登录、菜单权限、动态路由生成流程。
|
||||||
|
- 工艺、图纸、生产订单、排产、生产执行、质检、外协、工时校验、生产订单关闭等模块之间的衔接关系。
|
||||||
|
- 机加排产、装配排产、机加中心、装配中心、质量中心、工时校验等关键页面的详细业务流。
|
||||||
|
- SAP 回写、SAP 查询、WMS/库存任务、MES 存储过程之间的数据流转关系。
|
||||||
|
- 将流程图尽量调整为“框 + 箭头 + 文字”的形式,减少字母节点指引,便于培训和现场讲解。
|
||||||
|
|
||||||
|
本次调整后,流程图更适合用于:
|
||||||
|
- 给客户讲解整体 MES 业务闭环。
|
||||||
|
- 给实施人员定位页面与数据流关系。
|
||||||
|
- 给开发人员判断新增需求影响范围。
|
||||||
|
|
||||||
|
### 2. 工时校验数据对接梳理
|
||||||
|
|
||||||
|
今日继续梳理工时校验页面与 MES/SAP 数据之间的对接关系,重点围绕 `ProductionManagement/WorkHoursCheck`。
|
||||||
|
|
||||||
|
已梳理内容:
|
||||||
|
- 对接数据时发现装配人员工时数据错误,经检查由于用户重复提交导致的问题
|
||||||
|
- 在排查过程中发现装配人员报工加班时,同时生成了正常报工的工时
|
||||||
|
|
||||||
|
|
||||||
|
### 3. 生产订单关闭培训与相关数据处理
|
||||||
|
|
||||||
|
今日进行了生产订单关闭相关培训和数据处理,重点说明生产订单关闭页面的使用边界。
|
||||||
|
|
||||||
|
培训内容:
|
||||||
|
- 生产订单关闭前需要先确认订单在 MES 中的任务完成情况。
|
||||||
|
- 关闭前需要核对生产订单状态、入库情况、报工情况和 SAP 状态。
|
||||||
|
- 批量关闭时要区分已成功关闭、关闭失败、不能关闭三类结果。
|
||||||
|
- SAP 关闭失败时不应重复点击,应先确认 SAP 返回原因。
|
||||||
|
|
||||||
|
数据处理内容:
|
||||||
|
- 协助检查生产订单关闭相关数据。
|
||||||
|
- 梳理关闭条件与当前订单状态之间的关系。
|
||||||
|
- 对异常数据进行核对,避免误关或重复关闭。
|
||||||
|
|
||||||
|
### 4. 沟通报工结果数据上传到 SAP 的影响
|
||||||
|
|
||||||
|
今日围绕报工结果上传 SAP 的影响进行了沟通和确认。
|
||||||
|
|
||||||
|
沟通重点:
|
||||||
|
- 超过班次工作时间部分的工时 如果不选择加班,系统自动记录这段工时
|
||||||
|
- 这段工时如果上次到SAP会导致其他生成订单工时不准确的问题,因为计算方法核算的是当日总报工时间记为8小时
|
||||||
|
- 这段时间如果上传,就会导致其他工时减少
|
||||||
|
- 休息日/法定时选择不加班工时记录的问题,讨论结果是MES正常记录 但是不传输给SAP
|
||||||
|
|
||||||
|
|
||||||
|
### 5. 修改装配报工数据重复问题
|
||||||
|
|
||||||
|
今日处理装配报工数据重复问题。
|
||||||
|
|
||||||
|
处理重点:
|
||||||
|
- 排查装配报工过程中可能重复写入的数据链路。
|
||||||
|
- 核对装配任务、报工记录、质检/送检记录之间的关联关系。
|
||||||
|
- 调整重复数据产生场景,避免同一任务重复形成报工结果。
|
||||||
|
- 修改后重点关注装配中心报工、送检、任务完成状态的回显是否一致。
|
||||||
|
|
||||||
|
处理结果:
|
||||||
|
- 已针对装配报工重复问题进行修正。
|
||||||
|
- 后续需要继续观察现场报工数据,确认是否仍存在重复写入或重复统计。
|
||||||
|
|
||||||
|
### 6. 丰富并修改用户使用说明书
|
||||||
|
|
||||||
|
今日重点丰富 `元利项目详细用户使用说明书.md`。
|
||||||
|
|
||||||
|
主要修改内容:
|
||||||
|
- 将第 21 章逐页说明整体扩展,不再只写笼统功能说明。
|
||||||
|
- 对 78 个页面按源码逐页补充:
|
||||||
|
- 页面用途
|
||||||
|
- 具体操作步骤
|
||||||
|
- 查询条件/输入项
|
||||||
|
- 结果表重点列
|
||||||
|
- 页面按钮/状态/页签
|
||||||
|
- 弹窗/表单重点项
|
||||||
|
- 后台处理/外部接口
|
||||||
|
- 操作注意事项
|
||||||
|
- 将第 21 章页面标题从英文页面名改为中文页面名,例如:
|
||||||
|
- `WorkHoursCheck` 改为 `工时校验`
|
||||||
|
- `SelfMakePlandone` 改为 `机加已排产`
|
||||||
|
- `MachiningCenter` 改为 `机加中心`
|
||||||
|
- `QualityCenter` 改为 `质量中心`
|
||||||
|
- 对 `机加已排产` 章节进行了重点细化,补充日程拖拽、指派数量、拆分派工、二次派工、原料状态、图纸、外协分组、最晚开始、红色加急排序、SAP 日期同步等操作。
|
||||||
|
|
||||||
|
说明书修改后更适合:
|
||||||
|
- 现场用户培训。
|
||||||
|
- 新员工快速熟悉页面。
|
||||||
|
- 实施人员按页面排查问题。
|
||||||
|
- 后续新增需求评审时对照现有功能。
|
||||||
|
|
||||||
|
### 7. 修改原料退库检,增加加急显示
|
||||||
|
|
||||||
|
今日处理原料退库检页面加急显示需求。
|
||||||
|
|
||||||
|
涉及页面:
|
||||||
|
- `QualityManagement/CheckTask/materialReturn.vue`
|
||||||
|
|
||||||
|
处理内容:
|
||||||
|
- 在原料退库检任务中增加加急状态/加急信息显示。
|
||||||
|
- 方便质检人员优先识别加急退库检任务。
|
||||||
|
- 便于后续按加急任务排序、提醒或优先处理。
|
||||||
|
|
||||||
|
业务影响:
|
||||||
|
- 质检人员在原料退库检页面可以更直观看到加急任务。
|
||||||
|
- 加急退库检任务可优先处理,减少对生产或后续流程的影响。
|
||||||
|
|
||||||
|
## 二、今日产出与修改文件
|
||||||
|
|
||||||
|
| 文件 | 今日处理内容 |
|
||||||
|
|---|---|
|
||||||
|
| `元利项目详细流程图.md` | 丰富业务流程图,补充多页面、多模块数据流 |
|
||||||
|
| `元利项目详细用户使用说明书.md` | 扩展第 21 章逐页操作说明,标题改为中文页面名 |
|
||||||
|
| `ProductionManagement/WorkHoursCheck` | 梳理工时校验与 SAP 上传关系 |
|
||||||
|
| `PlanManagement/PlannOrderClose` | 生产订单关闭培训与数据处理 |
|
||||||
|
| 装配报工相关页面/数据 | 修正装配报工重复数据问题 |
|
||||||
|
| `QualityManagement/CheckTask/materialReturn.vue` | 原料退库检增加加急显示 |
|
||||||
|
|
||||||
|
## 三、今日沟通事项
|
||||||
|
|
||||||
|
1. 与相关人员沟通工时校验数据上传 SAP 的影响,明确报工结果、工时、SAP 工序资源之间的关系。
|
||||||
|
2. 对生产订单关闭进行培训,说明关闭前校验、关闭失败处理和数据风险。
|
||||||
|
3. 结合装配报工重复问题,沟通现场报工操作和后台数据写入逻辑。
|
||||||
|
4. 结合用户说明书和流程图,明确后续培训资料需要按页面逐步讲解,不能只写功能概述。
|
||||||
|
|
||||||
|
## 四、当前风险与注意事项
|
||||||
|
|
||||||
|
| 风险点 | 影响 | 处理建议 |
|
||||||
|
|---|---|---|
|
||||||
|
| 工时上传 SAP 重复提交 | 可能造成 SAP 工时或库存单据重复 | 上传失败时先查失败原因,不要连续重复提交 |
|
||||||
|
| 生产订单关闭条件不一致 | 可能误关订单或关闭失败 | 关闭前核对 MES 任务、入库、报工和 SAP 状态 |
|
||||||
|
| 装配报工重复 | 影响工时、任务进度、质检/送检统计 | 修复后继续观察现场数据 |
|
||||||
|
| 加急任务未突出显示 | 质检处理优先级不明确 | 原料退库检已增加加急显示,后续可扩展排序 |
|
||||||
|
| 用户手册仍需继续细化 | 培训时可能仍有页面操作细节不足 | 后续按重点业务页面继续逐页补强 |
|
||||||
9794
MES_Manage_View_V20/元利项目详细分析.md
Normal file
9794
MES_Manage_View_V20/元利项目详细分析.md
Normal file
File diff suppressed because it is too large
Load Diff
2929
MES_Manage_View_V20/元利项目详细流程图.md
Normal file
2929
MES_Manage_View_V20/元利项目详细流程图.md
Normal file
File diff suppressed because it is too large
Load Diff
7410
MES_Manage_View_V20/元利项目详细用户使用说明书.md
Normal file
7410
MES_Manage_View_V20/元利项目详细用户使用说明书.md
Normal file
File diff suppressed because it is too large
Load Diff
BIN
MES_Manage_View_V20/技术开发详细方案_2026-05-27.docx
Normal file
BIN
MES_Manage_View_V20/技术开发详细方案_2026-05-27.docx
Normal file
Binary file not shown.
3441
MES_Manage_View_V20/技术开发详细方案_2026-05-27.md
Normal file
3441
MES_Manage_View_V20/技术开发详细方案_2026-05-27.md
Normal file
File diff suppressed because it is too large
Load Diff
1555
MES_Manage_View_V20/新增需求分析与开发记录_2026-05-23.md
Normal file
1555
MES_Manage_View_V20/新增需求分析与开发记录_2026-05-23.md
Normal file
File diff suppressed because it is too large
Load Diff
524
MES_Manage_View_V20/新增需求界面原型设计_2026-05-25.md
Normal file
524
MES_Manage_View_V20/新增需求界面原型设计_2026-05-25.md
Normal file
@@ -0,0 +1,524 @@
|
|||||||
|
# 新增需求界面原型设计
|
||||||
|
|
||||||
|
生成日期:2026-05-25
|
||||||
|
依据文档:`新增需求分析与开发记录_2026-05-23.md`
|
||||||
|
说明:本文只描述界面原型、字段、按钮、弹窗和交互,不涉及代码修改。
|
||||||
|
|
||||||
|
## 一、界面设计总原则
|
||||||
|
|
||||||
|
1. 报表页只负责查询、展示、导出、钻取;不把基础字段维护塞进报表页。
|
||||||
|
2. 待办页可以承担确认动作,例如手续确认、异常处理。
|
||||||
|
3. 工艺、关键工序、标准工时仍在标准工艺/生产工艺页面维护。
|
||||||
|
4. 缺勤、班次、人员、工位类数据需要来源于班次/排班/人员工位绑定,不在大屏直接维护。
|
||||||
|
5. 所有新增页面保留系统现有风格:顶部查询区、右侧操作按钮、下方表格、必要时弹窗明细。
|
||||||
|
|
||||||
|
## 二、新增页面总览
|
||||||
|
|
||||||
|
| 页面名称 | 页面类型 | 菜单建议 | 是否新增页面 | 是否维护数据 |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| 设计任务报工 | 业务操作页 | 生产管理/报工管理 | 是 | 是 |
|
||||||
|
| 机加班次产量表 | 报表页 | 报表中心/生产报表 | 是 | 否 |
|
||||||
|
| 手续确认报表 | 待办确认页 | 报表中心/装配报表 | 是 | 是,确认状态 |
|
||||||
|
| 及时检验报表 | 催办报表页 | 报表中心/质检报表 | 是 | 否 |
|
||||||
|
| 及时齐套跟踪结果报表 | 查询 + 部分维护页 | 报表中心/齐套报表 | 是 | 可维护预计可执行时间 |
|
||||||
|
| 生产日报-送检 | 日报页 | 报表中心/生产日报 | 是或扩展 | 否 |
|
||||||
|
| 编程任务清单/编程报工 | 业务操作页 | 生产管理/报工管理 | 是 | 是 |
|
||||||
|
| 让步接收记录 | 查询追溯页 | 质量管理/质量报表 | 是 | 否 |
|
||||||
|
| 装配已排产需求 | 交付进度页 | 生产管理/装配管理 | 是 | 部分字段可维护 |
|
||||||
|
| 质检任务早知道 | 预告报表页 | 质量管理/质量报表 | 是 | 否 |
|
||||||
|
| 及时送检报表 | 催办报表页 | 报表中心/质检报表 | 是或扩展 | 否 |
|
||||||
|
| 发货通知列表 | SAP 查询页 | 销售/交付报表 | 是 | 否 |
|
||||||
|
| 工时异常报表 | 异常分析页 | 报表中心/工时报表 | 是或扩展 | 可增加异常确认 |
|
||||||
|
|
||||||
|
## 三、页面原型
|
||||||
|
|
||||||
|
### 1. 设计任务报工
|
||||||
|
|
||||||
|
定位:MES 自建设计任务和设计工时,不关联生产订单,不上传 SAP。
|
||||||
|
|
||||||
|
```text
|
||||||
|
┌────────────────────────────────────────────────────────────────────┐
|
||||||
|
│ 设计任务报工 │
|
||||||
|
├────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ 查询区 │
|
||||||
|
│ 任务名称 [________] 设计人员 [____] 状态 [全部▼] 日期 [____至____] │
|
||||||
|
│ [查询] [重置] [新增设计任务] │
|
||||||
|
├────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ 任务列表 │
|
||||||
|
│ □ 任务编号 | 任务名称 | 设计人员 | 状态 | 开始时间 | 结束时间 | 工时 │
|
||||||
|
│ | 工作内容 | 结束说明 | 创建人 | 创建时间 | 操作 │
|
||||||
|
│ ------------------------------------------------------------------ │
|
||||||
|
│ 操作:[开始报工] [结束报工] [工时记录] [编辑] [删除] │
|
||||||
|
└────────────────────────────────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
弹窗:
|
||||||
|
|
||||||
|
| 弹窗 | 字段/按钮 |
|
||||||
|
|---|---|
|
||||||
|
| 新增设计任务 | 任务名称、设计人员、计划开始、计划完成、任务说明、保存、取消 |
|
||||||
|
| 开始报工 | 任务信息只读、开始时间默认当前、工作内容、确认开始 |
|
||||||
|
| 结束报工 | 任务信息只读、结束时间默认当前、结束说明、确认结束 |
|
||||||
|
| 工时记录 | 开始时间、结束时间、工时、工作内容、操作人 |
|
||||||
|
|
||||||
|
状态:
|
||||||
|
- 未开始
|
||||||
|
- 进行中
|
||||||
|
- 已完成
|
||||||
|
- 已取消
|
||||||
|
|
||||||
|
### 2. 机加班次产量表
|
||||||
|
|
||||||
|
定位:报表页,查看每天每台设备每班次干了什么活。
|
||||||
|
|
||||||
|
```text
|
||||||
|
┌────────────────────────────────────────────────────────────────────┐
|
||||||
|
│ 机加班次产量表 │
|
||||||
|
├────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ 日期 [____至____] 班次 [全部▼] 设备 [全部▼] 操作人 [____] │
|
||||||
|
│ [查询] [重置] [导出] │
|
||||||
|
├────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ 汇总卡:设备数 班次数 总数量 总工时 │
|
||||||
|
├────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ 分组表 │
|
||||||
|
│ ▶ 设备:CNC-01 合计数量 合计工时 │
|
||||||
|
│ ▶ 日期:2026-05-25 班次:白班 小计数量 小计工时 │
|
||||||
|
│ 生产订单 | 物料编码 | 物料名称 | 工序 | 开始 | 结束 | 工时 | 数量 | 操作人 │
|
||||||
|
└────────────────────────────────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
字段:
|
||||||
|
- 设备名称
|
||||||
|
- 日期
|
||||||
|
- 班次
|
||||||
|
- 生产订单
|
||||||
|
- 物料编码
|
||||||
|
- 物料名称
|
||||||
|
- 工序名称
|
||||||
|
- 开始时间
|
||||||
|
- 结束时间
|
||||||
|
- 工时
|
||||||
|
- 数量
|
||||||
|
- 操作人
|
||||||
|
|
||||||
|
说明:
|
||||||
|
- 班次规则来自班次管理。
|
||||||
|
- 该页面不维护班次,只读取班次和报工记录。
|
||||||
|
|
||||||
|
### 3. 手续确认报表
|
||||||
|
|
||||||
|
定位:装配、电气发料齐套后的待办确认页。
|
||||||
|
|
||||||
|
```text
|
||||||
|
┌────────────────────────────────────────────────────────────────────┐
|
||||||
|
│ 手续确认报表 │
|
||||||
|
├────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ 生产订单 [____] 合同号 [____] 物料 [____] 指派对象 [全部▼] │
|
||||||
|
│ 发料齐套日期 [____至____] 手续确认 [未完成▼] │
|
||||||
|
│ [查询] [重置] [导出] [批量确认完成] │
|
||||||
|
├────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ □ 生产订单 | 合同号 | 物料编码 | 物料名称 | 指派对象 | 发料齐套时间 │
|
||||||
|
│ 装配完成时间 | 当前状态 | 手续确认 | 确认人 | 确认时间 | 操作 │
|
||||||
|
│ ------------------------------------------------------------------ │
|
||||||
|
│ 操作:[确认完成] [查看装配明细] [查看异常] │
|
||||||
|
└────────────────────────────────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
消失条件:
|
||||||
|
- 手续确认 = 已完成
|
||||||
|
- 生产订单取消
|
||||||
|
- 生产订单关闭
|
||||||
|
- 整单已入库
|
||||||
|
|
||||||
|
确认弹窗:
|
||||||
|
- 生产订单
|
||||||
|
- 物料名称
|
||||||
|
- 当前发料齐套时间
|
||||||
|
- 确认备注
|
||||||
|
- 确认完成
|
||||||
|
- 取消
|
||||||
|
|
||||||
|
### 4. 及时检验报表
|
||||||
|
|
||||||
|
定位:生产报工完成超过 2 天仍未检验的催办报表。
|
||||||
|
|
||||||
|
```text
|
||||||
|
┌────────────────────────────────────────────────────────────────────┐
|
||||||
|
│ 及时检验报表 │
|
||||||
|
├────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ 生产订单 [____] 物料 [____] 工序 [全部▼] 指派对象 [全部▼] │
|
||||||
|
│ 报工结束日期 [____至____] 超期天数 [>= 2] │
|
||||||
|
│ [查询] [重置] [导出] │
|
||||||
|
├────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ 生产订单 | 物料编码 | 物料名称 | 工序 | 指派对象 | 报工数量 │
|
||||||
|
│ 已检数量 | 未检数量 | 报工结束时间 | 超期天数 | 责任人 | 操作 │
|
||||||
|
│ ------------------------------------------------------------------ │
|
||||||
|
│ 操作:[查看报工] [查看质检记录] [生成催办] │
|
||||||
|
└────────────────────────────────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
字段:
|
||||||
|
- 生产订单
|
||||||
|
- 物料编码
|
||||||
|
- 物料名称
|
||||||
|
- 工序名称
|
||||||
|
- 指派对象
|
||||||
|
- 报工数量
|
||||||
|
- 已检数量
|
||||||
|
- 未检数量
|
||||||
|
- 报工结束时间
|
||||||
|
- 超期天数
|
||||||
|
|
||||||
|
### 5. 及时齐套跟踪结果报表
|
||||||
|
|
||||||
|
定位:主订单齐套跟踪,支持展开查看 SAP 缺件明细。
|
||||||
|
|
||||||
|
```text
|
||||||
|
┌────────────────────────────────────────────────────────────────────┐
|
||||||
|
│ 及时齐套跟踪结果报表 │
|
||||||
|
├────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ 主生产订单 [____] 合同号 [____] 物料 [____] 齐套状态 [全部▼] │
|
||||||
|
│ 预计可执行时间 [____至____] SAP同步时间 [____至____] │
|
||||||
|
│ [查询] [重置] [导出] │
|
||||||
|
├────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ ▶ 主生产订单 | 合同号 | 物料编码 | 物料名称 | 计划数量 | 齐套状态 │
|
||||||
|
│ 缺件数 | 当前进度 | 预计可执行时间 | SAP同步时间 | 操作 │
|
||||||
|
│ ------------------------------------------------------------------ │
|
||||||
|
│ 展开明细: │
|
||||||
|
│ 缺料物料 | 名称 | 缺件数量 | 属性 | 对应单据号 | 当前进度 │
|
||||||
|
│ 全序展示 | 单条预计完成时间 | 预计可执行时间 | 操作 │
|
||||||
|
└────────────────────────────────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
可维护字段:
|
||||||
|
- 预计可执行时间
|
||||||
|
- 预计可执行说明
|
||||||
|
- 主订单与缺料子订单人工绑定关系
|
||||||
|
|
||||||
|
弹窗:
|
||||||
|
- 编辑预计可执行时间
|
||||||
|
- 查看 SAP 缺件明细
|
||||||
|
- 主子订单关系维护
|
||||||
|
|
||||||
|
### 6. 生产日报-送检
|
||||||
|
|
||||||
|
定位:机加/装配送检日报,建议一个页面两个页签。
|
||||||
|
|
||||||
|
```text
|
||||||
|
┌────────────────────────────────────────────────────────────────────┐
|
||||||
|
│ 生产日报-送检 │
|
||||||
|
├────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ 页签:[机加送检日报] [装配送检日报] │
|
||||||
|
├────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ 日期 [____] 部门 [全部▼] 生产订单 [____] 物料 [____] │
|
||||||
|
│ [查询] [重置] [导出日报] │
|
||||||
|
├────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ 日汇总:送检数量 已检数量 合格数量 不合格数量 未检数量 │
|
||||||
|
├────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ 日期 | 部门 | 生产订单 | 物料编码 | 物料名称 | 工序 | 送检数量 │
|
||||||
|
│ 已检数量 | 合格数量 | 不合格数量 | 送检时间 | 检验时间 | 状态 │
|
||||||
|
└────────────────────────────────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
说明:
|
||||||
|
- 部门归属规则需确认。
|
||||||
|
- 该页面不维护送检和检验结果。
|
||||||
|
|
||||||
|
### 7. 编程任务清单 / 编程报工
|
||||||
|
|
||||||
|
定位:编程任务和编程工时管理。
|
||||||
|
|
||||||
|
```text
|
||||||
|
┌────────────────────────────────────────────────────────────────────┐
|
||||||
|
│ 编程任务清单 │
|
||||||
|
├────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ 设备 [全部▼] 工位 [全部▼] 程序员 [____] 状态 [全部▼] │
|
||||||
|
│ 生产订单 [____] 日期 [____至____] │
|
||||||
|
│ [查询] [重置] [新增编程任务] [导出] │
|
||||||
|
├────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ 任务编号 | 生产订单 | 物料编码 | 物料名称 | 工序 | 设备/工位 │
|
||||||
|
│ 程序号 | 编程人员 | 状态 | 开始时间 | 结束时间 | 工时 | 操作 │
|
||||||
|
│ ------------------------------------------------------------------ │
|
||||||
|
│ 操作:[开始编程] [结束编程] [编辑程序号] [工时记录] [报异常] │
|
||||||
|
└────────────────────────────────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
弹窗:
|
||||||
|
- 新增编程任务
|
||||||
|
- 开始编程
|
||||||
|
- 结束编程
|
||||||
|
- 工时记录
|
||||||
|
- 程序号维护
|
||||||
|
|
||||||
|
状态:
|
||||||
|
- 未开始
|
||||||
|
- 编程中
|
||||||
|
- 已完成
|
||||||
|
- 已取消
|
||||||
|
- 异常中
|
||||||
|
|
||||||
|
### 8. 让步接收记录
|
||||||
|
|
||||||
|
定位:查询质检记录中让步接收字段不为空的数据。
|
||||||
|
|
||||||
|
```text
|
||||||
|
┌────────────────────────────────────────────────────────────────────┐
|
||||||
|
│ 让步接收记录 │
|
||||||
|
├────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ 生产订单 [____] 物料 [____] 检验人 [____] 检验日期 [____至____] │
|
||||||
|
│ 让步接收类型 [全部▼] │
|
||||||
|
│ [查询] [重置] [导出] │
|
||||||
|
├────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ 生产订单 | 物料编码 | 物料名称 | 工序 | 检验数量 | 不合格数量 │
|
||||||
|
│ 让步接收 | 检验人 | 检验时间 | 处置说明 | 操作 │
|
||||||
|
│ ------------------------------------------------------------------ │
|
||||||
|
│ 操作:[查看质检记录] [查看不合格处置] │
|
||||||
|
└────────────────────────────────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
说明:
|
||||||
|
- 页面只查询,不维护让步接收。
|
||||||
|
- 让步接收仍在质检中心或不合格处置维护。
|
||||||
|
|
||||||
|
### 9. 装配已排产需求
|
||||||
|
|
||||||
|
定位:装配交付进度中心,整合 SAP 字段、MES 报工、工时、异常、齐套和日计划。
|
||||||
|
|
||||||
|
```text
|
||||||
|
┌────────────────────────────────────────────────────────────────────┐
|
||||||
|
│ 装配已排产需求 │
|
||||||
|
├────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ 系统分类 [全部▼] 合同号 [____] 生产订单 [____] 物料 [____] │
|
||||||
|
│ 发料齐套时间 [____至____] 装配完成时间 [____至____] 状态 [全部▼] │
|
||||||
|
│ [查询] [重置] [导出] [批量维护] │
|
||||||
|
├────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ 生产订单 | 合同号 | 物料编码 | 物料名称 | 系统/非系统 | 派工时间 │
|
||||||
|
│ 合同交货期 | 发料齐套时间 | 装配完成时间 | 当前人员 | 当前内容 │
|
||||||
|
│ 累计工时 | 异常数 | 钣金预达 | 钣金到达 | 泵预达 | 泵到达 | 备注 | 操作 │
|
||||||
|
│ ------------------------------------------------------------------ │
|
||||||
|
│ 操作:[查看工时] [查看异常] [查看缺件] [维护字段] [生成日计划] │
|
||||||
|
└────────────────────────────────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
字段分组:
|
||||||
|
- SAP 字段:派工时间、合同交货期
|
||||||
|
- MES 计算字段:装配完成时间、累计工时、异常数
|
||||||
|
- 手工维护字段:钣金预达、钣金到达、泵预达、泵到达、备注、当前对应内容
|
||||||
|
|
||||||
|
弹窗:
|
||||||
|
- 工时明细
|
||||||
|
- 异常明细
|
||||||
|
- 缺件明细
|
||||||
|
- 手工字段维护
|
||||||
|
- 日计划预览
|
||||||
|
|
||||||
|
### 10. 质检任务早知道
|
||||||
|
|
||||||
|
定位:根据装配已排产需求预测即将进入质检的任务。
|
||||||
|
|
||||||
|
```text
|
||||||
|
┌────────────────────────────────────────────────────────────────────┐
|
||||||
|
│ 质检任务早知道 │
|
||||||
|
├────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ 装配完成时间 [____至____] 合同号 [____] 生产订单 [____] │
|
||||||
|
│ 物料 [____] 状态 [待质检▼] │
|
||||||
|
│ [查询] [重置] [导出] │
|
||||||
|
├────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ 预计质检日期 | 生产订单 | 合同号 | 物料编码 | 物料名称 | 装配完成时间 │
|
||||||
|
│ 当前人员 | 当前内容 | 累计工时 | 异常状态 | 质检状态 | 操作 │
|
||||||
|
│ ------------------------------------------------------------------ │
|
||||||
|
│ 操作:[查看装配进度] [查看异常] [查看质检记录] │
|
||||||
|
└────────────────────────────────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
说明:
|
||||||
|
- 强依赖装配已排产需求。
|
||||||
|
- 不直接维护质检结果。
|
||||||
|
|
||||||
|
### 11. 及时送检报表
|
||||||
|
|
||||||
|
定位:发料齐套后超过规则时间未送检的任务催办。
|
||||||
|
|
||||||
|
```text
|
||||||
|
┌────────────────────────────────────────────────────────────────────┐
|
||||||
|
│ 及时送检报表 │
|
||||||
|
├────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ 生产订单 [____] 合同号 [____] 物料 [____] 指派对象 [全部▼] │
|
||||||
|
│ 发料齐套时间 [____至____] 送检状态 [未送检▼] 超期天数 [>= 2] │
|
||||||
|
│ [查询] [重置] [导出] │
|
||||||
|
├────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ 生产订单 | 合同号 | 物料编码 | 物料名称 | 指派对象 | 发料齐套时间 │
|
||||||
|
│ 是否送检 | 送检时间 | 超期天数 | 加急 | 当前状态 | 操作 │
|
||||||
|
│ ------------------------------------------------------------------ │
|
||||||
|
│ 操作:[查看装配任务] [查看质检任务] [生成催办] │
|
||||||
|
└────────────────────────────────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
### 12. 发货通知列表
|
||||||
|
|
||||||
|
定位:SAP 已提供数据,大屏已展示,新增普通报表查询页。
|
||||||
|
|
||||||
|
```text
|
||||||
|
┌────────────────────────────────────────────────────────────────────┐
|
||||||
|
│ 发货通知列表 │
|
||||||
|
├────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ 发货通知号 [____] 合同号 [____] 客户 [____] 状态 [全部▼] │
|
||||||
|
│ 要求发货日期 [____至____] SAP同步时间 [____至____] │
|
||||||
|
│ [查询] [重置] [导出] │
|
||||||
|
├────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ 发货通知号 | 合同号 | 客户 | 物料编码 | 物料名称 | 数量 │
|
||||||
|
│ 要求发货日期 | 发货状态 | SAP同步时间 | 备注 | 操作 │
|
||||||
|
│ ------------------------------------------------------------------ │
|
||||||
|
│ 操作:[查看明细] [查看关联生产订单] │
|
||||||
|
└────────────────────────────────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
说明:
|
||||||
|
- 默认只读 SAP 或 SAP 同步表。
|
||||||
|
- 如需 MES 备注,建议单独建本地备注扩展字段。
|
||||||
|
|
||||||
|
### 13. 工时异常报表
|
||||||
|
|
||||||
|
定位:单件实际工时大于标准单件工时的异常分析。
|
||||||
|
|
||||||
|
```text
|
||||||
|
┌────────────────────────────────────────────────────────────────────┐
|
||||||
|
│ 工时异常报表 │
|
||||||
|
├────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ 日期 [____至____] 设备 [全部▼] 工位 [全部▼] 操作人 [____] │
|
||||||
|
│ 物料 [____] 工序 [全部▼] 超出比例 [>=____%] 状态 [全部▼] │
|
||||||
|
│ [查询] [重置] [导出] │
|
||||||
|
├────────────────────────────────────────────────────────────────────┤
|
||||||
|
│ 设备/工位 | 生产订单 | 物料编码 | 物料名称 | 工序 | 操作人 │
|
||||||
|
│ 标准单件工时 | 实际单件工时 | 超出时长 | 超出比例 | 班次 | 状态 | 操作 │
|
||||||
|
│ ------------------------------------------------------------------ │
|
||||||
|
│ 操作:[查看工时明细] [确认异常] [填写原因] │
|
||||||
|
└────────────────────────────────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
异常确认弹窗:
|
||||||
|
- 异常原因
|
||||||
|
- 责任部门
|
||||||
|
- 处理说明
|
||||||
|
- 确认人
|
||||||
|
- 确认时间
|
||||||
|
|
||||||
|
## 四、现有页面改造界面说明
|
||||||
|
|
||||||
|
### 1. 机加件已排产页面
|
||||||
|
|
||||||
|
改造点:
|
||||||
|
- `计划开始时间` 改为单日期选择。
|
||||||
|
- `计划完成时间` 改为单日期选择。
|
||||||
|
- 表格增加 `总工时` 列。
|
||||||
|
- 点击总工时打开历史工时明细弹窗。
|
||||||
|
|
||||||
|
```text
|
||||||
|
查询区:计划开始日期 [____] 计划完成日期 [____]
|
||||||
|
表格列:... | 总工时 | 操作
|
||||||
|
总工时点击弹窗:设备 -> 日期 -> 任务明细
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. 生产计划跟踪
|
||||||
|
|
||||||
|
改造点:
|
||||||
|
- 当前序展示完整工艺路线。
|
||||||
|
- 工序按状态变色。
|
||||||
|
- 增加标准工时、订单状态。
|
||||||
|
|
||||||
|
```text
|
||||||
|
工艺路线:打磨(张三) -> 淬火(外协) -> 精磨(李四)
|
||||||
|
状态颜色:进行中高亮、已完成置灰、待加工普通色、异常红色
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. 序检收检/外协任务检验
|
||||||
|
|
||||||
|
改造点:
|
||||||
|
- 增加指派对象。
|
||||||
|
- 增加供应商。
|
||||||
|
- 增加 SAP 采购收货单号。
|
||||||
|
|
||||||
|
建议在检验记录表格和检验详情弹窗中同时展示。
|
||||||
|
|
||||||
|
### 4. 生产订单关闭
|
||||||
|
|
||||||
|
改造点:
|
||||||
|
- 表格增加多选。
|
||||||
|
- 增加 `批量关闭 SAP 订单` 按钮。
|
||||||
|
- 增加批量关闭结果弹窗。
|
||||||
|
|
||||||
|
结果弹窗字段:
|
||||||
|
- 生产订单
|
||||||
|
- SAP 单据号
|
||||||
|
- 执行结果
|
||||||
|
- 失败原因
|
||||||
|
- 是否可重试
|
||||||
|
|
||||||
|
### 5. 生产工艺
|
||||||
|
|
||||||
|
改造点:
|
||||||
|
- 点击编辑时,若无生产工艺,弹窗提示“未找到生产工艺,是否带出标准工艺作为草稿?”
|
||||||
|
- 带出后不自动保存。
|
||||||
|
- 保存后才写入生产工艺。
|
||||||
|
|
||||||
|
### 6. 异常管控 + 全部报工页面
|
||||||
|
|
||||||
|
改造点:
|
||||||
|
- 所有报工页面增加 `报异常` 按钮。
|
||||||
|
- 选中任务后打开统一异常弹窗。
|
||||||
|
- 异常弹窗支持多选审批人。
|
||||||
|
|
||||||
|
异常弹窗字段:
|
||||||
|
- 异常类型
|
||||||
|
- 异常说明
|
||||||
|
- 附件
|
||||||
|
- 审批人,多选
|
||||||
|
- 关联订单/任务/工序,只读
|
||||||
|
|
||||||
|
### 7. 及时开工报表
|
||||||
|
|
||||||
|
改造点:
|
||||||
|
- 指派对象查询增加模式选择。
|
||||||
|
|
||||||
|
```text
|
||||||
|
指派对象 [多选] 查询模式 [包含▼ / 排除▼]
|
||||||
|
```
|
||||||
|
|
||||||
|
### 8. 工时报表
|
||||||
|
|
||||||
|
改造点:
|
||||||
|
- 增加指派对象字段。
|
||||||
|
- 后续支持工时类型和来源模块。
|
||||||
|
|
||||||
|
### 9. 领料/退库/外协报表小字段
|
||||||
|
|
||||||
|
| 页面 | 界面改造 |
|
||||||
|
|---|---|
|
||||||
|
| 生产领料(机加) | 增加备注输入/备注列 |
|
||||||
|
| 生产退库(机加) | 增加备注输入/备注列 |
|
||||||
|
| 生产退库(装配) | 增加备注输入/备注列 |
|
||||||
|
| 外协任务报表(采购) | 增加采购到货期说明列 |
|
||||||
|
| 工序流转卡 | 打印模板增加原料编码 |
|
||||||
|
| 制定标准工艺 | 保存成功/失败提示明确化 |
|
||||||
|
|
||||||
|
## 五、优先原型顺序
|
||||||
|
|
||||||
|
| 优先级 | 页面 |
|
||||||
|
|---|---|
|
||||||
|
| P0 | 手续确认报表、及时检验报表、发货通知列表、生产订单关闭批量 SAP |
|
||||||
|
| P0 | 生产工艺自动带出标准工艺、异常管控直接报异常 |
|
||||||
|
| P1 | 装配已排产需求、及时齐套跟踪结果报表、质检任务早知道 |
|
||||||
|
| P1 | 设计任务报工、编程任务清单/编程报工 |
|
||||||
|
| P1 | 机加班次产量表、生产日报-送检、及时送检报表 |
|
||||||
|
| P2 | 工时异常报表、OEE/设备采集相关界面、现场大屏缺勤/关键工序 |
|
||||||
|
|
||||||
|
## 六、客户确认清单
|
||||||
|
|
||||||
|
1. 新增页面菜单位置是否按本文建议放置。
|
||||||
|
2. 手续确认、预计可执行时间、装配已排产需求中的手工字段是否允许页面维护。
|
||||||
|
3. 设计任务、编程任务是否需要审批或只做报工。
|
||||||
|
4. 缺勤人员是否已有排班/考勤来源。
|
||||||
|
5. 关键工序是否确认在标准工艺和生产工艺维护。
|
||||||
|
6. 及时检验、及时送检的超期天数是否统一为 2 天。
|
||||||
|
7. 发货通知列表是否只读 SAP 数据,是否需要 MES 备注。
|
||||||
|
8. 工时异常是否需要确认闭环,还是只做查询。
|
||||||
860
MES_Manage_View_V20/隐性需求综合分析_2026-05-25.md
Normal file
860
MES_Manage_View_V20/隐性需求综合分析_2026-05-25.md
Normal file
@@ -0,0 +1,860 @@
|
|||||||
|
# MES_Manage_View_V20 新增需求后的整体影响与隐性需求综合分析
|
||||||
|
|
||||||
|
生成日期:2026-05-25
|
||||||
|
|
||||||
|
分析依据:
|
||||||
|
- `新增需求分析与开发记录_2026-05-23.md`
|
||||||
|
- `今日工作汇报_2026-05-23.txt`
|
||||||
|
- `需求分析_自制件与工位汇总表.md`
|
||||||
|
- `MES_Manage_View_V20_src_views_逐页面详细分析.md`
|
||||||
|
|
||||||
|
## 一、分析视角调整
|
||||||
|
|
||||||
|
本文不单纯从“客户后续可能要什么”出发,而是从系统整体出发,分析这些新增需求如果逐步落地,会对现有 MES 产生什么连锁影响:
|
||||||
|
|
||||||
|
1. 会新增哪些业务数据。
|
||||||
|
2. 会改变哪些原有统计口径。
|
||||||
|
3. 会冲击哪些已完成页面、报表、看板。
|
||||||
|
4. 会让哪些现有字段含义变得不够用。
|
||||||
|
5. 会产生哪些必须补做的隐性能力。
|
||||||
|
6. 客户基于新数据和新功能,后续还可能继续提出什么。
|
||||||
|
|
||||||
|
核心判断:
|
||||||
|
|
||||||
|
这些需求不是孤立新增页面。它们会把系统从“生产任务执行系统”推向“生产进度、质量、工时、齐套、异常、SAP 状态一体化追踪系统”。一旦新增字段、报表、SAP 回写、设计/编程报工、装配已排产需求进入系统,很多已完成页面也要重新解释和调整。
|
||||||
|
|
||||||
|
## 二、总体连锁影响
|
||||||
|
|
||||||
|
| 新增能力 | 直接新增数据 | 产生的问题 | 隐性需求 | 已完成页面/报表是否需要改 |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| 设计任务报工 | 设计任务、设计工时、工作内容、开始/结束时间 | 原有工时只覆盖生产/质检/装配,合同总工时会漏设计 | 工时分类、合同工时汇总、设计任务权限、设计工时报表 | 装配已排产需求、工时报表、合同进度、日报需要纳入设计工时 |
|
||||||
|
| 编程任务清单/编程报工 | 编程任务、编程工时、设备/工位、人员、说明 | 编程是否影响生产任务可开工不明确 | 编程完成状态、编程工时独立统计、任务前置条件 | 机加中心、生产计划跟踪、工时报表、及时开工可能需要增加编程状态 |
|
||||||
|
| 装配已排产需求 | 发料齐套时间、装配完成时间、SAP 派工时间、合同交货期、钣金/泵、当前人员、累计工时、异常 | 原装配排产页只管排产,新页面会变成交付进度中心 | 装配进度模型、日计划、合同进度、异常汇总、手工字段维护历史 | `InstallMakePlan`、`AssemblyCenter`、生产任务看板、质检任务早知道、日报都要联动 |
|
||||||
|
| 历史工时查询 | 任务总工时、设备/日期分组明细 | 原列表只显示任务状态,新总工时会引出明细追溯 | 汇总到明细钻取、工时来源标识、重复报工处理 | `SelfMakePlandone`、工时查询、班次产量表、合同工时汇总要统一口径 |
|
||||||
|
| 机加班次产量表 | 班次、设备、日期、任务、数量、工时 | 原工时和产量按任务查,现在要按班次归属 | 班次日历、跨天班次规则、设备日合计、人员归属 | 设备看板、工位汇总表、工时报表、生产日报需要统一班次口径 |
|
||||||
|
| 外协检验字段增强 | 指派对象、供应商、SAP 采购收货单号 | 原质检记录只到工序,供应商/单据链不完整 | 供应商合格率、SAP 单据追溯、外协质检报表 | 外协报表、质检记录、供应商统计、序检收检页面需要补字段 |
|
||||||
|
| 手续确认报表 | 手续确认状态、确认人、确认时间 | 原任务消失规则依赖已入库/关闭,现在又增加人工确认维度 | 待办清单、确认日志、取消/关闭/入库同步规则 | 装配中心、发料齐套列表、生产任务看板、订单关闭后状态需要同步 |
|
||||||
|
| 及时检验报表 | 报工完成时间、未检数量、超期天数 | 原质检任务是业务操作,新报表要求按时间催办 | 质检责任人、催办、超期规则、已检数量核算 | 质检中心、生产日报、异常提醒、看板需要展示未检/超期 |
|
||||||
|
| 及时齐套跟踪结果报表 | 主订单与缺料子订单关系、SAP 缺件明细、预计可执行时间 | SAP 实时数据和 MES 落库数据会不一致 | SAP 缓存、展开加载、主子订单关系维护 | 生产任务看板、装配已排产、及时开工、发料齐套报表需要统一缺件状态 |
|
||||||
|
| 生产日报-送检 | 送检、已检、合格、不合格、部门 | 原质检记录按任务查,现在要按部门/日报统计 | 部门归属规则、日报快照、合计口径 | 质检报表、工位汇总、日报、看板需要改统计维度 |
|
||||||
|
| 生产订单批量关闭 SAP | SAP 关闭结果、失败原因、操作日志 | MES/SAP 状态可能部分成功、重复关闭 | 批量结果表、重试机制、二次确认、权限 | 订单关闭页、排产页、生产中心、手续确认报表都要识别 SAP 关闭 |
|
||||||
|
| 异常管控入口统一 | 异常关联任务、审批人多选、附件、处理状态 | 原异常页面独立,新增入口后所有报工页都要联动 | 异常状态流转、待办、任务暂停规则、异常统计 | 机加/装配/质检/外协/设计/编程报工页面都要加入口和状态 |
|
||||||
|
| 生产工艺自动带出标准工艺 | 标准工艺草稿、生产工艺映射 | 原工艺一旦生成就被任务使用,修改会影响历史 | 工艺版本、任务快照、字段映射 | 生产计划跟踪、排产、流转卡、工时报表都要按任务快照而非最新工艺 |
|
||||||
|
| 发货通知列表 | SAP 发货通知数据、状态、单据号 | 原大屏展示变为报表查询后要支持筛选和追溯 | SAP 数据同步/实时查询、导出、状态解释 | 大屏、销售/生产交付类报表可能要统一发货状态 |
|
||||||
|
|
||||||
|
## 三、最主要的问题不是新增页面,而是口径被改变
|
||||||
|
|
||||||
|
### 1. 工时口径会被重构
|
||||||
|
|
||||||
|
新增需求之前,系统主要工时来源集中在生产执行和质检相关记录,典型对象包括:
|
||||||
|
- `YL_加工中心_操作记录表`
|
||||||
|
- `生产管理_工时校验_校验工时表`
|
||||||
|
- 装配报工记录
|
||||||
|
- 质检记录或质检报工
|
||||||
|
|
||||||
|
新增需求之后,工时会被拆成更多类别:
|
||||||
|
- 机加工时
|
||||||
|
- 装配工时
|
||||||
|
- 质检工时
|
||||||
|
- 设计工时
|
||||||
|
- 编程工时
|
||||||
|
- 设备运行工时
|
||||||
|
- 程序工时
|
||||||
|
- 人员工时
|
||||||
|
- 合同工时
|
||||||
|
- 预计总工时
|
||||||
|
- 剩余工时
|
||||||
|
|
||||||
|
会产生的问题:
|
||||||
|
|
||||||
|
1. 原来“总工时”字段含义不够用了。
|
||||||
|
- `SelfMakePlandone` 要加总工时。
|
||||||
|
- 装配已排产需求要显示生产订单累计工时、合同工时汇总。
|
||||||
|
- 班次产量表要按设备、日期、班次汇总工时。
|
||||||
|
- 工时报表要加指派对象。
|
||||||
|
- 如果都叫“总工时”,但来源不一致,页面数字会对不上。
|
||||||
|
|
||||||
|
2. 合同进度会和生产任务工时产生冲突。
|
||||||
|
- 装配已排产需求提出“合同进度 = 累计工时 / 预计总工时”。
|
||||||
|
- 但累计工时是否包含设计、质检、编程、装配、返工、异常工时,需要明确。
|
||||||
|
- 如果不明确,合同进度会成为争议字段。
|
||||||
|
|
||||||
|
3. 已完成报表需要增加工时分类。
|
||||||
|
- 原工时报表只要显示工时即可。
|
||||||
|
- 新增设计/编程后,必须能区分工时类型。
|
||||||
|
- 否则设计工时可能被误算进生产工时,或者合同总工时漏算。
|
||||||
|
|
||||||
|
需要跟着调整的已完成页面/报表:
|
||||||
|
|
||||||
|
| 页面/报表 | 需要调整原因 | 建议调整 |
|
||||||
|
|---|---|---|
|
||||||
|
| `ProductionManagement/Timesheet` | 作业者工时新增指派对象,后续还会受到设计/编程工时影响 | 增加工时类型、来源模块、指派对象 |
|
||||||
|
| `ProductionManagement/WorkHoursCheck` | SAP 工时/投料校验与 MES 工时会产生差异 | 显示本次提交、历史提交、SAP 返回结果 |
|
||||||
|
| `PlanManagement/SelfMakePlandone` | 新增总工时和明细弹窗 | 总工时必须注明来源,仅统计生产报工还是包含质检/异常 |
|
||||||
|
| `ProductionManagement/AssemblyCenter` | 装配工时要进入装配已排产需求和合同进度 | 输出可复用的装配工时汇总字段 |
|
||||||
|
| 工位汇总表 | 新增班次、设备、人员、程序工时后口径变化 | 增加班次维度,区分设备工时/人工工时 |
|
||||||
|
| 自制件汇总表 | 合同工时和订单工时可能要求纳入新工时类型 | 增加工时类型过滤和明细钻取 |
|
||||||
|
|
||||||
|
产生的隐性需求:
|
||||||
|
- 统一工时事实视图或工时汇总表。
|
||||||
|
- 工时来源字段:生产、装配、质检、设计、编程、设备采集。
|
||||||
|
- 工时单位统一:秒、分钟、小时。
|
||||||
|
- 工时快照:报表发布后是否允许历史数据随新规则变化。
|
||||||
|
- 工时差异解释:人工工时、设备工时、SAP 工时不一致时显示差异原因。
|
||||||
|
|
||||||
|
客户可能继续要:
|
||||||
|
- 合同维度工时明细。
|
||||||
|
- 人员维度工时排名。
|
||||||
|
- 设备维度利用率。
|
||||||
|
- 设计/装配/质检工时占比。
|
||||||
|
- 超预算工时预警。
|
||||||
|
|
||||||
|
### 2. 状态口径会被重新拉通
|
||||||
|
|
||||||
|
现有系统中已经出现很多状态:
|
||||||
|
- 排产状态
|
||||||
|
- 派工状态
|
||||||
|
- 任务状态
|
||||||
|
- 加工状态
|
||||||
|
- 收料状态
|
||||||
|
- 发料状态
|
||||||
|
- 质检状态
|
||||||
|
- 入库状态
|
||||||
|
- 加急状态
|
||||||
|
- 外协通知
|
||||||
|
- SAP 订单状态
|
||||||
|
- 手续确认状态
|
||||||
|
- 异常状态
|
||||||
|
- 编程完成状态
|
||||||
|
- 设计任务状态
|
||||||
|
|
||||||
|
会产生的问题:
|
||||||
|
|
||||||
|
1. 一个任务在不同页面可能显示成不同状态。
|
||||||
|
- 排产页面看 `排产状态`、`派工状态`。
|
||||||
|
- 生产中心看 `任务状态`、`加工状态`。
|
||||||
|
- 质检页面看检验记录。
|
||||||
|
- 手续确认报表看手续确认、入库、关闭。
|
||||||
|
- SAP 订单关闭后,MES 任务可能仍显示未完成。
|
||||||
|
|
||||||
|
2. 新增状态会影响原来的“消失条件”。
|
||||||
|
- 手续确认报表中,已完成、取消、关闭、整单已入库都要消失。
|
||||||
|
- 质检任务早知道也要排除已入库、关闭、取消任务。
|
||||||
|
- 及时检验报表要排除已检足数量的任务。
|
||||||
|
- 如果状态判断不统一,会出现同一任务在 A 页面消失,在 B 页面仍提醒。
|
||||||
|
|
||||||
|
3. 异常状态会打断原流程。
|
||||||
|
- 报异常后是否允许继续报工?
|
||||||
|
- 异常未关闭时是否允许质检?
|
||||||
|
- 异常是否影响及时开工/及时检验/齐套报表?
|
||||||
|
- 这些都不是当前页面能单独决定的。
|
||||||
|
|
||||||
|
需要跟着调整的已完成页面/报表:
|
||||||
|
|
||||||
|
| 页面/报表 | 受影响点 | 建议调整 |
|
||||||
|
|---|---|---|
|
||||||
|
| `AnomalousManagement/PunctualWork` | 及时开工按任务状态筛选,新增异常/编程/齐套后可能影响可执行判断 | 增加异常、编程、齐套条件说明 |
|
||||||
|
| `PlanManagement/InstallMakePlan` | 排产完成后还要看 SAP 订单状态、发料齐套、装配完成时间 | 查询结果补 SAP/齐套相关状态 |
|
||||||
|
| `PlanManagement/PlannOrderClose` | 批量关闭 SAP 后,MES 页面必须识别关闭结果 | 增加 SAP 关闭状态、失败原因、重试入口 |
|
||||||
|
| `ProductionManagement/MachiningCenter` | 异常入口、编程完成、设备占用都会影响可开工 | 增加任务不可操作原因 |
|
||||||
|
| `ProductionManagement/AssemblyCenter` | 装配完成时间、手续确认、异常都会影响任务显示 | 增加装配进度状态 |
|
||||||
|
| `QualityManagement/QualityCenter` | 已入库/关闭/异常/让步接收会影响质检操作 | 增加质检可操作性判断 |
|
||||||
|
| 生产任务看板 | 新增齐套、及时检验、手续确认、异常后看板指标会变化 | 重算指标口径 |
|
||||||
|
|
||||||
|
产生的隐性需求:
|
||||||
|
- 生产任务状态总表。
|
||||||
|
- 页面状态与数据库状态映射表。
|
||||||
|
- 状态优先级规则:关闭 > 入库 > 异常 > 未检 > 未开工 等。
|
||||||
|
- “不可操作原因”统一返回,而不是前端各页面自己判断。
|
||||||
|
- 批量状态校验接口。
|
||||||
|
|
||||||
|
客户可能继续要:
|
||||||
|
- 任务状态流转图。
|
||||||
|
- 状态变更历史。
|
||||||
|
- 状态异常看板。
|
||||||
|
- 一键修复状态不一致。
|
||||||
|
- 已关闭/已入库任务仍可查询但不可操作。
|
||||||
|
|
||||||
|
### 3. SAP 与 MES 数据一致性问题会放大
|
||||||
|
|
||||||
|
今天逐页面分析中,SAP 相关调用已经覆盖多个核心流程:
|
||||||
|
- 排产确认:`PATCH /ProductionOrders(...)`
|
||||||
|
- 订单关闭:`PATCH /ProductionOrders(...)`
|
||||||
|
- 工时校验/发料:`GET /ProductionOrders`、`POST /InventoryGenExits`、`PATCH ProductionOrders(...)`
|
||||||
|
- 外协采购申请:`POST /PurchaseRequests`
|
||||||
|
- 外协采购收货:`POST /PurchaseDeliveryNotes`
|
||||||
|
- 工位资源:`POST /Resources`、`PATCH /Resources(...)`
|
||||||
|
- 工序:`POST /RouteStages`、`PATCH /RouteStages(...)`
|
||||||
|
|
||||||
|
新增需求后,SAP 相关数据还会增加:
|
||||||
|
- SAP 派工时间
|
||||||
|
- 合同交货期
|
||||||
|
- 发料齐套时间
|
||||||
|
- 缺件明细
|
||||||
|
- 发货通知
|
||||||
|
- 采购收货单号
|
||||||
|
- SAP 订单取消/关闭状态
|
||||||
|
|
||||||
|
会产生的问题:
|
||||||
|
|
||||||
|
1. 实时查 SAP 和 MES 落库字段会不一致。
|
||||||
|
- 及时齐套缺件明细要求 SAP 实时查询。
|
||||||
|
- 装配已排产需求要求 SAP 派工时间、合同交货期。
|
||||||
|
- 发货通知列表来源 SAP。
|
||||||
|
- 如果某些页面读 SAP 实时,某些页面读 MES 同步表,数字和状态可能不同。
|
||||||
|
|
||||||
|
2. SAP 写操作失败会产生半成功数据。
|
||||||
|
- MES 排产已完成,但 SAP 生产订单未更新。
|
||||||
|
- MES 工时校验已保存,但 `InventoryGenExits` 失败。
|
||||||
|
- 批量关闭 SAP 订单时,部分成功部分失败。
|
||||||
|
- 外协采购请求成功,但 MES 未记录单号。
|
||||||
|
|
||||||
|
3. 新增报表会追问 SAP 数据更新时间。
|
||||||
|
- 合同交货期什么时候同步?
|
||||||
|
- 发料齐套时间是否最新?
|
||||||
|
- 缺件明细是否实时?
|
||||||
|
- 发货通知状态是否已更新?
|
||||||
|
|
||||||
|
需要跟着调整的已完成页面/报表:
|
||||||
|
|
||||||
|
| 页面/报表 | 受影响点 | 建议调整 |
|
||||||
|
|---|---|---|
|
||||||
|
| `PlanManagement/SelfMakePlan/SelfMakePlando/SelfMakePlandone` | 排产同步 SAP 后缺少同步结果留痕 | 增加 SAP 同步状态、失败提示、重试依据 |
|
||||||
|
| `PlanManagement/InstallMakePlan/InstallMakePlanDo` | 装配新增 SAP 派工时间、合同交货期、发料齐套时间 | 查询和导出补 SAP 字段来源 |
|
||||||
|
| `ProductionManagement/WorkHoursCheck` | 已有 SAP 工序、资源、发料操作 | 增加 SAP 请求/返回日志和失败重试 |
|
||||||
|
| `QualityManagement/CheckTask/processReceive` | SAP 采购收货单号成为后续统计字段 | 保存 SAP 单号、行号、供应商 |
|
||||||
|
| `ProductionManagement/OutsourceMange` | 外协采购请求后要追踪 SAP 单据 | 记录采购请求号/采购订单关系 |
|
||||||
|
| `SystemMaintenance/WorkstationManagement` | 工位资源同步 SAP 后要防重复 | 增加 SAP 资源编码校验 |
|
||||||
|
| 发货通知大屏/新增报表 | 大屏已有数据,新增报表要求查询/导出 | 明确实时或同步数据源 |
|
||||||
|
|
||||||
|
产生的隐性需求:
|
||||||
|
- SAP 调用日志表。
|
||||||
|
- SAP 同步状态字段。
|
||||||
|
- SAP 失败重试页面。
|
||||||
|
- SAP 单据关系表:MES 任务 -> SAP 生产订单/采购请求/收货单/发货通知。
|
||||||
|
- 数据更新时间展示。
|
||||||
|
- 批量操作结果明细。
|
||||||
|
|
||||||
|
客户可能继续要:
|
||||||
|
- SAP 同步失败列表。
|
||||||
|
- 手工重推 SAP。
|
||||||
|
- SAP 与 MES 差异对账。
|
||||||
|
- 每张 SAP 单据反查 MES 来源任务。
|
||||||
|
- 批量关闭/批量回写的成功失败导出。
|
||||||
|
|
||||||
|
### 4. 报表会从结果展示变成数据追溯
|
||||||
|
|
||||||
|
新增需求中报表很多:
|
||||||
|
- 机加班次产量表
|
||||||
|
- 手续确认报表
|
||||||
|
- 及时检验报表
|
||||||
|
- 及时齐套跟踪结果报表
|
||||||
|
- 生产日报-送检
|
||||||
|
- 让步接收记录
|
||||||
|
- 及时送检报表
|
||||||
|
- 发货通知列表
|
||||||
|
- 质检任务早知道
|
||||||
|
- 设计工时报表
|
||||||
|
- 自制件汇总表
|
||||||
|
- 工位汇总表
|
||||||
|
|
||||||
|
会产生的问题:
|
||||||
|
|
||||||
|
1. 报表之间会互相引用同一批数据。
|
||||||
|
- 及时检验依赖报工记录和质检记录。
|
||||||
|
- 生产日报-送检依赖送检和质检记录。
|
||||||
|
- 质检任务早知道依赖装配完成时间。
|
||||||
|
- 装配已排产需求依赖工时、异常、齐套、SAP 字段。
|
||||||
|
- 如果每个报表各写一套 SQL,口径会分裂。
|
||||||
|
|
||||||
|
2. 报表新增字段会要求历史数据补齐。
|
||||||
|
- 外协检验新增供应商后,历史质检记录没有供应商。
|
||||||
|
- 发料齐套时间新增后,历史生产计划没有该字段。
|
||||||
|
- 手续确认新增后,历史任务默认是否“未确认”需要确定。
|
||||||
|
- 设计/编程工时新增后,历史合同进度是否重算需要确定。
|
||||||
|
|
||||||
|
3. 报表会反向要求修改业务页面。
|
||||||
|
- 报表要统计供应商合格率,就要求质检页面必须保存供应商。
|
||||||
|
- 报表要统计及时检验,就要求报工结束时间必须准确。
|
||||||
|
- 报表要统计手续确认,就要求业务页面维护确认状态。
|
||||||
|
- 报表要统计合同进度,就要求所有工时都有合同号。
|
||||||
|
|
||||||
|
需要跟着调整的已完成页面/报表:
|
||||||
|
|
||||||
|
| 已完成页面/报表 | 因新增需求需要调整什么 |
|
||||||
|
|---|---|
|
||||||
|
| 生产任务看板 | 增加及时齐套、及时检验、手续确认、装配完成时间等新指标或修正原指标 |
|
||||||
|
| 机加设备/生产运营看板 | 班次产量、设备工时、程序工时进入后,需要重算设备利用和产量口径 |
|
||||||
|
| 装配任务看板 | 装配完成时间、发料齐套、合同交货期、质检任务早知道会影响待办和逾期 |
|
||||||
|
| 质检任务看板 | 新增及时检验、质检任务早知道、让步接收后,待检数量口径要改 |
|
||||||
|
| 自制件汇总表 | 新增历史工时、设计/编程/质检工时后,总工时口径要扩展 |
|
||||||
|
| 工位汇总表 | 班次和设备采集数据进入后,按工位+日期的统计需要支持班次和设备维度 |
|
||||||
|
| 外协任务报表 | 增加供应商、采购到货期说明、SAP 收货单号后,导出和统计都要改 |
|
||||||
|
| 工时报表 | 指派对象、工时分类、设计/编程工时进入后,需要新增字段和筛选 |
|
||||||
|
|
||||||
|
产生的隐性需求:
|
||||||
|
- 报表数据口径说明。
|
||||||
|
- 报表明细钻取。
|
||||||
|
- 报表导出字段配置。
|
||||||
|
- 报表历史快照。
|
||||||
|
- 历史数据补录/默认值策略。
|
||||||
|
- 跨报表公共视图。
|
||||||
|
|
||||||
|
客户可能继续要:
|
||||||
|
- 每个报表点击数字看明细。
|
||||||
|
- 报表导出与页面一致。
|
||||||
|
- 报表按部门、班组、班次、人员、设备切换。
|
||||||
|
- 报表定时推送。
|
||||||
|
- 历史报表锁定,不随后续数据变化。
|
||||||
|
|
||||||
|
## 四、已完成页面/报表需要关注的改造清单
|
||||||
|
|
||||||
|
### 1. 计划排产相关页面
|
||||||
|
|
||||||
|
| 页面 | 需要关注的新增影响 | 是否需要修改 |
|
||||||
|
|---|---|---|
|
||||||
|
| `PlanManagement/SelfMakePlan` | SAP 回写状态、排产字段、计划时间口径、总工时 | 需要,至少补同步状态和字段口径 |
|
||||||
|
| `PlanManagement/SelfMakePlando` | 待排产转已排产后,装配/机加新字段是否继承 | 需要,确认新增字段默认值 |
|
||||||
|
| `PlanManagement/SelfMakePlandone` | 单日期筛选、总工时、历史明细、SAP 状态 | 已明确需要改 |
|
||||||
|
| `PlanManagement/InstallMakePlan` | 装配已排产需求会复用其数据,新增 SAP 派工时间、合同交货期、发料齐套 | 需要,至少 SQL 返回字段要扩展 |
|
||||||
|
| `PlanManagement/InstallMakePlanDo` | 同上,且涉及采购请求/SAP 回写 | 需要,补 SAP 单据和失败处理 |
|
||||||
|
| `PlanManagement/PlannOrderClose` | 批量关闭 SAP 后影响所有任务显示 | 需要,增加批量结果、失败原因、日志 |
|
||||||
|
|
||||||
|
### 2. 生产执行相关页面
|
||||||
|
|
||||||
|
| 页面 | 需要关注的新增影响 | 是否需要修改 |
|
||||||
|
|---|---|---|
|
||||||
|
| `ProductionManagement/MachiningCenter` | 编程状态、异常入口、设备工时、程序工时、及时检验起算 | 需要,新增入口和不可操作原因 |
|
||||||
|
| `ProductionManagement/AssemblyCenter` | 装配完成时间、手续确认、装配工时、异常、发料任务状态 | 需要,作为装配已排产需求的数据来源 |
|
||||||
|
| `ProductionManagement/ProductionTaskManage` | 生产任务状态增加异常/齐套/质检/关闭维度 | 需要,查询字段和状态说明要扩展 |
|
||||||
|
| `ProductionManagement/AssembleTaskManage` | 装配任务将进入日计划和质检任务早知道 | 需要,补装配完成时间和任务排除规则 |
|
||||||
|
| `ProductionManagement/WorkHoursCheck` | SAP 工时校验、发料、订单工序资源更新风险扩大 | 需要,补 SAP 日志、重试、差异说明 |
|
||||||
|
| `ProductionManagement/Timesheet` | 指派对象、设计/编程工时、工时分类 | 需要,补字段和筛选 |
|
||||||
|
|
||||||
|
### 3. 质检相关页面
|
||||||
|
|
||||||
|
| 页面 | 需要关注的新增影响 | 是否需要修改 |
|
||||||
|
|---|---|---|
|
||||||
|
| `QualityManagement/QualityCenter` | 及时检验、让步接收、外协供应商、已入库限制 | 需要,补状态和字段 |
|
||||||
|
| `QualityManagement/CheckTask/processReceive` | SAP 采购收货单号、供应商、外协指派对象 | 需要,新增保存和查询字段 |
|
||||||
|
| `QualityManagement/CheckTask/purchaseIncoming` | 采购检验备注、供应商统计、到货期说明 | 需要,至少补导出字段 |
|
||||||
|
| `QualityManagement/CheckTask/materialReturn` | 退库备注、库存任务状态 | 可能需要,跟退库备注和库存任务联动 |
|
||||||
|
| `QualityManagement/Unqualified` | 供应商合格率、让步接收、不合格统计口径 | 需要,补供应商/让步接收字段 |
|
||||||
|
| 质检任务看板 | 质检任务早知道和及时检验会改变待检数量 | 需要,重算待检/超期口径 |
|
||||||
|
|
||||||
|
### 4. 外协相关页面
|
||||||
|
|
||||||
|
| 页面 | 需要关注的新增影响 | 是否需要修改 |
|
||||||
|
|---|---|---|
|
||||||
|
| `ProductionManagement/OutsourceMange` | 外协采购请求、供应商、发料/收料/质检闭环 | 需要,补 SAP 单据关系 |
|
||||||
|
| `ProductionManagement/OutsourceSheet` | 采购到货期说明、供应商、SAP 收货单号、外协质检 | 需要,查询和导出都要补 |
|
||||||
|
| `ProductionManagement/SaleOutsourceMange` | 销售外协同样受采购请求和供应商统计影响 | 需要,保持与外协管理一致 |
|
||||||
|
|
||||||
|
### 5. 工艺和基础数据页面
|
||||||
|
|
||||||
|
| 页面 | 需要关注的新增影响 | 是否需要修改 |
|
||||||
|
|---|---|---|
|
||||||
|
| `ProcessManagement/ProcessProduct` | 自动带出标准工艺后,生产任务快照问题变明显 | 需要,避免覆盖已开工任务 |
|
||||||
|
| `CraftManagement/CraftMaintain` | 工艺版本、标准工艺字段映射 | 需要,补版本/草稿概念 |
|
||||||
|
| `ProcessManagement/ProcedureManagement` | SAP `RouteStages` 同步后要防止 MES/SAP 工序不一致 | 需要,补同步状态 |
|
||||||
|
| `SystemMaintenance/WorkstationManagement` | SAP `Resources` 新增/修改后要防重复和同步失败 | 需要,补资源同步状态 |
|
||||||
|
|
||||||
|
### 6. 已完成看板和报表
|
||||||
|
|
||||||
|
| 看板/报表 | 新增功能导致的新数据 | 需要调整 |
|
||||||
|
|---|---|---|
|
||||||
|
| 生产任务看板 | 发料齐套、及时齐套、装配完成时间、及时检验、异常 | 指标口径需要重算 |
|
||||||
|
| 装配任务看板 | 装配完成时间、合同交货期、质检预告、手续确认 | 新增逾期和待办指标 |
|
||||||
|
| 质检任务看板 | 及时检验、质检任务早知道、让步接收 | 待检、超期、预告分开 |
|
||||||
|
| 机加设备生产运营看板 | 班次产量、程序工时、设备采集 | 设备利用率和产量来源需要统一 |
|
||||||
|
| 自制件汇总表 | 总工时、设计/编程/质检分类 | 工时口径要扩展 |
|
||||||
|
| 工位汇总表 | 班次、设备、人员、程序工时 | 增加班次/设备维度或说明不支持 |
|
||||||
|
|
||||||
|
## 五、新增数据会带来的数据治理问题
|
||||||
|
|
||||||
|
### 1. 新字段放哪里
|
||||||
|
|
||||||
|
容易新增到生产计划/任务表的字段:
|
||||||
|
- 发料齐套时间
|
||||||
|
- 装配完成时间
|
||||||
|
- 手续确认
|
||||||
|
- 当前对应人员
|
||||||
|
- 当前对应内容
|
||||||
|
- 钣金预达
|
||||||
|
- 钣金到达
|
||||||
|
- 泵
|
||||||
|
- 生产异常标记
|
||||||
|
|
||||||
|
问题:
|
||||||
|
- 这些字段有些是 SAP 来的,有些是手工维护,有些是计算结果。
|
||||||
|
- 全部塞进 `MES_接口_生产计划` 或 `MES_接口_生产计划_生产任务` 会让主表越来越混乱。
|
||||||
|
- 手工维护字段还需要修改历史,否则无法解释是谁改了装配完成时间。
|
||||||
|
|
||||||
|
建议:
|
||||||
|
- SAP 同步字段、手工维护字段、计算字段分开存。
|
||||||
|
- 手工维护字段建议用扩展表。
|
||||||
|
- 计算字段优先用视图或报表过程生成。
|
||||||
|
|
||||||
|
### 2. 历史数据怎么处理
|
||||||
|
|
||||||
|
新增字段会导致历史数据为空:
|
||||||
|
- 历史外协质检没有供应商。
|
||||||
|
- 历史质检没有 SAP 收货单号。
|
||||||
|
- 历史生产计划没有发料齐套时间。
|
||||||
|
- 历史任务没有手续确认。
|
||||||
|
- 历史任务没有设计/编程工时。
|
||||||
|
|
||||||
|
问题:
|
||||||
|
- 报表默认查全部时,历史数据会被算成未完成、未确认、未齐套。
|
||||||
|
- 用户可能认为系统数据异常。
|
||||||
|
|
||||||
|
建议:
|
||||||
|
- 每个新增字段定义历史默认规则。
|
||||||
|
- 报表上区分“无数据”和“未完成”。
|
||||||
|
- 对考核类报表增加启用日期。
|
||||||
|
|
||||||
|
### 3. 新增数据是否参与已完成报表
|
||||||
|
|
||||||
|
例如:
|
||||||
|
- 设计工时是否参与合同进度?
|
||||||
|
- 编程工时是否参与生产订单累计工时?
|
||||||
|
- 让步接收是否算合格?
|
||||||
|
- 外协供应商合格率是否包含历史无供应商数据?
|
||||||
|
- 已入库补检是否进入及时检验统计?
|
||||||
|
|
||||||
|
这些会直接影响已完成报表。
|
||||||
|
|
||||||
|
建议:
|
||||||
|
- 新增需求上线前,同步输出“影响报表清单”。
|
||||||
|
- 每个报表明确是否纳入新数据。
|
||||||
|
- 如果纳入,是否重算历史。
|
||||||
|
|
||||||
|
## 六、系统级隐性需求清单
|
||||||
|
|
||||||
|
这些不是客户一开始直接说的需求,但只要新增功能落地,基本会被迫出现。
|
||||||
|
|
||||||
|
| 隐性需求 | 触发原因 | 不做的后果 |
|
||||||
|
|---|---|---|
|
||||||
|
| 字段来源字典 | 新字段来自 MES、SAP、手工、设备采集 | 联调时无法解释字段来源,报表口径反复变 |
|
||||||
|
| 状态总字典 | 状态分散在排产、生产、质检、入库、SAP | 同一任务不同页面显示不同状态 |
|
||||||
|
| SAP 调用日志 | 多页面写 SAP,且可能失败 | 无法排查 MES/SAP 不一致 |
|
||||||
|
| SAP 失败重试 | 批量关闭、工时校验、外协采购都可能部分失败 | 人工只能改库或重复操作 |
|
||||||
|
| 工时统一视图 | 新增设计、编程、设备、合同工时 | 各报表总工时对不上 |
|
||||||
|
| 报表明细钻取 | 汇总类报表越来越多 | 客户无法核对数字,只能反复查 SQL |
|
||||||
|
| 报表历史快照 | 报表用于日报/周报/考核 | 历史报表随数据变化,无法对账 |
|
||||||
|
| 手工字段维护历史 | 装配完成时间、钣金、泵、手续确认等可人工维护 | 无法追溯谁改了关键交期字段 |
|
||||||
|
| 批量操作结果表 | 批量关闭 SAP、批量排产、批量确认 | 部分成功/失败无法恢复 |
|
||||||
|
| 异常统一入口组件 | 所有报工页都要报异常 | 每页重复开发,状态不一致 |
|
||||||
|
| 任务追溯详情页 | 报表要解释数字来源 | 每个报表都要临时加明细 |
|
||||||
|
| 菜单/权限自动配置规范 | 新增页面很多 | 页面上线后权限、菜单容易漏 |
|
||||||
|
| 数据启用日期配置 | 新字段历史为空 | 历史数据被误算为异常 |
|
||||||
|
| 不可操作原因接口 | 关闭、入库、异常、未齐套都影响操作 | 前端提示不一致,用户不知道为什么不能点 |
|
||||||
|
|
||||||
|
## 七、客户可能继续提出的需求
|
||||||
|
|
||||||
|
保留从客户使用角度推导出的后续需求,但这些需求都是由前面的整体影响引出来的。
|
||||||
|
|
||||||
|
### 1. 围绕工时
|
||||||
|
|
||||||
|
- 合同总工时明细。
|
||||||
|
- 设计/编程/装配/质检/机加工时占比。
|
||||||
|
- 按人员、设备、班次统计工时。
|
||||||
|
- 工时超预算预警。
|
||||||
|
- 工时与 SAP 上传差异对比。
|
||||||
|
- 一键查看某订单所有工时来源。
|
||||||
|
|
||||||
|
### 2. 围绕状态和进度
|
||||||
|
|
||||||
|
- 生产任务全流程状态图。
|
||||||
|
- 每个状态变更历史。
|
||||||
|
- 为什么任务不可开工/不可质检/不可关闭的原因说明。
|
||||||
|
- 已关闭/已入库任务仍可查询但禁止操作。
|
||||||
|
- 任务异常状态看板。
|
||||||
|
|
||||||
|
### 3. 围绕 SAP
|
||||||
|
|
||||||
|
- SAP 同步失败清单。
|
||||||
|
- 手工重推 SAP。
|
||||||
|
- SAP 与 MES 状态对账。
|
||||||
|
- SAP 单据号反查 MES 任务。
|
||||||
|
- 批量 SAP 操作结果导出。
|
||||||
|
- SAP 数据最后同步时间展示。
|
||||||
|
|
||||||
|
### 4. 围绕质检
|
||||||
|
|
||||||
|
- 供应商合格率。
|
||||||
|
- 设备合格率。
|
||||||
|
- 让步接收审批。
|
||||||
|
- 质检超期催办。
|
||||||
|
- 已入库补检。
|
||||||
|
- 质检记录按订单、供应商、人员、工序多维分析。
|
||||||
|
|
||||||
|
### 5. 围绕报表
|
||||||
|
|
||||||
|
- 所有汇总数字可点开明细。
|
||||||
|
- 报表导出字段自定义。
|
||||||
|
- 报表按部门/班组/班次拆分。
|
||||||
|
- 报表定时推送。
|
||||||
|
- 日报/周报历史锁定。
|
||||||
|
|
||||||
|
### 6. 围绕异常
|
||||||
|
|
||||||
|
- 所有报工页面直接报异常。
|
||||||
|
- 异常审批待办。
|
||||||
|
- 异常处理超期提醒。
|
||||||
|
- 异常关闭后自动恢复任务。
|
||||||
|
- 异常原因统计。
|
||||||
|
|
||||||
|
## 八、建议的开发控制策略
|
||||||
|
|
||||||
|
### 1. 每个新增需求都必须补“四张表”
|
||||||
|
|
||||||
|
不是数据库表,而是分析表:
|
||||||
|
|
||||||
|
1. 字段影响表:新增字段来自哪里,写到哪里,哪些页面显示。
|
||||||
|
2. 状态影响表:是否改变排产/派工/任务/质检/入库/SAP 状态。
|
||||||
|
3. 报表影响表:哪些已完成报表要纳入新数据。
|
||||||
|
4. SAP 影响表:是否读 SAP、写 SAP、是否需要日志和重试。
|
||||||
|
|
||||||
|
### 2. 不建议继续只按页面单点开发
|
||||||
|
|
||||||
|
原因:
|
||||||
|
- 新增页面会越来越多,但数据源高度重叠。
|
||||||
|
- 如果每个页面单独写 SQL,口径很快分裂。
|
||||||
|
- 新增字段一旦被报表引用,历史数据和导出口径都会受影响。
|
||||||
|
|
||||||
|
建议:
|
||||||
|
- 工时类先建统一视图。
|
||||||
|
- 状态类先建统一解释。
|
||||||
|
- SAP 类先建日志。
|
||||||
|
- 报表类先建公共明细查询。
|
||||||
|
|
||||||
|
### 3. 新增字段优先走扩展表
|
||||||
|
|
||||||
|
适合放扩展表的字段:
|
||||||
|
- 手工维护字段。
|
||||||
|
- SAP 同步字段。
|
||||||
|
- 报表补充字段。
|
||||||
|
- 后续可能继续变动的字段。
|
||||||
|
|
||||||
|
不建议直接塞入主任务表的字段:
|
||||||
|
- 钣金预达、钣金到达、泵、当前对应内容。
|
||||||
|
- 手续确认说明。
|
||||||
|
- SAP 同步状态明细。
|
||||||
|
- 合同级汇总字段。
|
||||||
|
|
||||||
|
### 4. 报表先定口径,再开发页面
|
||||||
|
|
||||||
|
尤其是:
|
||||||
|
- 及时检验。
|
||||||
|
- 及时送检。
|
||||||
|
- 生产日报-送检。
|
||||||
|
- 机加班次产量。
|
||||||
|
- 装配已排产需求。
|
||||||
|
- 合同工时汇总。
|
||||||
|
|
||||||
|
这些报表一旦上线,后续就是管理依据,不能边用边改口径。
|
||||||
|
|
||||||
|
## 九、结论
|
||||||
|
|
||||||
|
新增需求真正带来的影响不是“多几个页面”,而是会改变现有系统的数据结构和统计口径。
|
||||||
|
|
||||||
|
最需要提前处理的是:
|
||||||
|
|
||||||
|
1. 工时统一,否则总工时、合同进度、班次产量、日报都会互相对不上。
|
||||||
|
2. 状态统一,否则排产、生产、质检、入库、关闭、异常在不同页面显示不一致。
|
||||||
|
3. SAP 日志和重试,否则批量关闭、工时校验、外协采购、质检收货都会出现无法排查的半成功状态。
|
||||||
|
4. 报表影响清单,否则新增字段上线后已完成报表会漏算或错算。
|
||||||
|
5. 历史数据策略,否则新增字段为空会被误判为未完成、未确认、未齐套。
|
||||||
|
|
||||||
|
因此后续评估新增需求时,应先问一个问题:这个需求新增的数据,会不会改变现有页面、报表、看板、SAP 状态和历史统计。如果会,就必须同步改受影响页面,而不是只开发新页面。
|
||||||
|
|
||||||
|
## 十、同级项目数据看板带来的额外连锁影响
|
||||||
|
|
||||||
|
这次补充分析的同级看板包括:`生产任务看板`、`装配任务看板`、`质检任务看板`、`机加设备生产运营看板`、`机加设备生产运营看板二`、`TableTV`、`board_view`、`新建文件夹`。这些项目不是普通查询页,而是管理层和车间现场会持续观看的大屏。它们把 MES、SAP、设备采集、质检和工时数据压缩成几个关键数字,因此新增需求影响到看板时,问题会比普通页面更明显:不是某个按钮不可用,而是管理层看到的 KPI 可能直接变错。
|
||||||
|
|
||||||
|
### 1. 新增功能会让现有看板指标失真的位置
|
||||||
|
|
||||||
|
| 看板指标 | 当前主要来源 | 新增需求/功能变化 | 可能失真结果 | 必须同步改造 |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| 生产任务看板“按期齐套率” | `生产任务综合看板_按期齐套率`,按 `View_生产订单_MES.齐套` 汇总 | 及时齐套跟踪、SAP 缺件明细、部分齐套、预计齐套时间 | 只有“齐套/未齐套”会掩盖部分齐套和预计可执行状态 | 增加齐套状态字典、缺件明细、预计齐套日期、SAP 同步时间 |
|
||||||
|
| 生产任务看板“未及时开工” | `计划开始时间、开工时间、加工状态、合格数` | 设计/编程前置、异常暂停、二次派工、手续确认 | 被设计/编程/异常卡住的任务仍被算作生产未及时开工 | 增加未开工原因维度,区分“计划原因、前置原因、异常原因、人员/设备原因” |
|
||||||
|
| 生产任务看板“加急件” | SAP `ubt_OPKL_UrgentMaterials_ALL` + MES 计划 | 加急从订单级变为物料/工序/质检级 | 加急总数与页面明细、装配缺件、质检加急互相对不上 | 建统一加急来源视图,明确订单级/工序级/物料级 |
|
||||||
|
| 装配看板“发货状态” | `View_生产订单_MES.发货状态` + SAP `UBT_ODRF_ODLNMES` | 发货通知列表、仓库出库、SAP 发货回写 | 页面显示“发货状态”但可能混合通知、待出库、已出库、已交货 | 增加发货状态分层:通知、备货、出库、交货、SAP 回写 |
|
||||||
|
| 装配看板“在制缺件” | SAP 缺件表 + MES 装配计划 | 及时齐套跟踪、替代料、部分到货 | 只能看到缺件,无法知道是否已经采购、何时可恢复 | 增加缺件原因、预计到货、替代料、主子订单关系 |
|
||||||
|
| 装配看板“异常未关闭” | `流程表.完成人 is null` | 异常管控入口统一,机加/质检/外协都能发异常 | 未限定装配范围时,装配看板可能统计到其他部门异常 | 异常流程必须带业务域、任务、工序、责任部门 |
|
||||||
|
| 质检看板“未清任务” | `质量任务看板_未完成统计/明细` | 及时检验、复检、返工、让步接收、免检 | 未清数量会把复检/返工/免检混为同一类待检 | 增加质检状态流转、复检批次、处置结果、免检标识 |
|
||||||
|
| 质检看板“当天完成” | `View_质量检验_质检记录` 当天检测时间 | 生产日报-送检、部门日报、班次统计 | 当天完成按自然日统计,日报/班次按业务日统计会不一致 | 增加班次/日报快照口径 |
|
||||||
|
| 机加看板“设备运行状态” | `CaChe_Var` 当前缓存 | 机加班次产量、真实 OEE、设备运行工时 | 设备运行与任务报工可能不同步,OEE 无法解释 | 统一设备状态、任务状态、报工状态的时间轴 |
|
||||||
|
| 机加看板“当天完成/合格率” | 复用质检完成汇总 | 生产完成、质检完成、入库完成都被要求展示 | “完成”可能被理解成生产完成,但实际是质检完成 | 页面标题和过程改名,或新增生产完成口径 |
|
||||||
|
| `TableTV` 当前工位任务 | `设备管理_设备状态_查询` | 班次维护、人员绑定、二次派工 | 班次阈值写死后,人员归属与班次管理不一致 | 过程改读班次表,不再硬编码 7.5/16.5 |
|
||||||
|
| `board_view` 合同/项目进度 | `看板_*`,采购/库存/OEE 多处为 0 或样例 | 发货通知、采购到货、合同工时、真实 OEE | 综合大屏展示为“项目全貌”,但采购、库存、OEE 仍不真实 | 优先补真实数据源,否则不要作为经营口径 |
|
||||||
|
|
||||||
|
### 2. 已完成页面、报表、看板必须同步修改的清单
|
||||||
|
|
||||||
|
| 变更来源 | 必须同步修改的看板/报表 | 原因 |
|
||||||
|
|---|---|---|
|
||||||
|
| 设计任务报工、编程任务报工 | `board_view` 工时消耗、未完工工时;工时报表;合同进度类报表 | 当前大屏工时主要来自生产工时,新增设计/编程后合同总工时会漏算 |
|
||||||
|
| 装配已排产需求 | `生产任务看板`、`装配任务看板`、`board_view` 装配进度 | 装配计划、齐套、发货、异常、累计工时都会进入交付进度 |
|
||||||
|
| 及时检验报表 | `质检任务看板`、`机加设备生产运营看板`、生产日报-送检 | 质检及时率必须从静态/占位指标变成真实过程 |
|
||||||
|
| 及时齐套跟踪 | `生产任务看板` 齐套率/未齐套任务、`装配任务看板` 缺件、`board_view` 合同进度 | 缺件从单一状态变成主子订单、SAP 缺料、预计可执行时间 |
|
||||||
|
| 发货通知列表 | `装配任务看板` 发货状态、`board_view` 合同/交付区域 | 发货状态需要区分 SAP 通知、仓库出库、MES 任务完成 |
|
||||||
|
| 机加班次产量表 | `TableTV`、机加运营看板、设备工时报表 | 班次、设备、人员、产量、工时必须按同一业务日归属 |
|
||||||
|
| 异常管控入口统一 | 装配看板异常数、机加看板未及时开工、生产任务看板风险数 | 异常暂停不应被误算为未及时开工或未完成 |
|
||||||
|
| SAP 生产订单批量关闭 | 生产任务看板、装配看板、计划关闭页、手续确认报表 | SAP 部分成功/失败会造成 MES 任务仍显示在看板上 |
|
||||||
|
| 外协检验字段增强 | 质检看板、外协报表、供应商质量统计 | 质检任务要按供应商、采购收货单、指派对象追溯 |
|
||||||
|
|
||||||
|
### 3. 看板暴露出的系统级隐性需求
|
||||||
|
|
||||||
|
1. **统一指标口径层**
|
||||||
|
现在不同看板各自写存储过程:`生产任务综合看板_*`、`装配中心任务看板_*`、`质量任务看板_*`、`机加设备生产运营看板_*`、`看板_*`。这些过程大量重复读取 `View_生产订单_MES`、`YL_质量检验_质检记录`、`YL_加工中心_操作记录表`。后续应建立统一口径视图,例如:
|
||||||
|
- `View_MES_任务状态统一口径`
|
||||||
|
- `View_MES_齐套缺件统一口径`
|
||||||
|
- `View_MES_质检待办统一口径`
|
||||||
|
- `View_MES_工时统一口径`
|
||||||
|
- `View_MES_设备任务运行统一口径`
|
||||||
|
|
||||||
|
2. **统一状态字典**
|
||||||
|
当前看板内同时出现 `任务状态`、`加工状态`、`排产状态`、`齐套`、`发料状态`、`拣配状态`、`发货状态`、`加急状态`、`质检状态`、`设备状态`。这些状态来自不同表,且有的前端再次转换。必须补一张状态解释表或统一视图,避免同一个 `0/1/2/4` 在不同页面含义不同。
|
||||||
|
|
||||||
|
3. **SAP 同步状态与时间戳**
|
||||||
|
看板不是实时调用 B1 Service Layer,而是通过 SQL 读取 SAP 跨库表或 SAP 同步落地表,例如 `ubt_OPKL_UrgentMaterials_ALL`、`UBT_ODRF_ODLNMES`、`质量检验_质检任务_SAP`。因此大屏上所有 SAP 相关指标都应该显示或记录同步时间、同步结果、失败原因。否则用户看到缺件、发货、加急时无法判断是 SAP 最新状态还是 MES 缓存状态。
|
||||||
|
|
||||||
|
4. **指标钻取能力**
|
||||||
|
`board_view` 已经有中央订单点击钻取明细,其他看板多数只有汇总和滚动表。新增需求上线后,客户很可能要求点击“未及时开工、未清质检、缺件、异常、加急、未齐套”直接看到来源明细。不能只返回总数,过程应统一支持“汇总 + 明细 + 字段来源”。
|
||||||
|
|
||||||
|
5. **历史快照**
|
||||||
|
大屏是实时结果,但日报、周报、月报需要历史定版。当前很多过程使用 `GETDATE()` 实时计算,例如当天完成、近 3 天装配合格率、当月计划执行率。新增管理报表后,必须保存日快照或允许传入统计日期,否则第二天无法复现昨天看板上的数字。
|
||||||
|
|
||||||
|
6. **占位指标清理**
|
||||||
|
`board_view` 中 OEE、环境、水电气、采购部进度、库存/在购字段存在样例或占位;生产任务看板中采购未及时到货、质检及时率、未及时入库也有静态值或未完整接入。上线前必须清理占位指标:要么接真实过程,要么隐藏,不要和真实指标混放。
|
||||||
|
|
||||||
|
### 4. 统一改造建议
|
||||||
|
|
||||||
|
| 优先级 | 改造项 | 解决的问题 |
|
||||||
|
|---|---|---|
|
||||||
|
| P0 | 给所有看板指标补“口径说明 + 来源过程 + 来源字段” | 防止管理层把不同含义的“完成、齐套、加急、在制”混用 |
|
||||||
|
| P0 | 把 `GETDATE()` 型过程改造为可传统计日期,实时看板默认当天 | 让日报/历史回看能复现 |
|
||||||
|
| P0 | 为 SAP 相关看板补同步时间和同步状态 | 判断数据新旧,排查 SAP/MES 不一致 |
|
||||||
|
| P1 | 统一质检待办过程,覆盖未清、及时率、关键工序、当天完成 | 避免 `质量任务看板_*` 和 `Visualization_QcTask_*` 两套接口并行 |
|
||||||
|
| P1 | 统一机加任务/设备状态过程,区分任务在制、设备运行、报工完成 | 防止设备状态与任务状态互相替代 |
|
||||||
|
| P1 | 统一装配发货/缺件过程,串起 SAP 发货通知、缺件、齐套、仓库出库 | 让装配看板真正反映交付风险 |
|
||||||
|
| P2 | 将 `board_view` 的占位采购、库存、OEE 接入真实数据或移除 | 避免综合大屏成为混合真实/样例数据的经营看板 |
|
||||||
|
|
||||||
|
### 5. 客户可能继续提出的看板类需求
|
||||||
|
|
||||||
|
这些不是主分析角度,但从现有看板形态看,客户后续很可能继续要求:
|
||||||
|
|
||||||
|
- 点击任意 KPI 下钻明细,例如未齐套、加急、未及时开工、未清质检、装配缺件。
|
||||||
|
- 看板按项目、合同、车间、班组、设备筛选。
|
||||||
|
- 看板显示 SAP 同步时间和异常提示。
|
||||||
|
- 看板支持历史日期回看,而不是只能看当前实时数据。
|
||||||
|
- 质检看板增加及时率趋势和超期责任人。
|
||||||
|
- 装配看板增加预计发货、预计齐套、缺件到货日期。
|
||||||
|
- 机加看板增加真实 OEE、设备利用率、程序运行时长、班次产量。
|
||||||
|
- 生产任务综合看板增加“设计/编程是否完成”作为开工前置条件。
|
||||||
|
- 大屏数据定时快照,日报/周报自动引用同一口径。
|
||||||
|
|
||||||
|
## 十一、设备数据采集与现场大屏专项影响分析
|
||||||
|
|
||||||
|
本次新增的设备档案、设备数据采集、OEE、工时异常、条码拣配和一楼/机加/装配现场大屏需求,会把系统从“任务报工驱动”进一步推向“设备实时数据 + MES 任务 + 质检结果 + 现场人员 + SAP 物料状态”的综合分析系统。它的影响不只在新增几个看板,而是会改变工时、产量、合格率、齐套、送检、缺勤、设备状态的基础口径。
|
||||||
|
|
||||||
|
### 1. 总体影响链路
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart TD
|
||||||
|
A[设备档案/主要设备/标准工时] --> B[设备数据采集]
|
||||||
|
B --> C[设备状态时长]
|
||||||
|
B --> D[程序工时/单件工时]
|
||||||
|
C --> E[设备利用率]
|
||||||
|
D --> F[性能开动率]
|
||||||
|
G[MES 报工/计划产量] --> H[产能利用率]
|
||||||
|
I[质检记录/良品不良品] --> J[产品合格率]
|
||||||
|
E --> K[OEE]
|
||||||
|
F --> K
|
||||||
|
J --> K
|
||||||
|
D --> L[工时异常报表]
|
||||||
|
M[条码拣配] --> N[齐套/发料/拣配状态]
|
||||||
|
N --> O[生产/装配看板]
|
||||||
|
P[关键工序标识] --> Q[质检/机加关键任务大屏]
|
||||||
|
R[班次/岗位/工位/考勤] --> S[缺勤人员大屏]
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. 对现有数据模型的冲击
|
||||||
|
|
||||||
|
| 新需求 | 新增或必须明确的数据 | 冲击对象 | 主要问题 |
|
||||||
|
|---|---|---|---|
|
||||||
|
| 设备档案管理 | 主要设备、参与 OEE、设备/工位关系、标准工时来源 | 设备档案、工位管理、工艺维护 | 标准工时放设备、工艺还是设备+工序能力表必须明确 |
|
||||||
|
| 设备数据采集 | 程序工时、单件工时、设备状态时长、程序号、采集时间 | `CaChe_Var`、历史设备数据、设备状态记录、工时报表 | 当前多为当前缓存或历史状态,缺少可直接算单件工时的任务绑定 |
|
||||||
|
| OEE 指标 | 计划产量、实际产量、设备工时、标准工时、标准单件工时、实际单件工时、良品数 | 机加看板、`board_view`、设备报表 | OEE 三个组成指标必须同设备、同日期、同班次,否则乘出来没有管理意义 |
|
||||||
|
| 工时异常报表 | 实际单件工时、标准单件工时、超出比例、异常原因 | 工时查询、工时校验、异常管控 | 设备采集工时与人工报工工时不一致时,谁作为异常依据需要确定 |
|
||||||
|
| 条码拣配 | 条码、物料、批次、任务、拣配人、拣配时间、状态写回 | 机加中心、装配中心、齐套看板 | 条码扫描会改变 `拣配状态/齐套/发料状态`,看板和生产任务必须同步 |
|
||||||
|
| 质检及时率 | 最后一次生产完成时间、报检时间、检验完成时间、超期天数 | 质检看板、生产日报-送检 | 以生产完成时间作为起算点,会改变现有“未清任务”定义 |
|
||||||
|
| 关键工序 | 工艺关键标识、任务快照、关键工序应检/未检/在制 | 工艺维护、生产任务、质检/机加大屏 | 关键工序如果只存在工艺库,会影响历史任务重算 |
|
||||||
|
| 缺勤人员 | 岗位、工位、人员、应到、实到、班次 | 班次管理、人员绑定、机加/装配大屏 | 不能从“没有报工”直接判断缺勤,必须有排班和考勤/上岗数据 |
|
||||||
|
| 装配及时送检 | 发料齐套时间、送检状态、送检时间、超期天数 | 装配中心、装配看板、质检任务 | 发料齐套后 2 天未送检会新增一种介于“可开工/待检”之间的风险状态 |
|
||||||
|
|
||||||
|
### 3. OEE 不是一个单独公式,而是一组口径治理
|
||||||
|
|
||||||
|
当前讨论公式为:
|
||||||
|
|
||||||
|
- 产能利用率(单台)= 实际产量 / 计划产量 * 100%
|
||||||
|
- 设备利用率(单台)= 设备工时 / 标准工时
|
||||||
|
- 设备性能开动率(单台)= 标准单件工时 / 实际单件工时
|
||||||
|
- 产品合格率(工位)= 良品数 / 总产量
|
||||||
|
- OEE = 设备利用率 * 开动率 * 合格率
|
||||||
|
|
||||||
|
这些公式看起来简单,但真正的隐性需求是统一统计边界:
|
||||||
|
|
||||||
|
1. **设备边界**:只算主要设备,还是所有设备都算。辅助设备、测试设备、维修设备是否排除。
|
||||||
|
2. **时间边界**:自然日、班次日、订单周期、计划周期不能混用。
|
||||||
|
3. **产量边界**:实际产量来自 MES 报工、设备计数还是质检数量。三者时间上可能不一致。
|
||||||
|
4. **合格率边界**:良品数来自报工良品还是质检合格数。若质检晚于生产,日合格率会滞后。
|
||||||
|
5. **标准工时边界**:标准工时可能来自工艺标准工时、设备能力标准、班次可用工时。三个字段不能都叫标准工时。
|
||||||
|
6. **实际单件工时边界**:设备采集循环时间、设备运行时间/产量、人工报工工时/产量是不同口径。
|
||||||
|
|
||||||
|
因此 OEE 不能只在大屏上增加几个公式。必须先建立设备指标明细层,至少包含设备、工位、日期、班次、任务、物料、工序、计划产量、实际产量、良品、不良、标准工时、设备运行工时、标准单件工时、实际单件工时和采集质量标识。
|
||||||
|
|
||||||
|
### 4. 对已完成页面和看板的必要改造
|
||||||
|
|
||||||
|
| 页面/看板 | 必须新增或调整 | 原因 |
|
||||||
|
|---|---|---|
|
||||||
|
| `DeviceManagement/DeviceInformation` | 主要设备、是否参与 OEE、采集点位、标准工时来源 | 设备档案是设备采集和 OEE 的基础 |
|
||||||
|
| `SystemMaintenance/WorkstationManagement` | 工位与设备、人员、岗位的一对多关系 | 缺勤人员要显示岗位、工位、姓名,多工位需合并 |
|
||||||
|
| `ProcessManagement/ProcessProduct` / 工艺维护 | 是否关键工序、标准单件工时 | 质检和机加大屏需要关键工序汇总和明细 |
|
||||||
|
| `PlanManagement/SelfMakePlan/SelfMakePlandone` | 任务设备绑定、计划产量、标准工时字段确认 | 单台设备产能利用率需要按任务落到设备 |
|
||||||
|
| `ProductionManagement/MachiningCenter` | 条码拣配入口、拣配状态写回、设备采集任务绑定 | 机加及时拣配和设备采集都要关联生产任务 |
|
||||||
|
| `ProductionManagement/AssemblyCenter` | 条码拣配入口、发料齐套时间、送检状态 | 装配及时拣配和及时送检都要从这里进入 |
|
||||||
|
| `ProductionManagement/WorkHoursCheck` | 程序工时、设备工时、人工工时差异、异常确认 | 工时异常报表会反向要求工时校验解释差异 |
|
||||||
|
| `QualityManagement/QualityCenter` | 最后生产完成时间、报检时间、超期天数、关键工序 | 质检及时率和关键工序任务必须有来源 |
|
||||||
|
| `质检任务看板` | 质检及时率真实过程、超 2 天未检明细、关键工序汇总/明细 | 当前看板未完整实现及时率真实口径 |
|
||||||
|
| `机加设备生产运营看板` | OEE、设备利用率、开动率、合格率、关键工序任务、缺勤人员 | 现有设备状态和 OEE 仍不足以支撑新指标 |
|
||||||
|
| `装配任务看板` | 缺勤人员、及时送检任务颜色/排序、发料齐套后 2 天未送检 | 新需求直接改变装配现场大屏列表逻辑 |
|
||||||
|
| `TableTV` | 设备采集状态、单件工时、异常颜色 | 现场卡片应展示设备真实状态和工时风险 |
|
||||||
|
| `board_view` | 真实 OEE 替换样例、设备/产能/质量指标统一 | 综合大屏不能继续使用固定 OEE 样例 |
|
||||||
|
|
||||||
|
### 5. 工时异常报表会反向推动工时体系重构
|
||||||
|
|
||||||
|
工时异常条件是“单件工时 > 标准工时”。这会带来三个隐性问题:
|
||||||
|
|
||||||
|
1. **异常来源不只设备**
|
||||||
|
单件工时超标可能来自设备状态异常、程序问题、刀具/工装、人员操作、物料质量、等待质检、等待发料。报表如果只列超标,不记录原因,会变成无法闭环的告警列表。
|
||||||
|
|
||||||
|
2. **需要区分程序工时和人工工时**
|
||||||
|
程序工时用于判断设备加工效率;人工工时用于人工绩效和 SAP 工时上传。两者差异本身就是一个分析点,不能用程序工时直接覆盖人工报工。
|
||||||
|
|
||||||
|
3. **需要异常确认流程**
|
||||||
|
如果报表用于管理考核,就必须支持确认:是否真实异常、原因分类、责任部门、处理说明、确认人、确认时间。否则数据会被质疑。
|
||||||
|
|
||||||
|
### 6. 条码拣配会改变齐套和开工状态
|
||||||
|
|
||||||
|
及时拣配(机加/装配)表面是扫码需求,实际会改动任务状态链:
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart LR
|
||||||
|
A[条码扫描] --> B[识别物料/任务]
|
||||||
|
B --> C[更新拣配记录]
|
||||||
|
C --> D[更新拣配状态]
|
||||||
|
D --> E[计算齐套]
|
||||||
|
E --> F[影响发料状态]
|
||||||
|
F --> G[影响是否可开工]
|
||||||
|
G --> H[影响生产/装配看板]
|
||||||
|
```
|
||||||
|
|
||||||
|
如果扫码只记录日志,不写回 `拣配状态/齐套/发料状态`,看板仍然显示未齐套;如果扫码直接写回状态,但没有 SAP 库存校验,又可能造成 MES 显示已齐套、SAP 库存不足。因此需要明确 MES 与 SAP 谁作为库存和发料主口径。
|
||||||
|
|
||||||
|
### 7. 三类大屏的新增字段影响
|
||||||
|
|
||||||
|
| 大屏 | 新增指标 | 需要的新增字段/过程 |
|
||||||
|
|---|---|---|
|
||||||
|
| 一楼质检大屏 | 质检及时率、超 2 天未检、关键工序检验汇总/明细 | 最后生产完成时间、报检时间、检验完成时间、是否关键工序、超期天数 |
|
||||||
|
| 机加现场大屏 | 缺勤人员、关键工序任务汇总/明细、设备 OEE | 岗位、工位、姓名、应到/实到、是否关键工序、设备运行工时、单件工时 |
|
||||||
|
| 装配现场大屏 | 缺勤人员、及时送检任务列表、加急后排序、颜色区分 | 岗位、工位、姓名、发料齐套时间、送检状态、送检时间、超期天数 |
|
||||||
|
|
||||||
|
### 8. 需要优先确认的问题
|
||||||
|
|
||||||
|
1. 设备采集数据由谁写入 MES,接口频率是多少。
|
||||||
|
2. 设备采集如何绑定到 MES 任务,是靠设备+时间段、程序号、条码,还是人工绑定。
|
||||||
|
3. 标准单件工时来自生产工艺,还是设备能力表。
|
||||||
|
4. 实际产量以 MES 报工、设备计数、质检数量中的哪一个为准。
|
||||||
|
5. 良品数以报工良品还是质检合格数为准。
|
||||||
|
6. 质检及时率的“最后一次生产完成时间”取操作记录的报工、辅助结束,还是任务完成时间。
|
||||||
|
7. 关键工序标识是否影响历史任务,建议只影响新下发任务或做任务快照。
|
||||||
|
8. 缺勤人员的“应到”来源是班次绑定、排班表还是岗位配置。
|
||||||
|
9. 装配“发料齐套后 2 天未送检”的发料齐套时间来自哪个表。
|
||||||
|
10. 条码拣配是否需要 SAP 库存校验和失败重试。
|
||||||
|
|
||||||
|
## 十二、补充修正:新增需求必须同时判断“维护入口”
|
||||||
|
|
||||||
|
前面的分析已经覆盖了工时、状态、SAP、报表、看板的连锁影响,但还需要补一个更基础的判断:客户提出一个报表或看板字段时,不等于只新增一个展示页面。必须同时判断这个字段从哪里来、由谁维护、在哪个页面维护。
|
||||||
|
|
||||||
|
如果不先确认维护入口,会出现三类问题:
|
||||||
|
|
||||||
|
1. 报表页面有字段,但没有地方录入,最终只能写死、手工改库或长期为空。
|
||||||
|
2. 看板显示了 KPI,但基础字段散落在多个页面,用户不知道该去哪里修正。
|
||||||
|
3. 同一个字段在标准数据、订单数据、任务快照、SAP 同步表中重复维护,导致历史统计和当前查询对不上。
|
||||||
|
|
||||||
|
### 1. 判断框架
|
||||||
|
|
||||||
|
| 判断项 | 需要回答的问题 | 典型结论 |
|
||||||
|
|---|---|---|
|
||||||
|
| 字段性质 | 是主数据、订单过程数据、任务执行数据、外部同步数据、计算结果,还是人工确认结果 | 主数据进基础维护页;过程数据进业务页;计算结果进视图/报表 |
|
||||||
|
| 数据来源 | MES、SAP、设备采集、考勤/排班、人工维护,还是多来源融合 | 多来源字段必须记录来源和更新时间 |
|
||||||
|
| 维护责任人 | 工艺、计划、生产、质检、仓库、设备、班组长、系统管理员谁维护 | 决定页面权限和菜单归属 |
|
||||||
|
| 维护入口 | 现有页面能否承载,还是必须新建页面 | 优先扩展现有业务页面,缺口大时才新建维护页 |
|
||||||
|
| 历史影响 | 修改后是否影响已下发任务和历史报表 | 影响历史的字段要做任务快照或维护历史 |
|
||||||
|
| 看板影响 | 是否会改变已有 KPI 口径 | 看板过程必须同步改,不只改主系统页面 |
|
||||||
|
|
||||||
|
### 2. 按字段类型划分维护位置
|
||||||
|
|
||||||
|
| 字段/能力类型 | 应优先维护的位置 | 不建议的做法 |
|
||||||
|
|---|---|---|
|
||||||
|
| 人员、岗位、班次、排班、出勤 | 人员管理、班次管理、工位人员绑定,必要时新增排班/出勤维护页 | 在机加/装配大屏里直接维护缺勤 |
|
||||||
|
| 工序、关键工序、标准工时、准备工时 | 标准工艺、生产工艺、工序基础数据 | 单独做一个脱离工艺的关键工序表但不和任务快照同步 |
|
||||||
|
| 设备、工位、采集点位、是否参与 OEE | 设备档案、工位管理、设备采集配置 | 把设备标准工时简单塞进设备档案并用于所有零件 |
|
||||||
|
| 生产订单过程字段 | 生产计划、排产、装配已排产需求、生产工艺 | 只在报表页维护,不写回业务主链路 |
|
||||||
|
| 质检处置字段 | 质检中心、不合格处置、序检收检 | 让步接收记录页反向维护质检结果 |
|
||||||
|
| SAP 同步字段 | SAP 同步表或 MES 扩展表,只读展示同步时间和状态 | 前端手工覆盖 SAP 字段但不留来源 |
|
||||||
|
| 人工确认字段 | 待办类页面维护,例如手续确认报表,同时记录确认人和时间 | 把确认状态隐藏在 SQL 过滤里,没有操作日志 |
|
||||||
|
| 统计/看板指标 | 统一视图、存储过程、日报快照 | 每个看板各写一套 SQL 重新定义口径 |
|
||||||
|
|
||||||
|
### 3. 典型字段修正结论
|
||||||
|
|
||||||
|
| 需求点 | 修正结论 |
|
||||||
|
|---|---|
|
||||||
|
| 缺勤人员 | 必须先有“应到人员”和“实到人员”来源。应到来自班次/排班/岗位工位人员绑定,实到来自考勤/上岗/登录/报工。若现有系统没有排班入口,需要新增或扩展排班/出勤维护页;看板只查询缺勤结果。 |
|
||||||
|
| 关键工序 | 属于工艺属性,应在标准工艺和生产工艺维护。生产任务下发时快照 `是否关键工序`,质检和机加大屏读取快照。不能只在大屏或质检报表里临时标记。 |
|
||||||
|
| 标准单件工时 | 优先来自标准工艺/生产工艺,必要时增加设备+工序能力表。设备档案只维护设备能力参数和 OEE 参与属性。 |
|
||||||
|
| 发料齐套时间 | 如果来自 SAP,必须同步到 MES 并记录同步时间;如果允许人工修正,应放在生产计划/装配排产业务链路或装配已排产需求页,并保留维护历史。 |
|
||||||
|
| 装配完成时间 | 规则计算字段可以在装配已排产需求中显示;人工调整时要作为订单过程字段保存,不应只存在前端。 |
|
||||||
|
| 预计可执行时间 | 依赖 SAP 缺件、主子订单关系和人工判断。可以在及时齐套跟踪页维护,但要记录维护人、维护时间和依据。 |
|
||||||
|
| 让步接收 | 质检结果字段应在质检中心或不合格处置维护;让步接收记录页只做查询、导出和追溯。 |
|
||||||
|
| 外协供应商/SAP 收货单号 | 应在外协任务、序检收检或外协收货链路补字段;供应商质量报表只消费这些字段。 |
|
||||||
|
| OEE | OEE 是计算结果,不是人工维护字段。基础数据分别来自设备采集、MES 报工、质检记录、工艺标准工时和班次规则。 |
|
||||||
|
|
||||||
|
### 4. 对已完成页面的新增影响
|
||||||
|
|
||||||
|
| 现有页面 | 新增维护责任 |
|
||||||
|
|---|---|
|
||||||
|
| `ProcessManagement/ProcessProduct` 生产工艺 | 维护订单级关键工序、标准工时、标准工艺带出后的生产工艺草稿;保存时形成任务可用快照 |
|
||||||
|
| `ProcessManagement/ProcessesDevelop` 制定标准工艺 | 维护标准关键工序、标准单件工时、准备工时,作为生产工艺默认来源 |
|
||||||
|
| `SystemMaintenance/WorkstationManagement` | 补工位与设备、岗位、人员关系,支持缺勤和 OEE 维度 |
|
||||||
|
| `BasicData/ShiftManagement` 或现有班次管理 | 支持班次时间、跨天规则、应到人员或排班规则 |
|
||||||
|
| `BasicData/PersonnelManagement`、人员角色绑定 | 支持人员岗位、班组、工位范围,为缺勤和权限提供来源 |
|
||||||
|
| `ProductionManagement/AssemblyCenter` | 维护/展示装配执行、发料、送检、异常、手续确认相关过程字段 |
|
||||||
|
| `ProductionManagement/MachiningCenter` | 维护/展示机加扫码、设备绑定、报工、异常、关键工序执行状态 |
|
||||||
|
| `QualityManagement/QualityCenter` | 维护质检结果、让步接收、送检/已检数量、关键工序质检状态 |
|
||||||
|
| `DeviceManagement/DeviceInformation` | 维护主要设备、采集点位、OEE 参与标识,不独立承担所有标准工时 |
|
||||||
|
|
||||||
|
### 5. 后续评估新增需求的强制问题
|
||||||
|
|
||||||
|
后续每个新需求都要在开发前回答:
|
||||||
|
|
||||||
|
1. 这个字段是展示、维护、确认,还是计算。
|
||||||
|
2. 如果要维护,是否已有页面可以维护。
|
||||||
|
3. 如果新增页面,它是查询页、待办页,还是主数据维护页。
|
||||||
|
4. 数据是否需要修改历史;如果需要,是否留维护日志。
|
||||||
|
5. 是否需要任务快照,避免标准数据变化影响历史任务。
|
||||||
|
6. 是否影响生产任务看板、装配看板、质检看板、机加看板或 `board_view`。
|
||||||
|
|
||||||
|
只有这六个问题明确后,才能判断是“新增页面”、 “扩展现有页面”、 “新增维护页”,还是“只改 SQL/视图/看板口径”。
|
||||||
731
analyze_mes_v20_views.js
Normal file
731
analyze_mes_v20_views.js
Normal file
@@ -0,0 +1,731 @@
|
|||||||
|
const fs = require('fs');
|
||||||
|
const path = require('path');
|
||||||
|
|
||||||
|
const root = path.resolve('MES_Manage_View_V20');
|
||||||
|
const viewsRoot = path.join(root, 'src', 'views');
|
||||||
|
const outFile = path.join(root, 'MES_Manage_View_V20_src_views_逐页面详细分析.md');
|
||||||
|
|
||||||
|
function existingSqlFiles() {
|
||||||
|
return fs.readdirSync(root)
|
||||||
|
.filter(x => x.toLowerCase().endsWith('.sql'))
|
||||||
|
.map(x => path.join(root, x));
|
||||||
|
}
|
||||||
|
|
||||||
|
function readText(file) {
|
||||||
|
const buf = fs.readFileSync(file);
|
||||||
|
if (buf.length >= 2 && buf[0] === 0xff && buf[1] === 0xfe) return buf.slice(2).toString('utf16le');
|
||||||
|
if (buf.length >= 2 && buf[0] === 0xfe && buf[1] === 0xff) {
|
||||||
|
const swapped = Buffer.alloc(buf.length - 2);
|
||||||
|
for (let i = 2; i + 1 < buf.length; i += 2) {
|
||||||
|
swapped[i - 2] = buf[i + 1];
|
||||||
|
swapped[i - 1] = buf[i];
|
||||||
|
}
|
||||||
|
return swapped.toString('utf16le');
|
||||||
|
}
|
||||||
|
if (buf.length >= 3 && buf[0] === 0xef && buf[1] === 0xbb && buf[2] === 0xbf) return buf.slice(3).toString('utf8');
|
||||||
|
return buf.toString('utf8');
|
||||||
|
}
|
||||||
|
|
||||||
|
function walk(dir, exts, result = []) {
|
||||||
|
if (!fs.existsSync(dir)) return result;
|
||||||
|
for (const item of fs.readdirSync(dir, { withFileTypes: true })) {
|
||||||
|
const p = path.join(dir, item.name);
|
||||||
|
if (item.isDirectory()) walk(p, exts, result);
|
||||||
|
else if (exts.includes(path.extname(item.name).toLowerCase())) result.push(p);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
function rel(file) {
|
||||||
|
return path.relative(root, file).replace(/\\/g, '/');
|
||||||
|
}
|
||||||
|
|
||||||
|
function lineOf(text, index) {
|
||||||
|
return text.slice(0, index).split(/\r?\n/).length;
|
||||||
|
}
|
||||||
|
|
||||||
|
function uniq(arr) {
|
||||||
|
return [...new Set((arr || []).filter(Boolean))];
|
||||||
|
}
|
||||||
|
|
||||||
|
function clean(s) {
|
||||||
|
return (s || '')
|
||||||
|
.replace(/<[^>]*>/g, '')
|
||||||
|
.replace(/\{\{.*?\}\}/g, '')
|
||||||
|
.replace(/\s+/g, ' ')
|
||||||
|
.trim();
|
||||||
|
}
|
||||||
|
|
||||||
|
function escapeReg(s) {
|
||||||
|
return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
||||||
|
}
|
||||||
|
|
||||||
|
function isInComment(text, index) {
|
||||||
|
const lineStart = text.lastIndexOf('\n', index) + 1;
|
||||||
|
const beforeOnLine = text.slice(lineStart, index);
|
||||||
|
if (/^\s*\/\//.test(beforeOnLine)) return true;
|
||||||
|
const blockStart = text.lastIndexOf('/*', index);
|
||||||
|
const blockEnd = text.lastIndexOf('*/', index);
|
||||||
|
return blockStart > blockEnd;
|
||||||
|
}
|
||||||
|
|
||||||
|
function moduleNameFromPath(relPath) {
|
||||||
|
const parts = relPath.split('/');
|
||||||
|
if (parts[0] !== 'src' || parts[1] !== 'views') return '其他';
|
||||||
|
if (parts.length <= 3) return parts[2] || '根页面';
|
||||||
|
return `${parts[2]} / ${parts.slice(3, -1).join(' / ') || path.basename(relPath)}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
function extractLabels(text) {
|
||||||
|
const labels = [];
|
||||||
|
const patterns = [
|
||||||
|
/<el-button\b[^>]*>([\s\S]*?)<\/el-button>/g,
|
||||||
|
/\blabel="([^"]+)"/g,
|
||||||
|
/\bplaceholder="([^"]+)"/g,
|
||||||
|
/\btitle="([^"]+)"/g
|
||||||
|
];
|
||||||
|
for (const re of patterns) {
|
||||||
|
let m;
|
||||||
|
while ((m = re.exec(text))) {
|
||||||
|
const value = clean(m[1]);
|
||||||
|
if (value && !/[{};]/.test(value) && value.length <= 48) labels.push(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return uniq(labels).slice(0, 30);
|
||||||
|
}
|
||||||
|
|
||||||
|
function extractFrontendFields(text) {
|
||||||
|
const vModels = [];
|
||||||
|
const tableColumns = [];
|
||||||
|
const pushedParams = [];
|
||||||
|
|
||||||
|
let m;
|
||||||
|
const vmRe = /\bv-model(?:\.[\w-]+)?="([^"]+)"/g;
|
||||||
|
while ((m = vmRe.exec(text))) vModels.push(clean(m[1]));
|
||||||
|
|
||||||
|
const colRe = /<el-table-column\b([^>]*)>/g;
|
||||||
|
while ((m = colRe.exec(text))) {
|
||||||
|
const attrs = m[1];
|
||||||
|
const label = /label="([^"]+)"/.exec(attrs)?.[1] || '';
|
||||||
|
const prop = /prop="([^"]+)"/.exec(attrs)?.[1] || '';
|
||||||
|
if (label || prop) tableColumns.push({ label: clean(label), prop: clean(prop) });
|
||||||
|
}
|
||||||
|
|
||||||
|
const paramRe = /\.(?:push|unshift)\s*\(\s*\[\s*['"]([^'"]+)['"]\s*,\s*([^\]\n]+)\]/g;
|
||||||
|
while ((m = paramRe.exec(text))) pushedParams.push({ name: clean(m[1]), expr: clean(m[2]) });
|
||||||
|
|
||||||
|
return {
|
||||||
|
vModels: uniq(vModels).slice(0, 80),
|
||||||
|
tableColumns: uniq(tableColumns.map(x => `${x.label}|${x.prop}`))
|
||||||
|
.map(x => {
|
||||||
|
const [label, prop] = x.split('|');
|
||||||
|
return { label, prop };
|
||||||
|
})
|
||||||
|
.slice(0, 120),
|
||||||
|
pushedParams: uniq(pushedParams.map(x => `${x.name}|${x.expr}`))
|
||||||
|
.map(x => {
|
||||||
|
const [name, expr] = x.split('|');
|
||||||
|
return { name, expr };
|
||||||
|
})
|
||||||
|
.slice(0, 120)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function extractMethods(text) {
|
||||||
|
const methods = [];
|
||||||
|
const methodBlock = /methods\s*:\s*\{([\s\S]*?)\n\s*\}/m.exec(text);
|
||||||
|
const src = methodBlock ? methodBlock[1] : text;
|
||||||
|
const re = /^\s*([A-Za-z_$\u4e00-\u9fa5][\w$\u4e00-\u9fa5]*)\s*\([^)]*\)\s*\{/gm;
|
||||||
|
let m;
|
||||||
|
while ((m = re.exec(src))) methods.push(m[1]);
|
||||||
|
return uniq(methods).slice(0, 30);
|
||||||
|
}
|
||||||
|
|
||||||
|
function extractCreateData(text) {
|
||||||
|
const calls = [];
|
||||||
|
const re = /CreateData\s*\(\s*['"]([^'"]+)['"]\s*,\s*['"]([^'"]+)['"]/g;
|
||||||
|
let m;
|
||||||
|
while ((m = re.exec(text))) {
|
||||||
|
if (isInComment(text, m.index)) continue;
|
||||||
|
calls.push({ type: m[1], name: m[2], line: lineOf(text, m.index) });
|
||||||
|
}
|
||||||
|
return calls;
|
||||||
|
}
|
||||||
|
|
||||||
|
function extractSapCalls(text) {
|
||||||
|
const calls = [];
|
||||||
|
const re = /(getB1|postB1|patchB1|posttm)\s*\(\s*([`'"])([\s\S]*?)\2/g;
|
||||||
|
let m;
|
||||||
|
while ((m = re.exec(text))) {
|
||||||
|
if (isInComment(text, m.index)) continue;
|
||||||
|
const snippet = text.slice(m.index, m.index + 1200);
|
||||||
|
const keys = [];
|
||||||
|
const keyRe = /["']?([\u4e00-\u9fa5A-Za-z_][\u4e00-\u9fa5A-Za-z0-9_$]*)["']?\s*:/g;
|
||||||
|
let km;
|
||||||
|
while ((km = keyRe.exec(snippet)) && keys.length < 24) {
|
||||||
|
if (!['if', 'for', 'while', 'switch', 'catch', 'function'].includes(km[1])) keys.push(km[1]);
|
||||||
|
}
|
||||||
|
calls.push({ fn: m[1], url: clean(m[3]), line: lineOf(text, m.index), payloadKeys: uniq(keys) });
|
||||||
|
}
|
||||||
|
return calls;
|
||||||
|
}
|
||||||
|
|
||||||
|
function extractApiImports(text) {
|
||||||
|
const imports = [];
|
||||||
|
const re = /from\s+['"](@\/api\/[^'"]+)['"]/g;
|
||||||
|
let m;
|
||||||
|
while ((m = re.exec(text))) imports.push(m[1]);
|
||||||
|
return uniq(imports);
|
||||||
|
}
|
||||||
|
|
||||||
|
function stripSqlComments(sql) {
|
||||||
|
return sql.replace(/\/\*[\s\S]*?\*\//g, ' ').replace(/--.*$/gm, ' ');
|
||||||
|
}
|
||||||
|
|
||||||
|
function compactSqlLine(s) {
|
||||||
|
return clean(s)
|
||||||
|
.replace(/\s*,\s*/g, ', ')
|
||||||
|
.replace(/\s*=\s*/g, ' = ')
|
||||||
|
.replace(/\s+/g, ' ')
|
||||||
|
.slice(0, 240);
|
||||||
|
}
|
||||||
|
|
||||||
|
function extractSqlLines(body, regex, limit) {
|
||||||
|
return uniq(stripSqlComments(body)
|
||||||
|
.split(/\r?\n/)
|
||||||
|
.map(x => x.trim())
|
||||||
|
.filter(x => regex.test(x))
|
||||||
|
.map(compactSqlLine))
|
||||||
|
.slice(0, limit);
|
||||||
|
}
|
||||||
|
|
||||||
|
function extractSelectColumns(body, limit = 10) {
|
||||||
|
const noComments = stripSqlComments(body);
|
||||||
|
const m = /\bSELECT\b([\s\S]{0,2500}?)\bFROM\b/i.exec(noComments);
|
||||||
|
if (!m) return [];
|
||||||
|
return uniq(m[1].split(/\r?\n/)
|
||||||
|
.map(x => compactSqlLine(x.replace(/^\s*,/, '')))
|
||||||
|
.filter(x => x && !/^(TOP|DISTINCT)$/i.test(x)))
|
||||||
|
.slice(0, limit);
|
||||||
|
}
|
||||||
|
|
||||||
|
function objectRegex(name) {
|
||||||
|
return new RegExp(`(?:\\[dbo\\]\\.\\[${escapeReg(name)}\\]|dbo\\.\\[${escapeReg(name)}\\]|\\[${escapeReg(name)}\\]|\\b${escapeReg(name)}\\b)`, 'i');
|
||||||
|
}
|
||||||
|
|
||||||
|
function extractParams(body) {
|
||||||
|
const header = body.split(/\bAS\b/i)[0] || body.slice(0, 1000);
|
||||||
|
const params = [];
|
||||||
|
const re = /@([\u4e00-\u9fa5A-Za-z0-9_]+)\s+([A-Za-z0-9_\[\]\(\),]+)/g;
|
||||||
|
let m;
|
||||||
|
while ((m = re.exec(header))) params.push(`@${m[1]} ${m[2]}`);
|
||||||
|
return uniq(params).slice(0, 24);
|
||||||
|
}
|
||||||
|
|
||||||
|
function summarizeProc(name, body) {
|
||||||
|
const verbs = [];
|
||||||
|
if (/\bSELECT\b/i.test(body)) verbs.push('查询');
|
||||||
|
if (/\bINSERT\s+INTO\b/i.test(body)) verbs.push('新增');
|
||||||
|
if (/\bUPDATE\b/i.test(body)) verbs.push('更新');
|
||||||
|
if (/\bDELETE\s+FROM\b/i.test(body)) verbs.push('删除');
|
||||||
|
if (/\bOPENJSON\b|JSON_VALUE|JSON_QUERY/i.test(body)) verbs.push('解析 JSON 批量数据');
|
||||||
|
if (/ROW_NUMBER|OFFSET|@PageSize|@PageCurrent/i.test(body)) verbs.push('分页');
|
||||||
|
if (/SAP\.SBO_YL/i.test(body)) verbs.push('读取 SAP B1 数据库对象');
|
||||||
|
if (/报工|工时/.test(name + body)) verbs.push('处理报工/工时');
|
||||||
|
if (/质检|检验|不合格/.test(name + body)) verbs.push('处理质检数据');
|
||||||
|
if (/排产|派工|计划/.test(name + body)) verbs.push('处理计划/派工');
|
||||||
|
if (/外协/.test(name + body)) verbs.push('处理外协业务');
|
||||||
|
return uniq(verbs).join('、') || '执行数据库业务逻辑';
|
||||||
|
}
|
||||||
|
|
||||||
|
function extractSqlModel() {
|
||||||
|
const sql = existingSqlFiles().map(f => `\n-- FILE: ${path.basename(f)}\n${readText(f)}`).join('\n');
|
||||||
|
const objects = [];
|
||||||
|
const objectRe = /CREATE\s+(TABLE|VIEW)\s+(?:\[dbo\]\.)?\[([^\]]+)\]/gi;
|
||||||
|
let m;
|
||||||
|
while ((m = objectRe.exec(sql))) objects.push({ type: m[1].toUpperCase(), name: m[2] });
|
||||||
|
|
||||||
|
const markers = [];
|
||||||
|
const procRe = /(?:CREATE|ALTER)\s+(?:\s*PROCEDURE|\s*PROC)\s+(?:\[dbo\]\.)?\[([^\]]+)\]/gi;
|
||||||
|
while ((m = procRe.exec(sql))) markers.push({ index: m.index, name: m[1] });
|
||||||
|
|
||||||
|
const procByName = {};
|
||||||
|
for (let i = 0; i < markers.length; i++) {
|
||||||
|
const start = markers[i].index;
|
||||||
|
const nextGo = sql.slice(start).search(/\r?\nGO\r?\n/i);
|
||||||
|
const nextProc = i + 1 < markers.length ? markers[i + 1].index : sql.length;
|
||||||
|
const end = nextGo >= 0 ? Math.min(start + nextGo, nextProc) : nextProc;
|
||||||
|
const body = sql.slice(start, end);
|
||||||
|
const deps = [];
|
||||||
|
for (const obj of objects) {
|
||||||
|
if (objectRegex(obj.name).test(body)) deps.push(`${obj.type}:${obj.name}`);
|
||||||
|
}
|
||||||
|
const sapRefs = uniq(body.match(/SAP\.SBO_YL\.dbo\.[A-Za-z0-9_]+/g) || []);
|
||||||
|
for (const s of sapRefs) deps.push(`SAP:${s}`);
|
||||||
|
const writes = [];
|
||||||
|
for (const obj of objects) {
|
||||||
|
const n = escapeReg(obj.name);
|
||||||
|
const hit = new RegExp(`\\b(INSERT\\s+INTO|UPDATE|DELETE\\s+FROM|MERGE\\s+INTO)\\s+(?:\\[dbo\\]\\.\\[${n}\\]|dbo\\.\\[${n}\\]|\\[${n}\\]|${n})`, 'i').test(body);
|
||||||
|
if (hit) writes.push(obj.name);
|
||||||
|
}
|
||||||
|
const noComments = stripSqlComments(body);
|
||||||
|
procByName[markers[i].name] = {
|
||||||
|
name: markers[i].name,
|
||||||
|
body,
|
||||||
|
params: extractParams(body),
|
||||||
|
deps: uniq(deps),
|
||||||
|
writes: uniq(writes),
|
||||||
|
sapRefs,
|
||||||
|
summary: summarizeProc(markers[i].name, body),
|
||||||
|
features: {
|
||||||
|
selectColumns: extractSelectColumns(body),
|
||||||
|
filters: extractSqlLines(body, /\b(WHERE|AND|OR)\b/i, 10),
|
||||||
|
updates: extractSqlLines(body, /\b(UPDATE|SET|INSERT\s+INTO|DELETE\s+FROM|MERGE\s+INTO)\b/i, 12),
|
||||||
|
statusLines: extractSqlLines(body, /状态|排产|派工|加工|任务|质检|关闭|完成|已报工|DocEntry|SAP/i, 18),
|
||||||
|
grouping: extractSqlLines(body, /\b(GROUP\s+BY|HAVING|ORDER\s+BY|ROW_NUMBER|OFFSET|FETCH\s+NEXT)\b/i, 8),
|
||||||
|
tempTables: uniq(noComments.match(/#[\u4e00-\u9fa5A-Za-z0-9_]+/g) || []).slice(0, 10),
|
||||||
|
hasJson: /\bOPENJSON\b|JSON_VALUE|JSON_QUERY/i.test(noComments),
|
||||||
|
hasTransaction: /\bBEGIN\s+TRAN|COMMIT\s+TRAN|ROLLBACK\s+TRAN/i.test(noComments),
|
||||||
|
hasTryCatch: /\bTRY\b|\bCATCH\b/i.test(noComments),
|
||||||
|
hasPagination: /@PageCurrent|@PageSize|ROW_NUMBER|OFFSET\s+.*FETCH/i.test(noComments),
|
||||||
|
hasSap: /SAP\.SBO_YL/i.test(noComments)
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return { objects, procByName };
|
||||||
|
}
|
||||||
|
|
||||||
|
function operationByType(type) {
|
||||||
|
return {
|
||||||
|
'1': '旧版查询',
|
||||||
|
'2': '旧版增删改',
|
||||||
|
'7': '旧版批量/JSON',
|
||||||
|
'11': '当前通用存储过程查询/执行',
|
||||||
|
'12': '当前通用存储过程写入/业务动作',
|
||||||
|
'2001': '导出/报表类过程'
|
||||||
|
}[type] || `自定义类型 ${type}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
function procPurpose(name) {
|
||||||
|
const rules = [
|
||||||
|
[/查询|Get|Load|Query|Search|读取|查看/, '查询/读取数据'],
|
||||||
|
[/新增|增加|Add|Insert/, '新增业务数据'],
|
||||||
|
[/修改|编辑|Edit|Update|更新|保存|Save/, '更新/保存业务数据'],
|
||||||
|
[/删除|Delete/, '删除业务数据'],
|
||||||
|
[/Finish|确认|关闭|Close/, '确认/关闭/完成业务动作'],
|
||||||
|
[/派工|Planned|排产|计划/, '计划排产或派工'],
|
||||||
|
[/报工|工时|WorkTime|ProdReport/, '报工或工时处理'],
|
||||||
|
[/质检|检验|Check|Quality/, '质量检验处理'],
|
||||||
|
[/外协/, '外协业务处理'],
|
||||||
|
[/登录|人员|角色|菜单|权限/, '基础权限/人员数据处理'],
|
||||||
|
[/设备|工位|资源|Station|Resource/, '设备/工位/资源数据处理']
|
||||||
|
];
|
||||||
|
for (const [re, purpose] of rules) if (re.test(name)) return purpose;
|
||||||
|
return '业务存储过程调用';
|
||||||
|
}
|
||||||
|
|
||||||
|
function businessDomainFromName(name) {
|
||||||
|
const rules = [
|
||||||
|
[/登录|人员|角色|菜单|权限|部门|工位管理/, '系统基础资料/权限'],
|
||||||
|
[/设备|报警|CaChe|StationStatus|工位设备/, '设备与实时数据'],
|
||||||
|
[/排产|派工|OrderPlanned|计划/, '计划排产'],
|
||||||
|
[/ProductCenter|ProductTask|加工中心|装配中心|报工|收料|开工|退库|发料|工时/, '生产执行/工时'],
|
||||||
|
[/外协/, '外协协同'],
|
||||||
|
[/图纸|工艺|Process|Drawing|Procedure|产品结构|标准/, '工艺与图纸'],
|
||||||
|
[/质检|检验|质量|不合格|Check/, '质量检验'],
|
||||||
|
[/销售/, '销售/订单状态'],
|
||||||
|
[/班次/, '班次与人员排班'],
|
||||||
|
[/加急/, '加急任务']
|
||||||
|
];
|
||||||
|
for (const [re, domain] of rules) if (re.test(name)) return domain;
|
||||||
|
return '通用业务';
|
||||||
|
}
|
||||||
|
|
||||||
|
function pageBusinessNarrative(page) {
|
||||||
|
const p = page.relPath;
|
||||||
|
const labels = page.labels.slice(0, 10);
|
||||||
|
const procNames = uniq(page.procs.map(x => x.name)).slice(0, 6);
|
||||||
|
const common = [];
|
||||||
|
if (labels.length) common.push(`页面可见的操作/字段包括 ${labels.map(x => `“${x}”`).join('、')},这些是判断页面业务范围的主要线索。`);
|
||||||
|
if (procNames.length) common.push(`后端主要围绕 ${procNames.map(x => `\`${x}\``).join('、')}${page.procs.length > 6 ? ' 等过程' : ''} 取数或提交业务动作。`);
|
||||||
|
const rules = [
|
||||||
|
[/PunctualWork/, '该页面用于发现“计划应开工但现场未及时开工”的任务。用户按任务状态、工位、工序、异常原因等条件筛选,页面展示生产订单、销售订单、物料、工序、指派对象、分配数量、上序合格数、加工/收料状态和加急数量,服务于生产异常提醒和催办。'],
|
||||||
|
[/CraftMaintain/, '该页面维护产品结构树。用户可以新增、编辑、删除产品结构节点,查询现有产品结构,并为后续工艺、物料、BOM 或生产任务提供层级基础数据。'],
|
||||||
|
[/DeviceDataHistory/, '该页面查询设备历史采集数据。用户按工位/设备、参数名称、起止时间分页查询历史记录,用于追溯设备运行参数。'],
|
||||||
|
[/DeviceInformation/, '该页面维护设备台账和设备相关基础资料。用户可以查询设备信息,新增、修改、删除设备,维护维修记录、工时记录或点检配置。'],
|
||||||
|
[/DeviceRealData/, '该页面展示设备实时或近实时数据。用户按工位和数据类型查询当前采集值、统计值或状态,通常用于设备运行监控。'],
|
||||||
|
[/Devicedata/, '该页面面向设备采集数据管理,查询缓存变量和设备数据,支持按设备、参数、时间等维度查看实时或历史采集结果。'],
|
||||||
|
[/InstallMakePlanDo|InstallMakePlan/, '该页面处理装配件排产。用户查询待排产/已排产装配任务,选择工位和人员,修改计划开工/完成时间、优先级、说明,执行单条派工、二次派工、批量确认排产,并在确认时同步 SAP 生产订单状态或创建相关请求。'],
|
||||||
|
[/SelfMakePlandone|SelfMakePlando|SelfMakePlan/, '该页面处理自制件/机加件排产。用户查询生产订单工序任务,筛选订单、合同、物料、工序、计划时间、排产状态和指派对象,完成工位派工、人员二次派工、外协分组、计划说明维护和排产确认。'],
|
||||||
|
[/PlannOrderClose/, '该页面用于生产订单关闭。用户筛选 SAP 未关闭或 MES 待确认订单,执行 SAP 生产订单关闭,并调用 MES 过程记录或确认订单关闭状态。'],
|
||||||
|
[/PlanShell/, '该页面是计划外壳/计划跟踪类页面,按缺料、发货通知、完成状态等条件查询计划或装配相关任务,用于计划人员集中查看订单齐套、发货和关闭情况。'],
|
||||||
|
[/priorityinstall/, '该页面用于装配优先级调整。用户查询装配计划任务,修改计划开工/完成时间、派工对象或优先级,用于插单和重点订单排序。'],
|
||||||
|
[/PartDrawing/, '该页面维护零件图纸。用户按物料查询图纸、查看文件、验证名称、删除图纸并保留删除记录。'],
|
||||||
|
[/PartDrawlook/, '该页面偏只读查看零件图纸,通常给生产或质检人员按物料快速打开图纸。'],
|
||||||
|
[/ProcurementDrawlook/, '该页面提供采购场景的图纸查看。用户按采购物料查询图纸,查看或删除图纸记录,支持采购、外协、来料检验时查阅技术文件。'],
|
||||||
|
[/ProcessDrawing/, '该页面维护工艺图纸。用户按物料/工艺条件查询工艺图,验证名称,查看或删除工艺图纸。'],
|
||||||
|
[/ProcedureManagement/, '该页面维护工序/路线阶段主数据。新增或修改工序时会同步 SAP B1 的 RouteStages,保证 MES 工序与 SAP 工艺阶段一致。'],
|
||||||
|
[/ProcessesDevelop/, '该页面用于工艺开发和生产工艺路线维护。用户围绕物料、工序、顺序、工艺参数、图纸等信息维护标准或生产用工艺路线。'],
|
||||||
|
[/ProcessInquiry/, '该页面用于工艺路线查询。用户按物料、产品、工序等条件查看标准工艺或生产工艺,服务于排产、生产和质检核对。'],
|
||||||
|
[/ProcessProduct/, '该页面维护产品与工艺/图纸的关系,使产品、物料、工序、图纸等基础数据形成可查询的工艺资料。'],
|
||||||
|
[/ProductionOrder/, '该页面处理生产订单资料。用户查询 ERP/MES 生产订单,并通过过程把 SAP 生产订单同步成 MES 生产计划和工序任务。'],
|
||||||
|
[/MachiningCenter/, '该页面是机加生产执行主界面。操作员按工位查看可执行任务和进行中任务,完成收料、开始加工、暂停/恢复、报工、辅助工序、首检/巡检/序检、生产发料查询、退库、图纸查看等动作,并写入加工中心操作记录和报工记录。'],
|
||||||
|
[/AssemblyCenter/, '该页面是装配生产执行主界面。装配人员按工位查询装配任务,处理开工、结束/报工、送检、缺料查询、收检记录、图纸查看和退库等动作,并会读取 SAP 生产订单信息辅助判断。'],
|
||||||
|
[/AssembleTaskManage/, '该页面管理装配任务。用户查询装配生产任务、查看工时汇总,进行派工、任务说明维护和外协/生产通知。'],
|
||||||
|
[/ProductionTaskManage/, '该页面管理生产任务。用户按工位、订单、工序查询任务,查看工时汇总,执行派工、修改计划字段、维护任务说明和通知状态。'],
|
||||||
|
[/ProductionTasksSum/, '该页面做生产任务汇总。用户按订单、工序、工位、时间等维度查询生产任务和工时汇总,并可编辑计划说明或派工信息。'],
|
||||||
|
[/ProductionPlanTrack/, '该页面跟踪生产计划执行。用户查看计划任务的开工、完工、进度、延期或异常情况,用于计划员追踪订单。'],
|
||||||
|
[/AssemblePlanTrack/, '该页面跟踪装配计划执行,展示装配任务进度、计划完成情况和异常。'],
|
||||||
|
[/AssembleTasksSum/, '该页面汇总装配任务,按订单、工位、人员或状态统计装配执行情况。'],
|
||||||
|
[/AssembleStatus/, '该页面查看装配现场状态,重点展示进行中任务和当前工位状态。'],
|
||||||
|
[/DeviceStatus/, '该页面查看设备/工位生产状态,通常用于判断设备是否在加工、待机、报警或空闲。'],
|
||||||
|
[/OutsourceMange/, '该页面管理外协任务。用户查询可外协工序,按供应商/订单/工序分组,执行外协派工并同步 SAP 采购请求或相关单据,维护外协发料、收料、质检记录、打印次数和备注。'],
|
||||||
|
[/SaleOutsourceMange/, '该页面管理销售相关外协任务。业务与外协管理类似,但面向销售订单或销售外协场景,包含派工同步 SAP、外协发料、历史记录和质检记录查询。'],
|
||||||
|
[/OutsourceSheet/, '该页面输出外协报表。用户按订单、合同、产品、计划号、供应商、状态分页查询外协报表,也可导出,用于外协进度、发料、收料、质检、开票等跟踪。'],
|
||||||
|
[/PickingTask/, '该页面处理拣配任务。用户查询生产订单相关拣配/领料任务,并可能联动 SAP 生产订单或库存出入库状态。'],
|
||||||
|
[/PersonnelBinding/, '该页面维护工位与人员绑定关系。用于限制或提示哪些人员可在指定工位报工、开工或执行任务。'],
|
||||||
|
[/ShiftManagement/, '该页面维护班次和班次人员绑定。用户新增、修改、删除班次,给班次绑定人员,为工时计算和报工归属提供基础数据。'],
|
||||||
|
[/Timesheet/, '该页面统计工时。用户按项目、作业者、设备、任务等维度查询工时数据,并可导出报表。'],
|
||||||
|
[/WorkHoursCheck/, '该页面用于工时校验。质检/管理人员查询待校验报工记录,系统计算标准/实际工时,保存单条或批量校验结果;通过校验后可把工序资源或工时/出库类单据上传到 SAP。'],
|
||||||
|
[/WorkhoursEdit/, '该页面用于编辑已产生的工时/报工记录,修正异常工时或补录说明。'],
|
||||||
|
[/Workhours/, '该页面用于工时查询,按工序、人员、设备、时间等条件查看工序工时。'],
|
||||||
|
[/Urgent/, '该页面维护加急任务。用户查询加急订单明细,并更新完成、转至等字段,用于生产/质检优先级管理。'],
|
||||||
|
[/AbnormalControl/, '该页面管理生产异常。用户查询异常记录,推进异常处理、关闭或记录处理结果。'],
|
||||||
|
[/login/, '该页面是登录入口,负责账号密码登录、角色选择、Token/Cookie 写入、路由权限初始化和密码修改入口。'],
|
||||||
|
[/dashboard/, '该页面是系统首页或欢迎页,用于承载看板入口或基础统计展示。'],
|
||||||
|
[/404/, '该页面是 404 错误页,用于路由不存在时展示错误信息。'],
|
||||||
|
[/purchaseIncoming/, '该页面处理采购/来料检验。质检人员查询待检任务,查看图纸、字典和检验人员,录入合格数、不合格数、检测数据,调用过程更新来料检验结果。'],
|
||||||
|
[/processReceive/, '该页面处理序检收检。质检人员接收工序检验任务,查询加急和字典信息,读取 SAP 工序状态,新增序检收检记录。'],
|
||||||
|
[/processSpecial/, '该页面处理过程/特殊检验。用户按工序任务录入特殊检验结果和检测明细。'],
|
||||||
|
[/firstSpecial/, '该页面处理首检/特殊首件检验。用户按工序和工位选择任务,录入首检数据。'],
|
||||||
|
[/final/, '该页面处理终检任务。质检人员查询终检任务,录入终检结果,并预留 SAP 生产订单状态回写。'],
|
||||||
|
[/materialReturn/, '该页面处理原材料退库检验。用户查询退库检验任务,读取 SAP 生产订单辅助信息,录入并更新检验结果。'],
|
||||||
|
[/salesReturn/, '该页面处理销售退货检验。用户查询销售退货待检任务,录入检验结果并更新质检记录。'],
|
||||||
|
[/OtherInbound/, '该页面处理其他入库检验。用户查询其他入库待检任务,录入检验结果并更新质检记录。'],
|
||||||
|
[/QualityCenter/, '该页面是质量综合处理中心。用户集中查询质检任务、收检记录、终检/入库任务和质检明细,录入检测数据、不合格处理,并读取 SAP 生产订单信息辅助校验。'],
|
||||||
|
[/QualityDetails/, '该页面查询质检明细。用户按订单、物料、检验类型、时间等条件查询和导出检测明细。'],
|
||||||
|
[/QualityStandardQuery/, '该页面维护/查询检验标准。用户按物料、工序、检测项目维护理论值、上下限、量具和启用状态。'],
|
||||||
|
[/Unqualified/, '该页面处理不合格品。用户查询不合格记录,查看处置流程和节点,推进让步放行、返工、报废等处理。'],
|
||||||
|
[/saleorderstatus/, '该页面查询销售订单状态。用户按销售订单、合同、物料等条件查看销售订单在 SAP/MES 中的履约、生产、发货或关闭状态。'],
|
||||||
|
[/MenuManagement/, '该页面维护菜单和权限。管理员查询、增加、修改、删除菜单/角色权限配置,用于动态路由和按钮权限。'],
|
||||||
|
[/OperationLog/, '该页面查询操作日志或报工操作记录,用于审计用户操作和追踪异常。'],
|
||||||
|
[/OrgManagement/, '该页面维护组织/角色类基础数据,支持新增、修改、删除和查询。'],
|
||||||
|
[/PersonnelManagement/, '该页面维护人员账号。管理员维护人员、部门、角色、启用状态等登录和权限基础数据。'],
|
||||||
|
[/SystemRrolemaintenance/, '该页面维护系统角色。管理员查询、新增、修改、删除角色数据。'],
|
||||||
|
[/WorkstationManagement/, '该页面维护工位资源。管理员在 MES 侧新增、修改、删除工位,同时调用 SAP B1 Resources 新增或更新资源主数据。'],
|
||||||
|
[/layout|Sidebar|Navbar|TagsView|AppMain|ResizeHandler/, '该文件属于系统布局组件,负责菜单、导航、标签页、内容承载或窗口自适应,不承载具体业务流程。'],
|
||||||
|
[/login/, '该页面是登录入口,负责账号密码登录、角色选择、Token/Cookie 写入、路由权限初始化和密码修改入口。'],
|
||||||
|
[/dashboard/, '该页面是系统首页或欢迎页,用于承载看板入口或基础统计展示。'],
|
||||||
|
[/404/, '该页面是 404 错误页,用于路由不存在时展示错误信息。']
|
||||||
|
];
|
||||||
|
const found = rules.find(([re]) => re.test(p));
|
||||||
|
return [found ? found[1] : '该页面为业务页面,具体功能由表单字段、按钮和存储过程调用共同决定。', ...common].join('\n\n');
|
||||||
|
}
|
||||||
|
|
||||||
|
function pageFlow(page) {
|
||||||
|
const p = page.relPath;
|
||||||
|
const flows = [
|
||||||
|
[/SelfMakePlandone|SelfMakePlando|SelfMakePlan/,
|
||||||
|
'自制/机加排产流程:\n\n```mermaid\nflowchart LR\n A[输入订单/合同/物料/工序/时间条件] --> B[调用 MES_OrderPlanned_Query 查询待排产任务]\n B --> C[选择任务行]\n C --> D{派工方式}\n D --> E[MES_OrderPlanned_SingleTaskPlanned 单任务派工]\n D --> F[计划排产_二次派工 绑定人员]\n D --> G[计划排产_外协分组]\n E --> H[MES_OrderPlanned_EditTaskPlanned/DescriptionEdit 修改计划字段]\n F --> H\n G --> H\n H --> I[MES_OrderPlanned_Finish 确认排产]\n I --> J[PATCH /ProductionOrders(...) 回写 SAP 生产订单状态]\n J --> K[页面刷新任务状态]\n```\n'],
|
||||||
|
[/InstallMakePlanDo|InstallMakePlan/,
|
||||||
|
'装配排产流程:\n\n```mermaid\nflowchart LR\n A[输入订单/合同/物料/工序/时间条件] --> B[MES_OrderPlanned_Queryzp 查询装配任务]\n B --> C[选择任务]\n C --> D[Prog_MES_LoadStations 选择工位]\n D --> E[系统管理_人员管理_所有有效人员查询 选择人员]\n E --> F[计划排产_派工 或 MES_OrderPlanned_SingleTaskPlanned]\n F --> G[计划排产_二次派工]\n G --> H[MES_OrderPlanned_Finish 确认排产]\n H --> I[PATCH /ProductionOrders(...) 或 POST SAP 请求]\n I --> J[刷新排产结果]\n```\n'],
|
||||||
|
[/MachiningCenter/,
|
||||||
|
'机加中心执行流程:\n\n```mermaid\nflowchart LR\n A[选择工位/人员/任务条件] --> B[MES_ProductCenter_GetTask 查询可执行任务]\n B --> C[选择任务]\n C --> D[收料 MES_ProductTask_MaterialRecieved]\n D --> E[开始加工 MES_ProductTask_WorkingStart]\n E --> F{生产过程}\n F --> G[暂停/恢复 MES_ProductTask_Rest]\n F --> H[首检/巡检/序检]\n F --> I[报工 MES_ProductTask_ProdReport]\n I --> J[写入操作记录/报工记录]\n J --> K[必要时读取 SAP ProductionOrders]\n K --> L[刷新任务和进行中状态]\n```\n'],
|
||||||
|
[/AssemblyCenter/,
|
||||||
|
'装配中心执行流程:\n\n```mermaid\nflowchart LR\n A[选择工位/人员] --> B[MES_ProductCenter_GetTask_zp 查询装配任务]\n B --> C[查看缺料/图纸/工序]\n C --> D[MES_人员工时记录_开始 或生产任务开始]\n D --> E[执行装配]\n E --> F[MES_ProductTask_SendInspection 送检/报工]\n F --> G[收检记录/质检数据]\n G --> H[读取 SAP ProductionOrders 辅助判断]\n H --> I[刷新装配任务]\n```\n'],
|
||||||
|
[/WorkHoursCheck/,
|
||||||
|
'工时校验流程:\n\n```mermaid\nflowchart LR\n A[选择人员/订单/工序/日期] --> B[工时校验_获取昨日之前操作记录列表]\n B --> C[选择待校验记录]\n C --> D[usp_ValidateWorkTime 或 usp_BatchValidateWorkTime 计算工时]\n D --> E{校验结果}\n E --> F[工时校验_保存校验记录]\n E --> G[工时校验_批量保存校验记录]\n F --> H[更新校验状态]\n G --> H\n H --> I[GET/PATCH /ProductionOrders 补工序资源]\n I --> J[POST /InventoryGenExits 上传 SAP]\n J --> K[标记已上传/失败留痕]\n```\n'],
|
||||||
|
[/purchaseIncoming|processReceive|processSpecial|firstSpecial|final|materialReturn|salesReturn|OtherInbound|QualityCenter/,
|
||||||
|
'质检业务流程:\n\n```mermaid\nflowchart LR\n A[选择检验类型/订单/物料/工序] --> B[查询待检任务]\n B --> C[查看图纸/字典/检验人员]\n C --> D[录入检测数量、合格数、不合格数和检测明细]\n D --> E{检验类型}\n E --> F[来料/入库/退货检验更新]\n E --> G[序检收检新增或更新]\n E --> H[终检/首检/特殊检验保存]\n F --> I[写入 YL_质量检验_质检记录及明细]\n G --> I\n H --> I\n I --> J[必要时查询/回写 SAP 生产订单或单据]\n```\n'],
|
||||||
|
[/OutsourceMange|SaleOutsourceMange|OutsourceSheet/,
|
||||||
|
'外协业务流程:\n\n```mermaid\nflowchart LR\n A[输入订单/合同/供应商/工序条件] --> B[查询外协任务或外协报表]\n B --> C[选择外协工序/供应商]\n C --> D[计划排产_派工 或外协分组]\n D --> E[POST SAP 采购/外协相关请求]\n E --> F[外协发料查询/保存]\n F --> G[外协收料/质检记录]\n G --> H[更新打印次数/备注/报表状态]\n```\n']
|
||||||
|
];
|
||||||
|
const found = flows.find(([re]) => re.test(p));
|
||||||
|
if (found) return found[1];
|
||||||
|
if (!page.procs.length) return '该页面未发现后端存储过程调用,通常不形成完整业务流程。';
|
||||||
|
const procChain = uniq(page.procs.map(x => x.name)).slice(0, 8).map(x => `\`${x}\``).join(' -> ');
|
||||||
|
return `通用流程:用户输入查询/维护条件 -> 调用 ${procChain} -> 后端读写 SQL Server -> 页面刷新表格或弹窗结果。`;
|
||||||
|
}
|
||||||
|
|
||||||
|
function fieldMappingTable(page) {
|
||||||
|
const rows = [
|
||||||
|
'| 类型 | 前端字段/显示列 | 存储过程参数或表达式 | SQL返回字段/数据库字段线索 |',
|
||||||
|
'|---|---|---|---|'
|
||||||
|
];
|
||||||
|
const mappings = [];
|
||||||
|
for (const p of page.fields.pushedParams || []) {
|
||||||
|
const relatedProc = page.procs.find(proc => proc.sqlInfo?.params?.some(x => x.includes(`@${p.name}`)));
|
||||||
|
const sqlField = relatedProc?.sqlInfo?.features?.selectColumns?.find(x => x.includes(p.name)) || '';
|
||||||
|
mappings.push(['参数', p.expr, `@${p.name}`, sqlField]);
|
||||||
|
}
|
||||||
|
for (const c of page.fields.tableColumns || []) {
|
||||||
|
if (!c.label && !c.prop) continue;
|
||||||
|
const sqlField = page.procs
|
||||||
|
.flatMap(proc => proc.sqlInfo?.features?.selectColumns || [])
|
||||||
|
.find(x => (c.prop && x.includes(c.prop)) || (c.label && x.includes(c.label))) || '';
|
||||||
|
mappings.push(['显示列', c.label || c.prop, '', sqlField || c.prop || c.label]);
|
||||||
|
}
|
||||||
|
for (const v of page.fields.vModels || []) {
|
||||||
|
const name = v.split('.').pop();
|
||||||
|
const param = page.fields.pushedParams.find(x => x.expr.includes(v) || x.expr.includes(name));
|
||||||
|
mappings.push(['输入字段', v, param ? `@${param.name}` : '', '']);
|
||||||
|
}
|
||||||
|
const uniqRows = uniq(mappings.map(x => x.join('|'))).slice(0, 40);
|
||||||
|
if (!uniqRows.length) return '未从页面模板中抽取到明确的 `v-model`、表格列或 `param.push` 字段映射。';
|
||||||
|
for (const item of uniqRows) {
|
||||||
|
const [type, front, param, sql] = item.split('|');
|
||||||
|
rows.push(`| ${type} | \`${front || '-'}\` | ${param ? `\`${param}\`` : '-'} | ${sql ? `\`${sql}\`` : '-'} |`);
|
||||||
|
}
|
||||||
|
return rows.join('\n');
|
||||||
|
}
|
||||||
|
|
||||||
|
function statusFlow(page) {
|
||||||
|
const lines = [];
|
||||||
|
for (const proc of page.procs) {
|
||||||
|
const info = proc.sqlInfo;
|
||||||
|
if (!info) continue;
|
||||||
|
const status = info.features.statusLines || [];
|
||||||
|
const useful = status.filter(x => /状态|排产|派工|加工|任务|质检|关闭|完成|已报工|DocEntry|SAP/i.test(x));
|
||||||
|
if (useful.length) lines.push(`- \`${proc.name}\`:${useful.slice(0, 8).map(x => `\`${x}\``).join(';')}`);
|
||||||
|
}
|
||||||
|
if (!lines.length) return '未从当前 SQL 静态解析到明确的状态字段变更。';
|
||||||
|
return lines.join('\n');
|
||||||
|
}
|
||||||
|
|
||||||
|
function sapInterfaceList(page) {
|
||||||
|
if (!page.sapCalls.length) return '页面无直接 SAP Service Layer 调用。';
|
||||||
|
const lines = ['| 行号 | 方法 | 接口 | 调用时机/影响判断 | 提交字段线索 |', '|---:|---|---|---|---|'];
|
||||||
|
for (const c of page.sapCalls) {
|
||||||
|
const timing = c.url.includes('ProductionOrders')
|
||||||
|
? '读取或更新 SAP 生产订单。失败会导致 MES 与 SAP 订单状态/工序资源不同步。'
|
||||||
|
: c.url.includes('InventoryGenExits')
|
||||||
|
? '上传库存发出/工时相关单据。失败会导致 SAP 未生成对应业务单据。'
|
||||||
|
: c.url.includes('Resources')
|
||||||
|
? '新增或更新 SAP 资源主数据。失败会导致 MES 工位与 SAP 资源不一致。'
|
||||||
|
: c.url.includes('RouteStages')
|
||||||
|
? '新增或更新 SAP 工序阶段。失败会导致 MES 工序与 SAP RouteStages 不一致。'
|
||||||
|
: '调用外部接口,失败会影响对应外部系统同步。';
|
||||||
|
lines.push(`| ${c.line} | \`${c.fn}\` | \`${c.url}\` | ${timing} | ${mdList(c.payloadKeys.slice(0, 12))} |`);
|
||||||
|
}
|
||||||
|
return lines.join('\n');
|
||||||
|
}
|
||||||
|
|
||||||
|
function dbCallChain(page) {
|
||||||
|
if (!page.procs.length) return '无数据库调用链。';
|
||||||
|
const lines = [];
|
||||||
|
for (const proc of page.procs) {
|
||||||
|
const deps = proc.sqlInfo ? depsMd(proc.sqlInfo.deps) : '过程体未解析';
|
||||||
|
const result = proc.purpose;
|
||||||
|
lines.push(`- \`${page.relPath}\` -> \`${proc.name}\` -> ${deps} -> ${result}`);
|
||||||
|
}
|
||||||
|
return lines.join('\n');
|
||||||
|
}
|
||||||
|
|
||||||
|
function mdList(items, empty = '无') {
|
||||||
|
if (!items || !items.length) return empty;
|
||||||
|
return items.map(x => `\`${x}\``).join('、');
|
||||||
|
}
|
||||||
|
|
||||||
|
function depsMd(deps) {
|
||||||
|
if (!deps || !deps.length) return '未在 SQL 中解析到明确依赖';
|
||||||
|
const tables = deps.filter(x => x.startsWith('TABLE:')).map(x => x.slice(6));
|
||||||
|
const views = deps.filter(x => x.startsWith('VIEW:')).map(x => x.slice(5));
|
||||||
|
const sap = deps.filter(x => x.startsWith('SAP:')).map(x => x.slice(4));
|
||||||
|
const parts = [];
|
||||||
|
if (tables.length) parts.push(`表:${mdList(tables)}`);
|
||||||
|
if (views.length) parts.push(`视图:${mdList(views)}`);
|
||||||
|
if (sap.length) parts.push(`SAP/链接库:${mdList(sap)}`);
|
||||||
|
return parts.join(';') || '未在 SQL 中解析到明确依赖';
|
||||||
|
}
|
||||||
|
|
||||||
|
function explainProc(proc) {
|
||||||
|
const info = proc.sqlInfo;
|
||||||
|
const lines = [];
|
||||||
|
lines.push(`\`${proc.name}\` 属于 ${businessDomainFromName(proc.name)},前端以 type=${proc.type}(${proc.op})调用,页面用途是 ${proc.purpose}。`);
|
||||||
|
if (!info) {
|
||||||
|
lines.push('当前工作区 SQL 中没有解析到该过程体,因此只能确认前端调用关系,不能准确说明内部读写表、过滤条件和状态变更。');
|
||||||
|
return lines.join(' ');
|
||||||
|
}
|
||||||
|
const f = info.features;
|
||||||
|
lines.push(`数据库处理摘要:${info.summary}。`);
|
||||||
|
lines.push(`读取/关联对象:${depsMd(info.deps)}。`);
|
||||||
|
if (info.writes.length) lines.push(`写入或更新对象:${mdList(info.writes)}。`);
|
||||||
|
if (info.params.length) lines.push(`入参/分页参数:${mdList(info.params)}。`);
|
||||||
|
if (f.selectColumns.length) lines.push(`主要返回字段线索:${mdList(f.selectColumns)}。`);
|
||||||
|
if (f.filters.length) lines.push(`关键过滤/匹配条件:${f.filters.map(x => `\`${x}\``).join(';')}。`);
|
||||||
|
if (f.updates.length) lines.push(`关键写入/状态处理语句线索:${f.updates.map(x => `\`${x}\``).join(';')}。`);
|
||||||
|
if (f.grouping.length) lines.push(`排序/分组/分页线索:${f.grouping.map(x => `\`${x}\``).join(';')}。`);
|
||||||
|
const flags = [];
|
||||||
|
if (f.hasPagination) flags.push('分页');
|
||||||
|
if (f.hasJson) flags.push('JSON 批量解析');
|
||||||
|
if (f.hasTransaction) flags.push('事务控制');
|
||||||
|
if (f.hasTryCatch) flags.push('异常捕获');
|
||||||
|
if (f.hasSap) flags.push('读取 SAP 数据库对象');
|
||||||
|
if (f.tempTables.length) flags.push(`临时表 ${mdList(f.tempTables)}`);
|
||||||
|
if (flags.length) lines.push(`实现特征:${flags.join('、')}。`);
|
||||||
|
return lines.join(' ');
|
||||||
|
}
|
||||||
|
|
||||||
|
function procTable(procs) {
|
||||||
|
if (!procs.length) return '未发现 `CreateData(...)` 存储过程调用。';
|
||||||
|
const rows = [
|
||||||
|
'| 行号 | type | 存储过程 | 前端用途 | SQL摘要 | 依赖对象 |',
|
||||||
|
'|---:|---|---|---|---|---|'
|
||||||
|
];
|
||||||
|
for (const p of procs) {
|
||||||
|
const info = p.sqlInfo;
|
||||||
|
rows.push(`| ${p.line} | ${p.type}(${p.op}) | \`${p.name}\` | ${p.purpose} | ${info ? info.summary : '未找到过程体'} | ${info ? depsMd(info.deps) : '未知'} |`);
|
||||||
|
}
|
||||||
|
return rows.join('\n');
|
||||||
|
}
|
||||||
|
|
||||||
|
function sapTable(calls, procs) {
|
||||||
|
const procSap = [];
|
||||||
|
for (const p of procs) {
|
||||||
|
if (p.sqlInfo && p.sqlInfo.sapRefs.length) procSap.push(`${p.name}: ${p.sqlInfo.sapRefs.join(', ')}`);
|
||||||
|
}
|
||||||
|
if (!calls.length && !procSap.length) return '未发现页面直接调用 SAP B1 Service Layer;相关存储过程也未解析到 `SAP.SBO_YL` 链接库引用。';
|
||||||
|
const lines = [];
|
||||||
|
if (calls.length) {
|
||||||
|
lines.push('页面直接 SAP/接口调用:');
|
||||||
|
for (const c of calls) lines.push(`- 第 ${c.line} 行:\`${c.fn}("${c.url}")\``);
|
||||||
|
}
|
||||||
|
if (procSap.length) {
|
||||||
|
lines.push('存储过程内读取 SAP B1 数据库对象:');
|
||||||
|
for (const s of procSap) lines.push(`- ${s}`);
|
||||||
|
}
|
||||||
|
return lines.join('\n');
|
||||||
|
}
|
||||||
|
|
||||||
|
function techFlags(page) {
|
||||||
|
const flags = ['Vue 2 Options API', 'Element UI'];
|
||||||
|
if (page.procs.length) flags.push('`CreateData` + `ExecDatabase` 调用后端过程');
|
||||||
|
else flags.push('未发现页面级后端存储过程调用');
|
||||||
|
if (page.sapCalls.length) flags.push('SAP B1 Service Layer(`src/api/b1s.js`)');
|
||||||
|
if (page.imports.includes('@/api/tm') || page.sapCalls.some(x => x.fn === 'posttm')) flags.push('TM/OpenAPI 接口(`src/api/tm.js`)');
|
||||||
|
if (page.hasEcharts) flags.push('ECharts');
|
||||||
|
if (page.hasFullCalendar) flags.push('FullCalendar');
|
||||||
|
if (page.hasMqtt) flags.push('MQTT');
|
||||||
|
if (page.hasPdf) flags.push('PDF/图纸预览或导出');
|
||||||
|
if (page.hasExcel) flags.push('Excel/报表导出');
|
||||||
|
return flags;
|
||||||
|
}
|
||||||
|
|
||||||
|
function moduleSummary(pages) {
|
||||||
|
const groups = {};
|
||||||
|
for (const p of pages) {
|
||||||
|
const top = p.relPath.split('/')[2] || '其他';
|
||||||
|
groups[top] ||= [];
|
||||||
|
groups[top].push(p);
|
||||||
|
}
|
||||||
|
const lines = ['| 模块 | 页面数 | 主要能力 |', '|---|---:|---|'];
|
||||||
|
for (const [mod, ps] of Object.entries(groups)) {
|
||||||
|
const allProcs = uniq(ps.flatMap(p => p.procs.map(x => x.name)));
|
||||||
|
const allSap = ps.reduce((n, p) => n + p.sapCalls.length, 0);
|
||||||
|
const ability = [];
|
||||||
|
if (allProcs.length) ability.push(`过程 ${allProcs.length} 个`);
|
||||||
|
if (allSap) ability.push(`直接 SAP 调用 ${allSap} 处`);
|
||||||
|
if (ps.some(p => p.hasEcharts)) ability.push('图表');
|
||||||
|
if (ps.some(p => p.hasMqtt)) ability.push('设备实时通信');
|
||||||
|
lines.push(`| ${mod} | ${ps.length} | ${ability.join('、') || '布局/静态页面'} |`);
|
||||||
|
}
|
||||||
|
return lines.join('\n');
|
||||||
|
}
|
||||||
|
|
||||||
|
const sqlModel = extractSqlModel();
|
||||||
|
const pages = walk(viewsRoot, ['.vue', '.js']).sort().map(file => {
|
||||||
|
const text = readText(file);
|
||||||
|
const relPath = rel(file);
|
||||||
|
const procs = extractCreateData(text).map(p => ({
|
||||||
|
...p,
|
||||||
|
op: operationByType(p.type),
|
||||||
|
purpose: procPurpose(p.name),
|
||||||
|
sqlInfo: sqlModel.procByName[p.name]
|
||||||
|
}));
|
||||||
|
const page = {
|
||||||
|
file,
|
||||||
|
relPath,
|
||||||
|
module: moduleNameFromPath(relPath),
|
||||||
|
lines: text.split(/\r?\n/).length,
|
||||||
|
labels: extractLabels(text),
|
||||||
|
methods: extractMethods(text),
|
||||||
|
fields: extractFrontendFields(text),
|
||||||
|
procs,
|
||||||
|
sapCalls: extractSapCalls(text),
|
||||||
|
imports: extractApiImports(text),
|
||||||
|
hasMqtt: /mqtt|MQTT/.test(text),
|
||||||
|
hasEcharts: /echarts|ECharts|\$echarts/.test(text),
|
||||||
|
hasFullCalendar: /FullCalendar|@fullcalendar/.test(text),
|
||||||
|
hasPdf: /pdfjs|jspdf|html2canvas|pdf/i.test(text),
|
||||||
|
hasExcel: /xlsx|exportExcel|Excel|导出/.test(text)
|
||||||
|
};
|
||||||
|
page.functionDesc = pageBusinessNarrative(page);
|
||||||
|
return page;
|
||||||
|
});
|
||||||
|
|
||||||
|
const now = new Date().toISOString().slice(0, 10);
|
||||||
|
let md = '';
|
||||||
|
md += `# MES_Manage_View_V20 src/views 逐页面详细分析\n\n`;
|
||||||
|
md += `生成日期:${now}\n\n`;
|
||||||
|
md += `分析范围:\`MES_Manage_View_V20/src/views\` 下 ${pages.length} 个 .vue/.js 文件;辅助读取 \`src/api\`、\`config/index.js\`、\`static/config.js\` 和 SQL 脚本。\n\n`;
|
||||||
|
md += `## 重要说明\n\n`;
|
||||||
|
md += `- 页面功能不是只按文件名猜测,报告同时参考页面路径、按钮/字段文案、方法名、存储过程名和 SQL 过程体。\n`;
|
||||||
|
md += `- 存储过程处理说明来自 SQL 静态解析:读写对象、参数、返回字段、过滤条件、更新语句、分组分页、JSON、事务、SAP 链接库等。\n`;
|
||||||
|
md += `- 如果某个过程没有解析到过程体,报告会明确说明不能准确判断内部表/视图和处理逻辑。\n\n`;
|
||||||
|
|
||||||
|
md += `## 技术路线总览\n\n`;
|
||||||
|
md += `- 前端:Vue 2.7、Vue Router、Vuex、Element UI,页面以 Options API 为主。\n`;
|
||||||
|
md += `- 数据访问:页面调用 \`this.CreateData(type, procedureName, params[, pageSize, pageCurrent])\` 组包,再调用 \`this.ExecDatabase(data)\` 访问后端。\n`;
|
||||||
|
md += `- 后端:统一接口接收 type/name/param,执行 SQL Server 存储过程,返回 \`response.data\` 和分页信息。\n`;
|
||||||
|
md += `- 数据库:\`YL_MESDB\`,核心对象包括生产计划/生产任务、加工中心操作记录、质检记录、设备数据、权限菜单等表和视图。\n`;
|
||||||
|
md += `- SAP:\`src/api/b1s.js\` 通过 \`window.dt_Config.baseURLB1\` 访问 B1 Service Layer;部分过程也跨库读取 \`SAP.SBO_YL.dbo.*\`。\n\n`;
|
||||||
|
|
||||||
|
md += `## 模块汇总\n\n${moduleSummary(pages)}\n\n`;
|
||||||
|
|
||||||
|
const allSapCalls = [];
|
||||||
|
for (const p of pages) {
|
||||||
|
for (const c of p.sapCalls) allSapCalls.push({ page: p.relPath, ...c });
|
||||||
|
}
|
||||||
|
if (allSapCalls.length) {
|
||||||
|
md += `## SAP 交互总清单\n\n`;
|
||||||
|
md += `| 页面 | 行号 | 方法 | 接口 | 提交字段线索 |\n|---|---:|---|---|---|\n`;
|
||||||
|
for (const c of allSapCalls) {
|
||||||
|
md += `| \`${c.page}\` | ${c.line} | \`${c.fn}\` | \`${c.url}\` | ${mdList(c.payloadKeys.slice(0, 10))} |\n`;
|
||||||
|
}
|
||||||
|
md += `\n`;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let i = 0; i < pages.length; i++) {
|
||||||
|
const p = pages[i];
|
||||||
|
md += `## ${i + 1}. ${p.relPath}\n\n`;
|
||||||
|
md += `**页面位置**:\`${p.relPath}\` \n`;
|
||||||
|
md += `**所属模块**:${p.module} \n`;
|
||||||
|
md += `**源码行数**:${p.lines}\n\n`;
|
||||||
|
md += `### 页面功能\n\n${p.functionDesc}\n\n`;
|
||||||
|
md += `### 页面流程图\n\n${pageFlow(p)}\n\n`;
|
||||||
|
md += `### 用户操作与页面线索\n\n`;
|
||||||
|
md += `可见按钮/字段线索:${mdList(p.labels.slice(0, 18))}\n\n`;
|
||||||
|
md += `主要方法线索:${mdList(p.methods.slice(0, 18))}\n\n`;
|
||||||
|
md += `### 字段映射表\n\n${fieldMappingTable(p)}\n\n`;
|
||||||
|
md += `### 技术路线\n\n${techFlags(p).map(x => `- ${x}`).join('\n')}\n\n`;
|
||||||
|
md += `### 调用的存储过程总览\n\n${procTable(p.procs)}\n\n`;
|
||||||
|
md += `### 与 SAP 的交互\n\n${sapTable(p.sapCalls, p.procs)}\n\n`;
|
||||||
|
md += `### SAP 接口级说明\n\n${sapInterfaceList(p)}\n\n`;
|
||||||
|
md += `### 状态流转说明\n\n${statusFlow(p)}\n\n`;
|
||||||
|
md += `### 数据库调用链\n\n${dbCallChain(p)}\n\n`;
|
||||||
|
md += `### 存储过程处理逻辑明细\n\n`;
|
||||||
|
if (!p.procs.length) {
|
||||||
|
md += `无页面级存储过程调用。\n\n`;
|
||||||
|
} else {
|
||||||
|
for (const proc of p.procs) md += `- ${explainProc(proc)}\n`;
|
||||||
|
md += `\n`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
md += `## SQL 对象总览\n\n`;
|
||||||
|
md += `脚本中解析到表/视图 ${sqlModel.objects.length} 个、存储过程 ${Object.keys(sqlModel.procByName).length} 个。\n\n`;
|
||||||
|
md += `### 表/视图清单\n\n`;
|
||||||
|
for (const obj of sqlModel.objects) md += `- ${obj.type === 'TABLE' ? '表' : '视图'}:\`${obj.name}\`\n`;
|
||||||
|
|
||||||
|
fs.writeFileSync(outFile, md, 'utf8');
|
||||||
|
console.log(outFile);
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
IF COL_LENGTH(N'dbo.MES_接口_生产计划', N'预计送检日期') IS NULL
|
||||||
|
BEGIN
|
||||||
|
ALTER TABLE [dbo].[MES_接口_生产计划] ADD [预计送检日期] datetime NULL;
|
||||||
|
END;
|
||||||
|
|
||||||
|
IF COL_LENGTH(N'dbo.MES_接口_生产计划', N'销售要求日期') IS NULL
|
||||||
|
BEGIN
|
||||||
|
ALTER TABLE [dbo].[MES_接口_生产计划] ADD [销售要求日期] datetime NULL;
|
||||||
|
END;
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
ALTER VIEW dbo.View_生产订单_MES
|
||||||
|
AS
|
||||||
|
SELECT a.订单编号, a.合同号, b.订单拆分内码, a.订单类型, a.订单状态, a.物料编号, a.物料描述, b.计划数量 AS 工序计划数量, a.计量单位, a.下达日期,
|
||||||
|
a.计划开始, a.计划完成, a.项目代码, a.备注, a.重量, a.占用情况, a.加急状态, a.同步时间, b.订单行号, b.物料编码, b.物料名称, b.基本数量, b.计划数量,
|
||||||
|
b.已发货数量, b.订单发货类型, b.仓库代码, b.可视订单, b.物料类型, b.阶段标识, b.工序名称, b.顺序编号, b.性质, b.总工时, b.行文本备注, b.不装配,
|
||||||
|
b.指派对象, b.指派数量, b.计划开始时间, b.计划完成时间, b.最晚开始时间, b.派工状态, b.任务状态, b.修改时间, b.外协通知, b.优先级, b.未完成说明,
|
||||||
|
b.派工特殊说明, b.最后编辑人, b.最后编辑时间, b.可执行, b.收料, b.收料数量, b.开工, b.首检, b.巡检, b.完成数量, b.进度, b.序检, b.测试, b.入库,
|
||||||
|
b.AID AS TaskAID, b.加工状态, b.操作时间, b.开工时间, b.完工时间, b.合格数量, b.不合格数量, b.让步放行数量, b.报废数量,
|
||||||
|
a.计划数量 AS 计划数量订单, b.排产状态, a.自制件属性, b.二次派工, a.周转单打印次数, b.外协打印次数, b.单重, b.外协备注, a.齐套, a.单据状态,
|
||||||
|
a.生产工艺, a.标准工艺, a.任务状态 AS Expr1, b.指派对象编号, dbo.MES_资源主数据.VisCode, a.发料状态, a.拣配状态, a.计划号, b.外协分组,
|
||||||
|
a.加急数量, a.发货状态, a.要求发货日期, a.加急总数, b.打印数量, a.入库数量, dbo.物料基础数据_零件图纸.worker, b.本次检数, b.任务概述, a.齐套时间,
|
||||||
|
a.派工时间, a.钣金预达时间, a.预计送检日期, a.销售要求日期
|
||||||
|
FROM dbo.MES_接口_生产计划_生产任务 AS b LEFT OUTER JOIN
|
||||||
|
dbo.物料基础数据_零件图纸 ON b.物料编码 = dbo.物料基础数据_零件图纸.num LEFT OUTER JOIN
|
||||||
|
dbo.MES_资源主数据 ON b.指派对象 = dbo.MES_资源主数据.Name RIGHT OUTER JOIN
|
||||||
|
dbo.MES_接口_生产计划 AS a ON b.订单编号 = a.订单编号
|
||||||
|
WHERE (b.物料类型 = 'pit_Resource') AND (a.单据状态 IS NULL)
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
CREATE VIEW dbo.View_生产订单_MES
|
||||||
|
AS
|
||||||
|
SELECT a.订单编号, a.合同号, b.订单拆分内码, a.订单类型, a.订单状态, a.物料编号, a.物料描述, b.计划数量 AS 工序计划数量, a.计量单位, a.下达日期,
|
||||||
|
a.计划开始, a.计划完成, a.项目代码, a.备注, a.重量, a.占用情况, a.加急状态, a.同步时间, b.订单行号, b.物料编码, b.物料名称, b.基本数量, b.计划数量,
|
||||||
|
b.已发货数量, b.订单发货类型, b.仓库代码, b.可视订单, b.物料类型, b.阶段标识, b.工序名称, b.顺序编号, b.性质, b.总工时, b.行文本备注, b.不装配,
|
||||||
|
b.指派对象, b.指派数量, b.计划开始时间, b.计划完成时间, b.最晚开始时间, b.派工状态, b.任务状态, b.修改时间, b.外协通知, b.优先级, b.未完成说明,
|
||||||
|
b.派工特殊说明, b.最后编辑人, b.最后编辑时间, b.可执行, b.收料, b.收料数量, b.开工, b.首检, b.巡检, b.完成数量, b.进度, b.序检, b.测试, b.入库,
|
||||||
|
b.AID AS TaskAID, b.加工状态, b.操作时间, b.开工时间, b.完工时间, b.合格数量, b.不合格数量, b.让步放行数量, b.报废数量,
|
||||||
|
a.计划数量 AS 计划数量订单, b.排产状态, a.自制件属性, b.二次派工, a.周转单打印次数, b.外协打印次数, b.单重, b.外协备注, a.齐套, a.单据状态,
|
||||||
|
a.生产工艺, a.标准工艺, a.任务状态 AS Expr1, b.指派对象编号, dbo.MES_资源主数据.VisCode, a.发料状态, a.拣配状态, a.计划号, b.外协分组,
|
||||||
|
a.加急数量, a.发货状态, a.要求发货日期, a.加急总数, b.打印数量, a.入库数量, dbo.物料基础数据_零件图纸.worker, b.本次检数, b.任务概述, a.齐套时间,
|
||||||
|
a.派工时间, a.钣金预达时间
|
||||||
|
FROM dbo.MES_接口_生产计划_生产任务 AS b LEFT OUTER JOIN
|
||||||
|
dbo.物料基础数据_零件图纸 ON b.物料编码 = dbo.物料基础数据_零件图纸.num LEFT OUTER JOIN
|
||||||
|
dbo.MES_资源主数据 ON b.指派对象 = dbo.MES_资源主数据.Name RIGHT OUTER JOIN
|
||||||
|
dbo.MES_接口_生产计划 AS a ON b.订单编号 = a.订单编号
|
||||||
|
WHERE (b.物料类型 = 'pit_Resource') AND (a.单据状态 IS NULL)
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
CREATE OR ALTER PROCEDURE [dbo].[装配中心任务看板_可执行任务数]
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
SET NOCOUNT ON;
|
||||||
|
|
||||||
|
;WITH base AS (
|
||||||
|
SELECT
|
||||||
|
CASE WHEN 物料描述 LIKE '%系统%' THEN 1 ELSE 0 END AS 是否系统类,
|
||||||
|
ISNULL(发料状态, 0) AS 发料状态,
|
||||||
|
派工时间,
|
||||||
|
ISNULL(预计送检日期,
|
||||||
|
CASE
|
||||||
|
WHEN 物料描述 LIKE '%系统%' THEN DATEADD(DAY, 3, 钣金预达时间)
|
||||||
|
ELSE DATEADD(DAY, 3, 齐套时间)
|
||||||
|
END
|
||||||
|
) AS 预计送检日期
|
||||||
|
FROM [dbo].[View_生产订单_MES]
|
||||||
|
WHERE [物料类型] = 'pit_Resource'
|
||||||
|
AND [自制件属性] LIKE '%装配%'
|
||||||
|
AND ISNULL(任务状态, 0) < 4
|
||||||
|
AND [物料描述] NOT LIKE '%软管总成%'
|
||||||
|
AND [物料描述] NOT LIKE '%发货部件%'
|
||||||
|
AND [不装配] <> '否'
|
||||||
|
)
|
||||||
|
SELECT
|
||||||
|
SUM(CASE WHEN 是否系统类 = 0 AND 发料状态 = 1 THEN 1 ELSE 0 END) AS 阀类可执行任务数,
|
||||||
|
SUM(CASE WHEN 是否系统类 = 1 AND 派工时间 IS NOT NULL THEN 1 ELSE 0 END) AS 系统类可执行任务数,
|
||||||
|
SUM(CASE WHEN CAST(预计送检日期 AS date) < CAST(GETDATE() AS date) THEN 1 ELSE 0 END) AS 及时送检数
|
||||||
|
FROM base;
|
||||||
|
END;
|
||||||
21
db_backups/装配中心任务看板_可执行任务数_alter_status_20260618_162248.sql
Normal file
21
db_backups/装配中心任务看板_可执行任务数_alter_status_20260618_162248.sql
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
CREATE OR ALTER PROCEDURE [dbo].[装配中心任务看板_可执行任务数]
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
SET NOCOUNT ON;
|
||||||
|
|
||||||
|
SELECT
|
||||||
|
SUM(CASE WHEN 物料描述 NOT LIKE '%系统%' AND ISNULL(发料状态, 0) = 1 THEN 1 ELSE 0 END) AS 阀类可执行任务数,
|
||||||
|
SUM(CASE WHEN 物料描述 LIKE '%系统%' AND 派工时间 IS NOT NULL THEN 1 ELSE 0 END) AS 系统类可执行任务数,
|
||||||
|
SUM(CASE
|
||||||
|
WHEN 物料描述 NOT LIKE '%系统%' AND ISNULL(发料状态, 0) = 1 THEN 1
|
||||||
|
WHEN 物料描述 LIKE '%系统%' AND 派工时间 IS NOT NULL THEN 1
|
||||||
|
ELSE 0
|
||||||
|
END) AS 可执行任务数
|
||||||
|
FROM [dbo].[View_生产订单_MES]
|
||||||
|
WHERE [物料类型] = 'pit_Resource'
|
||||||
|
AND [自制件属性] LIKE '%装配%'
|
||||||
|
AND ISNULL(任务状态, 0) < 4
|
||||||
|
AND [物料描述] NOT LIKE '%软管总成%'
|
||||||
|
AND [物料描述] NOT LIKE '%发货部件%'
|
||||||
|
AND [不装配] <> '否';
|
||||||
|
END;
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
CREATE PROCEDURE [dbo].[装配中心任务看板_可执行任务数]
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
SET NOCOUNT ON;
|
||||||
|
|
||||||
|
SELECT
|
||||||
|
SUM(CASE WHEN 物料描述 NOT LIKE '%系统%' AND ISNULL(发料状态, 0) = 1 THEN 1 ELSE 0 END) AS 阀类可执行任务数,
|
||||||
|
SUM(CASE WHEN 物料描述 LIKE '%系统%' AND 派工时间 IS NOT NULL THEN 1 ELSE 0 END) AS 系统类可执行任务数,
|
||||||
|
SUM(CASE
|
||||||
|
WHEN 物料描述 NOT LIKE '%系统%' AND ISNULL(发料状态, 0) = 1 THEN 1
|
||||||
|
WHEN 物料描述 LIKE '%系统%' AND 派工时间 IS NOT NULL THEN 1
|
||||||
|
ELSE 0
|
||||||
|
END) AS 可执行任务数
|
||||||
|
FROM [dbo].[View_生产订单_MES]
|
||||||
|
WHERE [物料类型] = 'pit_Resource'
|
||||||
|
AND [自制件属性] LIKE '%装配%'
|
||||||
|
AND ISNULL(任务状态, 0) < 4
|
||||||
|
AND [物料描述] NOT LIKE '%软管总成%'
|
||||||
|
AND [物料描述] NOT LIKE '%发货部件%'
|
||||||
|
AND [不装配] <> '否';
|
||||||
|
END;
|
||||||
21
db_backups/装配中心任务看板_可执行任务数_create_20260618_162141.sql
Normal file
21
db_backups/装配中心任务看板_可执行任务数_create_20260618_162141.sql
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
CREATE OR ALTER PROCEDURE [dbo].[装配中心任务看板_可执行任务数]
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
SET NOCOUNT ON;
|
||||||
|
|
||||||
|
SELECT
|
||||||
|
SUM(CASE WHEN 物料描述 NOT LIKE '%系统%' AND 齐套时间 IS NOT NULL THEN 1 ELSE 0 END) AS 阀类可执行任务数,
|
||||||
|
SUM(CASE WHEN 物料描述 LIKE '%系统%' AND 派工时间 IS NOT NULL THEN 1 ELSE 0 END) AS 系统类可执行任务数,
|
||||||
|
SUM(CASE
|
||||||
|
WHEN 物料描述 NOT LIKE '%系统%' AND 齐套时间 IS NOT NULL THEN 1
|
||||||
|
WHEN 物料描述 LIKE '%系统%' AND 派工时间 IS NOT NULL THEN 1
|
||||||
|
ELSE 0
|
||||||
|
END) AS 可执行任务数
|
||||||
|
FROM [dbo].[View_生产订单_MES]
|
||||||
|
WHERE [物料类型] = 'pit_Resource'
|
||||||
|
AND [自制件属性] LIKE '%装配%'
|
||||||
|
AND ISNULL(任务状态, 0) < 4
|
||||||
|
AND [物料描述] NOT LIKE '%软管总成%'
|
||||||
|
AND [物料描述] NOT LIKE '%发货部件%'
|
||||||
|
AND [不装配] <> '否';
|
||||||
|
END;
|
||||||
129
db_backups/计划排产_系统类任务查询_alter_date_fields_20260618_140257.sql
Normal file
129
db_backups/计划排产_系统类任务查询_alter_date_fields_20260618_140257.sql
Normal file
@@ -0,0 +1,129 @@
|
|||||||
|
ALTER PROCEDURE [dbo].[计划排产_系统类任务查询]
|
||||||
|
@订单号 int=0,
|
||||||
|
@物料类型 nvarchar(50)='', --自制件、装配件
|
||||||
|
@合同号 nvarchar(50)='',
|
||||||
|
@产品编码 nvarchar(50)='',
|
||||||
|
@产品名称 nvarchar(50)='',
|
||||||
|
@工序名称 nvarchar(50)='',
|
||||||
|
@要求完工日期1 nvarchar(50)='',
|
||||||
|
@要求完工日期2 nvarchar(50)='',
|
||||||
|
@计划开始 nvarchar(50)='',
|
||||||
|
@计划完成 nvarchar(50)='',
|
||||||
|
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
|
||||||
|
@指派对象 nvarchar(50)='全部',
|
||||||
|
@辅助配件 nvarchar(50)='不含'
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
declare @selectStr nvarchar(max)
|
||||||
|
declare @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 like ''%系统%'' and isnull(任务状态,0)<4'
|
||||||
|
|
||||||
|
if(@物料类型='自制件') --自制件
|
||||||
|
|
||||||
|
set @selectStr='
|
||||||
|
SELECT [计划数量订单],isnull(开工时间,0) as 开工时间,isnull(进度,0) as 进度,[TaskAID],v.[合同号],v.[订单编号] as 订单号,
|
||||||
|
[订单行号],[订单拆分内码] as 拆分内码,[物料编号] as 产品编码,[物料描述] as 产品名称,TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS VARCHAR(30)))) AS 计划数量,
|
||||||
|
[计划完成] as 要求完工日期,[工序名称],完成数量,v.计划号,收料数量,外协分组,v.任务状态,v.齐套时间,v.派工时间,v.齐套,v.要求发货日期,
|
||||||
|
case when [加急状态]=1 then ''加急'' else '''' end as 加急状态,性质,isnull(总工时,0) as 总工时,[占用情况]
|
||||||
|
,[排产状态],[工序计划数量],指派对象编号,指派对象,TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量,计划开始时间,计划完成时间,最晚开始时间,
|
||||||
|
[派工状态],[外协通知],[优先级],[未完成说明],[派工特殊说明],[最后编辑人],[最后编辑时间],[二次派工],s.交货日期理论齐套日期 as 交货日期,
|
||||||
|
case when zj.计划号 is not null then ''是'' else ''否'' end as 终检,ISNULL(g.标准工时, 0) as 标准工时,钣金预达时间,ISNULL(预计送检日期, DATEADD(DAY, 3, 钣金预达时间)) as 预计送检日期,销售要求日期,
|
||||||
|
ISNULL(zp.装配工时, 0) as 任务装配工时,
|
||||||
|
ISNULL(zj1.质检工时, 0) as 任务质检工时,
|
||||||
|
ISNULL(htzp.合同装配工时, 0) as 合同装配工时,
|
||||||
|
ISNULL(htzj.合同质检工时, 0) as 合同质检工时,
|
||||||
|
ISNULL(zp.装配工序说明, '''') as 装配工序说明,
|
||||||
|
ISNULL(zj1.质检工序说明, '''') as 质检工序说明,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
|
||||||
|
FROM [YL_MESDB].[dbo].[流程表] lc
|
||||||
|
WHERE lc.已关联计划号 = v.[订单编号]
|
||||||
|
), '''') as 异常报警信息,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''装配''
|
||||||
|
) jxz
|
||||||
|
), '''') as 装配进行中,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''质检''
|
||||||
|
) jxz
|
||||||
|
), '''') as 质检进行中 FROM [View_生产订单_MES] v
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT DISTINCT 计划号
|
||||||
|
FROM dbo.YL_质量检验_质检记录
|
||||||
|
WHERE 质检类型 = ''终检''
|
||||||
|
) zj ON v.[订单编号] = zj.计划号
|
||||||
|
LEFT JOIN [dbo].[车间生产管理工艺_零件生产工艺_工艺库] g -- 新增LEFT JOIN
|
||||||
|
ON v.[订单编号] = g.订单编号
|
||||||
|
AND v.[订单行号] = g.工艺顺序
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) as 装配工时,max(gs.工序说明) as 装配工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zp ON v.[订单编号] = zp.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) as 质检工时,max(gs.工序说明) as 质检工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zj1 ON v.[订单编号] = zj1.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) as 合同装配工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzp ON v.[合同号] = htzp.合同号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) as 合同质检工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzj ON v.[合同号] = htzj.合同号
|
||||||
|
left join SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
|
||||||
|
on v.合同号 = s.项目号 and v.物料编号 = s.物料号'
|
||||||
|
|
||||||
|
if(@订单号>0)set @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+Convert(VARCHAR(10),@订单号)
|
||||||
|
if(@合同号<>'')set @selectStrWhere=@selectStrWhere + ' and v.[合同号] like ''%'+@合同号+'%'''
|
||||||
|
if(@产品编码<>'')set @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%'''
|
||||||
|
if(@产品名称<>'')set @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%'''
|
||||||
|
if(@辅助配件 = '不含')set @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%'''
|
||||||
|
if(@工序名称<>'')set @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+''''
|
||||||
|
if(@要求完工日期1 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+''''
|
||||||
|
if(@要求完工日期2 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+''''
|
||||||
|
if(@计划开始 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+''''
|
||||||
|
if(@计划完成 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+''''
|
||||||
|
if(@排产状态='未完成')set @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0'
|
||||||
|
else if(@排产状态='已完成')set @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1'
|
||||||
|
if(@物料类型='自制件') set @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否'''
|
||||||
|
if(@物料类型='装配件') set @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否'''
|
||||||
|
if(@指派对象<>'全部') set @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))'
|
||||||
|
set @selectStrWhere = @selectStrWhere+ 'ORDER BY
|
||||||
|
CASE WHEN 钣金预达时间 IS NULL THEN 1 ELSE 0 END,
|
||||||
|
钣金预达时间,v.[合同号] '
|
||||||
|
set @selectStr=@selectStr+@selectStrWhere
|
||||||
|
print @selectStr
|
||||||
|
EXEC sp_executesql @selectStr
|
||||||
|
END
|
||||||
129
db_backups/计划排产_系统类任务查询_alter_progress_20260618_102524.sql
Normal file
129
db_backups/计划排产_系统类任务查询_alter_progress_20260618_102524.sql
Normal file
@@ -0,0 +1,129 @@
|
|||||||
|
ALTER PROCEDURE [dbo].[计划排产_系统类任务查询]
|
||||||
|
@订单号 int=0,
|
||||||
|
@物料类型 nvarchar(50)='', --自制件、装配件
|
||||||
|
@合同号 nvarchar(50)='',
|
||||||
|
@产品编码 nvarchar(50)='',
|
||||||
|
@产品名称 nvarchar(50)='',
|
||||||
|
@工序名称 nvarchar(50)='',
|
||||||
|
@要求完工日期1 nvarchar(50)='',
|
||||||
|
@要求完工日期2 nvarchar(50)='',
|
||||||
|
@计划开始 nvarchar(50)='',
|
||||||
|
@计划完成 nvarchar(50)='',
|
||||||
|
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
|
||||||
|
@指派对象 nvarchar(50)='全部',
|
||||||
|
@辅助配件 nvarchar(50)='不含'
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
declare @selectStr nvarchar(max)
|
||||||
|
declare @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 like ''%系统%'' and isnull(任务状态,0)<4'
|
||||||
|
|
||||||
|
if(@物料类型='自制件') --自制件
|
||||||
|
|
||||||
|
set @selectStr='
|
||||||
|
SELECT [计划数量订单],isnull(开工时间,0) as 开工时间,isnull(进度,0) as 进度,[TaskAID],v.[合同号],v.[订单编号] as 订单号,
|
||||||
|
[订单行号],[订单拆分内码] as 拆分内码,[物料编号] as 产品编码,[物料描述] as 产品名称,TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS VARCHAR(30)))) AS 计划数量,
|
||||||
|
[计划完成] as 要求完工日期,[工序名称],完成数量,v.计划号,收料数量,外协分组,v.任务状态,v.齐套时间,v.派工时间,v.齐套,v.要求发货日期,
|
||||||
|
case when [加急状态]=1 then ''加急'' else '''' end as 加急状态,性质,isnull(总工时,0) as 总工时,[占用情况]
|
||||||
|
,[排产状态],[工序计划数量],指派对象编号,指派对象,TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量,计划开始时间,计划完成时间,最晚开始时间,
|
||||||
|
[派工状态],[外协通知],[优先级],[未完成说明],[派工特殊说明],[最后编辑人],[最后编辑时间],[二次派工],s.交货日期理论齐套日期 as 交货日期,
|
||||||
|
case when zj.计划号 is not null then ''是'' else ''否'' end as 终检,ISNULL(g.标准工时, 0) as 标准工时,钣金预达时间,
|
||||||
|
ISNULL(zp.装配工时, 0) as 任务装配工时,
|
||||||
|
ISNULL(zj1.质检工时, 0) as 任务质检工时,
|
||||||
|
ISNULL(htzp.合同装配工时, 0) as 合同装配工时,
|
||||||
|
ISNULL(htzj.合同质检工时, 0) as 合同质检工时,
|
||||||
|
ISNULL(zp.装配工序说明, '''') as 装配工序说明,
|
||||||
|
ISNULL(zj1.质检工序说明, '''') as 质检工序说明,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
|
||||||
|
FROM [YL_MESDB].[dbo].[流程表] lc
|
||||||
|
WHERE lc.已关联计划号 = v.[订单编号]
|
||||||
|
), '''') as 异常报警信息,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''装配''
|
||||||
|
) jxz
|
||||||
|
), '''') as 装配进行中,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''质检''
|
||||||
|
) jxz
|
||||||
|
), '''') as 质检进行中 FROM [View_生产订单_MES] v
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT DISTINCT 计划号
|
||||||
|
FROM dbo.YL_质量检验_质检记录
|
||||||
|
WHERE 质检类型 = ''终检''
|
||||||
|
) zj ON v.[订单编号] = zj.计划号
|
||||||
|
LEFT JOIN [dbo].[车间生产管理工艺_零件生产工艺_工艺库] g -- 新增LEFT JOIN
|
||||||
|
ON v.[订单编号] = g.订单编号
|
||||||
|
AND v.[订单行号] = g.工艺顺序
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) as 装配工时,max(gs.工序说明) as 装配工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zp ON v.[订单编号] = zp.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) as 质检工时,max(gs.工序说明) as 质检工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zj1 ON v.[订单编号] = zj1.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) as 合同装配工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzp ON v.[合同号] = htzp.合同号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) as 合同质检工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzj ON v.[合同号] = htzj.合同号
|
||||||
|
left join SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
|
||||||
|
on v.合同号 = s.项目号 and v.物料编号 = s.物料号'
|
||||||
|
|
||||||
|
if(@订单号>0)set @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+Convert(VARCHAR(10),@订单号)
|
||||||
|
if(@合同号<>'')set @selectStrWhere=@selectStrWhere + ' and [合同号] like ''%'+@合同号+'%'''
|
||||||
|
if(@产品编码<>'')set @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%'''
|
||||||
|
if(@产品名称<>'')set @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%'''
|
||||||
|
if(@辅助配件 = '不含')set @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%'''
|
||||||
|
if(@工序名称<>'')set @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+''''
|
||||||
|
if(@要求完工日期1 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+''''
|
||||||
|
if(@要求完工日期2 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+''''
|
||||||
|
if(@计划开始 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+''''
|
||||||
|
if(@计划完成 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+''''
|
||||||
|
if(@排产状态='未完成')set @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0'
|
||||||
|
else if(@排产状态='已完成')set @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1'
|
||||||
|
if(@物料类型='自制件') set @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否'''
|
||||||
|
if(@物料类型='装配件') set @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否'''
|
||||||
|
if(@指派对象<>'全部') set @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))'
|
||||||
|
set @selectStrWhere = @selectStrWhere+ 'ORDER BY
|
||||||
|
CASE WHEN 钣金预达时间 IS NULL THEN 1 ELSE 0 END,
|
||||||
|
钣金预达时间,v.计划开始时间 '
|
||||||
|
set @selectStr=@selectStr+@selectStrWhere
|
||||||
|
print @selectStr
|
||||||
|
EXEC sp_executesql @selectStr
|
||||||
|
END
|
||||||
@@ -0,0 +1,129 @@
|
|||||||
|
ALTER PROCEDURE [dbo].[计划排产_系统类任务查询]
|
||||||
|
@订单号 int=0,
|
||||||
|
@物料类型 nvarchar(50)='', --自制件、装配件
|
||||||
|
@合同号 nvarchar(50)='',
|
||||||
|
@产品编码 nvarchar(50)='',
|
||||||
|
@产品名称 nvarchar(50)='',
|
||||||
|
@工序名称 nvarchar(50)='',
|
||||||
|
@要求完工日期1 nvarchar(50)='',
|
||||||
|
@要求完工日期2 nvarchar(50)='',
|
||||||
|
@计划开始 nvarchar(50)='',
|
||||||
|
@计划完成 nvarchar(50)='',
|
||||||
|
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
|
||||||
|
@指派对象 nvarchar(50)='全部',
|
||||||
|
@辅助配件 nvarchar(50)='不含'
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
declare @selectStr nvarchar(max)
|
||||||
|
declare @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 like ''%系统%'' and isnull(任务状态,0)<4'
|
||||||
|
|
||||||
|
if(@物料类型='自制件') --自制件
|
||||||
|
|
||||||
|
set @selectStr='
|
||||||
|
SELECT [计划数量订单],isnull(开工时间,0) as 开工时间,isnull(进度,0) as 进度,[TaskAID],v.[合同号],v.[订单编号] as 订单号,
|
||||||
|
[订单行号],[订单拆分内码] as 拆分内码,[物料编号] as 产品编码,[物料描述] as 产品名称,TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS VARCHAR(30)))) AS 计划数量,
|
||||||
|
[计划完成] as 要求完工日期,[工序名称],完成数量,v.计划号,收料数量,外协分组,v.任务状态,v.齐套时间,v.派工时间,v.齐套,v.要求发货日期,
|
||||||
|
case when [加急状态]=1 then ''加急'' else '''' end as 加急状态,性质,isnull(总工时,0) as 总工时,[占用情况]
|
||||||
|
,[排产状态],[工序计划数量],指派对象编号,指派对象,TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量,计划开始时间,计划完成时间,最晚开始时间,
|
||||||
|
[派工状态],[外协通知],[优先级],[未完成说明],[派工特殊说明],[最后编辑人],[最后编辑时间],[二次派工],s.交货日期理论齐套日期 as 交货日期,
|
||||||
|
case when zj.计划号 is not null then ''是'' else ''否'' end as 终检,ISNULL(g.标准工时, 0) as 标准工时,钣金预达时间,ISNULL(预计送检日期, DATEADD(DAY, 3, 钣金预达时间)) as 预计送检日期,ISNULL(销售要求日期, s.交货日期理论齐套日期) as 销售要求日期,
|
||||||
|
ISNULL(zp.装配工时, 0) as 任务装配工时,
|
||||||
|
ISNULL(zj1.质检工时, 0) as 任务质检工时,
|
||||||
|
ISNULL(htzp.合同装配工时, 0) as 合同装配工时,
|
||||||
|
ISNULL(htzj.合同质检工时, 0) as 合同质检工时,
|
||||||
|
ISNULL(zp.装配工序说明, '''') as 装配工序说明,
|
||||||
|
ISNULL(zj1.质检工序说明, '''') as 质检工序说明,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
|
||||||
|
FROM [YL_MESDB].[dbo].[流程表] lc
|
||||||
|
WHERE lc.已关联计划号 = v.[订单编号]
|
||||||
|
), '''') as 异常报警信息,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''装配''
|
||||||
|
) jxz
|
||||||
|
), '''') as 装配进行中,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''质检''
|
||||||
|
) jxz
|
||||||
|
), '''') as 质检进行中 FROM [View_生产订单_MES] v
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT DISTINCT 计划号
|
||||||
|
FROM dbo.YL_质量检验_质检记录
|
||||||
|
WHERE 质检类型 = ''终检''
|
||||||
|
) zj ON v.[订单编号] = zj.计划号
|
||||||
|
LEFT JOIN [dbo].[车间生产管理工艺_零件生产工艺_工艺库] g -- 新增LEFT JOIN
|
||||||
|
ON v.[订单编号] = g.订单编号
|
||||||
|
AND v.[订单行号] = g.工艺顺序
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) as 装配工时,max(gs.工序说明) as 装配工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zp ON v.[订单编号] = zp.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) as 质检工时,max(gs.工序说明) as 质检工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zj1 ON v.[订单编号] = zj1.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) as 合同装配工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzp ON v.[合同号] = htzp.合同号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) as 合同质检工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzj ON v.[合同号] = htzj.合同号
|
||||||
|
left join SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
|
||||||
|
on v.合同号 = s.项目号 and v.物料编号 = s.物料号'
|
||||||
|
|
||||||
|
if(@订单号>0)set @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+Convert(VARCHAR(10),@订单号)
|
||||||
|
if(@合同号<>'')set @selectStrWhere=@selectStrWhere + ' and v.[合同号] like ''%'+@合同号+'%'''
|
||||||
|
if(@产品编码<>'')set @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%'''
|
||||||
|
if(@产品名称<>'')set @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%'''
|
||||||
|
if(@辅助配件 = '不含')set @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%'''
|
||||||
|
if(@工序名称<>'')set @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+''''
|
||||||
|
if(@要求完工日期1 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+''''
|
||||||
|
if(@要求完工日期2 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+''''
|
||||||
|
if(@计划开始 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+''''
|
||||||
|
if(@计划完成 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+''''
|
||||||
|
if(@排产状态='未完成')set @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0'
|
||||||
|
else if(@排产状态='已完成')set @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1'
|
||||||
|
if(@物料类型='自制件') set @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否'''
|
||||||
|
if(@物料类型='装配件') set @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否'''
|
||||||
|
if(@指派对象<>'全部') set @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))'
|
||||||
|
set @selectStrWhere = @selectStrWhere+ 'ORDER BY
|
||||||
|
CASE WHEN 钣金预达时间 IS NULL THEN 1 ELSE 0 END,
|
||||||
|
钣金预达时间,v.[合同号] '
|
||||||
|
set @selectStr=@selectStr+@selectStrWhere
|
||||||
|
print @selectStr
|
||||||
|
EXEC sp_executesql @selectStr
|
||||||
|
END
|
||||||
133
db_backups/计划排产_系统类任务查询_alter_sap_min_date_20260618_143140.sql
Normal file
133
db_backups/计划排产_系统类任务查询_alter_sap_min_date_20260618_143140.sql
Normal file
@@ -0,0 +1,133 @@
|
|||||||
|
ALTER PROCEDURE [dbo].[计划排产_系统类任务查询]
|
||||||
|
@订单号 int=0,
|
||||||
|
@物料类型 nvarchar(50)='', --自制件、装配件
|
||||||
|
@合同号 nvarchar(50)='',
|
||||||
|
@产品编码 nvarchar(50)='',
|
||||||
|
@产品名称 nvarchar(50)='',
|
||||||
|
@工序名称 nvarchar(50)='',
|
||||||
|
@要求完工日期1 nvarchar(50)='',
|
||||||
|
@要求完工日期2 nvarchar(50)='',
|
||||||
|
@计划开始 nvarchar(50)='',
|
||||||
|
@计划完成 nvarchar(50)='',
|
||||||
|
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
|
||||||
|
@指派对象 nvarchar(50)='全部',
|
||||||
|
@辅助配件 nvarchar(50)='不含'
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
declare @selectStr nvarchar(max)
|
||||||
|
declare @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 like ''%系统%'' and isnull(任务状态,0)<4'
|
||||||
|
|
||||||
|
if(@物料类型='自制件') --自制件
|
||||||
|
|
||||||
|
set @selectStr='
|
||||||
|
SELECT [计划数量订单],isnull(开工时间,0) as 开工时间,isnull(进度,0) as 进度,[TaskAID],v.[合同号],v.[订单编号] as 订单号,
|
||||||
|
[订单行号],[订单拆分内码] as 拆分内码,[物料编号] as 产品编码,[物料描述] as 产品名称,TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS VARCHAR(30)))) AS 计划数量,
|
||||||
|
[计划完成] as 要求完工日期,[工序名称],完成数量,v.计划号,收料数量,外协分组,v.任务状态,v.齐套时间,v.派工时间,v.齐套,v.要求发货日期,
|
||||||
|
case when [加急状态]=1 then ''加急'' else '''' end as 加急状态,性质,isnull(总工时,0) as 总工时,[占用情况]
|
||||||
|
,[排产状态],[工序计划数量],指派对象编号,指派对象,TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量,计划开始时间,计划完成时间,最晚开始时间,
|
||||||
|
[派工状态],[外协通知],[优先级],[未完成说明],[派工特殊说明],[最后编辑人],[最后编辑时间],[二次派工],s.交货日期理论齐套日期 as 交货日期,
|
||||||
|
case when zj.计划号 is not null then ''是'' else ''否'' end as 终检,ISNULL(g.标准工时, 0) as 标准工时,钣金预达时间,ISNULL(预计送检日期, DATEADD(DAY, 3, 钣金预达时间)) as 预计送检日期,ISNULL(销售要求日期, s.交货日期理论齐套日期) as 销售要求日期,
|
||||||
|
ISNULL(zp.装配工时, 0) as 任务装配工时,
|
||||||
|
ISNULL(zj1.质检工时, 0) as 任务质检工时,
|
||||||
|
ISNULL(htzp.合同装配工时, 0) as 合同装配工时,
|
||||||
|
ISNULL(htzj.合同质检工时, 0) as 合同质检工时,
|
||||||
|
ISNULL(zp.装配工序说明, '''') as 装配工序说明,
|
||||||
|
ISNULL(zj1.质检工序说明, '''') as 质检工序说明,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
|
||||||
|
FROM [YL_MESDB].[dbo].[流程表] lc
|
||||||
|
WHERE lc.已关联计划号 = v.[订单编号]
|
||||||
|
), '''') as 异常报警信息,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''装配''
|
||||||
|
) jxz
|
||||||
|
), '''') as 装配进行中,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''质检''
|
||||||
|
) jxz
|
||||||
|
), '''') as 质检进行中 FROM [View_生产订单_MES] v
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT DISTINCT 计划号
|
||||||
|
FROM dbo.YL_质量检验_质检记录
|
||||||
|
WHERE 质检类型 = ''终检''
|
||||||
|
) zj ON v.[订单编号] = zj.计划号
|
||||||
|
LEFT JOIN [dbo].[车间生产管理工艺_零件生产工艺_工艺库] g -- 新增LEFT JOIN
|
||||||
|
ON v.[订单编号] = g.订单编号
|
||||||
|
AND v.[订单行号] = g.工艺顺序
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) as 装配工时,max(gs.工序说明) as 装配工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zp ON v.[订单编号] = zp.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) as 质检工时,max(gs.工序说明) as 质检工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zj1 ON v.[订单编号] = zj1.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) as 合同装配工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzp ON v.[合同号] = htzp.合同号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) as 合同质检工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzj ON v.[合同号] = htzj.合同号
|
||||||
|
left join (
|
||||||
|
SELECT 项目号, 物料号, MIN(交货日期理论齐套日期) as 交货日期理论齐套日期
|
||||||
|
FROM SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2
|
||||||
|
GROUP BY 项目号, 物料号
|
||||||
|
) s
|
||||||
|
on v.合同号 = s.项目号 and v.物料编号 = s.物料号'
|
||||||
|
|
||||||
|
if(@订单号>0)set @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+Convert(VARCHAR(10),@订单号)
|
||||||
|
if(@合同号<>'')set @selectStrWhere=@selectStrWhere + ' and v.[合同号] like ''%'+@合同号+'%'''
|
||||||
|
if(@产品编码<>'')set @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%'''
|
||||||
|
if(@产品名称<>'')set @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%'''
|
||||||
|
if(@辅助配件 = '不含')set @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%'''
|
||||||
|
if(@工序名称<>'')set @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+''''
|
||||||
|
if(@要求完工日期1 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+''''
|
||||||
|
if(@要求完工日期2 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+''''
|
||||||
|
if(@计划开始 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+''''
|
||||||
|
if(@计划完成 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+''''
|
||||||
|
if(@排产状态='未完成')set @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0'
|
||||||
|
else if(@排产状态='已完成')set @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1'
|
||||||
|
if(@物料类型='自制件') set @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否'''
|
||||||
|
if(@物料类型='装配件') set @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否'''
|
||||||
|
if(@指派对象<>'全部') set @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))'
|
||||||
|
set @selectStrWhere = @selectStrWhere+ 'ORDER BY
|
||||||
|
CASE WHEN 钣金预达时间 IS NULL THEN 1 ELSE 0 END,
|
||||||
|
钣金预达时间,v.[合同号] '
|
||||||
|
set @selectStr=@selectStr+@selectStrWhere
|
||||||
|
print @selectStr
|
||||||
|
EXEC sp_executesql @selectStr
|
||||||
|
END
|
||||||
129
db_backups/计划排产_系统类任务查询_before_date_fields_20260618_140125.sql
Normal file
129
db_backups/计划排产_系统类任务查询_before_date_fields_20260618_140125.sql
Normal file
@@ -0,0 +1,129 @@
|
|||||||
|
CREATE PROCEDURE [dbo].[计划排产_系统类任务查询]
|
||||||
|
@订单号 int=0,
|
||||||
|
@物料类型 nvarchar(50)='', --自制件、装配件
|
||||||
|
@合同号 nvarchar(50)='',
|
||||||
|
@产品编码 nvarchar(50)='',
|
||||||
|
@产品名称 nvarchar(50)='',
|
||||||
|
@工序名称 nvarchar(50)='',
|
||||||
|
@要求完工日期1 nvarchar(50)='',
|
||||||
|
@要求完工日期2 nvarchar(50)='',
|
||||||
|
@计划开始 nvarchar(50)='',
|
||||||
|
@计划完成 nvarchar(50)='',
|
||||||
|
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
|
||||||
|
@指派对象 nvarchar(50)='全部',
|
||||||
|
@辅助配件 nvarchar(50)='不含'
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
declare @selectStr nvarchar(max)
|
||||||
|
declare @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 like ''%系统%'' and isnull(任务状态,0)<4'
|
||||||
|
|
||||||
|
if(@物料类型='自制件') --自制件
|
||||||
|
|
||||||
|
set @selectStr='
|
||||||
|
SELECT [计划数量订单],isnull(开工时间,0) as 开工时间,isnull(进度,0) as 进度,[TaskAID],v.[合同号],v.[订单编号] as 订单号,
|
||||||
|
[订单行号],[订单拆分内码] as 拆分内码,[物料编号] as 产品编码,[物料描述] as 产品名称,TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS VARCHAR(30)))) AS 计划数量,
|
||||||
|
[计划完成] as 要求完工日期,[工序名称],完成数量,v.计划号,收料数量,外协分组,v.任务状态,v.齐套时间,v.派工时间,v.齐套,v.要求发货日期,
|
||||||
|
case when [加急状态]=1 then ''加急'' else '''' end as 加急状态,性质,isnull(总工时,0) as 总工时,[占用情况]
|
||||||
|
,[排产状态],[工序计划数量],指派对象编号,指派对象,TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量,计划开始时间,计划完成时间,最晚开始时间,
|
||||||
|
[派工状态],[外协通知],[优先级],[未完成说明],[派工特殊说明],[最后编辑人],[最后编辑时间],[二次派工],s.交货日期理论齐套日期 as 交货日期,
|
||||||
|
case when zj.计划号 is not null then ''是'' else ''否'' end as 终检,ISNULL(g.标准工时, 0) as 标准工时,钣金预达时间,
|
||||||
|
ISNULL(zp.装配工时, 0) as 任务装配工时,
|
||||||
|
ISNULL(zj1.质检工时, 0) as 任务质检工时,
|
||||||
|
ISNULL(htzp.合同装配工时, 0) as 合同装配工时,
|
||||||
|
ISNULL(htzj.合同质检工时, 0) as 合同质检工时,
|
||||||
|
ISNULL(zp.装配工序说明, '''') as 装配工序说明,
|
||||||
|
ISNULL(zj1.质检工序说明, '''') as 质检工序说明,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
|
||||||
|
FROM [YL_MESDB].[dbo].[流程表] lc
|
||||||
|
WHERE lc.已关联计划号 = v.[订单编号]
|
||||||
|
), '''') as 异常报警信息,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''装配''
|
||||||
|
) jxz
|
||||||
|
), '''') as 装配进行中,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''质检''
|
||||||
|
) jxz
|
||||||
|
), '''') as 质检进行中 FROM [View_生产订单_MES] v
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT DISTINCT 计划号
|
||||||
|
FROM dbo.YL_质量检验_质检记录
|
||||||
|
WHERE 质检类型 = ''终检''
|
||||||
|
) zj ON v.[订单编号] = zj.计划号
|
||||||
|
LEFT JOIN [dbo].[车间生产管理工艺_零件生产工艺_工艺库] g -- 新增LEFT JOIN
|
||||||
|
ON v.[订单编号] = g.订单编号
|
||||||
|
AND v.[订单行号] = g.工艺顺序
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) as 装配工时,max(gs.工序说明) as 装配工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zp ON v.[订单编号] = zp.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) as 质检工时,max(gs.工序说明) as 质检工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zj1 ON v.[订单编号] = zj1.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) as 合同装配工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzp ON v.[合同号] = htzp.合同号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) as 合同质检工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzj ON v.[合同号] = htzj.合同号
|
||||||
|
left join SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
|
||||||
|
on v.合同号 = s.项目号 and v.物料编号 = s.物料号'
|
||||||
|
|
||||||
|
if(@订单号>0)set @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+Convert(VARCHAR(10),@订单号)
|
||||||
|
if(@合同号<>'')set @selectStrWhere=@selectStrWhere + ' and v.[合同号] like ''%'+@合同号+'%'''
|
||||||
|
if(@产品编码<>'')set @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%'''
|
||||||
|
if(@产品名称<>'')set @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%'''
|
||||||
|
if(@辅助配件 = '不含')set @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%'''
|
||||||
|
if(@工序名称<>'')set @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+''''
|
||||||
|
if(@要求完工日期1 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+''''
|
||||||
|
if(@要求完工日期2 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+''''
|
||||||
|
if(@计划开始 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+''''
|
||||||
|
if(@计划完成 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+''''
|
||||||
|
if(@排产状态='未完成')set @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0'
|
||||||
|
else if(@排产状态='已完成')set @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1'
|
||||||
|
if(@物料类型='自制件') set @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否'''
|
||||||
|
if(@物料类型='装配件') set @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否'''
|
||||||
|
if(@指派对象<>'全部') set @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))'
|
||||||
|
set @selectStrWhere = @selectStrWhere+ 'ORDER BY
|
||||||
|
CASE WHEN 钣金预达时间 IS NULL THEN 1 ELSE 0 END,
|
||||||
|
钣金预达时间,v.[合同号] '
|
||||||
|
set @selectStr=@selectStr+@selectStrWhere
|
||||||
|
print @selectStr
|
||||||
|
EXEC sp_executesql @selectStr
|
||||||
|
END
|
||||||
98
db_backups/计划排产_系统类任务查询_before_progress_20260618_102446.sql
Normal file
98
db_backups/计划排产_系统类任务查询_before_progress_20260618_102446.sql
Normal file
@@ -0,0 +1,98 @@
|
|||||||
|
|
||||||
|
CREATE PROCEDURE [dbo].[计划排产_系统类任务查询]
|
||||||
|
@订单号 int=0,
|
||||||
|
@物料类型 nvarchar(50)='', --自制件、装配件
|
||||||
|
@合同号 nvarchar(50)='',
|
||||||
|
@产品编码 nvarchar(50)='',
|
||||||
|
@产品名称 nvarchar(50)='',
|
||||||
|
@工序名称 nvarchar(50)='',
|
||||||
|
@要求完工日期1 nvarchar(50)='',
|
||||||
|
@要求完工日期2 nvarchar(50)='',
|
||||||
|
@计划开始 nvarchar(50)='',
|
||||||
|
@计划完成 nvarchar(50)='',
|
||||||
|
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
|
||||||
|
@指派对象 nvarchar(50)='全部',
|
||||||
|
@辅助配件 nvarchar(50)='不含'
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
declare @selectStr nvarchar(4000)
|
||||||
|
declare @selectStrWhere nvarchar(4000)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 like ''%系统%'' and isnull(任务状态,0)<4'
|
||||||
|
|
||||||
|
if(@物料类型='自制件') --自制件
|
||||||
|
|
||||||
|
set @selectStr='
|
||||||
|
SELECT [计划数量订单],isnull(开工时间,0) as 开工时间,isnull(进度,0) as 进度,[TaskAID],v.[合同号],v.[订单编号] as 订单号,
|
||||||
|
[订单行号],[订单拆分内码] as 拆分内码,[物料编号] as 产品编码,[物料描述] as 产品名称,TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS VARCHAR(30)))) AS 计划数量,
|
||||||
|
[计划完成] as 要求完工日期,[工序名称],完成数量,v.计划号,收料数量,外协分组,v.任务状态,v.齐套时间,v.派工时间,v.齐套,v.要求发货日期,
|
||||||
|
case when [加急状态]=1 then ''加急'' else '''' end as 加急状态,性质,isnull(总工时,0) as 总工时,[占用情况]
|
||||||
|
,[排产状态],[工序计划数量],指派对象编号,指派对象,TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量,计划开始时间,计划完成时间,最晚开始时间,
|
||||||
|
[派工状态],[外协通知],[优先级],[未完成说明],[派工特殊说明],[最后编辑人],[最后编辑时间],[二次派工],s.交货日期理论齐套日期 as 交货日期,
|
||||||
|
case when zj.计划号 is not null then ''是'' else ''否'' end as 终检,ISNULL(g.标准工时, 0) as 标准工时,钣金预达时间,
|
||||||
|
ISNULL(zp.装配工时, 0) as 任务装配工时,
|
||||||
|
ISNULL(zj1.质检工时, 0) as 任务质检工时,
|
||||||
|
ISNULL(htzp.合同装配工时, 0) as 合同装配工时,
|
||||||
|
ISNULL(htzj.合同质检工时, 0) as 合同质检工时,
|
||||||
|
ISNULL(zp.装配工序说明, '''') as 装配工序说明,
|
||||||
|
ISNULL(zj1.质检工序说明, '''') as 质检工序说明
|
||||||
|
FROM [View_生产订单_MES] v
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT DISTINCT 计划号
|
||||||
|
FROM dbo.YL_质量检验_质检记录
|
||||||
|
WHERE 质检类型 = ''终检''
|
||||||
|
) zj ON v.[订单编号] = zj.计划号
|
||||||
|
LEFT JOIN [dbo].[车间生产管理工艺_零件生产工艺_工艺库] g -- 新增LEFT JOIN
|
||||||
|
ON v.[订单编号] = g.订单编号
|
||||||
|
AND v.[订单行号] = g.工艺顺序
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) as 装配工时,max(gs.工序说明) as 装配工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zp ON v.[订单编号] = zp.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) as 质检工时,max(gs.工序说明) as 质检工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zj1 ON v.[订单编号] = zj1.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) as 合同装配工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzp ON v.[合同号] = htzp.合同号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) as 合同质检工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzj ON v.[合同号] = htzj.合同号
|
||||||
|
left join SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
|
||||||
|
on v.合同号 = s.项目号 and v.物料编号 = s.物料号'
|
||||||
|
|
||||||
|
if(@订单号>0)set @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+Convert(VARCHAR(10),@订单号)
|
||||||
|
if(@合同号<>'')set @selectStrWhere=@selectStrWhere + ' and [合同号] like ''%'+@合同号+'%'''
|
||||||
|
if(@产品编码<>'')set @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%'''
|
||||||
|
if(@产品名称<>'')set @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%'''
|
||||||
|
if(@辅助配件 = '不含')set @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%'''
|
||||||
|
if(@工序名称<>'')set @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+''''
|
||||||
|
if(@要求完工日期1 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+''''
|
||||||
|
if(@要求完工日期2 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+''''
|
||||||
|
if(@计划开始 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+''''
|
||||||
|
if(@计划完成 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+''''
|
||||||
|
if(@排产状态='未完成')set @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0'
|
||||||
|
else if(@排产状态='已完成')set @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1'
|
||||||
|
if(@物料类型='自制件') set @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否'''
|
||||||
|
if(@物料类型='装配件') set @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否'''
|
||||||
|
if(@指派对象<>'全部') set @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))'
|
||||||
|
set @selectStrWhere = @selectStrWhere+ 'ORDER BY
|
||||||
|
CASE WHEN 钣金预达时间 IS NULL THEN 1 ELSE 0 END,
|
||||||
|
钣金预达时间,v.计划开始时间 '
|
||||||
|
set @selectStr=@selectStr+@selectStrWhere
|
||||||
|
print @selectStr
|
||||||
|
EXEC sp_executesql @selectStr
|
||||||
|
END
|
||||||
@@ -0,0 +1,129 @@
|
|||||||
|
CREATE PROCEDURE [dbo].[计划排产_系统类任务查询]
|
||||||
|
@订单号 int=0,
|
||||||
|
@物料类型 nvarchar(50)='', --自制件、装配件
|
||||||
|
@合同号 nvarchar(50)='',
|
||||||
|
@产品编码 nvarchar(50)='',
|
||||||
|
@产品名称 nvarchar(50)='',
|
||||||
|
@工序名称 nvarchar(50)='',
|
||||||
|
@要求完工日期1 nvarchar(50)='',
|
||||||
|
@要求完工日期2 nvarchar(50)='',
|
||||||
|
@计划开始 nvarchar(50)='',
|
||||||
|
@计划完成 nvarchar(50)='',
|
||||||
|
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
|
||||||
|
@指派对象 nvarchar(50)='全部',
|
||||||
|
@辅助配件 nvarchar(50)='不含'
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
declare @selectStr nvarchar(max)
|
||||||
|
declare @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 like ''%系统%'' and isnull(任务状态,0)<4'
|
||||||
|
|
||||||
|
if(@物料类型='自制件') --自制件
|
||||||
|
|
||||||
|
set @selectStr='
|
||||||
|
SELECT [计划数量订单],isnull(开工时间,0) as 开工时间,isnull(进度,0) as 进度,[TaskAID],v.[合同号],v.[订单编号] as 订单号,
|
||||||
|
[订单行号],[订单拆分内码] as 拆分内码,[物料编号] as 产品编码,[物料描述] as 产品名称,TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS VARCHAR(30)))) AS 计划数量,
|
||||||
|
[计划完成] as 要求完工日期,[工序名称],完成数量,v.计划号,收料数量,外协分组,v.任务状态,v.齐套时间,v.派工时间,v.齐套,v.要求发货日期,
|
||||||
|
case when [加急状态]=1 then ''加急'' else '''' end as 加急状态,性质,isnull(总工时,0) as 总工时,[占用情况]
|
||||||
|
,[排产状态],[工序计划数量],指派对象编号,指派对象,TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量,计划开始时间,计划完成时间,最晚开始时间,
|
||||||
|
[派工状态],[外协通知],[优先级],[未完成说明],[派工特殊说明],[最后编辑人],[最后编辑时间],[二次派工],s.交货日期理论齐套日期 as 交货日期,
|
||||||
|
case when zj.计划号 is not null then ''是'' else ''否'' end as 终检,ISNULL(g.标准工时, 0) as 标准工时,钣金预达时间,ISNULL(预计送检日期, DATEADD(DAY, 3, 钣金预达时间)) as 预计送检日期,销售要求日期,
|
||||||
|
ISNULL(zp.装配工时, 0) as 任务装配工时,
|
||||||
|
ISNULL(zj1.质检工时, 0) as 任务质检工时,
|
||||||
|
ISNULL(htzp.合同装配工时, 0) as 合同装配工时,
|
||||||
|
ISNULL(htzj.合同质检工时, 0) as 合同质检工时,
|
||||||
|
ISNULL(zp.装配工序说明, '''') as 装配工序说明,
|
||||||
|
ISNULL(zj1.质检工序说明, '''') as 质检工序说明,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
|
||||||
|
FROM [YL_MESDB].[dbo].[流程表] lc
|
||||||
|
WHERE lc.已关联计划号 = v.[订单编号]
|
||||||
|
), '''') as 异常报警信息,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''装配''
|
||||||
|
) jxz
|
||||||
|
), '''') as 装配进行中,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''质检''
|
||||||
|
) jxz
|
||||||
|
), '''') as 质检进行中 FROM [View_生产订单_MES] v
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT DISTINCT 计划号
|
||||||
|
FROM dbo.YL_质量检验_质检记录
|
||||||
|
WHERE 质检类型 = ''终检''
|
||||||
|
) zj ON v.[订单编号] = zj.计划号
|
||||||
|
LEFT JOIN [dbo].[车间生产管理工艺_零件生产工艺_工艺库] g -- 新增LEFT JOIN
|
||||||
|
ON v.[订单编号] = g.订单编号
|
||||||
|
AND v.[订单行号] = g.工艺顺序
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) as 装配工时,max(gs.工序说明) as 装配工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zp ON v.[订单编号] = zp.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) as 质检工时,max(gs.工序说明) as 质检工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zj1 ON v.[订单编号] = zj1.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) as 合同装配工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzp ON v.[合同号] = htzp.合同号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) as 合同质检工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzj ON v.[合同号] = htzj.合同号
|
||||||
|
left join SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
|
||||||
|
on v.合同号 = s.项目号 and v.物料编号 = s.物料号'
|
||||||
|
|
||||||
|
if(@订单号>0)set @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+Convert(VARCHAR(10),@订单号)
|
||||||
|
if(@合同号<>'')set @selectStrWhere=@selectStrWhere + ' and v.[合同号] like ''%'+@合同号+'%'''
|
||||||
|
if(@产品编码<>'')set @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%'''
|
||||||
|
if(@产品名称<>'')set @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%'''
|
||||||
|
if(@辅助配件 = '不含')set @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%'''
|
||||||
|
if(@工序名称<>'')set @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+''''
|
||||||
|
if(@要求完工日期1 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+''''
|
||||||
|
if(@要求完工日期2 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+''''
|
||||||
|
if(@计划开始 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+''''
|
||||||
|
if(@计划完成 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+''''
|
||||||
|
if(@排产状态='未完成')set @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0'
|
||||||
|
else if(@排产状态='已完成')set @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1'
|
||||||
|
if(@物料类型='自制件') set @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否'''
|
||||||
|
if(@物料类型='装配件') set @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否'''
|
||||||
|
if(@指派对象<>'全部') set @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))'
|
||||||
|
set @selectStrWhere = @selectStrWhere+ 'ORDER BY
|
||||||
|
CASE WHEN 钣金预达时间 IS NULL THEN 1 ELSE 0 END,
|
||||||
|
钣金预达时间,v.[合同号] '
|
||||||
|
set @selectStr=@selectStr+@selectStrWhere
|
||||||
|
print @selectStr
|
||||||
|
EXEC sp_executesql @selectStr
|
||||||
|
END
|
||||||
129
db_backups/计划排产_系统类任务查询_before_sap_min_date_20260618_143032.sql
Normal file
129
db_backups/计划排产_系统类任务查询_before_sap_min_date_20260618_143032.sql
Normal file
@@ -0,0 +1,129 @@
|
|||||||
|
CREATE PROCEDURE [dbo].[计划排产_系统类任务查询]
|
||||||
|
@订单号 int=0,
|
||||||
|
@物料类型 nvarchar(50)='', --自制件、装配件
|
||||||
|
@合同号 nvarchar(50)='',
|
||||||
|
@产品编码 nvarchar(50)='',
|
||||||
|
@产品名称 nvarchar(50)='',
|
||||||
|
@工序名称 nvarchar(50)='',
|
||||||
|
@要求完工日期1 nvarchar(50)='',
|
||||||
|
@要求完工日期2 nvarchar(50)='',
|
||||||
|
@计划开始 nvarchar(50)='',
|
||||||
|
@计划完成 nvarchar(50)='',
|
||||||
|
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
|
||||||
|
@指派对象 nvarchar(50)='全部',
|
||||||
|
@辅助配件 nvarchar(50)='不含'
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
declare @selectStr nvarchar(max)
|
||||||
|
declare @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 like ''%系统%'' and isnull(任务状态,0)<4'
|
||||||
|
|
||||||
|
if(@物料类型='自制件') --自制件
|
||||||
|
|
||||||
|
set @selectStr='
|
||||||
|
SELECT [计划数量订单],isnull(开工时间,0) as 开工时间,isnull(进度,0) as 进度,[TaskAID],v.[合同号],v.[订单编号] as 订单号,
|
||||||
|
[订单行号],[订单拆分内码] as 拆分内码,[物料编号] as 产品编码,[物料描述] as 产品名称,TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS VARCHAR(30)))) AS 计划数量,
|
||||||
|
[计划完成] as 要求完工日期,[工序名称],完成数量,v.计划号,收料数量,外协分组,v.任务状态,v.齐套时间,v.派工时间,v.齐套,v.要求发货日期,
|
||||||
|
case when [加急状态]=1 then ''加急'' else '''' end as 加急状态,性质,isnull(总工时,0) as 总工时,[占用情况]
|
||||||
|
,[排产状态],[工序计划数量],指派对象编号,指派对象,TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量,计划开始时间,计划完成时间,最晚开始时间,
|
||||||
|
[派工状态],[外协通知],[优先级],[未完成说明],[派工特殊说明],[最后编辑人],[最后编辑时间],[二次派工],s.交货日期理论齐套日期 as 交货日期,
|
||||||
|
case when zj.计划号 is not null then ''是'' else ''否'' end as 终检,ISNULL(g.标准工时, 0) as 标准工时,钣金预达时间,ISNULL(预计送检日期, DATEADD(DAY, 3, 钣金预达时间)) as 预计送检日期,ISNULL(销售要求日期, s.交货日期理论齐套日期) as 销售要求日期,
|
||||||
|
ISNULL(zp.装配工时, 0) as 任务装配工时,
|
||||||
|
ISNULL(zj1.质检工时, 0) as 任务质检工时,
|
||||||
|
ISNULL(htzp.合同装配工时, 0) as 合同装配工时,
|
||||||
|
ISNULL(htzj.合同质检工时, 0) as 合同质检工时,
|
||||||
|
ISNULL(zp.装配工序说明, '''') as 装配工序说明,
|
||||||
|
ISNULL(zj1.质检工序说明, '''') as 质检工序说明,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
|
||||||
|
FROM [YL_MESDB].[dbo].[流程表] lc
|
||||||
|
WHERE lc.已关联计划号 = v.[订单编号]
|
||||||
|
), '''') as 异常报警信息,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''装配''
|
||||||
|
) jxz
|
||||||
|
), '''') as 装配进行中,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''质检''
|
||||||
|
) jxz
|
||||||
|
), '''') as 质检进行中 FROM [View_生产订单_MES] v
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT DISTINCT 计划号
|
||||||
|
FROM dbo.YL_质量检验_质检记录
|
||||||
|
WHERE 质检类型 = ''终检''
|
||||||
|
) zj ON v.[订单编号] = zj.计划号
|
||||||
|
LEFT JOIN [dbo].[车间生产管理工艺_零件生产工艺_工艺库] g -- 新增LEFT JOIN
|
||||||
|
ON v.[订单编号] = g.订单编号
|
||||||
|
AND v.[订单行号] = g.工艺顺序
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) as 装配工时,max(gs.工序说明) as 装配工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zp ON v.[订单编号] = zp.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) as 质检工时,max(gs.工序说明) as 质检工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zj1 ON v.[订单编号] = zj1.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) as 合同装配工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzp ON v.[合同号] = htzp.合同号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) as 合同质检工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzj ON v.[合同号] = htzj.合同号
|
||||||
|
left join SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
|
||||||
|
on v.合同号 = s.项目号 and v.物料编号 = s.物料号'
|
||||||
|
|
||||||
|
if(@订单号>0)set @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+Convert(VARCHAR(10),@订单号)
|
||||||
|
if(@合同号<>'')set @selectStrWhere=@selectStrWhere + ' and v.[合同号] like ''%'+@合同号+'%'''
|
||||||
|
if(@产品编码<>'')set @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%'''
|
||||||
|
if(@产品名称<>'')set @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%'''
|
||||||
|
if(@辅助配件 = '不含')set @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%'''
|
||||||
|
if(@工序名称<>'')set @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+''''
|
||||||
|
if(@要求完工日期1 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+''''
|
||||||
|
if(@要求完工日期2 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+''''
|
||||||
|
if(@计划开始 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+''''
|
||||||
|
if(@计划完成 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+''''
|
||||||
|
if(@排产状态='未完成')set @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0'
|
||||||
|
else if(@排产状态='已完成')set @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1'
|
||||||
|
if(@物料类型='自制件') set @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否'''
|
||||||
|
if(@物料类型='装配件') set @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否'''
|
||||||
|
if(@指派对象<>'全部') set @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))'
|
||||||
|
set @selectStrWhere = @selectStrWhere+ 'ORDER BY
|
||||||
|
CASE WHEN 钣金预达时间 IS NULL THEN 1 ELSE 0 END,
|
||||||
|
钣金预达时间,v.[合同号] '
|
||||||
|
set @selectStr=@selectStr+@selectStrWhere
|
||||||
|
print @selectStr
|
||||||
|
EXEC sp_executesql @selectStr
|
||||||
|
END
|
||||||
213
db_backups/计划排产_系统类任务查询_导出_alter_date_fields_20260618_140416.sql
Normal file
213
db_backups/计划排产_系统类任务查询_导出_alter_date_fields_20260618_140416.sql
Normal file
@@ -0,0 +1,213 @@
|
|||||||
|
ALTER PROCEDURE [dbo].[计划排产_系统类任务查询_导出]
|
||||||
|
@订单号 int=0,
|
||||||
|
@物料类型 nvarchar(50)='', --自制件、装配件
|
||||||
|
@合同号 nvarchar(50)='',
|
||||||
|
@产品编码 nvarchar(50)='',
|
||||||
|
@产品名称 nvarchar(50)='',
|
||||||
|
@工序名称 nvarchar(50)='',
|
||||||
|
@要求完工日期1 nvarchar(50)='',
|
||||||
|
@要求完工日期2 nvarchar(50)='',
|
||||||
|
@计划开始 nvarchar(50)='',
|
||||||
|
@计划完成 nvarchar(50)='',
|
||||||
|
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
|
||||||
|
@指派对象 nvarchar(50)='全部',
|
||||||
|
@辅助配件 nvarchar(50)='不含'
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
SET NOCOUNT ON;
|
||||||
|
|
||||||
|
SELECT '系统类任务_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype;
|
||||||
|
|
||||||
|
SELECT 256*18 AS 钣金预达时间,
|
||||||
|
256*14 AS 销售订单,
|
||||||
|
256*10 AS 生产订单,
|
||||||
|
256*24 AS 物料编码,
|
||||||
|
256*24 AS 物料名称,
|
||||||
|
256*10 AS 计划数,
|
||||||
|
256*8 AS 齐套,
|
||||||
|
256*12 AS 发料齐套,
|
||||||
|
256*18 AS 计划开始,
|
||||||
|
256*12 AS 派工时间,
|
||||||
|
256*20 AS 二次派工,
|
||||||
|
256*14 AS 预计送检日期,
|
||||||
|
256*14 AS 销售要求日期,
|
||||||
|
256*14 AS 发货要求日期,
|
||||||
|
256*40 AS 异常报警信息,
|
||||||
|
256*40 AS 装配进行中,
|
||||||
|
256*40 AS 质检进行中,
|
||||||
|
256*14 AS 任务装配工时,
|
||||||
|
256*14 AS 任务质检工时,
|
||||||
|
256*14 AS 合同装配工时,
|
||||||
|
256*14 AS 合同质检工时,
|
||||||
|
256*24 AS 装配工序说明,
|
||||||
|
256*24 AS 质检工序说明,
|
||||||
|
256*14 AS 要求完工日期,
|
||||||
|
256*12 AS 工序名称,
|
||||||
|
256*10 AS 计划号,
|
||||||
|
256*18 AS 指派对象,
|
||||||
|
256*12 AS 指派数量,
|
||||||
|
256*10 AS 优先级,
|
||||||
|
256*20 AS 未完成说明,
|
||||||
|
256*20 AS 派工特殊备注,
|
||||||
|
256*14 AS 占用情况,
|
||||||
|
256*14 AS 最后编辑人,
|
||||||
|
256*20 AS 最后编辑时间;
|
||||||
|
|
||||||
|
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 销售要求日期,
|
||||||
|
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 计划号,
|
||||||
|
0 AS 指派对象,
|
||||||
|
0 AS 指派数量,
|
||||||
|
0 AS 优先级,
|
||||||
|
0 AS 未完成说明,
|
||||||
|
0 AS 派工特殊备注,
|
||||||
|
0 AS 占用情况,
|
||||||
|
0 AS 最后编辑人,
|
||||||
|
0 AS 最后编辑时间;
|
||||||
|
|
||||||
|
DECLARE @selectStr nvarchar(max);
|
||||||
|
DECLARE @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 like ''%系统%'' and isnull(任务状态,0)<4';
|
||||||
|
|
||||||
|
IF(@物料类型='自制件')
|
||||||
|
SET @selectStr='
|
||||||
|
SELECT
|
||||||
|
CONVERT(varchar(10), v.钣金预达时间, 120) AS 钣金预达时间,
|
||||||
|
v.[合同号] AS 销售订单,
|
||||||
|
v.[订单编号] AS 生产订单,
|
||||||
|
v.[物料编号] AS 物料编码,
|
||||||
|
v.[物料描述] AS 物料名称,
|
||||||
|
TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS varchar(30)))) AS 计划数,
|
||||||
|
CASE WHEN v.齐套 = 1 THEN ''是'' ELSE ''否'' END AS 齐套,
|
||||||
|
CONVERT(varchar(10), v.齐套时间, 120) AS 发料齐套,
|
||||||
|
CONVERT(varchar(10), v.计划开始时间, 120) AS 计划开始,
|
||||||
|
CONVERT(varchar(10), v.派工时间, 120) AS 派工时间,
|
||||||
|
[二次派工] AS 二次派工,
|
||||||
|
CONVERT(varchar(10), ISNULL(v.预计送检日期, DATEADD(DAY, 3, v.钣金预达时间)), 120) AS 预计送检日期,
|
||||||
|
CONVERT(varchar(10), v.销售要求日期, 120) AS 销售要求日期,
|
||||||
|
CONVERT(varchar(10), v.要求发货日期, 120) AS 发货要求日期,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
|
||||||
|
FROM [YL_MESDB].[dbo].[流程表] lc
|
||||||
|
WHERE lc.已关联计划号 = v.[订单编号]
|
||||||
|
), '''') AS 异常报警信息,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''装配''
|
||||||
|
) jxz
|
||||||
|
), '''') AS 装配进行中,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''质检''
|
||||||
|
) jxz
|
||||||
|
), '''') AS 质检进行中,
|
||||||
|
CAST(ISNULL(zp.装配工时, 0) / 60.0 AS decimal(18,2)) AS 任务装配工时,
|
||||||
|
CAST(ISNULL(zj1.质检工时, 0) / 60.0 AS decimal(18,2)) AS 任务质检工时,
|
||||||
|
CAST(ISNULL(htzp.合同装配工时, 0) / 60.0 AS decimal(18,2)) AS 合同装配工时,
|
||||||
|
CAST(ISNULL(htzj.合同质检工时, 0) / 60.0 AS decimal(18,2)) AS 合同质检工时,
|
||||||
|
ISNULL(zp.装配工序说明, '''') AS 装配工序说明,
|
||||||
|
ISNULL(zj1.质检工序说明, '''') AS 质检工序说明,
|
||||||
|
CONVERT(varchar(10), [计划完成], 120) AS 要求完工日期,
|
||||||
|
[工序名称] AS 工序名称,
|
||||||
|
v.计划号 AS 计划号,
|
||||||
|
指派对象 AS 指派对象,
|
||||||
|
TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS varchar(30)))) AS 指派数量,
|
||||||
|
[优先级] AS 优先级,
|
||||||
|
[未完成说明] AS 未完成说明,
|
||||||
|
[派工特殊说明] AS 派工特殊备注,
|
||||||
|
[占用情况] AS 占用情况,
|
||||||
|
[最后编辑人] AS 最后编辑人,
|
||||||
|
CONVERT(varchar(19), [最后编辑时间], 120) AS 最后编辑时间
|
||||||
|
FROM [View_生产订单_MES] v
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) AS 装配工时, MAX(gs.工序说明) AS 装配工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zp ON v.[订单编号] = zp.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) AS 质检工时, MAX(gs.工序说明) AS 质检工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zj1 ON v.[订单编号] = zj1.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) AS 合同装配工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzp ON v.[合同号] = htzp.合同号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) AS 合同质检工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzj ON v.[合同号] = htzj.合同号
|
||||||
|
LEFT JOIN SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
|
||||||
|
ON v.合同号 = s.项目号 AND v.物料编号 = s.物料号';
|
||||||
|
|
||||||
|
IF(@订单号>0) SET @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+CONVERT(varchar(10),@订单号);
|
||||||
|
IF(@合同号<>'') SET @selectStrWhere=@selectStrWhere + ' and [合同号] like ''%'+@合同号+'%''';
|
||||||
|
IF(@产品编码<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%''';
|
||||||
|
IF(@产品名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%''';
|
||||||
|
IF(@辅助配件 = '不含') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%''';
|
||||||
|
IF(@工序名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+'''';
|
||||||
|
IF(@要求完工日期1 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+'''';
|
||||||
|
IF(@要求完工日期2 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+'''';
|
||||||
|
IF(@计划开始 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+'''';
|
||||||
|
IF(@计划完成 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+'''';
|
||||||
|
IF(@排产状态='未完成') SET @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0';
|
||||||
|
ELSE IF(@排产状态='已完成') SET @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1';
|
||||||
|
IF(@物料类型='自制件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否''';
|
||||||
|
IF(@物料类型='装配件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否''';
|
||||||
|
IF(@指派对象<>'全部') SET @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))';
|
||||||
|
|
||||||
|
SET @selectStrWhere = @selectStrWhere + ' ORDER BY CASE WHEN 钣金预达时间 IS NULL THEN 1 ELSE 0 END, 钣金预达时间, v.计划开始时间';
|
||||||
|
SET @selectStr=@selectStr+@selectStrWhere;
|
||||||
|
PRINT @selectStr;
|
||||||
|
EXEC sp_executesql @selectStr;
|
||||||
|
END
|
||||||
213
db_backups/计划排产_系统类任务查询_导出_alter_hours_3600_20260618_140521.sql
Normal file
213
db_backups/计划排产_系统类任务查询_导出_alter_hours_3600_20260618_140521.sql
Normal file
@@ -0,0 +1,213 @@
|
|||||||
|
ALTER PROCEDURE [dbo].[计划排产_系统类任务查询_导出]
|
||||||
|
@订单号 int=0,
|
||||||
|
@物料类型 nvarchar(50)='', --自制件、装配件
|
||||||
|
@合同号 nvarchar(50)='',
|
||||||
|
@产品编码 nvarchar(50)='',
|
||||||
|
@产品名称 nvarchar(50)='',
|
||||||
|
@工序名称 nvarchar(50)='',
|
||||||
|
@要求完工日期1 nvarchar(50)='',
|
||||||
|
@要求完工日期2 nvarchar(50)='',
|
||||||
|
@计划开始 nvarchar(50)='',
|
||||||
|
@计划完成 nvarchar(50)='',
|
||||||
|
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
|
||||||
|
@指派对象 nvarchar(50)='全部',
|
||||||
|
@辅助配件 nvarchar(50)='不含'
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
SET NOCOUNT ON;
|
||||||
|
|
||||||
|
SELECT '系统类任务_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype;
|
||||||
|
|
||||||
|
SELECT 256*18 AS 钣金预达时间,
|
||||||
|
256*14 AS 销售订单,
|
||||||
|
256*10 AS 生产订单,
|
||||||
|
256*24 AS 物料编码,
|
||||||
|
256*24 AS 物料名称,
|
||||||
|
256*10 AS 计划数,
|
||||||
|
256*8 AS 齐套,
|
||||||
|
256*12 AS 发料齐套,
|
||||||
|
256*18 AS 计划开始,
|
||||||
|
256*12 AS 派工时间,
|
||||||
|
256*20 AS 二次派工,
|
||||||
|
256*14 AS 预计送检日期,
|
||||||
|
256*14 AS 销售要求日期,
|
||||||
|
256*14 AS 发货要求日期,
|
||||||
|
256*40 AS 异常报警信息,
|
||||||
|
256*40 AS 装配进行中,
|
||||||
|
256*40 AS 质检进行中,
|
||||||
|
256*14 AS 任务装配工时,
|
||||||
|
256*14 AS 任务质检工时,
|
||||||
|
256*14 AS 合同装配工时,
|
||||||
|
256*14 AS 合同质检工时,
|
||||||
|
256*24 AS 装配工序说明,
|
||||||
|
256*24 AS 质检工序说明,
|
||||||
|
256*14 AS 要求完工日期,
|
||||||
|
256*12 AS 工序名称,
|
||||||
|
256*10 AS 计划号,
|
||||||
|
256*18 AS 指派对象,
|
||||||
|
256*12 AS 指派数量,
|
||||||
|
256*10 AS 优先级,
|
||||||
|
256*20 AS 未完成说明,
|
||||||
|
256*20 AS 派工特殊备注,
|
||||||
|
256*14 AS 占用情况,
|
||||||
|
256*14 AS 最后编辑人,
|
||||||
|
256*20 AS 最后编辑时间;
|
||||||
|
|
||||||
|
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 销售要求日期,
|
||||||
|
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 计划号,
|
||||||
|
0 AS 指派对象,
|
||||||
|
0 AS 指派数量,
|
||||||
|
0 AS 优先级,
|
||||||
|
0 AS 未完成说明,
|
||||||
|
0 AS 派工特殊备注,
|
||||||
|
0 AS 占用情况,
|
||||||
|
0 AS 最后编辑人,
|
||||||
|
0 AS 最后编辑时间;
|
||||||
|
|
||||||
|
DECLARE @selectStr nvarchar(max);
|
||||||
|
DECLARE @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 like ''%系统%'' and isnull(任务状态,0)<4';
|
||||||
|
|
||||||
|
IF(@物料类型='自制件')
|
||||||
|
SET @selectStr='
|
||||||
|
SELECT
|
||||||
|
CONVERT(varchar(10), v.钣金预达时间, 120) AS 钣金预达时间,
|
||||||
|
v.[合同号] AS 销售订单,
|
||||||
|
v.[订单编号] AS 生产订单,
|
||||||
|
v.[物料编号] AS 物料编码,
|
||||||
|
v.[物料描述] AS 物料名称,
|
||||||
|
TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS varchar(30)))) AS 计划数,
|
||||||
|
CASE WHEN v.齐套 = 1 THEN ''是'' ELSE ''否'' END AS 齐套,
|
||||||
|
CONVERT(varchar(10), v.齐套时间, 120) AS 发料齐套,
|
||||||
|
CONVERT(varchar(10), v.计划开始时间, 120) AS 计划开始,
|
||||||
|
CONVERT(varchar(10), v.派工时间, 120) AS 派工时间,
|
||||||
|
[二次派工] AS 二次派工,
|
||||||
|
CONVERT(varchar(10), ISNULL(v.预计送检日期, DATEADD(DAY, 3, v.钣金预达时间)), 120) AS 预计送检日期,
|
||||||
|
CONVERT(varchar(10), v.销售要求日期, 120) AS 销售要求日期,
|
||||||
|
CONVERT(varchar(10), v.要求发货日期, 120) AS 发货要求日期,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
|
||||||
|
FROM [YL_MESDB].[dbo].[流程表] lc
|
||||||
|
WHERE lc.已关联计划号 = v.[订单编号]
|
||||||
|
), '''') AS 异常报警信息,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''装配''
|
||||||
|
) jxz
|
||||||
|
), '''') AS 装配进行中,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''质检''
|
||||||
|
) jxz
|
||||||
|
), '''') AS 质检进行中,
|
||||||
|
CAST(ISNULL(zp.装配工时, 0) / 3600.0 AS decimal(18,2)) AS 任务装配工时,
|
||||||
|
CAST(ISNULL(zj1.质检工时, 0) / 3600.0 AS decimal(18,2)) AS 任务质检工时,
|
||||||
|
CAST(ISNULL(htzp.合同装配工时, 0) / 3600.0 AS decimal(18,2)) AS 合同装配工时,
|
||||||
|
CAST(ISNULL(htzj.合同质检工时, 0) / 3600.0 AS decimal(18,2)) AS 合同质检工时,
|
||||||
|
ISNULL(zp.装配工序说明, '''') AS 装配工序说明,
|
||||||
|
ISNULL(zj1.质检工序说明, '''') AS 质检工序说明,
|
||||||
|
CONVERT(varchar(10), [计划完成], 120) AS 要求完工日期,
|
||||||
|
[工序名称] AS 工序名称,
|
||||||
|
v.计划号 AS 计划号,
|
||||||
|
指派对象 AS 指派对象,
|
||||||
|
TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS varchar(30)))) AS 指派数量,
|
||||||
|
[优先级] AS 优先级,
|
||||||
|
[未完成说明] AS 未完成说明,
|
||||||
|
[派工特殊说明] AS 派工特殊备注,
|
||||||
|
[占用情况] AS 占用情况,
|
||||||
|
[最后编辑人] AS 最后编辑人,
|
||||||
|
CONVERT(varchar(19), [最后编辑时间], 120) AS 最后编辑时间
|
||||||
|
FROM [View_生产订单_MES] v
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) AS 装配工时, MAX(gs.工序说明) AS 装配工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zp ON v.[订单编号] = zp.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) AS 质检工时, MAX(gs.工序说明) AS 质检工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zj1 ON v.[订单编号] = zj1.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) AS 合同装配工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzp ON v.[合同号] = htzp.合同号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) AS 合同质检工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzj ON v.[合同号] = htzj.合同号
|
||||||
|
LEFT JOIN SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
|
||||||
|
ON v.合同号 = s.项目号 AND v.物料编号 = s.物料号';
|
||||||
|
|
||||||
|
IF(@订单号>0) SET @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+CONVERT(varchar(10),@订单号);
|
||||||
|
IF(@合同号<>'') SET @selectStrWhere=@selectStrWhere + ' and [合同号] like ''%'+@合同号+'%''';
|
||||||
|
IF(@产品编码<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%''';
|
||||||
|
IF(@产品名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%''';
|
||||||
|
IF(@辅助配件 = '不含') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%''';
|
||||||
|
IF(@工序名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+'''';
|
||||||
|
IF(@要求完工日期1 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+'''';
|
||||||
|
IF(@要求完工日期2 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+'''';
|
||||||
|
IF(@计划开始 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+'''';
|
||||||
|
IF(@计划完成 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+'''';
|
||||||
|
IF(@排产状态='未完成') SET @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0';
|
||||||
|
ELSE IF(@排产状态='已完成') SET @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1';
|
||||||
|
IF(@物料类型='自制件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否''';
|
||||||
|
IF(@物料类型='装配件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否''';
|
||||||
|
IF(@指派对象<>'全部') SET @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))';
|
||||||
|
|
||||||
|
SET @selectStrWhere = @selectStrWhere + ' ORDER BY CASE WHEN 钣金预达时间 IS NULL THEN 1 ELSE 0 END, 钣金预达时间, v.计划开始时间';
|
||||||
|
SET @selectStr=@selectStr+@selectStrWhere;
|
||||||
|
PRINT @selectStr;
|
||||||
|
EXEC sp_executesql @selectStr;
|
||||||
|
END
|
||||||
@@ -0,0 +1,213 @@
|
|||||||
|
ALTER PROCEDURE [dbo].[计划排产_系统类任务查询_导出]
|
||||||
|
@订单号 int=0,
|
||||||
|
@物料类型 nvarchar(50)='', --自制件、装配件
|
||||||
|
@合同号 nvarchar(50)='',
|
||||||
|
@产品编码 nvarchar(50)='',
|
||||||
|
@产品名称 nvarchar(50)='',
|
||||||
|
@工序名称 nvarchar(50)='',
|
||||||
|
@要求完工日期1 nvarchar(50)='',
|
||||||
|
@要求完工日期2 nvarchar(50)='',
|
||||||
|
@计划开始 nvarchar(50)='',
|
||||||
|
@计划完成 nvarchar(50)='',
|
||||||
|
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
|
||||||
|
@指派对象 nvarchar(50)='全部',
|
||||||
|
@辅助配件 nvarchar(50)='不含'
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
SET NOCOUNT ON;
|
||||||
|
|
||||||
|
SELECT '系统类任务_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype;
|
||||||
|
|
||||||
|
SELECT 256*18 AS 钣金预达时间,
|
||||||
|
256*14 AS 销售订单,
|
||||||
|
256*10 AS 生产订单,
|
||||||
|
256*24 AS 物料编码,
|
||||||
|
256*24 AS 物料名称,
|
||||||
|
256*10 AS 计划数,
|
||||||
|
256*8 AS 齐套,
|
||||||
|
256*12 AS 发料齐套,
|
||||||
|
256*18 AS 计划开始,
|
||||||
|
256*12 AS 派工时间,
|
||||||
|
256*20 AS 二次派工,
|
||||||
|
256*14 AS 预计送检日期,
|
||||||
|
256*14 AS 销售要求日期,
|
||||||
|
256*14 AS 发货要求日期,
|
||||||
|
256*40 AS 异常报警信息,
|
||||||
|
256*40 AS 装配进行中,
|
||||||
|
256*40 AS 质检进行中,
|
||||||
|
256*14 AS 任务装配工时,
|
||||||
|
256*14 AS 任务质检工时,
|
||||||
|
256*14 AS 合同装配工时,
|
||||||
|
256*14 AS 合同质检工时,
|
||||||
|
256*24 AS 装配工序说明,
|
||||||
|
256*24 AS 质检工序说明,
|
||||||
|
256*14 AS 要求完工日期,
|
||||||
|
256*12 AS 工序名称,
|
||||||
|
256*10 AS 计划号,
|
||||||
|
256*18 AS 指派对象,
|
||||||
|
256*12 AS 指派数量,
|
||||||
|
256*10 AS 优先级,
|
||||||
|
256*20 AS 未完成说明,
|
||||||
|
256*20 AS 派工特殊备注,
|
||||||
|
256*14 AS 占用情况,
|
||||||
|
256*14 AS 最后编辑人,
|
||||||
|
256*20 AS 最后编辑时间;
|
||||||
|
|
||||||
|
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 销售要求日期,
|
||||||
|
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 计划号,
|
||||||
|
0 AS 指派对象,
|
||||||
|
0 AS 指派数量,
|
||||||
|
0 AS 优先级,
|
||||||
|
0 AS 未完成说明,
|
||||||
|
0 AS 派工特殊备注,
|
||||||
|
0 AS 占用情况,
|
||||||
|
0 AS 最后编辑人,
|
||||||
|
0 AS 最后编辑时间;
|
||||||
|
|
||||||
|
DECLARE @selectStr nvarchar(max);
|
||||||
|
DECLARE @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 like ''%系统%'' and isnull(任务状态,0)<4';
|
||||||
|
|
||||||
|
IF(@物料类型='自制件')
|
||||||
|
SET @selectStr='
|
||||||
|
SELECT
|
||||||
|
CONVERT(varchar(10), v.钣金预达时间, 120) AS 钣金预达时间,
|
||||||
|
v.[合同号] AS 销售订单,
|
||||||
|
v.[订单编号] AS 生产订单,
|
||||||
|
v.[物料编号] AS 物料编码,
|
||||||
|
v.[物料描述] AS 物料名称,
|
||||||
|
TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS varchar(30)))) AS 计划数,
|
||||||
|
CASE WHEN v.齐套 = 1 THEN ''是'' ELSE ''否'' END AS 齐套,
|
||||||
|
CONVERT(varchar(10), v.齐套时间, 120) AS 发料齐套,
|
||||||
|
CONVERT(varchar(10), v.计划开始时间, 120) AS 计划开始,
|
||||||
|
CONVERT(varchar(10), v.派工时间, 120) AS 派工时间,
|
||||||
|
[二次派工] AS 二次派工,
|
||||||
|
CONVERT(varchar(10), ISNULL(v.预计送检日期, DATEADD(DAY, 3, v.钣金预达时间)), 120) AS 预计送检日期,
|
||||||
|
CONVERT(varchar(10), ISNULL(v.销售要求日期, s.交货日期理论齐套日期), 120) AS 销售要求日期,
|
||||||
|
CONVERT(varchar(10), v.要求发货日期, 120) AS 发货要求日期,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
|
||||||
|
FROM [YL_MESDB].[dbo].[流程表] lc
|
||||||
|
WHERE lc.已关联计划号 = v.[订单编号]
|
||||||
|
), '''') AS 异常报警信息,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''装配''
|
||||||
|
) jxz
|
||||||
|
), '''') AS 装配进行中,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''质检''
|
||||||
|
) jxz
|
||||||
|
), '''') AS 质检进行中,
|
||||||
|
CAST(ISNULL(zp.装配工时, 0) / 3600.0 AS decimal(18,2)) AS 任务装配工时,
|
||||||
|
CAST(ISNULL(zj1.质检工时, 0) / 3600.0 AS decimal(18,2)) AS 任务质检工时,
|
||||||
|
CAST(ISNULL(htzp.合同装配工时, 0) / 3600.0 AS decimal(18,2)) AS 合同装配工时,
|
||||||
|
CAST(ISNULL(htzj.合同质检工时, 0) / 3600.0 AS decimal(18,2)) AS 合同质检工时,
|
||||||
|
ISNULL(zp.装配工序说明, '''') AS 装配工序说明,
|
||||||
|
ISNULL(zj1.质检工序说明, '''') AS 质检工序说明,
|
||||||
|
CONVERT(varchar(10), [计划完成], 120) AS 要求完工日期,
|
||||||
|
[工序名称] AS 工序名称,
|
||||||
|
v.计划号 AS 计划号,
|
||||||
|
指派对象 AS 指派对象,
|
||||||
|
TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS varchar(30)))) AS 指派数量,
|
||||||
|
[优先级] AS 优先级,
|
||||||
|
[未完成说明] AS 未完成说明,
|
||||||
|
[派工特殊说明] AS 派工特殊备注,
|
||||||
|
[占用情况] AS 占用情况,
|
||||||
|
[最后编辑人] AS 最后编辑人,
|
||||||
|
CONVERT(varchar(19), [最后编辑时间], 120) AS 最后编辑时间
|
||||||
|
FROM [View_生产订单_MES] v
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) AS 装配工时, MAX(gs.工序说明) AS 装配工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zp ON v.[订单编号] = zp.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) AS 质检工时, MAX(gs.工序说明) AS 质检工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zj1 ON v.[订单编号] = zj1.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) AS 合同装配工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzp ON v.[合同号] = htzp.合同号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) AS 合同质检工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzj ON v.[合同号] = htzj.合同号
|
||||||
|
LEFT JOIN SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
|
||||||
|
ON v.合同号 = s.项目号 AND v.物料编号 = s.物料号';
|
||||||
|
|
||||||
|
IF(@订单号>0) SET @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+CONVERT(varchar(10),@订单号);
|
||||||
|
IF(@合同号<>'') SET @selectStrWhere=@selectStrWhere + ' and [合同号] like ''%'+@合同号+'%''';
|
||||||
|
IF(@产品编码<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%''';
|
||||||
|
IF(@产品名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%''';
|
||||||
|
IF(@辅助配件 = '不含') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%''';
|
||||||
|
IF(@工序名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+'''';
|
||||||
|
IF(@要求完工日期1 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+'''';
|
||||||
|
IF(@要求完工日期2 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+'''';
|
||||||
|
IF(@计划开始 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+'''';
|
||||||
|
IF(@计划完成 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+'''';
|
||||||
|
IF(@排产状态='未完成') SET @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0';
|
||||||
|
ELSE IF(@排产状态='已完成') SET @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1';
|
||||||
|
IF(@物料类型='自制件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否''';
|
||||||
|
IF(@物料类型='装配件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否''';
|
||||||
|
IF(@指派对象<>'全部') SET @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))';
|
||||||
|
|
||||||
|
SET @selectStrWhere = @selectStrWhere + ' ORDER BY CASE WHEN 钣金预达时间 IS NULL THEN 1 ELSE 0 END, 钣金预达时间, v.计划开始时间';
|
||||||
|
SET @selectStr=@selectStr+@selectStrWhere;
|
||||||
|
PRINT @selectStr;
|
||||||
|
EXEC sp_executesql @selectStr;
|
||||||
|
END
|
||||||
@@ -0,0 +1,217 @@
|
|||||||
|
ALTER PROCEDURE [dbo].[计划排产_系统类任务查询_导出]
|
||||||
|
@订单号 int=0,
|
||||||
|
@物料类型 nvarchar(50)='', --自制件、装配件
|
||||||
|
@合同号 nvarchar(50)='',
|
||||||
|
@产品编码 nvarchar(50)='',
|
||||||
|
@产品名称 nvarchar(50)='',
|
||||||
|
@工序名称 nvarchar(50)='',
|
||||||
|
@要求完工日期1 nvarchar(50)='',
|
||||||
|
@要求完工日期2 nvarchar(50)='',
|
||||||
|
@计划开始 nvarchar(50)='',
|
||||||
|
@计划完成 nvarchar(50)='',
|
||||||
|
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
|
||||||
|
@指派对象 nvarchar(50)='全部',
|
||||||
|
@辅助配件 nvarchar(50)='不含'
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
SET NOCOUNT ON;
|
||||||
|
|
||||||
|
SELECT '系统类任务_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype;
|
||||||
|
|
||||||
|
SELECT 256*18 AS 钣金预达时间,
|
||||||
|
256*14 AS 销售订单,
|
||||||
|
256*10 AS 生产订单,
|
||||||
|
256*24 AS 物料编码,
|
||||||
|
256*24 AS 物料名称,
|
||||||
|
256*10 AS 计划数,
|
||||||
|
256*8 AS 齐套,
|
||||||
|
256*12 AS 发料齐套,
|
||||||
|
256*18 AS 计划开始,
|
||||||
|
256*12 AS 派工时间,
|
||||||
|
256*20 AS 二次派工,
|
||||||
|
256*14 AS 预计送检日期,
|
||||||
|
256*14 AS 销售要求日期,
|
||||||
|
256*14 AS 发货要求日期,
|
||||||
|
256*40 AS 异常报警信息,
|
||||||
|
256*40 AS 装配进行中,
|
||||||
|
256*40 AS 质检进行中,
|
||||||
|
256*14 AS 任务装配工时,
|
||||||
|
256*14 AS 任务质检工时,
|
||||||
|
256*14 AS 合同装配工时,
|
||||||
|
256*14 AS 合同质检工时,
|
||||||
|
256*24 AS 装配工序说明,
|
||||||
|
256*24 AS 质检工序说明,
|
||||||
|
256*14 AS 要求完工日期,
|
||||||
|
256*12 AS 工序名称,
|
||||||
|
256*10 AS 计划号,
|
||||||
|
256*18 AS 指派对象,
|
||||||
|
256*12 AS 指派数量,
|
||||||
|
256*10 AS 优先级,
|
||||||
|
256*20 AS 未完成说明,
|
||||||
|
256*20 AS 派工特殊备注,
|
||||||
|
256*14 AS 占用情况,
|
||||||
|
256*14 AS 最后编辑人,
|
||||||
|
256*20 AS 最后编辑时间;
|
||||||
|
|
||||||
|
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 销售要求日期,
|
||||||
|
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 计划号,
|
||||||
|
0 AS 指派对象,
|
||||||
|
0 AS 指派数量,
|
||||||
|
0 AS 优先级,
|
||||||
|
0 AS 未完成说明,
|
||||||
|
0 AS 派工特殊备注,
|
||||||
|
0 AS 占用情况,
|
||||||
|
0 AS 最后编辑人,
|
||||||
|
0 AS 最后编辑时间;
|
||||||
|
|
||||||
|
DECLARE @selectStr nvarchar(max);
|
||||||
|
DECLARE @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 like ''%系统%'' and isnull(任务状态,0)<4';
|
||||||
|
|
||||||
|
IF(@物料类型='自制件')
|
||||||
|
SET @selectStr='
|
||||||
|
SELECT
|
||||||
|
CONVERT(varchar(10), v.钣金预达时间, 120) AS 钣金预达时间,
|
||||||
|
v.[合同号] AS 销售订单,
|
||||||
|
v.[订单编号] AS 生产订单,
|
||||||
|
v.[物料编号] AS 物料编码,
|
||||||
|
v.[物料描述] AS 物料名称,
|
||||||
|
TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS varchar(30)))) AS 计划数,
|
||||||
|
CASE WHEN v.齐套 = 1 THEN ''是'' ELSE ''否'' END AS 齐套,
|
||||||
|
CONVERT(varchar(10), v.齐套时间, 120) AS 发料齐套,
|
||||||
|
CONVERT(varchar(10), v.计划开始时间, 120) AS 计划开始,
|
||||||
|
CONVERT(varchar(10), v.派工时间, 120) AS 派工时间,
|
||||||
|
[二次派工] AS 二次派工,
|
||||||
|
CONVERT(varchar(10), ISNULL(v.预计送检日期, DATEADD(DAY, 3, v.钣金预达时间)), 120) AS 预计送检日期,
|
||||||
|
CONVERT(varchar(10), ISNULL(v.销售要求日期, s.交货日期理论齐套日期), 120) AS 销售要求日期,
|
||||||
|
CONVERT(varchar(10), v.要求发货日期, 120) AS 发货要求日期,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
|
||||||
|
FROM [YL_MESDB].[dbo].[流程表] lc
|
||||||
|
WHERE lc.已关联计划号 = v.[订单编号]
|
||||||
|
), '''') AS 异常报警信息,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''装配''
|
||||||
|
) jxz
|
||||||
|
), '''') AS 装配进行中,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''质检''
|
||||||
|
) jxz
|
||||||
|
), '''') AS 质检进行中,
|
||||||
|
CAST(ISNULL(zp.装配工时, 0) / 3600.0 AS decimal(18,2)) AS 任务装配工时,
|
||||||
|
CAST(ISNULL(zj1.质检工时, 0) / 3600.0 AS decimal(18,2)) AS 任务质检工时,
|
||||||
|
CAST(ISNULL(htzp.合同装配工时, 0) / 3600.0 AS decimal(18,2)) AS 合同装配工时,
|
||||||
|
CAST(ISNULL(htzj.合同质检工时, 0) / 3600.0 AS decimal(18,2)) AS 合同质检工时,
|
||||||
|
ISNULL(zp.装配工序说明, '''') AS 装配工序说明,
|
||||||
|
ISNULL(zj1.质检工序说明, '''') AS 质检工序说明,
|
||||||
|
CONVERT(varchar(10), [计划完成], 120) AS 要求完工日期,
|
||||||
|
[工序名称] AS 工序名称,
|
||||||
|
v.计划号 AS 计划号,
|
||||||
|
指派对象 AS 指派对象,
|
||||||
|
TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS varchar(30)))) AS 指派数量,
|
||||||
|
[优先级] AS 优先级,
|
||||||
|
[未完成说明] AS 未完成说明,
|
||||||
|
[派工特殊说明] AS 派工特殊备注,
|
||||||
|
[占用情况] AS 占用情况,
|
||||||
|
[最后编辑人] AS 最后编辑人,
|
||||||
|
CONVERT(varchar(19), [最后编辑时间], 120) AS 最后编辑时间
|
||||||
|
FROM [View_生产订单_MES] v
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) AS 装配工时, MAX(gs.工序说明) AS 装配工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zp ON v.[订单编号] = zp.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) AS 质检工时, MAX(gs.工序说明) AS 质检工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zj1 ON v.[订单编号] = zj1.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) AS 合同装配工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzp ON v.[合同号] = htzp.合同号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) AS 合同质检工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzj ON v.[合同号] = htzj.合同号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT 项目号, 物料号, MIN(交货日期理论齐套日期) as 交货日期理论齐套日期
|
||||||
|
FROM SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2
|
||||||
|
GROUP BY 项目号, 物料号
|
||||||
|
) s
|
||||||
|
ON v.合同号 = s.项目号 AND v.物料编号 = s.物料号';
|
||||||
|
|
||||||
|
IF(@订单号>0) SET @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+CONVERT(varchar(10),@订单号);
|
||||||
|
IF(@合同号<>'') SET @selectStrWhere=@selectStrWhere + ' and [合同号] like ''%'+@合同号+'%''';
|
||||||
|
IF(@产品编码<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%''';
|
||||||
|
IF(@产品名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%''';
|
||||||
|
IF(@辅助配件 = '不含') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%''';
|
||||||
|
IF(@工序名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+'''';
|
||||||
|
IF(@要求完工日期1 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+'''';
|
||||||
|
IF(@要求完工日期2 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+'''';
|
||||||
|
IF(@计划开始 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+'''';
|
||||||
|
IF(@计划完成 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+'''';
|
||||||
|
IF(@排产状态='未完成') SET @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0';
|
||||||
|
ELSE IF(@排产状态='已完成') SET @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1';
|
||||||
|
IF(@物料类型='自制件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否''';
|
||||||
|
IF(@物料类型='装配件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否''';
|
||||||
|
IF(@指派对象<>'全部') SET @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))';
|
||||||
|
|
||||||
|
SET @selectStrWhere = @selectStrWhere + ' ORDER BY CASE WHEN 钣金预达时间 IS NULL THEN 1 ELSE 0 END, 钣金预达时间, v.计划开始时间';
|
||||||
|
SET @selectStr=@selectStr+@selectStrWhere;
|
||||||
|
PRINT @selectStr;
|
||||||
|
EXEC sp_executesql @selectStr;
|
||||||
|
END
|
||||||
@@ -0,0 +1,213 @@
|
|||||||
|
CREATE PROCEDURE [dbo].[计划排产_系统类任务查询_导出]
|
||||||
|
@订单号 int=0,
|
||||||
|
@物料类型 nvarchar(50)='', --自制件、装配件
|
||||||
|
@合同号 nvarchar(50)='',
|
||||||
|
@产品编码 nvarchar(50)='',
|
||||||
|
@产品名称 nvarchar(50)='',
|
||||||
|
@工序名称 nvarchar(50)='',
|
||||||
|
@要求完工日期1 nvarchar(50)='',
|
||||||
|
@要求完工日期2 nvarchar(50)='',
|
||||||
|
@计划开始 nvarchar(50)='',
|
||||||
|
@计划完成 nvarchar(50)='',
|
||||||
|
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
|
||||||
|
@指派对象 nvarchar(50)='全部',
|
||||||
|
@辅助配件 nvarchar(50)='不含'
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
SET NOCOUNT ON;
|
||||||
|
|
||||||
|
SELECT '系统类任务_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype;
|
||||||
|
|
||||||
|
SELECT 256*18 AS 钣金预达时间,
|
||||||
|
256*14 AS 销售订单,
|
||||||
|
256*10 AS 生产订单,
|
||||||
|
256*24 AS 物料编码,
|
||||||
|
256*24 AS 物料名称,
|
||||||
|
256*10 AS 计划数,
|
||||||
|
256*8 AS 齐套,
|
||||||
|
256*12 AS 发料齐套,
|
||||||
|
256*18 AS 计划开始,
|
||||||
|
256*12 AS 派工时间,
|
||||||
|
256*20 AS 二次派工,
|
||||||
|
256*14 AS 预计送检日期,
|
||||||
|
256*14 AS 销售要求日期,
|
||||||
|
256*14 AS 发货要求日期,
|
||||||
|
256*40 AS 异常报警信息,
|
||||||
|
256*40 AS 装配进行中,
|
||||||
|
256*40 AS 质检进行中,
|
||||||
|
256*14 AS 任务装配工时,
|
||||||
|
256*14 AS 任务质检工时,
|
||||||
|
256*14 AS 合同装配工时,
|
||||||
|
256*14 AS 合同质检工时,
|
||||||
|
256*24 AS 装配工序说明,
|
||||||
|
256*24 AS 质检工序说明,
|
||||||
|
256*14 AS 要求完工日期,
|
||||||
|
256*12 AS 工序名称,
|
||||||
|
256*10 AS 计划号,
|
||||||
|
256*18 AS 指派对象,
|
||||||
|
256*12 AS 指派数量,
|
||||||
|
256*10 AS 优先级,
|
||||||
|
256*20 AS 未完成说明,
|
||||||
|
256*20 AS 派工特殊备注,
|
||||||
|
256*14 AS 占用情况,
|
||||||
|
256*14 AS 最后编辑人,
|
||||||
|
256*20 AS 最后编辑时间;
|
||||||
|
|
||||||
|
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 销售要求日期,
|
||||||
|
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 计划号,
|
||||||
|
0 AS 指派对象,
|
||||||
|
0 AS 指派数量,
|
||||||
|
0 AS 优先级,
|
||||||
|
0 AS 未完成说明,
|
||||||
|
0 AS 派工特殊备注,
|
||||||
|
0 AS 占用情况,
|
||||||
|
0 AS 最后编辑人,
|
||||||
|
0 AS 最后编辑时间;
|
||||||
|
|
||||||
|
DECLARE @selectStr nvarchar(max);
|
||||||
|
DECLARE @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 like ''%系统%'' and isnull(任务状态,0)<4';
|
||||||
|
|
||||||
|
IF(@物料类型='自制件')
|
||||||
|
SET @selectStr='
|
||||||
|
SELECT
|
||||||
|
CONVERT(varchar(10), v.钣金预达时间, 120) AS 钣金预达时间,
|
||||||
|
v.[合同号] AS 销售订单,
|
||||||
|
v.[订单编号] AS 生产订单,
|
||||||
|
v.[物料编号] AS 物料编码,
|
||||||
|
v.[物料描述] AS 物料名称,
|
||||||
|
TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS varchar(30)))) AS 计划数,
|
||||||
|
CASE WHEN v.齐套 = 1 THEN ''是'' ELSE ''否'' END AS 齐套,
|
||||||
|
CONVERT(varchar(10), v.齐套时间, 120) AS 发料齐套,
|
||||||
|
CONVERT(varchar(10), v.计划开始时间, 120) AS 计划开始,
|
||||||
|
CONVERT(varchar(10), v.派工时间, 120) AS 派工时间,
|
||||||
|
[二次派工] AS 二次派工,
|
||||||
|
CONVERT(varchar(10), DATEADD(DAY, 3, CONVERT(date, v.齐套时间)), 120) AS 预计送检日期,
|
||||||
|
CONVERT(varchar(10), s.交货日期理论齐套日期, 120) AS 销售要求日期,
|
||||||
|
CONVERT(varchar(10), v.要求发货日期, 120) AS 发货要求日期,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
|
||||||
|
FROM [YL_MESDB].[dbo].[流程表] lc
|
||||||
|
WHERE lc.已关联计划号 = v.[订单编号]
|
||||||
|
), '''') AS 异常报警信息,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''装配''
|
||||||
|
) jxz
|
||||||
|
), '''') AS 装配进行中,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''质检''
|
||||||
|
) jxz
|
||||||
|
), '''') AS 质检进行中,
|
||||||
|
CAST(ISNULL(zp.装配工时, 0) / 60.0 AS decimal(18,2)) AS 任务装配工时,
|
||||||
|
CAST(ISNULL(zj1.质检工时, 0) / 60.0 AS decimal(18,2)) AS 任务质检工时,
|
||||||
|
CAST(ISNULL(htzp.合同装配工时, 0) / 60.0 AS decimal(18,2)) AS 合同装配工时,
|
||||||
|
CAST(ISNULL(htzj.合同质检工时, 0) / 60.0 AS decimal(18,2)) AS 合同质检工时,
|
||||||
|
ISNULL(zp.装配工序说明, '''') AS 装配工序说明,
|
||||||
|
ISNULL(zj1.质检工序说明, '''') AS 质检工序说明,
|
||||||
|
CONVERT(varchar(10), [计划完成], 120) AS 要求完工日期,
|
||||||
|
[工序名称] AS 工序名称,
|
||||||
|
v.计划号 AS 计划号,
|
||||||
|
指派对象 AS 指派对象,
|
||||||
|
TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS varchar(30)))) AS 指派数量,
|
||||||
|
[优先级] AS 优先级,
|
||||||
|
[未完成说明] AS 未完成说明,
|
||||||
|
[派工特殊说明] AS 派工特殊备注,
|
||||||
|
[占用情况] AS 占用情况,
|
||||||
|
[最后编辑人] AS 最后编辑人,
|
||||||
|
CONVERT(varchar(19), [最后编辑时间], 120) AS 最后编辑时间
|
||||||
|
FROM [View_生产订单_MES] v
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) AS 装配工时, MAX(gs.工序说明) AS 装配工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zp ON v.[订单编号] = zp.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) AS 质检工时, MAX(gs.工序说明) AS 质检工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zj1 ON v.[订单编号] = zj1.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) AS 合同装配工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzp ON v.[合同号] = htzp.合同号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) AS 合同质检工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzj ON v.[合同号] = htzj.合同号
|
||||||
|
LEFT JOIN SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
|
||||||
|
ON v.合同号 = s.项目号 AND v.物料编号 = s.物料号';
|
||||||
|
|
||||||
|
IF(@订单号>0) SET @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+CONVERT(varchar(10),@订单号);
|
||||||
|
IF(@合同号<>'') SET @selectStrWhere=@selectStrWhere + ' and [合同号] like ''%'+@合同号+'%''';
|
||||||
|
IF(@产品编码<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%''';
|
||||||
|
IF(@产品名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%''';
|
||||||
|
IF(@辅助配件 = '不含') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%''';
|
||||||
|
IF(@工序名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+'''';
|
||||||
|
IF(@要求完工日期1 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+'''';
|
||||||
|
IF(@要求完工日期2 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+'''';
|
||||||
|
IF(@计划开始 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+'''';
|
||||||
|
IF(@计划完成 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+'''';
|
||||||
|
IF(@排产状态='未完成') SET @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0';
|
||||||
|
ELSE IF(@排产状态='已完成') SET @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1';
|
||||||
|
IF(@物料类型='自制件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否''';
|
||||||
|
IF(@物料类型='装配件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否''';
|
||||||
|
IF(@指派对象<>'全部') SET @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))';
|
||||||
|
|
||||||
|
SET @selectStrWhere = @selectStrWhere + ' ORDER BY CASE WHEN 钣金预达时间 IS NULL THEN 1 ELSE 0 END, 钣金预达时间, v.计划开始时间';
|
||||||
|
SET @selectStr=@selectStr+@selectStrWhere;
|
||||||
|
PRINT @selectStr;
|
||||||
|
EXEC sp_executesql @selectStr;
|
||||||
|
END
|
||||||
213
db_backups/计划排产_系统类任务查询_导出_before_hours_3600_20260618_140521.sql
Normal file
213
db_backups/计划排产_系统类任务查询_导出_before_hours_3600_20260618_140521.sql
Normal file
@@ -0,0 +1,213 @@
|
|||||||
|
CREATE PROCEDURE [dbo].[计划排产_系统类任务查询_导出]
|
||||||
|
@订单号 int=0,
|
||||||
|
@物料类型 nvarchar(50)='', --自制件、装配件
|
||||||
|
@合同号 nvarchar(50)='',
|
||||||
|
@产品编码 nvarchar(50)='',
|
||||||
|
@产品名称 nvarchar(50)='',
|
||||||
|
@工序名称 nvarchar(50)='',
|
||||||
|
@要求完工日期1 nvarchar(50)='',
|
||||||
|
@要求完工日期2 nvarchar(50)='',
|
||||||
|
@计划开始 nvarchar(50)='',
|
||||||
|
@计划完成 nvarchar(50)='',
|
||||||
|
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
|
||||||
|
@指派对象 nvarchar(50)='全部',
|
||||||
|
@辅助配件 nvarchar(50)='不含'
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
SET NOCOUNT ON;
|
||||||
|
|
||||||
|
SELECT '系统类任务_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype;
|
||||||
|
|
||||||
|
SELECT 256*18 AS 钣金预达时间,
|
||||||
|
256*14 AS 销售订单,
|
||||||
|
256*10 AS 生产订单,
|
||||||
|
256*24 AS 物料编码,
|
||||||
|
256*24 AS 物料名称,
|
||||||
|
256*10 AS 计划数,
|
||||||
|
256*8 AS 齐套,
|
||||||
|
256*12 AS 发料齐套,
|
||||||
|
256*18 AS 计划开始,
|
||||||
|
256*12 AS 派工时间,
|
||||||
|
256*20 AS 二次派工,
|
||||||
|
256*14 AS 预计送检日期,
|
||||||
|
256*14 AS 销售要求日期,
|
||||||
|
256*14 AS 发货要求日期,
|
||||||
|
256*40 AS 异常报警信息,
|
||||||
|
256*40 AS 装配进行中,
|
||||||
|
256*40 AS 质检进行中,
|
||||||
|
256*14 AS 任务装配工时,
|
||||||
|
256*14 AS 任务质检工时,
|
||||||
|
256*14 AS 合同装配工时,
|
||||||
|
256*14 AS 合同质检工时,
|
||||||
|
256*24 AS 装配工序说明,
|
||||||
|
256*24 AS 质检工序说明,
|
||||||
|
256*14 AS 要求完工日期,
|
||||||
|
256*12 AS 工序名称,
|
||||||
|
256*10 AS 计划号,
|
||||||
|
256*18 AS 指派对象,
|
||||||
|
256*12 AS 指派数量,
|
||||||
|
256*10 AS 优先级,
|
||||||
|
256*20 AS 未完成说明,
|
||||||
|
256*20 AS 派工特殊备注,
|
||||||
|
256*14 AS 占用情况,
|
||||||
|
256*14 AS 最后编辑人,
|
||||||
|
256*20 AS 最后编辑时间;
|
||||||
|
|
||||||
|
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 销售要求日期,
|
||||||
|
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 计划号,
|
||||||
|
0 AS 指派对象,
|
||||||
|
0 AS 指派数量,
|
||||||
|
0 AS 优先级,
|
||||||
|
0 AS 未完成说明,
|
||||||
|
0 AS 派工特殊备注,
|
||||||
|
0 AS 占用情况,
|
||||||
|
0 AS 最后编辑人,
|
||||||
|
0 AS 最后编辑时间;
|
||||||
|
|
||||||
|
DECLARE @selectStr nvarchar(max);
|
||||||
|
DECLARE @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 like ''%系统%'' and isnull(任务状态,0)<4';
|
||||||
|
|
||||||
|
IF(@物料类型='自制件')
|
||||||
|
SET @selectStr='
|
||||||
|
SELECT
|
||||||
|
CONVERT(varchar(10), v.钣金预达时间, 120) AS 钣金预达时间,
|
||||||
|
v.[合同号] AS 销售订单,
|
||||||
|
v.[订单编号] AS 生产订单,
|
||||||
|
v.[物料编号] AS 物料编码,
|
||||||
|
v.[物料描述] AS 物料名称,
|
||||||
|
TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS varchar(30)))) AS 计划数,
|
||||||
|
CASE WHEN v.齐套 = 1 THEN ''是'' ELSE ''否'' END AS 齐套,
|
||||||
|
CONVERT(varchar(10), v.齐套时间, 120) AS 发料齐套,
|
||||||
|
CONVERT(varchar(10), v.计划开始时间, 120) AS 计划开始,
|
||||||
|
CONVERT(varchar(10), v.派工时间, 120) AS 派工时间,
|
||||||
|
[二次派工] AS 二次派工,
|
||||||
|
CONVERT(varchar(10), ISNULL(v.预计送检日期, DATEADD(DAY, 3, v.钣金预达时间)), 120) AS 预计送检日期,
|
||||||
|
CONVERT(varchar(10), v.销售要求日期, 120) AS 销售要求日期,
|
||||||
|
CONVERT(varchar(10), v.要求发货日期, 120) AS 发货要求日期,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
|
||||||
|
FROM [YL_MESDB].[dbo].[流程表] lc
|
||||||
|
WHERE lc.已关联计划号 = v.[订单编号]
|
||||||
|
), '''') AS 异常报警信息,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''装配''
|
||||||
|
) jxz
|
||||||
|
), '''') AS 装配进行中,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''质检''
|
||||||
|
) jxz
|
||||||
|
), '''') AS 质检进行中,
|
||||||
|
CAST(ISNULL(zp.装配工时, 0) / 60.0 AS decimal(18,2)) AS 任务装配工时,
|
||||||
|
CAST(ISNULL(zj1.质检工时, 0) / 60.0 AS decimal(18,2)) AS 任务质检工时,
|
||||||
|
CAST(ISNULL(htzp.合同装配工时, 0) / 60.0 AS decimal(18,2)) AS 合同装配工时,
|
||||||
|
CAST(ISNULL(htzj.合同质检工时, 0) / 60.0 AS decimal(18,2)) AS 合同质检工时,
|
||||||
|
ISNULL(zp.装配工序说明, '''') AS 装配工序说明,
|
||||||
|
ISNULL(zj1.质检工序说明, '''') AS 质检工序说明,
|
||||||
|
CONVERT(varchar(10), [计划完成], 120) AS 要求完工日期,
|
||||||
|
[工序名称] AS 工序名称,
|
||||||
|
v.计划号 AS 计划号,
|
||||||
|
指派对象 AS 指派对象,
|
||||||
|
TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS varchar(30)))) AS 指派数量,
|
||||||
|
[优先级] AS 优先级,
|
||||||
|
[未完成说明] AS 未完成说明,
|
||||||
|
[派工特殊说明] AS 派工特殊备注,
|
||||||
|
[占用情况] AS 占用情况,
|
||||||
|
[最后编辑人] AS 最后编辑人,
|
||||||
|
CONVERT(varchar(19), [最后编辑时间], 120) AS 最后编辑时间
|
||||||
|
FROM [View_生产订单_MES] v
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) AS 装配工时, MAX(gs.工序说明) AS 装配工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zp ON v.[订单编号] = zp.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) AS 质检工时, MAX(gs.工序说明) AS 质检工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zj1 ON v.[订单编号] = zj1.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) AS 合同装配工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzp ON v.[合同号] = htzp.合同号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) AS 合同质检工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzj ON v.[合同号] = htzj.合同号
|
||||||
|
LEFT JOIN SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
|
||||||
|
ON v.合同号 = s.项目号 AND v.物料编号 = s.物料号';
|
||||||
|
|
||||||
|
IF(@订单号>0) SET @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+CONVERT(varchar(10),@订单号);
|
||||||
|
IF(@合同号<>'') SET @selectStrWhere=@selectStrWhere + ' and [合同号] like ''%'+@合同号+'%''';
|
||||||
|
IF(@产品编码<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%''';
|
||||||
|
IF(@产品名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%''';
|
||||||
|
IF(@辅助配件 = '不含') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%''';
|
||||||
|
IF(@工序名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+'''';
|
||||||
|
IF(@要求完工日期1 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+'''';
|
||||||
|
IF(@要求完工日期2 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+'''';
|
||||||
|
IF(@计划开始 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+'''';
|
||||||
|
IF(@计划完成 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+'''';
|
||||||
|
IF(@排产状态='未完成') SET @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0';
|
||||||
|
ELSE IF(@排产状态='已完成') SET @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1';
|
||||||
|
IF(@物料类型='自制件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否''';
|
||||||
|
IF(@物料类型='装配件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否''';
|
||||||
|
IF(@指派对象<>'全部') SET @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))';
|
||||||
|
|
||||||
|
SET @selectStrWhere = @selectStrWhere + ' ORDER BY CASE WHEN 钣金预达时间 IS NULL THEN 1 ELSE 0 END, 钣金预达时间, v.计划开始时间';
|
||||||
|
SET @selectStr=@selectStr+@selectStrWhere;
|
||||||
|
PRINT @selectStr;
|
||||||
|
EXEC sp_executesql @selectStr;
|
||||||
|
END
|
||||||
@@ -0,0 +1,213 @@
|
|||||||
|
CREATE PROCEDURE [dbo].[计划排产_系统类任务查询_导出]
|
||||||
|
@订单号 int=0,
|
||||||
|
@物料类型 nvarchar(50)='', --自制件、装配件
|
||||||
|
@合同号 nvarchar(50)='',
|
||||||
|
@产品编码 nvarchar(50)='',
|
||||||
|
@产品名称 nvarchar(50)='',
|
||||||
|
@工序名称 nvarchar(50)='',
|
||||||
|
@要求完工日期1 nvarchar(50)='',
|
||||||
|
@要求完工日期2 nvarchar(50)='',
|
||||||
|
@计划开始 nvarchar(50)='',
|
||||||
|
@计划完成 nvarchar(50)='',
|
||||||
|
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
|
||||||
|
@指派对象 nvarchar(50)='全部',
|
||||||
|
@辅助配件 nvarchar(50)='不含'
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
SET NOCOUNT ON;
|
||||||
|
|
||||||
|
SELECT '系统类任务_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype;
|
||||||
|
|
||||||
|
SELECT 256*18 AS 钣金预达时间,
|
||||||
|
256*14 AS 销售订单,
|
||||||
|
256*10 AS 生产订单,
|
||||||
|
256*24 AS 物料编码,
|
||||||
|
256*24 AS 物料名称,
|
||||||
|
256*10 AS 计划数,
|
||||||
|
256*8 AS 齐套,
|
||||||
|
256*12 AS 发料齐套,
|
||||||
|
256*18 AS 计划开始,
|
||||||
|
256*12 AS 派工时间,
|
||||||
|
256*20 AS 二次派工,
|
||||||
|
256*14 AS 预计送检日期,
|
||||||
|
256*14 AS 销售要求日期,
|
||||||
|
256*14 AS 发货要求日期,
|
||||||
|
256*40 AS 异常报警信息,
|
||||||
|
256*40 AS 装配进行中,
|
||||||
|
256*40 AS 质检进行中,
|
||||||
|
256*14 AS 任务装配工时,
|
||||||
|
256*14 AS 任务质检工时,
|
||||||
|
256*14 AS 合同装配工时,
|
||||||
|
256*14 AS 合同质检工时,
|
||||||
|
256*24 AS 装配工序说明,
|
||||||
|
256*24 AS 质检工序说明,
|
||||||
|
256*14 AS 要求完工日期,
|
||||||
|
256*12 AS 工序名称,
|
||||||
|
256*10 AS 计划号,
|
||||||
|
256*18 AS 指派对象,
|
||||||
|
256*12 AS 指派数量,
|
||||||
|
256*10 AS 优先级,
|
||||||
|
256*20 AS 未完成说明,
|
||||||
|
256*20 AS 派工特殊备注,
|
||||||
|
256*14 AS 占用情况,
|
||||||
|
256*14 AS 最后编辑人,
|
||||||
|
256*20 AS 最后编辑时间;
|
||||||
|
|
||||||
|
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 销售要求日期,
|
||||||
|
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 计划号,
|
||||||
|
0 AS 指派对象,
|
||||||
|
0 AS 指派数量,
|
||||||
|
0 AS 优先级,
|
||||||
|
0 AS 未完成说明,
|
||||||
|
0 AS 派工特殊备注,
|
||||||
|
0 AS 占用情况,
|
||||||
|
0 AS 最后编辑人,
|
||||||
|
0 AS 最后编辑时间;
|
||||||
|
|
||||||
|
DECLARE @selectStr nvarchar(max);
|
||||||
|
DECLARE @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 like ''%系统%'' and isnull(任务状态,0)<4';
|
||||||
|
|
||||||
|
IF(@物料类型='自制件')
|
||||||
|
SET @selectStr='
|
||||||
|
SELECT
|
||||||
|
CONVERT(varchar(10), v.钣金预达时间, 120) AS 钣金预达时间,
|
||||||
|
v.[合同号] AS 销售订单,
|
||||||
|
v.[订单编号] AS 生产订单,
|
||||||
|
v.[物料编号] AS 物料编码,
|
||||||
|
v.[物料描述] AS 物料名称,
|
||||||
|
TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS varchar(30)))) AS 计划数,
|
||||||
|
CASE WHEN v.齐套 = 1 THEN ''是'' ELSE ''否'' END AS 齐套,
|
||||||
|
CONVERT(varchar(10), v.齐套时间, 120) AS 发料齐套,
|
||||||
|
CONVERT(varchar(10), v.计划开始时间, 120) AS 计划开始,
|
||||||
|
CONVERT(varchar(10), v.派工时间, 120) AS 派工时间,
|
||||||
|
[二次派工] AS 二次派工,
|
||||||
|
CONVERT(varchar(10), ISNULL(v.预计送检日期, DATEADD(DAY, 3, v.钣金预达时间)), 120) AS 预计送检日期,
|
||||||
|
CONVERT(varchar(10), v.销售要求日期, 120) AS 销售要求日期,
|
||||||
|
CONVERT(varchar(10), v.要求发货日期, 120) AS 发货要求日期,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
|
||||||
|
FROM [YL_MESDB].[dbo].[流程表] lc
|
||||||
|
WHERE lc.已关联计划号 = v.[订单编号]
|
||||||
|
), '''') AS 异常报警信息,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''装配''
|
||||||
|
) jxz
|
||||||
|
), '''') AS 装配进行中,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''质检''
|
||||||
|
) jxz
|
||||||
|
), '''') AS 质检进行中,
|
||||||
|
CAST(ISNULL(zp.装配工时, 0) / 3600.0 AS decimal(18,2)) AS 任务装配工时,
|
||||||
|
CAST(ISNULL(zj1.质检工时, 0) / 3600.0 AS decimal(18,2)) AS 任务质检工时,
|
||||||
|
CAST(ISNULL(htzp.合同装配工时, 0) / 3600.0 AS decimal(18,2)) AS 合同装配工时,
|
||||||
|
CAST(ISNULL(htzj.合同质检工时, 0) / 3600.0 AS decimal(18,2)) AS 合同质检工时,
|
||||||
|
ISNULL(zp.装配工序说明, '''') AS 装配工序说明,
|
||||||
|
ISNULL(zj1.质检工序说明, '''') AS 质检工序说明,
|
||||||
|
CONVERT(varchar(10), [计划完成], 120) AS 要求完工日期,
|
||||||
|
[工序名称] AS 工序名称,
|
||||||
|
v.计划号 AS 计划号,
|
||||||
|
指派对象 AS 指派对象,
|
||||||
|
TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS varchar(30)))) AS 指派数量,
|
||||||
|
[优先级] AS 优先级,
|
||||||
|
[未完成说明] AS 未完成说明,
|
||||||
|
[派工特殊说明] AS 派工特殊备注,
|
||||||
|
[占用情况] AS 占用情况,
|
||||||
|
[最后编辑人] AS 最后编辑人,
|
||||||
|
CONVERT(varchar(19), [最后编辑时间], 120) AS 最后编辑时间
|
||||||
|
FROM [View_生产订单_MES] v
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) AS 装配工时, MAX(gs.工序说明) AS 装配工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zp ON v.[订单编号] = zp.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) AS 质检工时, MAX(gs.工序说明) AS 质检工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zj1 ON v.[订单编号] = zj1.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) AS 合同装配工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzp ON v.[合同号] = htzp.合同号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) AS 合同质检工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzj ON v.[合同号] = htzj.合同号
|
||||||
|
LEFT JOIN SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
|
||||||
|
ON v.合同号 = s.项目号 AND v.物料编号 = s.物料号';
|
||||||
|
|
||||||
|
IF(@订单号>0) SET @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+CONVERT(varchar(10),@订单号);
|
||||||
|
IF(@合同号<>'') SET @selectStrWhere=@selectStrWhere + ' and [合同号] like ''%'+@合同号+'%''';
|
||||||
|
IF(@产品编码<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%''';
|
||||||
|
IF(@产品名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%''';
|
||||||
|
IF(@辅助配件 = '不含') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%''';
|
||||||
|
IF(@工序名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+'''';
|
||||||
|
IF(@要求完工日期1 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+'''';
|
||||||
|
IF(@要求完工日期2 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+'''';
|
||||||
|
IF(@计划开始 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+'''';
|
||||||
|
IF(@计划完成 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+'''';
|
||||||
|
IF(@排产状态='未完成') SET @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0';
|
||||||
|
ELSE IF(@排产状态='已完成') SET @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1';
|
||||||
|
IF(@物料类型='自制件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否''';
|
||||||
|
IF(@物料类型='装配件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否''';
|
||||||
|
IF(@指派对象<>'全部') SET @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))';
|
||||||
|
|
||||||
|
SET @selectStrWhere = @selectStrWhere + ' ORDER BY CASE WHEN 钣金预达时间 IS NULL THEN 1 ELSE 0 END, 钣金预达时间, v.计划开始时间';
|
||||||
|
SET @selectStr=@selectStr+@selectStrWhere;
|
||||||
|
PRINT @selectStr;
|
||||||
|
EXEC sp_executesql @selectStr;
|
||||||
|
END
|
||||||
@@ -0,0 +1,213 @@
|
|||||||
|
CREATE PROCEDURE [dbo].[计划排产_系统类任务查询_导出]
|
||||||
|
@订单号 int=0,
|
||||||
|
@物料类型 nvarchar(50)='', --自制件、装配件
|
||||||
|
@合同号 nvarchar(50)='',
|
||||||
|
@产品编码 nvarchar(50)='',
|
||||||
|
@产品名称 nvarchar(50)='',
|
||||||
|
@工序名称 nvarchar(50)='',
|
||||||
|
@要求完工日期1 nvarchar(50)='',
|
||||||
|
@要求完工日期2 nvarchar(50)='',
|
||||||
|
@计划开始 nvarchar(50)='',
|
||||||
|
@计划完成 nvarchar(50)='',
|
||||||
|
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
|
||||||
|
@指派对象 nvarchar(50)='全部',
|
||||||
|
@辅助配件 nvarchar(50)='不含'
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
SET NOCOUNT ON;
|
||||||
|
|
||||||
|
SELECT '系统类任务_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype;
|
||||||
|
|
||||||
|
SELECT 256*18 AS 钣金预达时间,
|
||||||
|
256*14 AS 销售订单,
|
||||||
|
256*10 AS 生产订单,
|
||||||
|
256*24 AS 物料编码,
|
||||||
|
256*24 AS 物料名称,
|
||||||
|
256*10 AS 计划数,
|
||||||
|
256*8 AS 齐套,
|
||||||
|
256*12 AS 发料齐套,
|
||||||
|
256*18 AS 计划开始,
|
||||||
|
256*12 AS 派工时间,
|
||||||
|
256*20 AS 二次派工,
|
||||||
|
256*14 AS 预计送检日期,
|
||||||
|
256*14 AS 销售要求日期,
|
||||||
|
256*14 AS 发货要求日期,
|
||||||
|
256*40 AS 异常报警信息,
|
||||||
|
256*40 AS 装配进行中,
|
||||||
|
256*40 AS 质检进行中,
|
||||||
|
256*14 AS 任务装配工时,
|
||||||
|
256*14 AS 任务质检工时,
|
||||||
|
256*14 AS 合同装配工时,
|
||||||
|
256*14 AS 合同质检工时,
|
||||||
|
256*24 AS 装配工序说明,
|
||||||
|
256*24 AS 质检工序说明,
|
||||||
|
256*14 AS 要求完工日期,
|
||||||
|
256*12 AS 工序名称,
|
||||||
|
256*10 AS 计划号,
|
||||||
|
256*18 AS 指派对象,
|
||||||
|
256*12 AS 指派数量,
|
||||||
|
256*10 AS 优先级,
|
||||||
|
256*20 AS 未完成说明,
|
||||||
|
256*20 AS 派工特殊备注,
|
||||||
|
256*14 AS 占用情况,
|
||||||
|
256*14 AS 最后编辑人,
|
||||||
|
256*20 AS 最后编辑时间;
|
||||||
|
|
||||||
|
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 销售要求日期,
|
||||||
|
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 计划号,
|
||||||
|
0 AS 指派对象,
|
||||||
|
0 AS 指派数量,
|
||||||
|
0 AS 优先级,
|
||||||
|
0 AS 未完成说明,
|
||||||
|
0 AS 派工特殊备注,
|
||||||
|
0 AS 占用情况,
|
||||||
|
0 AS 最后编辑人,
|
||||||
|
0 AS 最后编辑时间;
|
||||||
|
|
||||||
|
DECLARE @selectStr nvarchar(max);
|
||||||
|
DECLARE @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 like ''%系统%'' and isnull(任务状态,0)<4';
|
||||||
|
|
||||||
|
IF(@物料类型='自制件')
|
||||||
|
SET @selectStr='
|
||||||
|
SELECT
|
||||||
|
CONVERT(varchar(10), v.钣金预达时间, 120) AS 钣金预达时间,
|
||||||
|
v.[合同号] AS 销售订单,
|
||||||
|
v.[订单编号] AS 生产订单,
|
||||||
|
v.[物料编号] AS 物料编码,
|
||||||
|
v.[物料描述] AS 物料名称,
|
||||||
|
TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS varchar(30)))) AS 计划数,
|
||||||
|
CASE WHEN v.齐套 = 1 THEN ''是'' ELSE ''否'' END AS 齐套,
|
||||||
|
CONVERT(varchar(10), v.齐套时间, 120) AS 发料齐套,
|
||||||
|
CONVERT(varchar(10), v.计划开始时间, 120) AS 计划开始,
|
||||||
|
CONVERT(varchar(10), v.派工时间, 120) AS 派工时间,
|
||||||
|
[二次派工] AS 二次派工,
|
||||||
|
CONVERT(varchar(10), ISNULL(v.预计送检日期, DATEADD(DAY, 3, v.钣金预达时间)), 120) AS 预计送检日期,
|
||||||
|
CONVERT(varchar(10), ISNULL(v.销售要求日期, s.交货日期理论齐套日期), 120) AS 销售要求日期,
|
||||||
|
CONVERT(varchar(10), v.要求发货日期, 120) AS 发货要求日期,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
|
||||||
|
FROM [YL_MESDB].[dbo].[流程表] lc
|
||||||
|
WHERE lc.已关联计划号 = v.[订单编号]
|
||||||
|
), '''') AS 异常报警信息,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''装配''
|
||||||
|
) jxz
|
||||||
|
), '''') AS 装配进行中,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''质检''
|
||||||
|
) jxz
|
||||||
|
), '''') AS 质检进行中,
|
||||||
|
CAST(ISNULL(zp.装配工时, 0) / 3600.0 AS decimal(18,2)) AS 任务装配工时,
|
||||||
|
CAST(ISNULL(zj1.质检工时, 0) / 3600.0 AS decimal(18,2)) AS 任务质检工时,
|
||||||
|
CAST(ISNULL(htzp.合同装配工时, 0) / 3600.0 AS decimal(18,2)) AS 合同装配工时,
|
||||||
|
CAST(ISNULL(htzj.合同质检工时, 0) / 3600.0 AS decimal(18,2)) AS 合同质检工时,
|
||||||
|
ISNULL(zp.装配工序说明, '''') AS 装配工序说明,
|
||||||
|
ISNULL(zj1.质检工序说明, '''') AS 质检工序说明,
|
||||||
|
CONVERT(varchar(10), [计划完成], 120) AS 要求完工日期,
|
||||||
|
[工序名称] AS 工序名称,
|
||||||
|
v.计划号 AS 计划号,
|
||||||
|
指派对象 AS 指派对象,
|
||||||
|
TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS varchar(30)))) AS 指派数量,
|
||||||
|
[优先级] AS 优先级,
|
||||||
|
[未完成说明] AS 未完成说明,
|
||||||
|
[派工特殊说明] AS 派工特殊备注,
|
||||||
|
[占用情况] AS 占用情况,
|
||||||
|
[最后编辑人] AS 最后编辑人,
|
||||||
|
CONVERT(varchar(19), [最后编辑时间], 120) AS 最后编辑时间
|
||||||
|
FROM [View_生产订单_MES] v
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) AS 装配工时, MAX(gs.工序说明) AS 装配工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zp ON v.[订单编号] = zp.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) AS 质检工时, MAX(gs.工序说明) AS 质检工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zj1 ON v.[订单编号] = zj1.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) AS 合同装配工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzp ON v.[合同号] = htzp.合同号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) AS 合同质检工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzj ON v.[合同号] = htzj.合同号
|
||||||
|
LEFT JOIN SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
|
||||||
|
ON v.合同号 = s.项目号 AND v.物料编号 = s.物料号';
|
||||||
|
|
||||||
|
IF(@订单号>0) SET @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+CONVERT(varchar(10),@订单号);
|
||||||
|
IF(@合同号<>'') SET @selectStrWhere=@selectStrWhere + ' and [合同号] like ''%'+@合同号+'%''';
|
||||||
|
IF(@产品编码<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%''';
|
||||||
|
IF(@产品名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%''';
|
||||||
|
IF(@辅助配件 = '不含') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%''';
|
||||||
|
IF(@工序名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+'''';
|
||||||
|
IF(@要求完工日期1 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+'''';
|
||||||
|
IF(@要求完工日期2 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+'''';
|
||||||
|
IF(@计划开始 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+'''';
|
||||||
|
IF(@计划完成 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+'''';
|
||||||
|
IF(@排产状态='未完成') SET @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0';
|
||||||
|
ELSE IF(@排产状态='已完成') SET @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1';
|
||||||
|
IF(@物料类型='自制件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否''';
|
||||||
|
IF(@物料类型='装配件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否''';
|
||||||
|
IF(@指派对象<>'全部') SET @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))';
|
||||||
|
|
||||||
|
SET @selectStrWhere = @selectStrWhere + ' ORDER BY CASE WHEN 钣金预达时间 IS NULL THEN 1 ELSE 0 END, 钣金预达时间, v.计划开始时间';
|
||||||
|
SET @selectStr=@selectStr+@selectStrWhere;
|
||||||
|
PRINT @selectStr;
|
||||||
|
EXEC sp_executesql @selectStr;
|
||||||
|
END
|
||||||
213
db_backups/计划排产_系统类任务查询_导出_create_20260618_103626.sql
Normal file
213
db_backups/计划排产_系统类任务查询_导出_create_20260618_103626.sql
Normal file
@@ -0,0 +1,213 @@
|
|||||||
|
CREATE PROCEDURE [dbo].[计划排产_系统类任务查询_导出]
|
||||||
|
@订单号 int=0,
|
||||||
|
@物料类型 nvarchar(50)='', --自制件、装配件
|
||||||
|
@合同号 nvarchar(50)='',
|
||||||
|
@产品编码 nvarchar(50)='',
|
||||||
|
@产品名称 nvarchar(50)='',
|
||||||
|
@工序名称 nvarchar(50)='',
|
||||||
|
@要求完工日期1 nvarchar(50)='',
|
||||||
|
@要求完工日期2 nvarchar(50)='',
|
||||||
|
@计划开始 nvarchar(50)='',
|
||||||
|
@计划完成 nvarchar(50)='',
|
||||||
|
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
|
||||||
|
@指派对象 nvarchar(50)='全部',
|
||||||
|
@辅助配件 nvarchar(50)='不含'
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
SET NOCOUNT ON;
|
||||||
|
|
||||||
|
SELECT '系统类任务_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype;
|
||||||
|
|
||||||
|
SELECT 256*18 AS 钣金预达时间,
|
||||||
|
256*14 AS 销售订单,
|
||||||
|
256*10 AS 生产订单,
|
||||||
|
256*24 AS 物料编码,
|
||||||
|
256*24 AS 物料名称,
|
||||||
|
256*10 AS 计划数,
|
||||||
|
256*8 AS 齐套,
|
||||||
|
256*12 AS 发料齐套,
|
||||||
|
256*18 AS 计划开始,
|
||||||
|
256*12 AS 派工时间,
|
||||||
|
256*20 AS 二次派工,
|
||||||
|
256*14 AS 预计送检日期,
|
||||||
|
256*14 AS 销售要求日期,
|
||||||
|
256*14 AS 发货要求日期,
|
||||||
|
256*40 AS 异常报警信息,
|
||||||
|
256*40 AS 装配进行中,
|
||||||
|
256*40 AS 质检进行中,
|
||||||
|
256*14 AS 任务装配工时,
|
||||||
|
256*14 AS 任务质检工时,
|
||||||
|
256*14 AS 合同装配工时,
|
||||||
|
256*14 AS 合同质检工时,
|
||||||
|
256*24 AS 装配工序说明,
|
||||||
|
256*24 AS 质检工序说明,
|
||||||
|
256*14 AS 要求完工日期,
|
||||||
|
256*12 AS 工序名称,
|
||||||
|
256*10 AS 计划号,
|
||||||
|
256*18 AS 指派对象,
|
||||||
|
256*12 AS 指派数量,
|
||||||
|
256*10 AS 优先级,
|
||||||
|
256*20 AS 未完成说明,
|
||||||
|
256*20 AS 派工特殊备注,
|
||||||
|
256*14 AS 占用情况,
|
||||||
|
256*14 AS 最后编辑人,
|
||||||
|
256*20 AS 最后编辑时间;
|
||||||
|
|
||||||
|
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 销售要求日期,
|
||||||
|
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 计划号,
|
||||||
|
0 AS 指派对象,
|
||||||
|
0 AS 指派数量,
|
||||||
|
0 AS 优先级,
|
||||||
|
0 AS 未完成说明,
|
||||||
|
0 AS 派工特殊备注,
|
||||||
|
0 AS 占用情况,
|
||||||
|
0 AS 最后编辑人,
|
||||||
|
0 AS 最后编辑时间;
|
||||||
|
|
||||||
|
DECLARE @selectStr nvarchar(max);
|
||||||
|
DECLARE @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 like ''%系统%'' and isnull(任务状态,0)<4';
|
||||||
|
|
||||||
|
IF(@物料类型='自制件')
|
||||||
|
SET @selectStr='
|
||||||
|
SELECT
|
||||||
|
CONVERT(varchar(10), v.钣金预达时间, 120) AS 钣金预达时间,
|
||||||
|
v.[合同号] AS 销售订单,
|
||||||
|
v.[订单编号] AS 生产订单,
|
||||||
|
v.[物料编号] AS 物料编码,
|
||||||
|
v.[物料描述] AS 物料名称,
|
||||||
|
TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS varchar(30)))) AS 计划数,
|
||||||
|
CASE WHEN v.齐套 = 1 THEN ''是'' ELSE ''否'' END AS 齐套,
|
||||||
|
CONVERT(varchar(10), v.齐套时间, 120) AS 发料齐套,
|
||||||
|
CONVERT(varchar(10), v.计划开始时间, 120) AS 计划开始,
|
||||||
|
CONVERT(varchar(10), v.派工时间, 120) AS 派工时间,
|
||||||
|
[二次派工] AS 二次派工,
|
||||||
|
CONVERT(varchar(10), DATEADD(DAY, 3, CONVERT(date, v.齐套时间)), 120) AS 预计送检日期,
|
||||||
|
CONVERT(varchar(10), s.交货日期理论齐套日期, 120) AS 销售要求日期,
|
||||||
|
CONVERT(varchar(10), v.要求发货日期, 120) AS 发货要求日期,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
|
||||||
|
FROM [YL_MESDB].[dbo].[流程表] lc
|
||||||
|
WHERE lc.已关联计划号 = v.[订单编号]
|
||||||
|
), '''') AS 异常报警信息,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''装配''
|
||||||
|
) jxz
|
||||||
|
), '''') AS 装配进行中,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''质检''
|
||||||
|
) jxz
|
||||||
|
), '''') AS 质检进行中,
|
||||||
|
CAST(ISNULL(zp.装配工时, 0) / 60.0 AS decimal(18,2)) AS 任务装配工时,
|
||||||
|
CAST(ISNULL(zj1.质检工时, 0) / 60.0 AS decimal(18,2)) AS 任务质检工时,
|
||||||
|
CAST(ISNULL(htzp.合同装配工时, 0) / 60.0 AS decimal(18,2)) AS 合同装配工时,
|
||||||
|
CAST(ISNULL(htzj.合同质检工时, 0) / 60.0 AS decimal(18,2)) AS 合同质检工时,
|
||||||
|
ISNULL(zp.装配工序说明, '''') AS 装配工序说明,
|
||||||
|
ISNULL(zj1.质检工序说明, '''') AS 质检工序说明,
|
||||||
|
CONVERT(varchar(10), [计划完成], 120) AS 要求完工日期,
|
||||||
|
[工序名称] AS 工序名称,
|
||||||
|
v.计划号 AS 计划号,
|
||||||
|
指派对象 AS 指派对象,
|
||||||
|
TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS varchar(30)))) AS 指派数量,
|
||||||
|
[优先级] AS 优先级,
|
||||||
|
[未完成说明] AS 未完成说明,
|
||||||
|
[派工特殊说明] AS 派工特殊备注,
|
||||||
|
[占用情况] AS 占用情况,
|
||||||
|
[最后编辑人] AS 最后编辑人,
|
||||||
|
CONVERT(varchar(19), [最后编辑时间], 120) AS 最后编辑时间
|
||||||
|
FROM [View_生产订单_MES] v
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) AS 装配工时, MAX(gs.工序说明) AS 装配工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zp ON v.[订单编号] = zp.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) AS 质检工时, MAX(gs.工序说明) AS 质检工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zj1 ON v.[订单编号] = zj1.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) AS 合同装配工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzp ON v.[合同号] = htzp.合同号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) AS 合同质检工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzj ON v.[合同号] = htzj.合同号
|
||||||
|
LEFT JOIN SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
|
||||||
|
ON v.合同号 = s.项目号 AND v.物料编号 = s.物料号';
|
||||||
|
|
||||||
|
IF(@订单号>0) SET @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+CONVERT(varchar(10),@订单号);
|
||||||
|
IF(@合同号<>'') SET @selectStrWhere=@selectStrWhere + ' and [合同号] like ''%'+@合同号+'%''';
|
||||||
|
IF(@产品编码<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%''';
|
||||||
|
IF(@产品名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%''';
|
||||||
|
IF(@辅助配件 = '不含') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%''';
|
||||||
|
IF(@工序名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+'''';
|
||||||
|
IF(@要求完工日期1 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+'''';
|
||||||
|
IF(@要求完工日期2 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+'''';
|
||||||
|
IF(@计划开始 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+'''';
|
||||||
|
IF(@计划完成 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+'''';
|
||||||
|
IF(@排产状态='未完成') SET @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0';
|
||||||
|
ELSE IF(@排产状态='已完成') SET @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1';
|
||||||
|
IF(@物料类型='自制件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否''';
|
||||||
|
IF(@物料类型='装配件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否''';
|
||||||
|
IF(@指派对象<>'全部') SET @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))';
|
||||||
|
|
||||||
|
SET @selectStrWhere = @selectStrWhere + ' ORDER BY CASE WHEN 钣金预达时间 IS NULL THEN 1 ELSE 0 END, 钣金预达时间, v.计划开始时间';
|
||||||
|
SET @selectStr=@selectStr+@selectStrWhere;
|
||||||
|
PRINT @selectStr;
|
||||||
|
EXEC sp_executesql @selectStr;
|
||||||
|
END
|
||||||
40
db_backups/计划排产_系统类装配任务_修改日期_create_20260618_140324.sql
Normal file
40
db_backups/计划排产_系统类装配任务_修改日期_create_20260618_140324.sql
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
CREATE OR ALTER PROCEDURE [dbo].[计划排产_系统类装配任务_修改预计送检日期]
|
||||||
|
@editstr nvarchar(100),
|
||||||
|
@订单号 int=0
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
SET NOCOUNT ON;
|
||||||
|
|
||||||
|
DECLARE @whereStr nvarchar(max)=' where 1=1 ';
|
||||||
|
DECLARE @updateStr nvarchar(max)='update [MES_接口_生产计划] set ';
|
||||||
|
DECLARE @selStr nvarchar(max)='';
|
||||||
|
|
||||||
|
IF(@订单号>0) SET @whereStr=@whereStr + ' and [订单编号]='+CONVERT(varchar(10),@订单号);
|
||||||
|
IF(@editstr<>'') SET @updateStr = @updateStr + @editstr;
|
||||||
|
SET @selStr=@updateStr+@whereStr;
|
||||||
|
|
||||||
|
PRINT @selStr;
|
||||||
|
EXEC sp_executesql @selStr;
|
||||||
|
SELECT '1' AS result;
|
||||||
|
END;
|
||||||
|
GO
|
||||||
|
|
||||||
|
CREATE OR ALTER PROCEDURE [dbo].[计划排产_系统类装配任务_修改销售要求日期]
|
||||||
|
@editstr nvarchar(100),
|
||||||
|
@订单号 int=0
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
SET NOCOUNT ON;
|
||||||
|
|
||||||
|
DECLARE @whereStr nvarchar(max)=' where 1=1 ';
|
||||||
|
DECLARE @updateStr nvarchar(max)='update [MES_接口_生产计划] set ';
|
||||||
|
DECLARE @selStr nvarchar(max)='';
|
||||||
|
|
||||||
|
IF(@订单号>0) SET @whereStr=@whereStr + ' and [订单编号]='+CONVERT(varchar(10),@订单号);
|
||||||
|
IF(@editstr<>'') SET @updateStr = @updateStr + @editstr;
|
||||||
|
SET @selStr=@updateStr+@whereStr;
|
||||||
|
|
||||||
|
PRINT @selStr;
|
||||||
|
EXEC sp_executesql @selStr;
|
||||||
|
SELECT '1' AS result;
|
||||||
|
END;
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- =============================================
|
||||||
|
-- Author: <Author,,Name>
|
||||||
|
-- Create date: <Create Date,,>
|
||||||
|
-- Description: <Description,,>
|
||||||
|
-- =============================================
|
||||||
|
create PROCEDURE [dbo].[计划排产_系统类装配任务_修改钣金预达时间]
|
||||||
|
@editstr nvarchar(50),
|
||||||
|
@订单号 int=0
|
||||||
|
AS
|
||||||
|
declare @whereStr nvarchar(max)=' where 1=1 '
|
||||||
|
declare @updateStr nvarchar(max)='update [MES_接口_生产计划] set '
|
||||||
|
declare @selStr nvarchar(max)=''
|
||||||
|
|
||||||
|
-- update [MES_接口_生产计划_生产任务] set [计划数量] = @未指派数量_剩余 where 订单编号=@订单号 and 订单行号=@订单行号 and 订单拆分内码<>@订单拆分内码 and isnull(派工状态,0)=0
|
||||||
|
if(@订单号>0)set @whereStr=@whereStr + ' and [订单编号]='+Convert(VARCHAR(10),@订单号)
|
||||||
|
if(@editstr<>'')set @updateStr = @updateStr + @editstr
|
||||||
|
set @selStr=@updateStr+@whereStr
|
||||||
|
|
||||||
|
print @selStr
|
||||||
|
EXEC sp_executesql @selStr
|
||||||
|
|
||||||
|
|
||||||
102
db_backups/计划排产_阀类任务查询_alter_20260618_100448.sql
Normal file
102
db_backups/计划排产_阀类任务查询_alter_20260618_100448.sql
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
ALTER PROCEDURE [dbo].[计划排产_阀类任务查询]
|
||||||
|
@订单号 int=0,
|
||||||
|
@物料类型 nvarchar(50)='', --自制件、装配件
|
||||||
|
@合同号 nvarchar(50)='',
|
||||||
|
@产品编码 nvarchar(50)='',
|
||||||
|
@产品名称 nvarchar(50)='',
|
||||||
|
@工序名称 nvarchar(50)='',
|
||||||
|
@要求完工日期1 nvarchar(50)='',
|
||||||
|
@要求完工日期2 nvarchar(50)='',
|
||||||
|
@计划开始 nvarchar(50)='',
|
||||||
|
@计划完成 nvarchar(50)='',
|
||||||
|
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
|
||||||
|
@指派对象 nvarchar(50)='全部',
|
||||||
|
@辅助配件 nvarchar(50)='不含'
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
declare @selectStr nvarchar(max)
|
||||||
|
declare @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 not like ''%系统%'' and isnull(任务状态,0)<4'
|
||||||
|
|
||||||
|
if(@物料类型='自制件') --自制件
|
||||||
|
|
||||||
|
set @selectStr='
|
||||||
|
SELECT [计划数量订单],isnull(开工时间,0) as 开工时间,isnull(进度,0) as 进度,[TaskAID],v.[合同号],v.[订单编号] as 订单号,
|
||||||
|
[订单行号],[订单拆分内码] as 拆分内码,[物料编号] as 产品编码,[物料描述] as 产品名称,TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS VARCHAR(30)))) AS 计划数量,
|
||||||
|
[计划完成] as 要求完工日期,[工序名称],完成数量,v.计划号,收料数量,外协分组,v.任务状态,v.齐套时间,v.派工时间,v.齐套,v.要求发货日期,
|
||||||
|
case when [加急状态]=1 then ''加急'' else '''' end as 加急状态,性质,isnull(总工时,0) as 总工时,[占用情况]
|
||||||
|
,[排产状态],[工序计划数量],指派对象编号,指派对象,TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量,计划开始时间,计划完成时间,最晚开始时间,
|
||||||
|
[派工状态],[外协通知],[优先级],[未完成说明],[派工特殊说明],[最后编辑人],[最后编辑时间],[二次派工],s.交货日期理论齐套日期 as 交货日期,
|
||||||
|
case when zj.计划号 is not null then ''是'' else ''否'' end as 终检,ISNULL(g.标准工时, 0) as 标准工时,
|
||||||
|
ISNULL(zp.装配工时, 0) as 任务装配工时,
|
||||||
|
ISNULL(zj1.质检工时, 0) as 任务质检工时,
|
||||||
|
ISNULL(htzp.合同装配工时, 0) as 合同装配工时,
|
||||||
|
ISNULL(htzj.合同质检工时, 0) as 合同质检工时,
|
||||||
|
ISNULL(zp.装配工序说明, '''') as 装配工序说明,
|
||||||
|
ISNULL(zj1.质检工序说明, '''') as 质检工序说明,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
|
||||||
|
FROM [YL_MESDB].[dbo].[流程表] lc
|
||||||
|
WHERE lc.已关联计划号 = v.[订单编号]
|
||||||
|
), '''') as 异常报警信息
|
||||||
|
FROM [View_生产订单_MES] v
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT DISTINCT 计划号
|
||||||
|
FROM dbo.YL_质量检验_质检记录
|
||||||
|
WHERE 质检类型 = ''终检''
|
||||||
|
) zj ON v.[订单编号] = zj.计划号
|
||||||
|
LEFT JOIN [dbo].[车间生产管理工艺_零件生产工艺_工艺库] g -- 新增LEFT JOIN
|
||||||
|
ON v.[订单编号] = g.订单编号
|
||||||
|
AND v.[订单行号] = g.工艺顺序
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) as 装配工时,max(gs.工序说明) as 装配工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zp ON v.[订单编号] = zp.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) as 质检工时,max(gs.工序说明) as 质检工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zj1 ON v.[订单编号] = zj1.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) as 合同装配工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzp ON v.[合同号] = htzp.合同号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) as 合同质检工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzj ON v.[合同号] = htzj.合同号
|
||||||
|
left join SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
|
||||||
|
on v.合同号 = s.项目号 and v.物料编号 = s.物料号'
|
||||||
|
|
||||||
|
if(@订单号>0)set @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+Convert(VARCHAR(10),@订单号)
|
||||||
|
if(@合同号<>'')set @selectStrWhere=@selectStrWhere + ' and [合同号] like ''%'+@合同号+'%'''
|
||||||
|
if(@产品编码<>'')set @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%'''
|
||||||
|
if(@产品名称<>'')set @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%'''
|
||||||
|
if(@辅助配件 = '不含')set @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%'''
|
||||||
|
if(@工序名称<>'')set @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+''''
|
||||||
|
if(@要求完工日期1 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+''''
|
||||||
|
if(@要求完工日期2 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+''''
|
||||||
|
if(@计划开始 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+''''
|
||||||
|
if(@计划完成 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+''''
|
||||||
|
if(@排产状态='未完成')set @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0'
|
||||||
|
else if(@排产状态='已完成')set @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1'
|
||||||
|
if(@物料类型='自制件') set @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否'''
|
||||||
|
if(@物料类型='装配件') set @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否'''
|
||||||
|
if(@指派对象<>'全部') set @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))'
|
||||||
|
set @selectStrWhere = @selectStrWhere+ 'ORDER BY
|
||||||
|
CASE WHEN 齐套时间 IS NULL THEN 1 ELSE 0 END,
|
||||||
|
齐套时间,计划开始时间 '
|
||||||
|
set @selectStr=@selectStr+@selectStrWhere
|
||||||
|
print @selectStr
|
||||||
|
EXEC sp_executesql @selectStr
|
||||||
|
END
|
||||||
129
db_backups/计划排产_阀类任务查询_alter_progress_20260618_102046.sql
Normal file
129
db_backups/计划排产_阀类任务查询_alter_progress_20260618_102046.sql
Normal file
@@ -0,0 +1,129 @@
|
|||||||
|
ALTER PROCEDURE [dbo].[计划排产_阀类任务查询]
|
||||||
|
@订单号 int=0,
|
||||||
|
@物料类型 nvarchar(50)='', --自制件、装配件
|
||||||
|
@合同号 nvarchar(50)='',
|
||||||
|
@产品编码 nvarchar(50)='',
|
||||||
|
@产品名称 nvarchar(50)='',
|
||||||
|
@工序名称 nvarchar(50)='',
|
||||||
|
@要求完工日期1 nvarchar(50)='',
|
||||||
|
@要求完工日期2 nvarchar(50)='',
|
||||||
|
@计划开始 nvarchar(50)='',
|
||||||
|
@计划完成 nvarchar(50)='',
|
||||||
|
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
|
||||||
|
@指派对象 nvarchar(50)='全部',
|
||||||
|
@辅助配件 nvarchar(50)='不含'
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
declare @selectStr nvarchar(max)
|
||||||
|
declare @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 not like ''%系统%'' and isnull(任务状态,0)<4'
|
||||||
|
|
||||||
|
if(@物料类型='自制件') --自制件
|
||||||
|
|
||||||
|
set @selectStr='
|
||||||
|
SELECT [计划数量订单],isnull(开工时间,0) as 开工时间,isnull(进度,0) as 进度,[TaskAID],v.[合同号],v.[订单编号] as 订单号,
|
||||||
|
[订单行号],[订单拆分内码] as 拆分内码,[物料编号] as 产品编码,[物料描述] as 产品名称,TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS VARCHAR(30)))) AS 计划数量,
|
||||||
|
[计划完成] as 要求完工日期,[工序名称],完成数量,v.计划号,收料数量,外协分组,v.任务状态,v.齐套时间,v.派工时间,v.齐套,v.要求发货日期,
|
||||||
|
case when [加急状态]=1 then ''加急'' else '''' end as 加急状态,性质,isnull(总工时,0) as 总工时,[占用情况]
|
||||||
|
,[排产状态],[工序计划数量],指派对象编号,指派对象,TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量,计划开始时间,计划完成时间,最晚开始时间,
|
||||||
|
[派工状态],[外协通知],[优先级],[未完成说明],[派工特殊说明],[最后编辑人],[最后编辑时间],[二次派工],s.交货日期理论齐套日期 as 交货日期,
|
||||||
|
case when zj.计划号 is not null then ''是'' else ''否'' end as 终检,ISNULL(g.标准工时, 0) as 标准工时,
|
||||||
|
ISNULL(zp.装配工时, 0) as 任务装配工时,
|
||||||
|
ISNULL(zj1.质检工时, 0) as 任务质检工时,
|
||||||
|
ISNULL(htzp.合同装配工时, 0) as 合同装配工时,
|
||||||
|
ISNULL(htzj.合同质检工时, 0) as 合同质检工时,
|
||||||
|
ISNULL(zp.装配工序说明, '''') as 装配工序说明,
|
||||||
|
ISNULL(zj1.质检工序说明, '''') as 质检工序说明,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
|
||||||
|
FROM [YL_MESDB].[dbo].[流程表] lc
|
||||||
|
WHERE lc.已关联计划号 = v.[订单编号]
|
||||||
|
), '''') as 异常报警信息,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''装配''
|
||||||
|
) jxz
|
||||||
|
), '''') as 装配进行中,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''质检''
|
||||||
|
) jxz
|
||||||
|
), '''') as 质检进行中 FROM [View_生产订单_MES] v
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT DISTINCT 计划号
|
||||||
|
FROM dbo.YL_质量检验_质检记录
|
||||||
|
WHERE 质检类型 = ''终检''
|
||||||
|
) zj ON v.[订单编号] = zj.计划号
|
||||||
|
LEFT JOIN [dbo].[车间生产管理工艺_零件生产工艺_工艺库] g -- 新增LEFT JOIN
|
||||||
|
ON v.[订单编号] = g.订单编号
|
||||||
|
AND v.[订单行号] = g.工艺顺序
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) as 装配工时,max(gs.工序说明) as 装配工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zp ON v.[订单编号] = zp.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) as 质检工时,max(gs.工序说明) as 质检工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zj1 ON v.[订单编号] = zj1.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) as 合同装配工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzp ON v.[合同号] = htzp.合同号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) as 合同质检工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzj ON v.[合同号] = htzj.合同号
|
||||||
|
left join SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
|
||||||
|
on v.合同号 = s.项目号 and v.物料编号 = s.物料号'
|
||||||
|
|
||||||
|
if(@订单号>0)set @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+Convert(VARCHAR(10),@订单号)
|
||||||
|
if(@合同号<>'')set @selectStrWhere=@selectStrWhere + ' and [合同号] like ''%'+@合同号+'%'''
|
||||||
|
if(@产品编码<>'')set @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%'''
|
||||||
|
if(@产品名称<>'')set @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%'''
|
||||||
|
if(@辅助配件 = '不含')set @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%'''
|
||||||
|
if(@工序名称<>'')set @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+''''
|
||||||
|
if(@要求完工日期1 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+''''
|
||||||
|
if(@要求完工日期2 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+''''
|
||||||
|
if(@计划开始 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+''''
|
||||||
|
if(@计划完成 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+''''
|
||||||
|
if(@排产状态='未完成')set @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0'
|
||||||
|
else if(@排产状态='已完成')set @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1'
|
||||||
|
if(@物料类型='自制件') set @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否'''
|
||||||
|
if(@物料类型='装配件') set @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否'''
|
||||||
|
if(@指派对象<>'全部') set @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))'
|
||||||
|
set @selectStrWhere = @selectStrWhere+ 'ORDER BY
|
||||||
|
CASE WHEN 齐套时间 IS NULL THEN 1 ELSE 0 END,
|
||||||
|
齐套时间,计划开始时间 '
|
||||||
|
set @selectStr=@selectStr+@selectStrWhere
|
||||||
|
print @selectStr
|
||||||
|
EXEC sp_executesql @selectStr
|
||||||
|
END
|
||||||
133
db_backups/计划排产_阀类任务查询_alter_sap_min_date_20260618_143447.sql
Normal file
133
db_backups/计划排产_阀类任务查询_alter_sap_min_date_20260618_143447.sql
Normal file
@@ -0,0 +1,133 @@
|
|||||||
|
ALTER PROCEDURE [dbo].[计划排产_阀类任务查询]
|
||||||
|
@订单号 int=0,
|
||||||
|
@物料类型 nvarchar(50)='', --自制件、装配件
|
||||||
|
@合同号 nvarchar(50)='',
|
||||||
|
@产品编码 nvarchar(50)='',
|
||||||
|
@产品名称 nvarchar(50)='',
|
||||||
|
@工序名称 nvarchar(50)='',
|
||||||
|
@要求完工日期1 nvarchar(50)='',
|
||||||
|
@要求完工日期2 nvarchar(50)='',
|
||||||
|
@计划开始 nvarchar(50)='',
|
||||||
|
@计划完成 nvarchar(50)='',
|
||||||
|
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
|
||||||
|
@指派对象 nvarchar(50)='全部',
|
||||||
|
@辅助配件 nvarchar(50)='不含'
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
declare @selectStr nvarchar(max)
|
||||||
|
declare @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 not like ''%系统%'' and isnull(任务状态,0)<4'
|
||||||
|
|
||||||
|
if(@物料类型='自制件') --自制件
|
||||||
|
|
||||||
|
set @selectStr='
|
||||||
|
SELECT [计划数量订单],isnull(开工时间,0) as 开工时间,isnull(进度,0) as 进度,[TaskAID],v.[合同号],v.[订单编号] as 订单号,
|
||||||
|
[订单行号],[订单拆分内码] as 拆分内码,[物料编号] as 产品编码,[物料描述] as 产品名称,TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS VARCHAR(30)))) AS 计划数量,
|
||||||
|
[计划完成] as 要求完工日期,[工序名称],完成数量,v.计划号,收料数量,外协分组,v.任务状态,v.齐套时间,v.派工时间,v.齐套,v.要求发货日期,
|
||||||
|
case when [加急状态]=1 then ''加急'' else '''' end as 加急状态,性质,isnull(总工时,0) as 总工时,[占用情况]
|
||||||
|
,[排产状态],[工序计划数量],指派对象编号,指派对象,TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量,计划开始时间,计划完成时间,最晚开始时间,
|
||||||
|
[派工状态],[外协通知],[优先级],[未完成说明],[派工特殊说明],[最后编辑人],[最后编辑时间],[二次派工],s.交货日期理论齐套日期 as 交货日期,
|
||||||
|
case when zj.计划号 is not null then ''是'' else ''否'' end as 终检,ISNULL(g.标准工时, 0) as 标准工时,ISNULL(预计送检日期, DATEADD(DAY, 3, 齐套时间)) as 预计送检日期,ISNULL(销售要求日期, s.交货日期理论齐套日期) as 销售要求日期,
|
||||||
|
ISNULL(zp.装配工时, 0) as 任务装配工时,
|
||||||
|
ISNULL(zj1.质检工时, 0) as 任务质检工时,
|
||||||
|
ISNULL(htzp.合同装配工时, 0) as 合同装配工时,
|
||||||
|
ISNULL(htzj.合同质检工时, 0) as 合同质检工时,
|
||||||
|
ISNULL(zp.装配工序说明, '''') as 装配工序说明,
|
||||||
|
ISNULL(zj1.质检工序说明, '''') as 质检工序说明,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
|
||||||
|
FROM [YL_MESDB].[dbo].[流程表] lc
|
||||||
|
WHERE lc.已关联计划号 = v.[订单编号]
|
||||||
|
), '''') as 异常报警信息,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''装配''
|
||||||
|
) jxz
|
||||||
|
), '''') as 装配进行中,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''质检''
|
||||||
|
) jxz
|
||||||
|
), '''') as 质检进行中 FROM [View_生产订单_MES] v
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT DISTINCT 计划号
|
||||||
|
FROM dbo.YL_质量检验_质检记录
|
||||||
|
WHERE 质检类型 = ''终检''
|
||||||
|
) zj ON v.[订单编号] = zj.计划号
|
||||||
|
LEFT JOIN [dbo].[车间生产管理工艺_零件生产工艺_工艺库] g -- 新增LEFT JOIN
|
||||||
|
ON v.[订单编号] = g.订单编号
|
||||||
|
AND v.[订单行号] = g.工艺顺序
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) as 装配工时,max(gs.工序说明) as 装配工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zp ON v.[订单编号] = zp.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) as 质检工时,max(gs.工序说明) as 质检工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zj1 ON v.[订单编号] = zj1.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) as 合同装配工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzp ON v.[合同号] = htzp.合同号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) as 合同质检工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzj ON v.[合同号] = htzj.合同号
|
||||||
|
left join (
|
||||||
|
SELECT 项目号, 物料号, MIN(交货日期理论齐套日期) as 交货日期理论齐套日期
|
||||||
|
FROM SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2
|
||||||
|
GROUP BY 项目号, 物料号
|
||||||
|
) s
|
||||||
|
on v.合同号 = s.项目号 and v.物料编号 = s.物料号'
|
||||||
|
|
||||||
|
if(@订单号>0)set @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+Convert(VARCHAR(10),@订单号)
|
||||||
|
if(@合同号<>'')set @selectStrWhere=@selectStrWhere + ' and v.[合同号] like ''%'+@合同号+'%'''
|
||||||
|
if(@产品编码<>'')set @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%'''
|
||||||
|
if(@产品名称<>'')set @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%'''
|
||||||
|
if(@辅助配件 = '不含')set @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%'''
|
||||||
|
if(@工序名称<>'')set @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+''''
|
||||||
|
if(@要求完工日期1 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+''''
|
||||||
|
if(@要求完工日期2 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+''''
|
||||||
|
if(@计划开始 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+''''
|
||||||
|
if(@计划完成 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+''''
|
||||||
|
if(@排产状态='未完成')set @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0'
|
||||||
|
else if(@排产状态='已完成')set @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1'
|
||||||
|
if(@物料类型='自制件') set @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否'''
|
||||||
|
if(@物料类型='装配件') set @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否'''
|
||||||
|
if(@指派对象<>'全部') set @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))'
|
||||||
|
set @selectStrWhere = @selectStrWhere+ 'ORDER BY
|
||||||
|
CASE WHEN 齐套时间 IS NULL THEN 1 ELSE 0 END,
|
||||||
|
齐套时间,计划开始时间 '
|
||||||
|
set @selectStr=@selectStr+@selectStrWhere
|
||||||
|
print @selectStr
|
||||||
|
EXEC sp_executesql @selectStr
|
||||||
|
END
|
||||||
@@ -0,0 +1,129 @@
|
|||||||
|
ALTER PROCEDURE [dbo].[计划排产_阀类任务查询]
|
||||||
|
@订单号 int=0,
|
||||||
|
@物料类型 nvarchar(50)='', --自制件、装配件
|
||||||
|
@合同号 nvarchar(50)='',
|
||||||
|
@产品编码 nvarchar(50)='',
|
||||||
|
@产品名称 nvarchar(50)='',
|
||||||
|
@工序名称 nvarchar(50)='',
|
||||||
|
@要求完工日期1 nvarchar(50)='',
|
||||||
|
@要求完工日期2 nvarchar(50)='',
|
||||||
|
@计划开始 nvarchar(50)='',
|
||||||
|
@计划完成 nvarchar(50)='',
|
||||||
|
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
|
||||||
|
@指派对象 nvarchar(50)='全部',
|
||||||
|
@辅助配件 nvarchar(50)='不含'
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
declare @selectStr nvarchar(max)
|
||||||
|
declare @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 not like ''%系统%'' and isnull(任务状态,0)<4'
|
||||||
|
|
||||||
|
if(@物料类型='自制件') --自制件
|
||||||
|
|
||||||
|
set @selectStr='
|
||||||
|
SELECT [计划数量订单],isnull(开工时间,0) as 开工时间,isnull(进度,0) as 进度,[TaskAID],v.[合同号],v.[订单编号] as 订单号,
|
||||||
|
[订单行号],[订单拆分内码] as 拆分内码,[物料编号] as 产品编码,[物料描述] as 产品名称,TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS VARCHAR(30)))) AS 计划数量,
|
||||||
|
[计划完成] as 要求完工日期,[工序名称],完成数量,v.计划号,收料数量,外协分组,v.任务状态,v.齐套时间,v.派工时间,v.齐套,v.要求发货日期,
|
||||||
|
case when [加急状态]=1 then ''加急'' else '''' end as 加急状态,性质,isnull(总工时,0) as 总工时,[占用情况]
|
||||||
|
,[排产状态],[工序计划数量],指派对象编号,指派对象,TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量,计划开始时间,计划完成时间,最晚开始时间,
|
||||||
|
[派工状态],[外协通知],[优先级],[未完成说明],[派工特殊说明],[最后编辑人],[最后编辑时间],[二次派工],s.交货日期理论齐套日期 as 交货日期,
|
||||||
|
case when zj.计划号 is not null then ''是'' else ''否'' end as 终检,ISNULL(g.标准工时, 0) as 标准工时,ISNULL(预计送检日期, DATEADD(DAY, 3, 齐套时间)) as 预计送检日期,ISNULL(销售要求日期, s.交货日期理论齐套日期) as 销售要求日期,
|
||||||
|
ISNULL(zp.装配工时, 0) as 任务装配工时,
|
||||||
|
ISNULL(zj1.质检工时, 0) as 任务质检工时,
|
||||||
|
ISNULL(htzp.合同装配工时, 0) as 合同装配工时,
|
||||||
|
ISNULL(htzj.合同质检工时, 0) as 合同质检工时,
|
||||||
|
ISNULL(zp.装配工序说明, '''') as 装配工序说明,
|
||||||
|
ISNULL(zj1.质检工序说明, '''') as 质检工序说明,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
|
||||||
|
FROM [YL_MESDB].[dbo].[流程表] lc
|
||||||
|
WHERE lc.已关联计划号 = v.[订单编号]
|
||||||
|
), '''') as 异常报警信息,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''装配''
|
||||||
|
) jxz
|
||||||
|
), '''') as 装配进行中,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''质检''
|
||||||
|
) jxz
|
||||||
|
), '''') as 质检进行中 FROM [View_生产订单_MES] v
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT DISTINCT 计划号
|
||||||
|
FROM dbo.YL_质量检验_质检记录
|
||||||
|
WHERE 质检类型 = ''终检''
|
||||||
|
) zj ON v.[订单编号] = zj.计划号
|
||||||
|
LEFT JOIN [dbo].[车间生产管理工艺_零件生产工艺_工艺库] g -- 新增LEFT JOIN
|
||||||
|
ON v.[订单编号] = g.订单编号
|
||||||
|
AND v.[订单行号] = g.工艺顺序
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) as 装配工时,max(gs.工序说明) as 装配工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zp ON v.[订单编号] = zp.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) as 质检工时,max(gs.工序说明) as 质检工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zj1 ON v.[订单编号] = zj1.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) as 合同装配工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzp ON v.[合同号] = htzp.合同号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) as 合同质检工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzj ON v.[合同号] = htzj.合同号
|
||||||
|
left join SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
|
||||||
|
on v.合同号 = s.项目号 and v.物料编号 = s.物料号'
|
||||||
|
|
||||||
|
if(@订单号>0)set @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+Convert(VARCHAR(10),@订单号)
|
||||||
|
if(@合同号<>'')set @selectStrWhere=@selectStrWhere + ' and v.[合同号] like ''%'+@合同号+'%'''
|
||||||
|
if(@产品编码<>'')set @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%'''
|
||||||
|
if(@产品名称<>'')set @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%'''
|
||||||
|
if(@辅助配件 = '不含')set @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%'''
|
||||||
|
if(@工序名称<>'')set @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+''''
|
||||||
|
if(@要求完工日期1 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+''''
|
||||||
|
if(@要求完工日期2 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+''''
|
||||||
|
if(@计划开始 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+''''
|
||||||
|
if(@计划完成 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+''''
|
||||||
|
if(@排产状态='未完成')set @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0'
|
||||||
|
else if(@排产状态='已完成')set @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1'
|
||||||
|
if(@物料类型='自制件') set @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否'''
|
||||||
|
if(@物料类型='装配件') set @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否'''
|
||||||
|
if(@指派对象<>'全部') set @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))'
|
||||||
|
set @selectStrWhere = @selectStrWhere+ 'ORDER BY
|
||||||
|
CASE WHEN 齐套时间 IS NULL THEN 1 ELSE 0 END,
|
||||||
|
齐套时间,计划开始时间 '
|
||||||
|
set @selectStr=@selectStr+@selectStrWhere
|
||||||
|
print @selectStr
|
||||||
|
EXEC sp_executesql @selectStr
|
||||||
|
END
|
||||||
98
db_backups/计划排产_阀类任务查询_before_20260618_100413.sql
Normal file
98
db_backups/计划排产_阀类任务查询_before_20260618_100413.sql
Normal file
@@ -0,0 +1,98 @@
|
|||||||
|
|
||||||
|
CREATE PROCEDURE [dbo].[计划排产_阀类任务查询]
|
||||||
|
@订单号 int=0,
|
||||||
|
@物料类型 nvarchar(50)='', --自制件、装配件
|
||||||
|
@合同号 nvarchar(50)='',
|
||||||
|
@产品编码 nvarchar(50)='',
|
||||||
|
@产品名称 nvarchar(50)='',
|
||||||
|
@工序名称 nvarchar(50)='',
|
||||||
|
@要求完工日期1 nvarchar(50)='',
|
||||||
|
@要求完工日期2 nvarchar(50)='',
|
||||||
|
@计划开始 nvarchar(50)='',
|
||||||
|
@计划完成 nvarchar(50)='',
|
||||||
|
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
|
||||||
|
@指派对象 nvarchar(50)='全部',
|
||||||
|
@辅助配件 nvarchar(50)='不含'
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
declare @selectStr nvarchar(4000)
|
||||||
|
declare @selectStrWhere nvarchar(4000)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 not like ''%系统%'' and isnull(任务状态,0)<4'
|
||||||
|
|
||||||
|
if(@物料类型='自制件') --自制件
|
||||||
|
|
||||||
|
set @selectStr='
|
||||||
|
SELECT [计划数量订单],isnull(开工时间,0) as 开工时间,isnull(进度,0) as 进度,[TaskAID],v.[合同号],v.[订单编号] as 订单号,
|
||||||
|
[订单行号],[订单拆分内码] as 拆分内码,[物料编号] as 产品编码,[物料描述] as 产品名称,TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS VARCHAR(30)))) AS 计划数量,
|
||||||
|
[计划完成] as 要求完工日期,[工序名称],完成数量,v.计划号,收料数量,外协分组,v.任务状态,v.齐套时间,v.派工时间,v.齐套,v.要求发货日期,
|
||||||
|
case when [加急状态]=1 then ''加急'' else '''' end as 加急状态,性质,isnull(总工时,0) as 总工时,[占用情况]
|
||||||
|
,[排产状态],[工序计划数量],指派对象编号,指派对象,TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量,计划开始时间,计划完成时间,最晚开始时间,
|
||||||
|
[派工状态],[外协通知],[优先级],[未完成说明],[派工特殊说明],[最后编辑人],[最后编辑时间],[二次派工],s.交货日期理论齐套日期 as 交货日期,
|
||||||
|
case when zj.计划号 is not null then ''是'' else ''否'' end as 终检,ISNULL(g.标准工时, 0) as 标准工时,
|
||||||
|
ISNULL(zp.装配工时, 0) as 任务装配工时,
|
||||||
|
ISNULL(zj1.质检工时, 0) as 任务质检工时,
|
||||||
|
ISNULL(htzp.合同装配工时, 0) as 合同装配工时,
|
||||||
|
ISNULL(htzj.合同质检工时, 0) as 合同质检工时,
|
||||||
|
ISNULL(zp.装配工序说明, '''') as 装配工序说明,
|
||||||
|
ISNULL(zj1.质检工序说明, '''') as 质检工序说明
|
||||||
|
FROM [View_生产订单_MES] v
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT DISTINCT 计划号
|
||||||
|
FROM dbo.YL_质量检验_质检记录
|
||||||
|
WHERE 质检类型 = ''终检''
|
||||||
|
) zj ON v.[订单编号] = zj.计划号
|
||||||
|
LEFT JOIN [dbo].[车间生产管理工艺_零件生产工艺_工艺库] g -- 新增LEFT JOIN
|
||||||
|
ON v.[订单编号] = g.订单编号
|
||||||
|
AND v.[订单行号] = g.工艺顺序
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) as 装配工时,max(gs.工序说明) as 装配工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zp ON v.[订单编号] = zp.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) as 质检工时,max(gs.工序说明) as 质检工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zj1 ON v.[订单编号] = zj1.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) as 合同装配工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzp ON v.[合同号] = htzp.合同号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) as 合同质检工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzj ON v.[合同号] = htzj.合同号
|
||||||
|
left join SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
|
||||||
|
on v.合同号 = s.项目号 and v.物料编号 = s.物料号'
|
||||||
|
|
||||||
|
if(@订单号>0)set @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+Convert(VARCHAR(10),@订单号)
|
||||||
|
if(@合同号<>'')set @selectStrWhere=@selectStrWhere + ' and [合同号] like ''%'+@合同号+'%'''
|
||||||
|
if(@产品编码<>'')set @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%'''
|
||||||
|
if(@产品名称<>'')set @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%'''
|
||||||
|
if(@辅助配件 = '不含')set @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%'''
|
||||||
|
if(@工序名称<>'')set @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+''''
|
||||||
|
if(@要求完工日期1 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+''''
|
||||||
|
if(@要求完工日期2 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+''''
|
||||||
|
if(@计划开始 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+''''
|
||||||
|
if(@计划完成 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+''''
|
||||||
|
if(@排产状态='未完成')set @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0'
|
||||||
|
else if(@排产状态='已完成')set @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1'
|
||||||
|
if(@物料类型='自制件') set @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否'''
|
||||||
|
if(@物料类型='装配件') set @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否'''
|
||||||
|
if(@指派对象<>'全部') set @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))'
|
||||||
|
set @selectStrWhere = @selectStrWhere+ 'ORDER BY
|
||||||
|
CASE WHEN 齐套时间 IS NULL THEN 1 ELSE 0 END,
|
||||||
|
齐套时间,计划开始时间 '
|
||||||
|
set @selectStr=@selectStr+@selectStrWhere
|
||||||
|
print @selectStr
|
||||||
|
EXEC sp_executesql @selectStr
|
||||||
|
END
|
||||||
102
db_backups/计划排产_阀类任务查询_before_progress_20260618_101940.sql
Normal file
102
db_backups/计划排产_阀类任务查询_before_progress_20260618_101940.sql
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
CREATE PROCEDURE [dbo].[计划排产_阀类任务查询]
|
||||||
|
@订单号 int=0,
|
||||||
|
@物料类型 nvarchar(50)='', --自制件、装配件
|
||||||
|
@合同号 nvarchar(50)='',
|
||||||
|
@产品编码 nvarchar(50)='',
|
||||||
|
@产品名称 nvarchar(50)='',
|
||||||
|
@工序名称 nvarchar(50)='',
|
||||||
|
@要求完工日期1 nvarchar(50)='',
|
||||||
|
@要求完工日期2 nvarchar(50)='',
|
||||||
|
@计划开始 nvarchar(50)='',
|
||||||
|
@计划完成 nvarchar(50)='',
|
||||||
|
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
|
||||||
|
@指派对象 nvarchar(50)='全部',
|
||||||
|
@辅助配件 nvarchar(50)='不含'
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
declare @selectStr nvarchar(max)
|
||||||
|
declare @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 not like ''%系统%'' and isnull(任务状态,0)<4'
|
||||||
|
|
||||||
|
if(@物料类型='自制件') --自制件
|
||||||
|
|
||||||
|
set @selectStr='
|
||||||
|
SELECT [计划数量订单],isnull(开工时间,0) as 开工时间,isnull(进度,0) as 进度,[TaskAID],v.[合同号],v.[订单编号] as 订单号,
|
||||||
|
[订单行号],[订单拆分内码] as 拆分内码,[物料编号] as 产品编码,[物料描述] as 产品名称,TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS VARCHAR(30)))) AS 计划数量,
|
||||||
|
[计划完成] as 要求完工日期,[工序名称],完成数量,v.计划号,收料数量,外协分组,v.任务状态,v.齐套时间,v.派工时间,v.齐套,v.要求发货日期,
|
||||||
|
case when [加急状态]=1 then ''加急'' else '''' end as 加急状态,性质,isnull(总工时,0) as 总工时,[占用情况]
|
||||||
|
,[排产状态],[工序计划数量],指派对象编号,指派对象,TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量,计划开始时间,计划完成时间,最晚开始时间,
|
||||||
|
[派工状态],[外协通知],[优先级],[未完成说明],[派工特殊说明],[最后编辑人],[最后编辑时间],[二次派工],s.交货日期理论齐套日期 as 交货日期,
|
||||||
|
case when zj.计划号 is not null then ''是'' else ''否'' end as 终检,ISNULL(g.标准工时, 0) as 标准工时,
|
||||||
|
ISNULL(zp.装配工时, 0) as 任务装配工时,
|
||||||
|
ISNULL(zj1.质检工时, 0) as 任务质检工时,
|
||||||
|
ISNULL(htzp.合同装配工时, 0) as 合同装配工时,
|
||||||
|
ISNULL(htzj.合同质检工时, 0) as 合同质检工时,
|
||||||
|
ISNULL(zp.装配工序说明, '''') as 装配工序说明,
|
||||||
|
ISNULL(zj1.质检工序说明, '''') as 质检工序说明,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
|
||||||
|
FROM [YL_MESDB].[dbo].[流程表] lc
|
||||||
|
WHERE lc.已关联计划号 = v.[订单编号]
|
||||||
|
), '''') as 异常报警信息
|
||||||
|
FROM [View_生产订单_MES] v
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT DISTINCT 计划号
|
||||||
|
FROM dbo.YL_质量检验_质检记录
|
||||||
|
WHERE 质检类型 = ''终检''
|
||||||
|
) zj ON v.[订单编号] = zj.计划号
|
||||||
|
LEFT JOIN [dbo].[车间生产管理工艺_零件生产工艺_工艺库] g -- 新增LEFT JOIN
|
||||||
|
ON v.[订单编号] = g.订单编号
|
||||||
|
AND v.[订单行号] = g.工艺顺序
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) as 装配工时,max(gs.工序说明) as 装配工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zp ON v.[订单编号] = zp.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) as 质检工时,max(gs.工序说明) as 质检工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zj1 ON v.[订单编号] = zj1.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) as 合同装配工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzp ON v.[合同号] = htzp.合同号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) as 合同质检工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzj ON v.[合同号] = htzj.合同号
|
||||||
|
left join SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
|
||||||
|
on v.合同号 = s.项目号 and v.物料编号 = s.物料号'
|
||||||
|
|
||||||
|
if(@订单号>0)set @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+Convert(VARCHAR(10),@订单号)
|
||||||
|
if(@合同号<>'')set @selectStrWhere=@selectStrWhere + ' and [合同号] like ''%'+@合同号+'%'''
|
||||||
|
if(@产品编码<>'')set @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%'''
|
||||||
|
if(@产品名称<>'')set @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%'''
|
||||||
|
if(@辅助配件 = '不含')set @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%'''
|
||||||
|
if(@工序名称<>'')set @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+''''
|
||||||
|
if(@要求完工日期1 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+''''
|
||||||
|
if(@要求完工日期2 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+''''
|
||||||
|
if(@计划开始 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+''''
|
||||||
|
if(@计划完成 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+''''
|
||||||
|
if(@排产状态='未完成')set @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0'
|
||||||
|
else if(@排产状态='已完成')set @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1'
|
||||||
|
if(@物料类型='自制件') set @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否'''
|
||||||
|
if(@物料类型='装配件') set @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否'''
|
||||||
|
if(@指派对象<>'全部') set @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))'
|
||||||
|
set @selectStrWhere = @selectStrWhere+ 'ORDER BY
|
||||||
|
CASE WHEN 齐套时间 IS NULL THEN 1 ELSE 0 END,
|
||||||
|
齐套时间,计划开始时间 '
|
||||||
|
set @selectStr=@selectStr+@selectStrWhere
|
||||||
|
print @selectStr
|
||||||
|
EXEC sp_executesql @selectStr
|
||||||
|
END
|
||||||
129
db_backups/计划排产_阀类任务查询_before_sap_min_date_20260618_143411.sql
Normal file
129
db_backups/计划排产_阀类任务查询_before_sap_min_date_20260618_143411.sql
Normal file
@@ -0,0 +1,129 @@
|
|||||||
|
CREATE PROCEDURE [dbo].[计划排产_阀类任务查询]
|
||||||
|
@订单号 int=0,
|
||||||
|
@物料类型 nvarchar(50)='', --自制件、装配件
|
||||||
|
@合同号 nvarchar(50)='',
|
||||||
|
@产品编码 nvarchar(50)='',
|
||||||
|
@产品名称 nvarchar(50)='',
|
||||||
|
@工序名称 nvarchar(50)='',
|
||||||
|
@要求完工日期1 nvarchar(50)='',
|
||||||
|
@要求完工日期2 nvarchar(50)='',
|
||||||
|
@计划开始 nvarchar(50)='',
|
||||||
|
@计划完成 nvarchar(50)='',
|
||||||
|
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
|
||||||
|
@指派对象 nvarchar(50)='全部',
|
||||||
|
@辅助配件 nvarchar(50)='不含'
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
declare @selectStr nvarchar(max)
|
||||||
|
declare @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 not like ''%系统%'' and isnull(任务状态,0)<4'
|
||||||
|
|
||||||
|
if(@物料类型='自制件') --自制件
|
||||||
|
|
||||||
|
set @selectStr='
|
||||||
|
SELECT [计划数量订单],isnull(开工时间,0) as 开工时间,isnull(进度,0) as 进度,[TaskAID],v.[合同号],v.[订单编号] as 订单号,
|
||||||
|
[订单行号],[订单拆分内码] as 拆分内码,[物料编号] as 产品编码,[物料描述] as 产品名称,TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS VARCHAR(30)))) AS 计划数量,
|
||||||
|
[计划完成] as 要求完工日期,[工序名称],完成数量,v.计划号,收料数量,外协分组,v.任务状态,v.齐套时间,v.派工时间,v.齐套,v.要求发货日期,
|
||||||
|
case when [加急状态]=1 then ''加急'' else '''' end as 加急状态,性质,isnull(总工时,0) as 总工时,[占用情况]
|
||||||
|
,[排产状态],[工序计划数量],指派对象编号,指派对象,TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量,计划开始时间,计划完成时间,最晚开始时间,
|
||||||
|
[派工状态],[外协通知],[优先级],[未完成说明],[派工特殊说明],[最后编辑人],[最后编辑时间],[二次派工],s.交货日期理论齐套日期 as 交货日期,
|
||||||
|
case when zj.计划号 is not null then ''是'' else ''否'' end as 终检,ISNULL(g.标准工时, 0) as 标准工时,ISNULL(预计送检日期, DATEADD(DAY, 3, 齐套时间)) as 预计送检日期,ISNULL(销售要求日期, s.交货日期理论齐套日期) as 销售要求日期,
|
||||||
|
ISNULL(zp.装配工时, 0) as 任务装配工时,
|
||||||
|
ISNULL(zj1.质检工时, 0) as 任务质检工时,
|
||||||
|
ISNULL(htzp.合同装配工时, 0) as 合同装配工时,
|
||||||
|
ISNULL(htzj.合同质检工时, 0) as 合同质检工时,
|
||||||
|
ISNULL(zp.装配工序说明, '''') as 装配工序说明,
|
||||||
|
ISNULL(zj1.质检工序说明, '''') as 质检工序说明,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
|
||||||
|
FROM [YL_MESDB].[dbo].[流程表] lc
|
||||||
|
WHERE lc.已关联计划号 = v.[订单编号]
|
||||||
|
), '''') as 异常报警信息,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''装配''
|
||||||
|
) jxz
|
||||||
|
), '''') as 装配进行中,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''质检''
|
||||||
|
) jxz
|
||||||
|
), '''') as 质检进行中 FROM [View_生产订单_MES] v
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT DISTINCT 计划号
|
||||||
|
FROM dbo.YL_质量检验_质检记录
|
||||||
|
WHERE 质检类型 = ''终检''
|
||||||
|
) zj ON v.[订单编号] = zj.计划号
|
||||||
|
LEFT JOIN [dbo].[车间生产管理工艺_零件生产工艺_工艺库] g -- 新增LEFT JOIN
|
||||||
|
ON v.[订单编号] = g.订单编号
|
||||||
|
AND v.[订单行号] = g.工艺顺序
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) as 装配工时,max(gs.工序说明) as 装配工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zp ON v.[订单编号] = zp.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) as 质检工时,max(gs.工序说明) as 质检工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zj1 ON v.[订单编号] = zj1.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) as 合同装配工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzp ON v.[合同号] = htzp.合同号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) as 合同质检工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzj ON v.[合同号] = htzj.合同号
|
||||||
|
left join SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
|
||||||
|
on v.合同号 = s.项目号 and v.物料编号 = s.物料号'
|
||||||
|
|
||||||
|
if(@订单号>0)set @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+Convert(VARCHAR(10),@订单号)
|
||||||
|
if(@合同号<>'')set @selectStrWhere=@selectStrWhere + ' and v.[合同号] like ''%'+@合同号+'%'''
|
||||||
|
if(@产品编码<>'')set @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%'''
|
||||||
|
if(@产品名称<>'')set @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%'''
|
||||||
|
if(@辅助配件 = '不含')set @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%'''
|
||||||
|
if(@工序名称<>'')set @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+''''
|
||||||
|
if(@要求完工日期1 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+''''
|
||||||
|
if(@要求完工日期2 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+''''
|
||||||
|
if(@计划开始 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+''''
|
||||||
|
if(@计划完成 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+''''
|
||||||
|
if(@排产状态='未完成')set @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0'
|
||||||
|
else if(@排产状态='已完成')set @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1'
|
||||||
|
if(@物料类型='自制件') set @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否'''
|
||||||
|
if(@物料类型='装配件') set @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否'''
|
||||||
|
if(@指派对象<>'全部') set @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))'
|
||||||
|
set @selectStrWhere = @selectStrWhere+ 'ORDER BY
|
||||||
|
CASE WHEN 齐套时间 IS NULL THEN 1 ELSE 0 END,
|
||||||
|
齐套时间,计划开始时间 '
|
||||||
|
set @selectStr=@selectStr+@selectStrWhere
|
||||||
|
print @selectStr
|
||||||
|
EXEC sp_executesql @selectStr
|
||||||
|
END
|
||||||
@@ -0,0 +1,129 @@
|
|||||||
|
CREATE PROCEDURE [dbo].[计划排产_阀类任务查询]
|
||||||
|
@订单号 int=0,
|
||||||
|
@物料类型 nvarchar(50)='', --自制件、装配件
|
||||||
|
@合同号 nvarchar(50)='',
|
||||||
|
@产品编码 nvarchar(50)='',
|
||||||
|
@产品名称 nvarchar(50)='',
|
||||||
|
@工序名称 nvarchar(50)='',
|
||||||
|
@要求完工日期1 nvarchar(50)='',
|
||||||
|
@要求完工日期2 nvarchar(50)='',
|
||||||
|
@计划开始 nvarchar(50)='',
|
||||||
|
@计划完成 nvarchar(50)='',
|
||||||
|
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
|
||||||
|
@指派对象 nvarchar(50)='全部',
|
||||||
|
@辅助配件 nvarchar(50)='不含'
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
declare @selectStr nvarchar(max)
|
||||||
|
declare @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 not like ''%系统%'' and isnull(任务状态,0)<4'
|
||||||
|
|
||||||
|
if(@物料类型='自制件') --自制件
|
||||||
|
|
||||||
|
set @selectStr='
|
||||||
|
SELECT [计划数量订单],isnull(开工时间,0) as 开工时间,isnull(进度,0) as 进度,[TaskAID],v.[合同号],v.[订单编号] as 订单号,
|
||||||
|
[订单行号],[订单拆分内码] as 拆分内码,[物料编号] as 产品编码,[物料描述] as 产品名称,TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS VARCHAR(30)))) AS 计划数量,
|
||||||
|
[计划完成] as 要求完工日期,[工序名称],完成数量,v.计划号,收料数量,外协分组,v.任务状态,v.齐套时间,v.派工时间,v.齐套,v.要求发货日期,
|
||||||
|
case when [加急状态]=1 then ''加急'' else '''' end as 加急状态,性质,isnull(总工时,0) as 总工时,[占用情况]
|
||||||
|
,[排产状态],[工序计划数量],指派对象编号,指派对象,TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量,计划开始时间,计划完成时间,最晚开始时间,
|
||||||
|
[派工状态],[外协通知],[优先级],[未完成说明],[派工特殊说明],[最后编辑人],[最后编辑时间],[二次派工],s.交货日期理论齐套日期 as 交货日期,
|
||||||
|
case when zj.计划号 is not null then ''是'' else ''否'' end as 终检,ISNULL(g.标准工时, 0) as 标准工时,
|
||||||
|
ISNULL(zp.装配工时, 0) as 任务装配工时,
|
||||||
|
ISNULL(zj1.质检工时, 0) as 任务质检工时,
|
||||||
|
ISNULL(htzp.合同装配工时, 0) as 合同装配工时,
|
||||||
|
ISNULL(htzj.合同质检工时, 0) as 合同质检工时,
|
||||||
|
ISNULL(zp.装配工序说明, '''') as 装配工序说明,
|
||||||
|
ISNULL(zj1.质检工序说明, '''') as 质检工序说明,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
|
||||||
|
FROM [YL_MESDB].[dbo].[流程表] lc
|
||||||
|
WHERE lc.已关联计划号 = v.[订单编号]
|
||||||
|
), '''') as 异常报警信息,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''装配''
|
||||||
|
) jxz
|
||||||
|
), '''') as 装配进行中,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''质检''
|
||||||
|
) jxz
|
||||||
|
), '''') as 质检进行中 FROM [View_生产订单_MES] v
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT DISTINCT 计划号
|
||||||
|
FROM dbo.YL_质量检验_质检记录
|
||||||
|
WHERE 质检类型 = ''终检''
|
||||||
|
) zj ON v.[订单编号] = zj.计划号
|
||||||
|
LEFT JOIN [dbo].[车间生产管理工艺_零件生产工艺_工艺库] g -- 新增LEFT JOIN
|
||||||
|
ON v.[订单编号] = g.订单编号
|
||||||
|
AND v.[订单行号] = g.工艺顺序
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) as 装配工时,max(gs.工序说明) as 装配工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zp ON v.[订单编号] = zp.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) as 质检工时,max(gs.工序说明) as 质检工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zj1 ON v.[订单编号] = zj1.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) as 合同装配工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzp ON v.[合同号] = htzp.合同号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) as 合同质检工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzj ON v.[合同号] = htzj.合同号
|
||||||
|
left join SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
|
||||||
|
on v.合同号 = s.项目号 and v.物料编号 = s.物料号'
|
||||||
|
|
||||||
|
if(@订单号>0)set @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+Convert(VARCHAR(10),@订单号)
|
||||||
|
if(@合同号<>'')set @selectStrWhere=@selectStrWhere + ' and v.[合同号] like ''%'+@合同号+'%'''
|
||||||
|
if(@产品编码<>'')set @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%'''
|
||||||
|
if(@产品名称<>'')set @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%'''
|
||||||
|
if(@辅助配件 = '不含')set @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%'''
|
||||||
|
if(@工序名称<>'')set @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+''''
|
||||||
|
if(@要求完工日期1 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+''''
|
||||||
|
if(@要求完工日期2 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+''''
|
||||||
|
if(@计划开始 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+''''
|
||||||
|
if(@计划完成 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+''''
|
||||||
|
if(@排产状态='未完成')set @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0'
|
||||||
|
else if(@排产状态='已完成')set @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1'
|
||||||
|
if(@物料类型='自制件') set @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否'''
|
||||||
|
if(@物料类型='装配件') set @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否'''
|
||||||
|
if(@指派对象<>'全部') set @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))'
|
||||||
|
set @selectStrWhere = @selectStrWhere+ 'ORDER BY
|
||||||
|
CASE WHEN 齐套时间 IS NULL THEN 1 ELSE 0 END,
|
||||||
|
齐套时间,计划开始时间 '
|
||||||
|
set @selectStr=@selectStr+@selectStrWhere
|
||||||
|
print @selectStr
|
||||||
|
EXEC sp_executesql @selectStr
|
||||||
|
END
|
||||||
210
db_backups/计划排产_阀类任务查询_导出_alter_match_page_20260618_103122.sql
Normal file
210
db_backups/计划排产_阀类任务查询_导出_alter_match_page_20260618_103122.sql
Normal file
@@ -0,0 +1,210 @@
|
|||||||
|
ALTER PROCEDURE [dbo].[计划排产_阀类任务查询_导出]
|
||||||
|
@订单号 int=0,
|
||||||
|
@物料类型 nvarchar(50)='', --自制件、装配件
|
||||||
|
@合同号 nvarchar(50)='',
|
||||||
|
@产品编码 nvarchar(50)='',
|
||||||
|
@产品名称 nvarchar(50)='',
|
||||||
|
@工序名称 nvarchar(50)='',
|
||||||
|
@要求完工日期1 nvarchar(50)='',
|
||||||
|
@要求完工日期2 nvarchar(50)='',
|
||||||
|
@计划开始 nvarchar(50)='',
|
||||||
|
@计划完成 nvarchar(50)='',
|
||||||
|
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
|
||||||
|
@指派对象 nvarchar(50)='全部',
|
||||||
|
@辅助配件 nvarchar(50)='不含'
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
SET NOCOUNT ON;
|
||||||
|
|
||||||
|
SELECT '阀类任务_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype;
|
||||||
|
|
||||||
|
SELECT 256*12 AS 发料齐套,
|
||||||
|
256*18 AS 计划开始,
|
||||||
|
256*12 AS 派工时间,
|
||||||
|
256*8 AS 齐套,
|
||||||
|
256*14 AS 销售订单,
|
||||||
|
256*10 AS 生产订单,
|
||||||
|
256*24 AS 物料编码,
|
||||||
|
256*24 AS 物料名称,
|
||||||
|
256*10 AS 计划数,
|
||||||
|
256*20 AS 二次派工,
|
||||||
|
256*14 AS 预计送检日期,
|
||||||
|
256*14 AS 销售要求日期,
|
||||||
|
256*14 AS 发货要求日期,
|
||||||
|
256*40 AS 异常报警信息,
|
||||||
|
256*40 AS 装配进行中,
|
||||||
|
256*40 AS 质检进行中,
|
||||||
|
256*14 AS 任务装配工时,
|
||||||
|
256*14 AS 任务质检工时,
|
||||||
|
256*14 AS 合同装配工时,
|
||||||
|
256*14 AS 合同质检工时,
|
||||||
|
256*24 AS 装配工序说明,
|
||||||
|
256*24 AS 质检工序说明,
|
||||||
|
256*14 AS 要求完工日期,
|
||||||
|
256*12 AS 工序名称,
|
||||||
|
256*10 AS 计划号,
|
||||||
|
256*18 AS 指派对象,
|
||||||
|
256*12 AS 指派数量,
|
||||||
|
256*10 AS 优先级,
|
||||||
|
256*20 AS 未完成说明,
|
||||||
|
256*20 AS 派工特殊备注,
|
||||||
|
256*14 AS 占用情况,
|
||||||
|
256*14 AS 最后编辑人,
|
||||||
|
256*20 AS 最后编辑时间;
|
||||||
|
|
||||||
|
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 发货要求日期,
|
||||||
|
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 指派对象,
|
||||||
|
0 AS 指派数量,
|
||||||
|
0 AS 优先级,
|
||||||
|
0 AS 未完成说明,
|
||||||
|
0 AS 派工特殊备注,
|
||||||
|
0 AS 占用情况,
|
||||||
|
0 AS 最后编辑人,
|
||||||
|
0 AS 最后编辑时间;
|
||||||
|
|
||||||
|
DECLARE @selectStr nvarchar(max);
|
||||||
|
DECLARE @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 not like ''%系统%'' and isnull(任务状态,0)<4';
|
||||||
|
|
||||||
|
IF(@物料类型='自制件')
|
||||||
|
SET @selectStr='
|
||||||
|
SELECT
|
||||||
|
CONVERT(varchar(10), v.齐套时间, 120) AS 发料齐套,
|
||||||
|
CONVERT(varchar(10), v.计划开始时间, 120) AS 计划开始,
|
||||||
|
CONVERT(varchar(10), v.派工时间, 120) AS 派工时间,
|
||||||
|
CASE WHEN v.齐套 = 1 THEN ''是'' ELSE ''否'' END AS 齐套,
|
||||||
|
v.[合同号] AS 销售订单,
|
||||||
|
v.[订单编号] AS 生产订单,
|
||||||
|
v.[物料编号] AS 物料编码,
|
||||||
|
v.[物料描述] AS 物料名称,
|
||||||
|
TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS varchar(30)))) AS 计划数,
|
||||||
|
[二次派工] AS 二次派工,
|
||||||
|
CONVERT(varchar(10), DATEADD(DAY, 3, CONVERT(date, v.齐套时间)), 120) AS 预计送检日期,
|
||||||
|
CONVERT(varchar(10), s.交货日期理论齐套日期, 120) AS 销售要求日期,
|
||||||
|
CONVERT(varchar(10), v.要求发货日期, 120) AS 发货要求日期,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
|
||||||
|
FROM [YL_MESDB].[dbo].[流程表] lc
|
||||||
|
WHERE lc.已关联计划号 = v.[订单编号]
|
||||||
|
), '''') AS 异常报警信息,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''装配''
|
||||||
|
) jxz
|
||||||
|
), '''') AS 装配进行中,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''质检''
|
||||||
|
) jxz
|
||||||
|
), '''') AS 质检进行中,
|
||||||
|
CAST(ISNULL(zp.装配工时, 0) / 60.0 AS decimal(18,2)) AS 任务装配工时,
|
||||||
|
CAST(ISNULL(zj1.质检工时, 0) / 60.0 AS decimal(18,2)) AS 任务质检工时,
|
||||||
|
CAST(ISNULL(htzp.合同装配工时, 0) / 60.0 AS decimal(18,2)) AS 合同装配工时,
|
||||||
|
CAST(ISNULL(htzj.合同质检工时, 0) / 60.0 AS decimal(18,2)) AS 合同质检工时,
|
||||||
|
ISNULL(zp.装配工序说明, '''') AS 装配工序说明,
|
||||||
|
ISNULL(zj1.质检工序说明, '''') AS 质检工序说明,
|
||||||
|
CONVERT(varchar(10), [计划完成], 120) AS 要求完工日期,
|
||||||
|
[工序名称] AS 工序名称,
|
||||||
|
v.计划号 AS 计划号,
|
||||||
|
指派对象 AS 指派对象,
|
||||||
|
TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS varchar(30)))) AS 指派数量,
|
||||||
|
[优先级] AS 优先级,
|
||||||
|
[未完成说明] AS 未完成说明,
|
||||||
|
[派工特殊说明] AS 派工特殊备注,
|
||||||
|
[占用情况] AS 占用情况,
|
||||||
|
[最后编辑人] AS 最后编辑人,
|
||||||
|
CONVERT(varchar(19), [最后编辑时间], 120) AS 最后编辑时间
|
||||||
|
FROM [View_生产订单_MES] v
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) AS 装配工时, MAX(gs.工序说明) AS 装配工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zp ON v.[订单编号] = zp.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) AS 质检工时, MAX(gs.工序说明) AS 质检工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zj1 ON v.[订单编号] = zj1.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) AS 合同装配工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzp ON v.[合同号] = htzp.合同号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) AS 合同质检工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzj ON v.[合同号] = htzj.合同号
|
||||||
|
LEFT JOIN SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
|
||||||
|
ON v.合同号 = s.项目号 AND v.物料编号 = s.物料号';
|
||||||
|
|
||||||
|
IF(@订单号>0) SET @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+CONVERT(varchar(10),@订单号);
|
||||||
|
IF(@合同号<>'') SET @selectStrWhere=@selectStrWhere + ' and [合同号] like ''%'+@合同号+'%''';
|
||||||
|
IF(@产品编码<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%''';
|
||||||
|
IF(@产品名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%''';
|
||||||
|
IF(@辅助配件 = '不含') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%''';
|
||||||
|
IF(@工序名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+'''';
|
||||||
|
IF(@要求完工日期1 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+'''';
|
||||||
|
IF(@要求完工日期2 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+'''';
|
||||||
|
IF(@计划开始 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+'''';
|
||||||
|
IF(@计划完成 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+'''';
|
||||||
|
IF(@排产状态='未完成') SET @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0';
|
||||||
|
ELSE IF(@排产状态='已完成') SET @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1';
|
||||||
|
IF(@物料类型='自制件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否''';
|
||||||
|
IF(@物料类型='装配件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否''';
|
||||||
|
IF(@指派对象<>'全部') SET @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))';
|
||||||
|
|
||||||
|
SET @selectStrWhere = @selectStrWhere + ' ORDER BY CASE WHEN 齐套时间 IS NULL THEN 1 ELSE 0 END, 齐套时间, 计划开始时间';
|
||||||
|
SET @selectStr=@selectStr+@selectStrWhere;
|
||||||
|
PRINT @selectStr;
|
||||||
|
EXEC sp_executesql @selectStr;
|
||||||
|
END
|
||||||
214
db_backups/计划排产_阀类任务查询_导出_alter_sap_min_date_20260618_143447.sql
Normal file
214
db_backups/计划排产_阀类任务查询_导出_alter_sap_min_date_20260618_143447.sql
Normal file
@@ -0,0 +1,214 @@
|
|||||||
|
ALTER PROCEDURE [dbo].[计划排产_阀类任务查询_导出]
|
||||||
|
@订单号 int=0,
|
||||||
|
@物料类型 nvarchar(50)='', --自制件、装配件
|
||||||
|
@合同号 nvarchar(50)='',
|
||||||
|
@产品编码 nvarchar(50)='',
|
||||||
|
@产品名称 nvarchar(50)='',
|
||||||
|
@工序名称 nvarchar(50)='',
|
||||||
|
@要求完工日期1 nvarchar(50)='',
|
||||||
|
@要求完工日期2 nvarchar(50)='',
|
||||||
|
@计划开始 nvarchar(50)='',
|
||||||
|
@计划完成 nvarchar(50)='',
|
||||||
|
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
|
||||||
|
@指派对象 nvarchar(50)='全部',
|
||||||
|
@辅助配件 nvarchar(50)='不含'
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
SET NOCOUNT ON;
|
||||||
|
|
||||||
|
SELECT '阀类任务_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype;
|
||||||
|
|
||||||
|
SELECT 256*12 AS 发料齐套,
|
||||||
|
256*18 AS 计划开始,
|
||||||
|
256*12 AS 派工时间,
|
||||||
|
256*8 AS 齐套,
|
||||||
|
256*14 AS 销售订单,
|
||||||
|
256*10 AS 生产订单,
|
||||||
|
256*24 AS 物料编码,
|
||||||
|
256*24 AS 物料名称,
|
||||||
|
256*10 AS 计划数,
|
||||||
|
256*20 AS 二次派工,
|
||||||
|
256*14 AS 预计送检日期,
|
||||||
|
256*14 AS 销售要求日期,
|
||||||
|
256*14 AS 发货要求日期,
|
||||||
|
256*40 AS 异常报警信息,
|
||||||
|
256*40 AS 装配进行中,
|
||||||
|
256*40 AS 质检进行中,
|
||||||
|
256*14 AS 任务装配工时,
|
||||||
|
256*14 AS 任务质检工时,
|
||||||
|
256*14 AS 合同装配工时,
|
||||||
|
256*14 AS 合同质检工时,
|
||||||
|
256*24 AS 装配工序说明,
|
||||||
|
256*24 AS 质检工序说明,
|
||||||
|
256*14 AS 要求完工日期,
|
||||||
|
256*12 AS 工序名称,
|
||||||
|
256*10 AS 计划号,
|
||||||
|
256*18 AS 指派对象,
|
||||||
|
256*12 AS 指派数量,
|
||||||
|
256*10 AS 优先级,
|
||||||
|
256*20 AS 未完成说明,
|
||||||
|
256*20 AS 派工特殊备注,
|
||||||
|
256*14 AS 占用情况,
|
||||||
|
256*14 AS 最后编辑人,
|
||||||
|
256*20 AS 最后编辑时间;
|
||||||
|
|
||||||
|
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 发货要求日期,
|
||||||
|
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 指派对象,
|
||||||
|
0 AS 指派数量,
|
||||||
|
0 AS 优先级,
|
||||||
|
0 AS 未完成说明,
|
||||||
|
0 AS 派工特殊备注,
|
||||||
|
0 AS 占用情况,
|
||||||
|
0 AS 最后编辑人,
|
||||||
|
0 AS 最后编辑时间;
|
||||||
|
|
||||||
|
DECLARE @selectStr nvarchar(max);
|
||||||
|
DECLARE @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 not like ''%系统%'' and isnull(任务状态,0)<4';
|
||||||
|
|
||||||
|
IF(@物料类型='自制件')
|
||||||
|
SET @selectStr='
|
||||||
|
SELECT
|
||||||
|
CONVERT(varchar(10), v.齐套时间, 120) AS 发料齐套,
|
||||||
|
CONVERT(varchar(10), v.计划开始时间, 120) AS 计划开始,
|
||||||
|
CONVERT(varchar(10), v.派工时间, 120) AS 派工时间,
|
||||||
|
CASE WHEN v.齐套 = 1 THEN ''是'' ELSE ''否'' END AS 齐套,
|
||||||
|
v.[合同号] AS 销售订单,
|
||||||
|
v.[订单编号] AS 生产订单,
|
||||||
|
v.[物料编号] AS 物料编码,
|
||||||
|
v.[物料描述] AS 物料名称,
|
||||||
|
TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS varchar(30)))) AS 计划数,
|
||||||
|
[二次派工] AS 二次派工,
|
||||||
|
CONVERT(varchar(10), ISNULL(v.预计送检日期, DATEADD(DAY, 3, v.齐套时间)), 120) AS 预计送检日期,
|
||||||
|
CONVERT(varchar(10), ISNULL(v.销售要求日期, s.交货日期理论齐套日期), 120) AS 销售要求日期,
|
||||||
|
CONVERT(varchar(10), v.要求发货日期, 120) AS 发货要求日期,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
|
||||||
|
FROM [YL_MESDB].[dbo].[流程表] lc
|
||||||
|
WHERE lc.已关联计划号 = v.[订单编号]
|
||||||
|
), '''') AS 异常报警信息,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''装配''
|
||||||
|
) jxz
|
||||||
|
), '''') AS 装配进行中,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''质检''
|
||||||
|
) jxz
|
||||||
|
), '''') AS 质检进行中,
|
||||||
|
CAST(ISNULL(zp.装配工时, 0) / 3600.0 AS decimal(18,2)) AS 任务装配工时,
|
||||||
|
CAST(ISNULL(zj1.质检工时, 0) / 3600.0 AS decimal(18,2)) AS 任务质检工时,
|
||||||
|
CAST(ISNULL(htzp.合同装配工时, 0) / 3600.0 AS decimal(18,2)) AS 合同装配工时,
|
||||||
|
CAST(ISNULL(htzj.合同质检工时, 0) / 3600.0 AS decimal(18,2)) AS 合同质检工时,
|
||||||
|
ISNULL(zp.装配工序说明, '''') AS 装配工序说明,
|
||||||
|
ISNULL(zj1.质检工序说明, '''') AS 质检工序说明,
|
||||||
|
CONVERT(varchar(10), [计划完成], 120) AS 要求完工日期,
|
||||||
|
[工序名称] AS 工序名称,
|
||||||
|
v.计划号 AS 计划号,
|
||||||
|
指派对象 AS 指派对象,
|
||||||
|
TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS varchar(30)))) AS 指派数量,
|
||||||
|
[优先级] AS 优先级,
|
||||||
|
[未完成说明] AS 未完成说明,
|
||||||
|
[派工特殊说明] AS 派工特殊备注,
|
||||||
|
[占用情况] AS 占用情况,
|
||||||
|
[最后编辑人] AS 最后编辑人,
|
||||||
|
CONVERT(varchar(19), [最后编辑时间], 120) AS 最后编辑时间
|
||||||
|
FROM [View_生产订单_MES] v
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) AS 装配工时, MAX(gs.工序说明) AS 装配工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zp ON v.[订单编号] = zp.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) AS 质检工时, MAX(gs.工序说明) AS 质检工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zj1 ON v.[订单编号] = zj1.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) AS 合同装配工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzp ON v.[合同号] = htzp.合同号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) AS 合同质检工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzj ON v.[合同号] = htzj.合同号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT 项目号, 物料号, MIN(交货日期理论齐套日期) as 交货日期理论齐套日期
|
||||||
|
FROM SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2
|
||||||
|
GROUP BY 项目号, 物料号
|
||||||
|
) s
|
||||||
|
ON v.合同号 = s.项目号 AND v.物料编号 = s.物料号';
|
||||||
|
|
||||||
|
IF(@订单号>0) SET @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+CONVERT(varchar(10),@订单号);
|
||||||
|
IF(@合同号<>'') SET @selectStrWhere=@selectStrWhere + ' and [合同号] like ''%'+@合同号+'%''';
|
||||||
|
IF(@产品编码<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%''';
|
||||||
|
IF(@产品名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%''';
|
||||||
|
IF(@辅助配件 = '不含') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%''';
|
||||||
|
IF(@工序名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+'''';
|
||||||
|
IF(@要求完工日期1 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+'''';
|
||||||
|
IF(@要求完工日期2 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+'''';
|
||||||
|
IF(@计划开始 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+'''';
|
||||||
|
IF(@计划完成 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+'''';
|
||||||
|
IF(@排产状态='未完成') SET @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0';
|
||||||
|
ELSE IF(@排产状态='已完成') SET @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1';
|
||||||
|
IF(@物料类型='自制件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否''';
|
||||||
|
IF(@物料类型='装配件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否''';
|
||||||
|
IF(@指派对象<>'全部') SET @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))';
|
||||||
|
|
||||||
|
SET @selectStrWhere = @selectStrWhere + ' ORDER BY CASE WHEN 齐套时间 IS NULL THEN 1 ELSE 0 END, 齐套时间, 计划开始时间';
|
||||||
|
SET @selectStr=@selectStr+@selectStrWhere;
|
||||||
|
PRINT @selectStr;
|
||||||
|
EXEC sp_executesql @selectStr;
|
||||||
|
END
|
||||||
@@ -0,0 +1,210 @@
|
|||||||
|
ALTER PROCEDURE [dbo].[计划排产_阀类任务查询_导出]
|
||||||
|
@订单号 int=0,
|
||||||
|
@物料类型 nvarchar(50)='', --自制件、装配件
|
||||||
|
@合同号 nvarchar(50)='',
|
||||||
|
@产品编码 nvarchar(50)='',
|
||||||
|
@产品名称 nvarchar(50)='',
|
||||||
|
@工序名称 nvarchar(50)='',
|
||||||
|
@要求完工日期1 nvarchar(50)='',
|
||||||
|
@要求完工日期2 nvarchar(50)='',
|
||||||
|
@计划开始 nvarchar(50)='',
|
||||||
|
@计划完成 nvarchar(50)='',
|
||||||
|
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
|
||||||
|
@指派对象 nvarchar(50)='全部',
|
||||||
|
@辅助配件 nvarchar(50)='不含'
|
||||||
|
AS
|
||||||
|
BEGIN
|
||||||
|
SET NOCOUNT ON;
|
||||||
|
|
||||||
|
SELECT '阀类任务_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype;
|
||||||
|
|
||||||
|
SELECT 256*12 AS 发料齐套,
|
||||||
|
256*18 AS 计划开始,
|
||||||
|
256*12 AS 派工时间,
|
||||||
|
256*8 AS 齐套,
|
||||||
|
256*14 AS 销售订单,
|
||||||
|
256*10 AS 生产订单,
|
||||||
|
256*24 AS 物料编码,
|
||||||
|
256*24 AS 物料名称,
|
||||||
|
256*10 AS 计划数,
|
||||||
|
256*20 AS 二次派工,
|
||||||
|
256*14 AS 预计送检日期,
|
||||||
|
256*14 AS 销售要求日期,
|
||||||
|
256*14 AS 发货要求日期,
|
||||||
|
256*40 AS 异常报警信息,
|
||||||
|
256*40 AS 装配进行中,
|
||||||
|
256*40 AS 质检进行中,
|
||||||
|
256*14 AS 任务装配工时,
|
||||||
|
256*14 AS 任务质检工时,
|
||||||
|
256*14 AS 合同装配工时,
|
||||||
|
256*14 AS 合同质检工时,
|
||||||
|
256*24 AS 装配工序说明,
|
||||||
|
256*24 AS 质检工序说明,
|
||||||
|
256*14 AS 要求完工日期,
|
||||||
|
256*12 AS 工序名称,
|
||||||
|
256*10 AS 计划号,
|
||||||
|
256*18 AS 指派对象,
|
||||||
|
256*12 AS 指派数量,
|
||||||
|
256*10 AS 优先级,
|
||||||
|
256*20 AS 未完成说明,
|
||||||
|
256*20 AS 派工特殊备注,
|
||||||
|
256*14 AS 占用情况,
|
||||||
|
256*14 AS 最后编辑人,
|
||||||
|
256*20 AS 最后编辑时间;
|
||||||
|
|
||||||
|
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 发货要求日期,
|
||||||
|
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 指派对象,
|
||||||
|
0 AS 指派数量,
|
||||||
|
0 AS 优先级,
|
||||||
|
0 AS 未完成说明,
|
||||||
|
0 AS 派工特殊备注,
|
||||||
|
0 AS 占用情况,
|
||||||
|
0 AS 最后编辑人,
|
||||||
|
0 AS 最后编辑时间;
|
||||||
|
|
||||||
|
DECLARE @selectStr nvarchar(max);
|
||||||
|
DECLARE @selectStrWhere nvarchar(max)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 not like ''%系统%'' and isnull(任务状态,0)<4';
|
||||||
|
|
||||||
|
IF(@物料类型='自制件')
|
||||||
|
SET @selectStr='
|
||||||
|
SELECT
|
||||||
|
CONVERT(varchar(10), v.齐套时间, 120) AS 发料齐套,
|
||||||
|
CONVERT(varchar(10), v.计划开始时间, 120) AS 计划开始,
|
||||||
|
CONVERT(varchar(10), v.派工时间, 120) AS 派工时间,
|
||||||
|
CASE WHEN v.齐套 = 1 THEN ''是'' ELSE ''否'' END AS 齐套,
|
||||||
|
v.[合同号] AS 销售订单,
|
||||||
|
v.[订单编号] AS 生产订单,
|
||||||
|
v.[物料编号] AS 物料编码,
|
||||||
|
v.[物料描述] AS 物料名称,
|
||||||
|
TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS varchar(30)))) AS 计划数,
|
||||||
|
[二次派工] AS 二次派工,
|
||||||
|
CONVERT(varchar(10), ISNULL(v.预计送检日期, DATEADD(DAY, 3, v.齐套时间)), 120) AS 预计送检日期,
|
||||||
|
CONVERT(varchar(10), ISNULL(v.销售要求日期, s.交货日期理论齐套日期), 120) AS 销售要求日期,
|
||||||
|
CONVERT(varchar(10), v.要求发货日期, 120) AS 发货要求日期,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), lc.流程描述), N'','') WITHIN GROUP (ORDER BY lc.流程ID)
|
||||||
|
FROM [YL_MESDB].[dbo].[流程表] lc
|
||||||
|
WHERE lc.已关联计划号 = v.[订单编号]
|
||||||
|
), '''') AS 异常报警信息,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''装配''
|
||||||
|
) jxz
|
||||||
|
), '''') AS 装配进行中,
|
||||||
|
ISNULL((
|
||||||
|
SELECT STRING_AGG(CONVERT(nvarchar(max), jxz.UserName + '': '' + CONVERT(varchar(19), jxz.StartTime, 120)), N'','') WITHIN GROUP (ORDER BY jxz.StartTime DESC)
|
||||||
|
FROM (
|
||||||
|
SELECT DISTINCT t.操作人 AS UserName, t.开始时间 AS StartTime
|
||||||
|
FROM [dbo].[YL_加工中心_操作记录表] t
|
||||||
|
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] pt ON t.TaskAID = pt.AID
|
||||||
|
INNER JOIN [YL_MESDB].[dbo].[登录基础数据_人员信息] ry ON t.操作人 = ry.Personnel_Name
|
||||||
|
WHERE t.操作类别 = ''开始加工''
|
||||||
|
AND t.结束时间 IS NULL
|
||||||
|
AND t.操作数值 IS NOT NULL
|
||||||
|
AND pt.订单编号 = v.[订单编号]
|
||||||
|
AND ry.班组 = ''质检''
|
||||||
|
) jxz
|
||||||
|
), '''') AS 质检进行中,
|
||||||
|
CAST(ISNULL(zp.装配工时, 0) / 3600.0 AS decimal(18,2)) AS 任务装配工时,
|
||||||
|
CAST(ISNULL(zj1.质检工时, 0) / 3600.0 AS decimal(18,2)) AS 任务质检工时,
|
||||||
|
CAST(ISNULL(htzp.合同装配工时, 0) / 3600.0 AS decimal(18,2)) AS 合同装配工时,
|
||||||
|
CAST(ISNULL(htzj.合同质检工时, 0) / 3600.0 AS decimal(18,2)) AS 合同质检工时,
|
||||||
|
ISNULL(zp.装配工序说明, '''') AS 装配工序说明,
|
||||||
|
ISNULL(zj1.质检工序说明, '''') AS 质检工序说明,
|
||||||
|
CONVERT(varchar(10), [计划完成], 120) AS 要求完工日期,
|
||||||
|
[工序名称] AS 工序名称,
|
||||||
|
v.计划号 AS 计划号,
|
||||||
|
指派对象 AS 指派对象,
|
||||||
|
TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS varchar(30)))) AS 指派数量,
|
||||||
|
[优先级] AS 优先级,
|
||||||
|
[未完成说明] AS 未完成说明,
|
||||||
|
[派工特殊说明] AS 派工特殊备注,
|
||||||
|
[占用情况] AS 占用情况,
|
||||||
|
[最后编辑人] AS 最后编辑人,
|
||||||
|
CONVERT(varchar(19), [最后编辑时间], 120) AS 最后编辑时间
|
||||||
|
FROM [View_生产订单_MES] v
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) AS 装配工时, MAX(gs.工序说明) AS 装配工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zp ON v.[订单编号] = zp.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.订单号, SUM(gs.总时长) AS 质检工时, MAX(gs.工序说明) AS 质检工序说明
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.订单号
|
||||||
|
) zj1 ON v.[订单编号] = zj1.订单号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) AS 合同装配工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''装配''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzp ON v.[合同号] = htzp.合同号
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT gs.合同号, SUM(gs.总时长) AS 合同质检工时
|
||||||
|
FROM [dbo].[View_生产工时视图] gs
|
||||||
|
INNER JOIN [dbo].[登录基础数据_人员信息] ry ON gs.操作人 = ry.Personnel_Name
|
||||||
|
WHERE ry.班组 = ''质检''
|
||||||
|
GROUP BY gs.合同号
|
||||||
|
) htzj ON v.[合同号] = htzj.合同号
|
||||||
|
LEFT JOIN SAP.SBO_YL.dbo.UBT_MES_ORDROPEN2 s
|
||||||
|
ON v.合同号 = s.项目号 AND v.物料编号 = s.物料号';
|
||||||
|
|
||||||
|
IF(@订单号>0) SET @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+CONVERT(varchar(10),@订单号);
|
||||||
|
IF(@合同号<>'') SET @selectStrWhere=@selectStrWhere + ' and [合同号] like ''%'+@合同号+'%''';
|
||||||
|
IF(@产品编码<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%''';
|
||||||
|
IF(@产品名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%''';
|
||||||
|
IF(@辅助配件 = '不含') SET @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%''';
|
||||||
|
IF(@工序名称<>'') SET @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+'''';
|
||||||
|
IF(@要求完工日期1 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+'''';
|
||||||
|
IF(@要求完工日期2 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+'''';
|
||||||
|
IF(@计划开始 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+'''';
|
||||||
|
IF(@计划完成 <>'') SET @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+'''';
|
||||||
|
IF(@排产状态='未完成') SET @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0';
|
||||||
|
ELSE IF(@排产状态='已完成') SET @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1';
|
||||||
|
IF(@物料类型='自制件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否''';
|
||||||
|
IF(@物料类型='装配件') SET @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否''';
|
||||||
|
IF(@指派对象<>'全部') SET @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))';
|
||||||
|
|
||||||
|
SET @selectStrWhere = @selectStrWhere + ' ORDER BY CASE WHEN 齐套时间 IS NULL THEN 1 ELSE 0 END, 齐套时间, 计划开始时间';
|
||||||
|
SET @selectStr=@selectStr+@selectStrWhere;
|
||||||
|
PRINT @selectStr;
|
||||||
|
EXEC sp_executesql @selectStr;
|
||||||
|
END
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
|
||||||
|
CREATE PROCEDURE [dbo].[计划排产_阀类任务查询_导出]
|
||||||
|
@订单号 int=0,
|
||||||
|
@物料类型 nvarchar(50)='', --自制件、装配件
|
||||||
|
@合同号 nvarchar(50)='',
|
||||||
|
@产品编码 nvarchar(50)='',
|
||||||
|
@产品名称 nvarchar(50)='',
|
||||||
|
@工序名称 nvarchar(50)='',
|
||||||
|
@要求完工日期1 nvarchar(50)='',
|
||||||
|
@要求完工日期2 nvarchar(50)='',
|
||||||
|
@计划开始 nvarchar(50)='',
|
||||||
|
@计划完成 nvarchar(50)='',
|
||||||
|
@排产状态 nvarchar(50)='全部' , --全部,已完成、未完成
|
||||||
|
@指派对象 nvarchar(50)='全部',
|
||||||
|
@辅助配件 nvarchar(50)='不含'
|
||||||
|
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*20 AS 派工时间, 256*10 AS 齐套, 256*10 AS 合同号,
|
||||||
|
256*10 AS 订单号, 256*40 AS 产品编码, 256*20 AS 产品名称, 256*10 AS 计划数量, 256*10 AS 二次派工, 256*20 AS 预计送检时间, 256*20 AS 销售要求日期,
|
||||||
|
256*20 AS 要求发货日期
|
||||||
|
|
||||||
|
-- 是否计算列
|
||||||
|
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 要求发货日期
|
||||||
|
|
||||||
|
-- 导出数据:每行都填满完整信息
|
||||||
|
|
||||||
|
declare @selectStr nvarchar(4000)
|
||||||
|
declare @selectStrWhere nvarchar(4000)=' where [物料类型]=''pit_Resource'' and [自制件属性] like ''%装配%'' and 物料描述 not like ''%系统%'' and isnull(任务状态,0)<4'
|
||||||
|
|
||||||
|
if(@物料类型='自制件') --自制件
|
||||||
|
|
||||||
|
set @selectStr='
|
||||||
|
SELECT v.齐套时间,计划开始时间,v.派工时间,v.齐套,[合同号],v.[订单编号] as 订单号,[物料编号] as 产品编码,[物料描述] as 产品名称,TRIM(''.'' FROM TRIM(''0'' FROM CAST(v.[计划数量] AS VARCHAR(30)))) AS 计划数量,
|
||||||
|
[二次派工],DATEADD(DAY, 3, CONVERT(DATE, v.齐套时间)),1,要求发货日期
|
||||||
|
FROM [View_生产订单_MES] v'
|
||||||
|
if(@订单号>0)set @selectStrWhere=@selectStrWhere + ' and v.[订单编号]='+Convert(VARCHAR(10),@订单号)
|
||||||
|
if(@合同号<>'')set @selectStrWhere=@selectStrWhere + ' and [合同号] like ''%'+@合同号+'%'''
|
||||||
|
if(@产品编码<>'')set @selectStrWhere=@selectStrWhere + ' and [物料编号] like ''%'+@产品编码+'%'''
|
||||||
|
if(@产品名称<>'')set @selectStrWhere=@selectStrWhere + ' and [物料描述] like ''%'+@产品名称+'%'''
|
||||||
|
if(@辅助配件 = '不含')set @selectStrWhere=@selectStrWhere + ' and [物料描述] not like ''%软管总成%'' and [物料描述] not like ''%发货部件%'''
|
||||||
|
if(@工序名称<>'')set @selectStrWhere=@selectStrWhere + ' and [工序名称] = '''+@工序名称+''''
|
||||||
|
if(@要求完工日期1 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] >= '''+@要求完工日期1+''''
|
||||||
|
if(@要求完工日期2 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成] <= '''+@要求完工日期2+''''
|
||||||
|
if(@计划开始 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划开始时间] >= '''+@计划开始+''''
|
||||||
|
if(@计划完成 <>'')set @selectStrWhere=@selectStrWhere + ' and [计划完成时间] <= '''+@计划完成+''''
|
||||||
|
if(@排产状态='未完成')set @selectStrWhere=@selectStrWhere + ' and isnull([排产状态],0) = 0'
|
||||||
|
else if(@排产状态='已完成')set @selectStrWhere=@selectStrWhere + ' and [排产状态] = 1'
|
||||||
|
if(@物料类型='自制件') set @selectStrWhere=@selectStrWhere + ' and [不装配] <> ''否'''
|
||||||
|
if(@物料类型='装配件') set @selectStrWhere=@selectStrWhere + ' and [不装配] = ''否'''
|
||||||
|
if(@指派对象<>'全部') set @selectStrWhere=@selectStrWhere + ' and [指派对象] in (SELECT value FROM STRING_SPLIT('''+@指派对象+''', '',''))'
|
||||||
|
set @selectStrWhere = @selectStrWhere+ 'ORDER BY
|
||||||
|
CASE WHEN 齐套时间 IS NULL THEN 1 ELSE 0 END,
|
||||||
|
齐套时间 '
|
||||||
|
set @selectStr=@selectStr+@selectStrWhere
|
||||||
|
print @selectStr
|
||||||
|
EXEC sp_executesql @selectStr
|
||||||
|
END
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user