Compare commits
11 Commits
39638e9032
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
77d1a97e83 | ||
|
|
b5bc8d7358 | ||
|
|
1e3f9299df | ||
|
|
20c6d587ad | ||
|
|
ab508369c9 | ||
|
|
1a781b02c2 | ||
|
|
134f9d888a | ||
|
|
0bf5f3f704 | ||
|
|
6f9f8fe148 | ||
|
|
6ecd0b5bd5 | ||
|
|
acca29b36b |
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;
|
||||||
}
|
}
|
||||||
</style>
|
.el-table tr{
|
||||||
|
background-color: initial;
|
||||||
|
}
|
||||||
|
</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"/>
|
||||||
|
|||||||
@@ -80,6 +80,12 @@
|
|||||||
{{ scope.row.level === 2 ? scope.row.operator : '' }}
|
{{ scope.row.level === 2 ? scope.row.operator : '' }}
|
||||||
</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" />
|
||||||
|
|
||||||
@@ -161,6 +167,12 @@
|
|||||||
{{ scope.row.level === 3 ? scope.row.processName : '' }}
|
{{ scope.row.level === 3 ? scope.row.processName : '' }}
|
||||||
</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">
|
||||||
@@ -246,6 +258,12 @@
|
|||||||
{{ scope.row.level === 2 ? scope.row.operator : '' }}
|
{{ scope.row.level === 2 ? scope.row.operator : '' }}
|
||||||
</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">
|
||||||
@@ -348,6 +366,12 @@
|
|||||||
{{ scope.row.level === 3 ? scope.row.processName : '' }}
|
{{ scope.row.level === 3 ? scope.row.processName : '' }}
|
||||||
</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">
|
||||||
@@ -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;
|
||||||
@@ -1343,4 +1369,4 @@ button {
|
|||||||
width: 20px;
|
width: 20px;
|
||||||
height: 20px;
|
height: 20px;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -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) {
|
getitemdraw2(row) {
|
||||||
// var pdfSrc = "" + this.downPDF + "" + response.data[0].uid + ".pdf";
|
var param = [];
|
||||||
|
param[0] = ['物料编号', row.零件编码];
|
||||||
// // 1. 先打开对话框
|
var Data = this.CreateData('11', '工艺管理_工艺维护_查看图纸', param);
|
||||||
// this.seeVisible = true;
|
this.ExecDatabase(Data).then(response => {
|
||||||
|
console.log(response)
|
||||||
// // 2. 等待对话框完全渲染(使用 $nextTick 确保 DOM 已更新)
|
if (response.data.length > 0) {
|
||||||
// await this.$nextTick();
|
var pdfSrc =""+this.downPDF+""+ response.data[0].uid+".pdf"
|
||||||
|
|
||||||
// // 3. 等待一小段时间确保对话框内的容器完全渲染
|
window.open(pdfSrc,'_blank')
|
||||||
// setTimeout(async () => {
|
}else {
|
||||||
// try {
|
this.$message.error('未上传图纸');
|
||||||
// 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
|
||||||
@@ -305,4 +314,4 @@ export default {
|
|||||||
background-color: #f56c6c !important;
|
background-color: #f56c6c !important;
|
||||||
color: #000000 !important;
|
color: #000000 !important;
|
||||||
} */
|
} */
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -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.
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 状态 |
|
||||||
|
| 装配报工重复 | 影响工时、任务进度、质检/送检统计 | 修复后继续观察现场数据 |
|
||||||
|
| 加急任务未突出显示 | 质检处理优先级不明确 | 原料退库检已增加加急显示,后续可扩展排序 |
|
||||||
|
| 用户手册仍需继续细化 | 培训时可能仍有页面操作细节不足 | 后续按重点业务页面继续逐页补强 |
|
||||||
File diff suppressed because it is too large
Load Diff
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
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
|
||||||
@@ -0,0 +1,210 @@
|
|||||||
|
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*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,210 @@
|
|||||||
|
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*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
|
||||||
40
db_backups/计划排产_阀类装配任务_修改日期_create_20260618_141211.sql
Normal file
40
db_backups/计划排产_阀类装配任务_修改日期_create_20260618_141211.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;
|
||||||
206
tools/create_dev_plan_docx.ps1
Normal file
206
tools/create_dev_plan_docx.ps1
Normal file
@@ -0,0 +1,206 @@
|
|||||||
|
param(
|
||||||
|
[Parameter(Mandatory = $true)]
|
||||||
|
[string]$PlanMarkdown,
|
||||||
|
|
||||||
|
[Parameter(Mandatory = $true)]
|
||||||
|
[string]$SourceMarkdown,
|
||||||
|
|
||||||
|
[Parameter(Mandatory = $true)]
|
||||||
|
[string]$OutputDocx
|
||||||
|
)
|
||||||
|
|
||||||
|
$ErrorActionPreference = 'Stop'
|
||||||
|
|
||||||
|
function Escape-XmlText {
|
||||||
|
param([AllowNull()][string]$Text)
|
||||||
|
if ($null -eq $Text) { return '' }
|
||||||
|
return [System.Security.SecurityElement]::Escape($Text)
|
||||||
|
}
|
||||||
|
|
||||||
|
function Add-Paragraph {
|
||||||
|
param(
|
||||||
|
[System.Collections.Generic.List[string]]$Parts,
|
||||||
|
[string]$Text,
|
||||||
|
[string]$Style = $null
|
||||||
|
)
|
||||||
|
$styleXml = ''
|
||||||
|
if ($Style) {
|
||||||
|
$styleXml = "<w:pPr><w:pStyle w:val=`"$Style`"/></w:pPr>"
|
||||||
|
}
|
||||||
|
$Parts.Add("<w:p>$styleXml<w:r><w:t xml:space=`"preserve`">$(Escape-XmlText $Text)</w:t></w:r></w:p>")
|
||||||
|
}
|
||||||
|
|
||||||
|
function Add-Table {
|
||||||
|
param(
|
||||||
|
[System.Collections.Generic.List[string]]$Parts,
|
||||||
|
[string[]]$Headers,
|
||||||
|
[object[]]$Rows
|
||||||
|
)
|
||||||
|
$tbl = New-Object System.Text.StringBuilder
|
||||||
|
[void]$tbl.Append('<w:tbl>')
|
||||||
|
[void]$tbl.Append('<w:tblPr><w:tblStyle w:val="TableGrid"/><w:tblW w:w="0" w:type="auto"/><w:tblBorders><w:top w:val="single" w:sz="4" w:space="0" w:color="auto"/><w:left w:val="single" w:sz="4" w:space="0" w:color="auto"/><w:bottom w:val="single" w:sz="4" w:space="0" w:color="auto"/><w:right w:val="single" w:sz="4" w:space="0" w:color="auto"/><w:insideH w:val="single" w:sz="4" w:space="0" w:color="auto"/><w:insideV w:val="single" w:sz="4" w:space="0" w:color="auto"/></w:tblBorders></w:tblPr>')
|
||||||
|
[void]$tbl.Append('<w:tr>')
|
||||||
|
foreach ($h in $Headers) {
|
||||||
|
[void]$tbl.Append('<w:tc><w:tcPr><w:shd w:val="clear" w:color="auto" w:fill="D9EAF7"/></w:tcPr><w:p><w:r><w:rPr><w:b/></w:rPr><w:t xml:space="preserve">')
|
||||||
|
[void]$tbl.Append((Escape-XmlText $h))
|
||||||
|
[void]$tbl.Append('</w:t></w:r></w:p></w:tc>')
|
||||||
|
}
|
||||||
|
[void]$tbl.Append('</w:tr>')
|
||||||
|
foreach ($row in $Rows) {
|
||||||
|
[void]$tbl.Append('<w:tr>')
|
||||||
|
foreach ($cell in $row) {
|
||||||
|
[void]$tbl.Append('<w:tc><w:p><w:r><w:t xml:space="preserve">')
|
||||||
|
[void]$tbl.Append((Escape-XmlText ([string]$cell)))
|
||||||
|
[void]$tbl.Append('</w:t></w:r></w:p></w:tc>')
|
||||||
|
}
|
||||||
|
[void]$tbl.Append('</w:tr>')
|
||||||
|
}
|
||||||
|
[void]$tbl.Append('</w:tbl>')
|
||||||
|
$Parts.Add($tbl.ToString())
|
||||||
|
}
|
||||||
|
|
||||||
|
function Flush-TableBuffer {
|
||||||
|
param(
|
||||||
|
[System.Collections.Generic.List[string]]$Parts,
|
||||||
|
[System.Collections.Generic.List[string]]$Buffer
|
||||||
|
)
|
||||||
|
if ($Buffer.Count -lt 2) {
|
||||||
|
foreach ($line in $Buffer) {
|
||||||
|
Add-Paragraph -Parts $Parts -Text $line
|
||||||
|
}
|
||||||
|
$Buffer.Clear()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
$header = $Buffer[0].Trim('|').Split('|') | ForEach-Object { $_.Trim() }
|
||||||
|
$rows = @()
|
||||||
|
for ($i = 2; $i -lt $Buffer.Count; $i++) {
|
||||||
|
$rows += ,($Buffer[$i].Trim('|').Split('|') | ForEach-Object { $_.Trim() })
|
||||||
|
}
|
||||||
|
Add-Table -Parts $Parts -Headers $header -Rows $rows
|
||||||
|
$Buffer.Clear()
|
||||||
|
}
|
||||||
|
|
||||||
|
function Add-MarkdownContent {
|
||||||
|
param(
|
||||||
|
[System.Collections.Generic.List[string]]$Parts,
|
||||||
|
[string]$MarkdownPath
|
||||||
|
)
|
||||||
|
$lines = [System.IO.File]::ReadAllLines($MarkdownPath, [System.Text.Encoding]::UTF8)
|
||||||
|
$tableBuffer = New-Object System.Collections.Generic.List[string]
|
||||||
|
$inCode = $false
|
||||||
|
|
||||||
|
foreach ($line in $lines) {
|
||||||
|
if ($line.TrimStart().StartsWith('```')) {
|
||||||
|
if ($tableBuffer.Count -gt 0) { Flush-TableBuffer -Parts $Parts -Buffer $tableBuffer }
|
||||||
|
$inCode = -not $inCode
|
||||||
|
Add-Paragraph -Parts $Parts -Text $line -Style 'Code'
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if ($inCode) {
|
||||||
|
Add-Paragraph -Parts $Parts -Text $line -Style 'Code'
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if ($line.TrimStart().StartsWith('|') -and $line.TrimEnd().EndsWith('|')) {
|
||||||
|
$tableBuffer.Add($line)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if ($tableBuffer.Count -gt 0) { Flush-TableBuffer -Parts $Parts -Buffer $tableBuffer }
|
||||||
|
|
||||||
|
if ($line.StartsWith('### ')) {
|
||||||
|
Add-Paragraph -Parts $Parts -Text $line.Substring(4) -Style 'Heading3'
|
||||||
|
} elseif ($line.StartsWith('## ')) {
|
||||||
|
Add-Paragraph -Parts $Parts -Text $line.Substring(3) -Style 'Heading2'
|
||||||
|
} elseif ($line.StartsWith('# ')) {
|
||||||
|
Add-Paragraph -Parts $Parts -Text $line.Substring(2) -Style 'Heading1'
|
||||||
|
} elseif ($line.Trim().StartsWith('- ')) {
|
||||||
|
Add-Paragraph -Parts $Parts -Text ('· ' + $line.Trim().Substring(2))
|
||||||
|
} elseif ([string]::IsNullOrWhiteSpace($line)) {
|
||||||
|
Add-Paragraph -Parts $Parts -Text ''
|
||||||
|
} else {
|
||||||
|
Add-Paragraph -Parts $Parts -Text $line
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($tableBuffer.Count -gt 0) { Flush-TableBuffer -Parts $Parts -Buffer $tableBuffer }
|
||||||
|
}
|
||||||
|
|
||||||
|
if (-not (Test-Path -LiteralPath $PlanMarkdown)) { throw "Plan markdown not found: $PlanMarkdown" }
|
||||||
|
if (-not (Test-Path -LiteralPath $SourceMarkdown)) { throw "Source markdown not found: $SourceMarkdown" }
|
||||||
|
|
||||||
|
$outputDir = Split-Path -Path $OutputDocx -Parent
|
||||||
|
if (-not (Test-Path -LiteralPath $outputDir)) {
|
||||||
|
New-Item -ItemType Directory -Path $outputDir | Out-Null
|
||||||
|
}
|
||||||
|
|
||||||
|
$tempRoot = Join-Path $env:TEMP ("docx_" + [Guid]::NewGuid().ToString('N'))
|
||||||
|
$wordDir = Join-Path $tempRoot 'word'
|
||||||
|
$relsDir = Join-Path $tempRoot '_rels'
|
||||||
|
$wordRelsDir = Join-Path $wordDir '_rels'
|
||||||
|
New-Item -ItemType Directory -Path $wordDir, $relsDir, $wordRelsDir | Out-Null
|
||||||
|
|
||||||
|
$parts = New-Object System.Collections.Generic.List[string]
|
||||||
|
Add-MarkdownContent -Parts $parts -MarkdownPath $PlanMarkdown
|
||||||
|
Add-MarkdownContent -Parts $parts -MarkdownPath $SourceMarkdown
|
||||||
|
|
||||||
|
$documentXml = @"
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
|
<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
|
||||||
|
<w:body>
|
||||||
|
$($parts -join "`n")
|
||||||
|
<w:sectPr>
|
||||||
|
<w:pgSz w:w="11906" w:h="16838"/>
|
||||||
|
<w:pgMar w:top="1440" w:right="1080" w:bottom="1440" w:left="1080" w:header="720" w:footer="720" w:gutter="0"/>
|
||||||
|
</w:sectPr>
|
||||||
|
</w:body>
|
||||||
|
</w:document>
|
||||||
|
"@
|
||||||
|
|
||||||
|
$stylesXml = @'
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
|
<w:styles xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
|
||||||
|
<w:style w:type="paragraph" w:styleId="Normal"><w:name w:val="Normal"/><w:qFormat/><w:rPr><w:rFonts w:ascii="Microsoft YaHei" w:eastAsia="Microsoft YaHei" w:hAnsi="Microsoft YaHei"/><w:sz w:val="21"/></w:rPr></w:style>
|
||||||
|
<w:style w:type="paragraph" w:styleId="Heading1"><w:name w:val="heading 1"/><w:basedOn w:val="Normal"/><w:next w:val="Normal"/><w:qFormat/><w:pPr><w:spacing w:before="360" w:after="120"/><w:outlineLvl w:val="0"/></w:pPr><w:rPr><w:rFonts w:ascii="Microsoft YaHei" w:eastAsia="Microsoft YaHei" w:hAnsi="Microsoft YaHei"/><w:b/><w:sz w:val="30"/></w:rPr></w:style>
|
||||||
|
<w:style w:type="paragraph" w:styleId="Heading2"><w:name w:val="heading 2"/><w:basedOn w:val="Normal"/><w:next w:val="Normal"/><w:qFormat/><w:pPr><w:spacing w:before="280" w:after="100"/><w:outlineLvl w:val="1"/></w:pPr><w:rPr><w:rFonts w:ascii="Microsoft YaHei" w:eastAsia="Microsoft YaHei" w:hAnsi="Microsoft YaHei"/><w:b/><w:sz w:val="26"/></w:rPr></w:style>
|
||||||
|
<w:style w:type="paragraph" w:styleId="Heading3"><w:name w:val="heading 3"/><w:basedOn w:val="Normal"/><w:next w:val="Normal"/><w:qFormat/><w:pPr><w:spacing w:before="220" w:after="80"/><w:outlineLvl w:val="2"/></w:pPr><w:rPr><w:rFonts w:ascii="Microsoft YaHei" w:eastAsia="Microsoft YaHei" w:hAnsi="Microsoft YaHei"/><w:b/><w:sz w:val="23"/></w:rPr></w:style>
|
||||||
|
<w:style w:type="paragraph" w:styleId="Code"><w:name w:val="Code"/><w:basedOn w:val="Normal"/><w:qFormat/><w:rPr><w:rFonts w:ascii="Consolas" w:eastAsia="Microsoft YaHei" w:hAnsi="Consolas"/><w:sz w:val="18"/></w:rPr></w:style>
|
||||||
|
<w:style w:type="table" w:styleId="TableGrid"><w:name w:val="Table Grid"/><w:basedOn w:val="TableNormal"/><w:uiPriority w:val="59"/><w:tblPr><w:tblBorders><w:top w:val="single" w:sz="4" w:space="0" w:color="auto"/><w:left w:val="single" w:sz="4" w:space="0" w:color="auto"/><w:bottom w:val="single" w:sz="4" w:space="0" w:color="auto"/><w:right w:val="single" w:sz="4" w:space="0" w:color="auto"/><w:insideH w:val="single" w:sz="4" w:space="0" w:color="auto"/><w:insideV w:val="single" w:sz="4" w:space="0" w:color="auto"/></w:tblBorders></w:tblPr></w:style>
|
||||||
|
</w:styles>
|
||||||
|
'@
|
||||||
|
|
||||||
|
$contentTypesXml = @'
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
|
<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
|
||||||
|
<Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/>
|
||||||
|
<Default Extension="xml" ContentType="application/xml"/>
|
||||||
|
<Override PartName="/word/document.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"/>
|
||||||
|
<Override PartName="/word/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml"/>
|
||||||
|
</Types>
|
||||||
|
'@
|
||||||
|
|
||||||
|
$relsXml = @'
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
|
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
|
||||||
|
<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="word/document.xml"/>
|
||||||
|
</Relationships>
|
||||||
|
'@
|
||||||
|
|
||||||
|
$docRelsXml = @'
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
|
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
|
||||||
|
<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/>
|
||||||
|
</Relationships>
|
||||||
|
'@
|
||||||
|
|
||||||
|
[System.IO.File]::WriteAllText((Join-Path $tempRoot '[Content_Types].xml'), $contentTypesXml, [System.Text.Encoding]::UTF8)
|
||||||
|
[System.IO.File]::WriteAllText((Join-Path $relsDir '.rels'), $relsXml, [System.Text.Encoding]::UTF8)
|
||||||
|
[System.IO.File]::WriteAllText((Join-Path $wordDir 'document.xml'), $documentXml, [System.Text.Encoding]::UTF8)
|
||||||
|
[System.IO.File]::WriteAllText((Join-Path $wordDir 'styles.xml'), $stylesXml, [System.Text.Encoding]::UTF8)
|
||||||
|
[System.IO.File]::WriteAllText((Join-Path $wordRelsDir 'document.xml.rels'), $docRelsXml, [System.Text.Encoding]::UTF8)
|
||||||
|
|
||||||
|
if (Test-Path -LiteralPath $OutputDocx) {
|
||||||
|
Remove-Item -LiteralPath $OutputDocx -Force
|
||||||
|
}
|
||||||
|
|
||||||
|
Add-Type -AssemblyName System.IO.Compression.FileSystem
|
||||||
|
[System.IO.Compression.ZipFile]::CreateFromDirectory($tempRoot, $OutputDocx)
|
||||||
|
Remove-Item -LiteralPath $tempRoot -Recurse -Force
|
||||||
|
Write-Output $OutputDocx
|
||||||
101
tools/rename_manual_chapter21_titles.js
Normal file
101
tools/rename_manual_chapter21_titles.js
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
const fs = require('fs');
|
||||||
|
const path = require('path');
|
||||||
|
|
||||||
|
const file = path.join(process.cwd(), 'MES_Manage_View_V20', '元利项目详细用户使用说明书.md');
|
||||||
|
const text = fs.readFileSync(file, 'utf8');
|
||||||
|
|
||||||
|
const names = {
|
||||||
|
'404.vue': '404 页面',
|
||||||
|
PunctualWork: '及时开工异常',
|
||||||
|
CraftMaintain: '产品结构维护',
|
||||||
|
Devicedata: '设备采集数据',
|
||||||
|
DeviceDataHistory: '设备历史数据',
|
||||||
|
DeviceInformation: '设备信息维护',
|
||||||
|
DeviceRealData: '设备实时数据',
|
||||||
|
InstallMakePlan: '装配排产',
|
||||||
|
InstallMakePlanDo: '装配已排产',
|
||||||
|
PlannOrderClose: '生产订单关闭',
|
||||||
|
PlanShell: '计划外壳跟踪',
|
||||||
|
priorityinstall: '装配优先级调整',
|
||||||
|
SelfMakePlan: '机加排产',
|
||||||
|
SelfMakePlando: '机加待排产',
|
||||||
|
SelfMakePlandone: '机加已排产',
|
||||||
|
PartDrawing: '零件图纸维护',
|
||||||
|
PartDrawlook: '零件图纸查看',
|
||||||
|
ProcedureManagement: '工序维护',
|
||||||
|
ProcessDrawing: '工艺图纸维护',
|
||||||
|
ProcessesDevelop: '工艺开发',
|
||||||
|
ProcessInquiry: '工艺查询',
|
||||||
|
ProcessProduct: '生产工艺维护',
|
||||||
|
ProcurementDrawlook: '采购图纸查看',
|
||||||
|
ProductionOrder: '生产订单',
|
||||||
|
AbnormalControl: '异常管控',
|
||||||
|
AssemblePlanTrack: '装配计划跟踪',
|
||||||
|
AssembleStatus: '装配状态',
|
||||||
|
AssembleTaskManage: '装配任务管理',
|
||||||
|
AssembleTasksSum: '装配任务汇总',
|
||||||
|
AssemblyCenter: '装配中心',
|
||||||
|
DeviceStatus: '设备状态',
|
||||||
|
MachiningCenter: '机加中心',
|
||||||
|
OutsourceMange: '外协管理',
|
||||||
|
OutsourceSheet: '外协报表',
|
||||||
|
PersonnelBinding: '人员绑定',
|
||||||
|
PickingTask: '拣配任务',
|
||||||
|
ProductionPlanTrack: '生产计划跟踪',
|
||||||
|
ProductionTaskManage: '生产任务管理',
|
||||||
|
ProductionTasksSum: '生产任务汇总',
|
||||||
|
SaleOutsourceMange: '销售外协管理',
|
||||||
|
ShiftManagement: '班次管理',
|
||||||
|
Timesheet: '工时报表',
|
||||||
|
Urgent: '加急任务',
|
||||||
|
Workhours: '工时查询',
|
||||||
|
'index - 副本.vue': '工时校验(副本)',
|
||||||
|
WorkHoursCheck: '工时校验',
|
||||||
|
WorkhoursEdit: '工时编辑',
|
||||||
|
'final.vue': '终检',
|
||||||
|
'firstSpecial.vue': '首检',
|
||||||
|
'materialReturn.vue': '原材料退库检',
|
||||||
|
'OtherInbound.vue': '其他入库检',
|
||||||
|
'processReceive.vue': '序检收检',
|
||||||
|
'processSpecial.vue': '过程特殊检验',
|
||||||
|
'purchaseIncoming.vue': '采购入库检',
|
||||||
|
'salesReturn.vue': '销售退货检',
|
||||||
|
QualityCenter: '质量中心',
|
||||||
|
QualityDetails: '质检明细',
|
||||||
|
'index copy.vue': '质量标准查询(副本)',
|
||||||
|
QualityStandardQuery: '质量标准查询',
|
||||||
|
Unqualified: '不合格品处理',
|
||||||
|
saleorderstatus: '销售订单状态',
|
||||||
|
MenuManagement: '菜单管理',
|
||||||
|
OperationLog: '操作日志',
|
||||||
|
OrgManagement: '组织管理',
|
||||||
|
PersonnelManagement: '人员管理',
|
||||||
|
SystemRrolemaintenance: '系统角色维护',
|
||||||
|
WorkstationManagement: '工位管理',
|
||||||
|
dashboard: '首页看板',
|
||||||
|
'AppMain.vue': '内容区域',
|
||||||
|
'index.js': '布局组件索引',
|
||||||
|
'Navbar.vue': '顶部导航',
|
||||||
|
Sidebar: '侧边栏',
|
||||||
|
'Item.vue': '侧边栏菜单项',
|
||||||
|
'SidebarItem.vue': '侧边栏菜单节点',
|
||||||
|
'TagsView.vue': '标签页导航',
|
||||||
|
'Layout.vue': '系统布局',
|
||||||
|
'ResizeHandler.js': '窗口自适应',
|
||||||
|
login: '系统登录'
|
||||||
|
};
|
||||||
|
|
||||||
|
const updated = text.replace(/^### (21\.\d+) (.+)$/gm, (match, num, oldName) => {
|
||||||
|
const nextName = names[oldName.trim()];
|
||||||
|
return nextName ? `### ${num} ${nextName}` : match;
|
||||||
|
});
|
||||||
|
|
||||||
|
fs.writeFileSync(file, updated, 'utf8');
|
||||||
|
|
||||||
|
const missing = [...text.matchAll(/^### (21\.\d+) (.+)$/gm)]
|
||||||
|
.map(m => m[2].trim())
|
||||||
|
.filter(name => !names[name]);
|
||||||
|
if (missing.length) {
|
||||||
|
console.log(`missing mappings: ${[...new Set(missing)].join(', ')}`);
|
||||||
|
}
|
||||||
|
console.log('chapter 21 titles renamed');
|
||||||
573
tools/rewrite_user_manual_pages.js
Normal file
573
tools/rewrite_user_manual_pages.js
Normal file
@@ -0,0 +1,573 @@
|
|||||||
|
const fs = require('fs');
|
||||||
|
const path = require('path');
|
||||||
|
|
||||||
|
const repoRoot = process.cwd();
|
||||||
|
const projectRoot = path.join(repoRoot, 'MES_Manage_View_V20');
|
||||||
|
const viewsRoot = path.join(projectRoot, 'src', 'views');
|
||||||
|
const manualPath = path.join(projectRoot, '元利项目详细用户使用说明书.md');
|
||||||
|
|
||||||
|
function readText(file) {
|
||||||
|
const buf = fs.readFileSync(file);
|
||||||
|
if (buf.length >= 3 && buf[0] === 0xef && buf[1] === 0xbb && buf[2] === 0xbf) {
|
||||||
|
return buf.slice(3).toString('utf8');
|
||||||
|
}
|
||||||
|
if (buf.length >= 2 && buf[0] === 0xff && buf[1] === 0xfe) {
|
||||||
|
return buf.slice(2).toString('utf16le');
|
||||||
|
}
|
||||||
|
return buf.toString('utf8');
|
||||||
|
}
|
||||||
|
|
||||||
|
function writeText(file, text) {
|
||||||
|
fs.writeFileSync(file, text, 'utf8');
|
||||||
|
}
|
||||||
|
|
||||||
|
function walk(dir, out = []) {
|
||||||
|
if (!fs.existsSync(dir)) return out;
|
||||||
|
for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
|
||||||
|
const full = path.join(dir, entry.name);
|
||||||
|
if (entry.isDirectory()) walk(full, out);
|
||||||
|
else if (/\.(vue|js)$/i.test(entry.name)) out.push(full);
|
||||||
|
}
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
||||||
|
function rel(file) {
|
||||||
|
return path.relative(projectRoot, file).replace(/\\/g, '/');
|
||||||
|
}
|
||||||
|
|
||||||
|
function clean(value) {
|
||||||
|
return (value || '')
|
||||||
|
.replace(/<!--[\s\S]*?-->/g, ' ')
|
||||||
|
.replace(/<[^>]+>/g, ' ')
|
||||||
|
.replace(/\{\{[\s\S]*?\}\}/g, ' ')
|
||||||
|
.replace(/ /g, ' ')
|
||||||
|
.replace(/\s+/g, ' ')
|
||||||
|
.trim();
|
||||||
|
}
|
||||||
|
|
||||||
|
function uniq(values) {
|
||||||
|
const seen = new Set();
|
||||||
|
const out = [];
|
||||||
|
for (const value of values) {
|
||||||
|
const v = String(value || '').trim();
|
||||||
|
if (!v || seen.has(v)) continue;
|
||||||
|
seen.add(v);
|
||||||
|
out.push(v);
|
||||||
|
}
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
||||||
|
function stripNoise(values) {
|
||||||
|
return uniq(values)
|
||||||
|
.filter(x => x.length <= 42)
|
||||||
|
.filter(x => !/[{};]/.test(x))
|
||||||
|
.filter(x => !/^(scope|row|item|index|true|false|null|undefined)$/i.test(x))
|
||||||
|
.filter(x => !/^\d+$/.test(x));
|
||||||
|
}
|
||||||
|
|
||||||
|
function extractAll(re, text, map) {
|
||||||
|
const out = [];
|
||||||
|
let match;
|
||||||
|
while ((match = re.exec(text))) out.push(map(match));
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
||||||
|
function attr(attrs, name) {
|
||||||
|
const m = new RegExp(`${name}="([^"]*)"`).exec(attrs);
|
||||||
|
return m ? clean(m[1]) : '';
|
||||||
|
}
|
||||||
|
|
||||||
|
function extractTemplate(text) {
|
||||||
|
const start = text.search(/<template\b[^>]*>/i);
|
||||||
|
if (start < 0) return text;
|
||||||
|
const open = /<template\b[^>]*>/i.exec(text.slice(start));
|
||||||
|
if (!open) return text;
|
||||||
|
const contentStart = start + open.index + open[0].length;
|
||||||
|
const scriptStart = text.search(/<script\b/i);
|
||||||
|
const searchEnd = scriptStart >= 0 ? scriptStart : text.length;
|
||||||
|
const close = text.lastIndexOf('</template>', searchEnd);
|
||||||
|
if (close > contentStart) return text.slice(contentStart, close);
|
||||||
|
return text.slice(contentStart, searchEnd);
|
||||||
|
}
|
||||||
|
|
||||||
|
function extractScript(text) {
|
||||||
|
const m = /<script\b[^>]*>([\s\S]*?)<\/script>/i.exec(text);
|
||||||
|
return m ? m[1] : text;
|
||||||
|
}
|
||||||
|
|
||||||
|
function extractPage(file) {
|
||||||
|
const text = readText(file);
|
||||||
|
const template = extractTemplate(text);
|
||||||
|
const script = extractScript(text);
|
||||||
|
const relative = rel(file);
|
||||||
|
const parts = relative.split('/');
|
||||||
|
const module = parts[2] || '根页面';
|
||||||
|
const name = path.basename(file) === 'index.vue'
|
||||||
|
? parts[parts.length - 2]
|
||||||
|
: path.basename(file);
|
||||||
|
|
||||||
|
const labels = extractAll(/\blabel="([^"]+)"/g, template, m => clean(m[1]));
|
||||||
|
const placeholders = extractAll(/\bplaceholder="([^"]+)"/g, template, m => clean(m[1]));
|
||||||
|
const titles = extractAll(/\btitle="([^"]+)"/g, template, m => clean(m[1]));
|
||||||
|
const formLabels = extractAll(/<el-form-item\b([^>]*)>/g, template, m => attr(m[1], 'label'));
|
||||||
|
const tabLabels = extractAll(/<el-tab-pane\b([^>]*)>/g, template, m => attr(m[1], 'label'));
|
||||||
|
const options = extractAll(/<el-option\b([^>]*)>/g, template, m => attr(m[1], 'label'));
|
||||||
|
const buttons = extractAll(/<el-button\b([^>]*)>([\s\S]*?)<\/el-button>/g, template, m => {
|
||||||
|
const textValue = clean(m[2]) || attr(m[1], 'title') || attr(m[1], 'aria-label');
|
||||||
|
const click = attr(m[1], '@click') || attr(m[1], 'v-on:click');
|
||||||
|
return textValue ? { text: textValue, click } : null;
|
||||||
|
})
|
||||||
|
.filter(Boolean)
|
||||||
|
.filter(b => b.text.length <= 42)
|
||||||
|
.filter(b => !/[{};]/.test(b.text));
|
||||||
|
const tableColumns = extractAll(/<el-table-column\b([^>]*)>/g, template, m => {
|
||||||
|
const label = attr(m[1], 'label');
|
||||||
|
const prop = attr(m[1], 'prop');
|
||||||
|
const type = attr(m[1], 'type');
|
||||||
|
return label || prop || type ? { label, prop, type } : null;
|
||||||
|
}).filter(Boolean);
|
||||||
|
const vModels = extractAll(/\bv-model(?:\.[\w-]+)?="([^"]+)"/g, template, m => clean(m[1]));
|
||||||
|
const params = extractAll(/\.(?:push|unshift)\s*\(\s*\[\s*['"]([^'"]+)['"]\s*,\s*([^\]\n]+)\]/g, script, m => ({
|
||||||
|
name: clean(m[1]),
|
||||||
|
expr: clean(m[2])
|
||||||
|
}));
|
||||||
|
const procs = extractAll(/CreateData\s*\(\s*['"]([^'"]+)['"]\s*,\s*['"]([^'"]+)['"]/g, script, m => ({
|
||||||
|
type: m[1],
|
||||||
|
name: clean(m[2])
|
||||||
|
}));
|
||||||
|
const sapCalls = extractAll(/\b(getB1|postB1|patchB1|posttm)\s*\(\s*([`'"])([\s\S]*?)\2/g, script, m => ({
|
||||||
|
method: m[1],
|
||||||
|
url: clean(m[3]).slice(0, 90)
|
||||||
|
}));
|
||||||
|
const dialogs = extractAll(/<el-dialog\b([\s\S]*?)>/g, template, m => {
|
||||||
|
const title = attr(m[1], 'title') || clean((/:title="([^"]+)"/.exec(m[1]) || [])[1]);
|
||||||
|
return title;
|
||||||
|
});
|
||||||
|
const methods = extractAll(/^\s*([A-Za-z_$\u4e00-\u9fa5][\w$\u4e00-\u9fa5]*)\s*\([^)]*\)\s*\{/gm, script, m => m[1]);
|
||||||
|
const hasCalendar = /FullCalendar|@fullcalendar|eventDrop|eventResize/.test(text);
|
||||||
|
const hasPagination = /el-pagination|pageSize|pageCurrent/.test(text);
|
||||||
|
const hasUpload = /el-upload|上传|upload/i.test(text);
|
||||||
|
const hasTree = /el-tree|treeData|Tree/.test(text);
|
||||||
|
|
||||||
|
return {
|
||||||
|
file,
|
||||||
|
relative,
|
||||||
|
module,
|
||||||
|
name,
|
||||||
|
text,
|
||||||
|
labels: stripNoise(labels),
|
||||||
|
placeholders: stripNoise(placeholders),
|
||||||
|
titles: stripNoise(titles),
|
||||||
|
formLabels: stripNoise(formLabels),
|
||||||
|
tabLabels: stripNoise(tabLabels),
|
||||||
|
options: stripNoise(options),
|
||||||
|
buttons,
|
||||||
|
tableColumns,
|
||||||
|
vModels: stripNoise(vModels),
|
||||||
|
params,
|
||||||
|
procs,
|
||||||
|
sapCalls,
|
||||||
|
dialogs: stripNoise(dialogs),
|
||||||
|
methods: stripNoise(methods),
|
||||||
|
hasCalendar,
|
||||||
|
hasPagination,
|
||||||
|
hasUpload,
|
||||||
|
hasTree
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function roleFor(page) {
|
||||||
|
if (/SystemMaintenance|layout|login|dashboard|404/.test(page.relative)) return '系统管理员/相关用户';
|
||||||
|
if (/QualityManagement/.test(page.relative)) return '质检员/质量主管';
|
||||||
|
if (/PlanManagement/.test(page.relative)) return '计划员/生产主管';
|
||||||
|
if (/ProductionManagement/.test(page.relative)) return '操作工/班组长/生产主管';
|
||||||
|
if (/ProcessManagement|CraftManagement/.test(page.relative)) return '工艺员/技术人员';
|
||||||
|
if (/DeviceManagement/.test(page.relative)) return '设备管理员/生产主管';
|
||||||
|
if (/SaleManagement/.test(page.relative)) return '销售/计划/生产跟单人员';
|
||||||
|
if (/AnomalousManagement/.test(page.relative)) return '班组长/生产主管/计划员';
|
||||||
|
return '相关业务人员';
|
||||||
|
}
|
||||||
|
|
||||||
|
function moduleName(page) {
|
||||||
|
const map = {
|
||||||
|
AnomalousManagement: '异常管理',
|
||||||
|
CraftManagement: '产品结构维护',
|
||||||
|
DeviceManagement: '设备管理',
|
||||||
|
PlanManagement: '计划排产',
|
||||||
|
ProcessManagement: '工艺与图纸管理',
|
||||||
|
ProductionManagement: '生产执行管理',
|
||||||
|
QualityManagement: '质量管理',
|
||||||
|
SaleManagement: '销售与交付查询',
|
||||||
|
SystemMaintenance: '系统维护',
|
||||||
|
dashboard: '首页与看板',
|
||||||
|
layout: '布局与导航',
|
||||||
|
login: '登录',
|
||||||
|
};
|
||||||
|
if (page.relative === 'src/views/404.vue') return '错误页';
|
||||||
|
return map[page.module] || page.module;
|
||||||
|
}
|
||||||
|
|
||||||
|
function purpose(page) {
|
||||||
|
const p = page.relative;
|
||||||
|
const rules = [
|
||||||
|
[/404\.vue$/, '该页面用于路由不存在或无效地址访问时展示 404 提示,帮助用户返回首页或重新选择菜单。'],
|
||||||
|
[/login/, '该页面是系统登录入口,用户输入工号、密码并选择角色后进入 MES;同时提供修改密码功能。'],
|
||||||
|
[/dashboard/, '该页面是系统首页/看板入口,用户登录后查看系统概览或进入各业务模块。'],
|
||||||
|
[/PunctualWork/, '该页面用于查看未及时开工、待执行、可执行、已开工和已完成任务,帮助班组长或计划员催办生产开工。'],
|
||||||
|
[/CraftMaintain/, '该页面用于维护产品结构树,支持新增、编辑、删除产品结构节点,为工艺、BOM 和生产任务提供层级基础资料。'],
|
||||||
|
[/DeviceDataHistory/, '该页面用于查询设备历史采集数据,按工位、设备、参数和时间追溯设备运行记录。'],
|
||||||
|
[/DeviceInformation/, '该页面用于维护设备台账、设备属性、维修/工时/点检相关信息。'],
|
||||||
|
[/DeviceRealData|Devicedata/, '该页面用于查看设备实时数据或采集缓存数据,判断设备当前运行、报警和参数状态。'],
|
||||||
|
[/SelfMakePlandone[\\/]/, '该页面用于机加/自制件已排产任务查看和调整,支持计划时间、指派对象、指派数量、最晚开始、二次派工和备注维护。'],
|
||||||
|
[/SelfMakePlando[\\/]/, '该页面用于机加/自制件待排产任务处理,支持表单排产、日程拖拽调整、部分派工、批量排产、二次派工、原料状态和图纸查看。'],
|
||||||
|
[/SelfMakePlan[\\/]/, '该页面用于机加/自制件排产前准备,查询生产订单工序任务并维护计划、工位、数量和说明后确认排产。'],
|
||||||
|
[/InstallMakePlanDo|InstallMakePlan/, '该页面用于装配件排产,维护装配工位、人员、计划开始/完成、优先级、说明,并在排产完成时同步 SAP 或生成相关请求。'],
|
||||||
|
[/PlanShell/, '该页面用于计划外壳和计划跟踪,集中查看订单计划、齐套、缺料、发货或关闭相关信息。'],
|
||||||
|
[/PlannOrderClose/, '该页面用于关闭生产订单,用户查询待关闭订单后执行 MES/SAP 关闭动作。'],
|
||||||
|
[/priorityinstall/, '该页面用于装配计划优先级和日程调整,支持表单和日程方式查看重点任务。'],
|
||||||
|
[/ProductionOrder/, '该页面用于查询和同步生产订单,把 SAP/ERP 生产订单转成 MES 生产计划与工序任务。'],
|
||||||
|
[/PartDrawing/, '该页面用于维护零件图纸,支持按物料查询、查看、上传/验证和删除图纸。'],
|
||||||
|
[/PartDrawlook|ProcurementDrawlook/, '该页面用于按物料查看零件图纸,供生产、采购、外协或质检快速查阅技术文件。'],
|
||||||
|
[/ProcessDrawing/, '该页面用于维护工艺图纸,支持查询、查看、上传/验证和删除工艺图纸。'],
|
||||||
|
[/ProcedureManagement/, '该页面用于维护工序/路线阶段主数据,并与 SAP B1 RouteStages 保持一致。'],
|
||||||
|
[/ProcessInquiry/, '该页面用于查询标准工艺或生产工艺,供排产、生产、质检核对工序路线。'],
|
||||||
|
[/ProcessProduct|ProcessesDevelop/, '该页面用于维护产品工艺资料、工序路线、参数和图纸关系。'],
|
||||||
|
[/MachiningCenter/, '该页面是机加生产执行主界面,操作工按工位执行收料、开工、暂停、报工、检验、退库、发料和图纸查看。'],
|
||||||
|
[/AssemblyCenter/, '该页面是装配生产执行主界面,装配人员按工位执行开工、报工、送检、退库、缺料查询和图纸查看。'],
|
||||||
|
[/ProductionTaskManage|AssembleTaskManage/, '该页面用于生产/装配任务管理,查询任务、查看工时、维护派工和任务说明。'],
|
||||||
|
[/ProductionTasksSum|AssembleTasksSum/, '该页面用于生产/装配任务汇总,按订单、人员、工位、状态和时间统计任务执行情况。'],
|
||||||
|
[/ProductionPlanTrack|AssemblePlanTrack/, '该页面用于跟踪生产/装配计划执行进度,查看计划、完成、延期和异常情况。'],
|
||||||
|
[/AssembleStatus|DeviceStatus/, '该页面用于查看现场状态,关注工位、设备、任务是否开工、进行中或完成。'],
|
||||||
|
[/OutsourceMange|SaleOutsourceMange/, '该页面用于外协任务管理,处理外协派工、供应商、发料、收料、质检记录和 SAP 采购请求。'],
|
||||||
|
[/OutsourceSheet/, '该页面用于外协报表查询和导出,跟踪外协订单、供应商、数量、质检和结算状态。'],
|
||||||
|
[/PickingTask/, '该页面用于生产领料/拣配任务查询与处理,核对订单物料和库存任务。'],
|
||||||
|
[/PersonnelBinding/, '该页面用于维护人员与工位绑定关系,控制或提示人员可操作的工位。'],
|
||||||
|
[/ShiftManagement/, '该页面用于维护班次、班次人员和排班基础数据。'],
|
||||||
|
[/Timesheet|Workhours$/, '该页面用于查询工时记录,按人员、设备、任务、订单和日期统计工时。'],
|
||||||
|
[/WorkhoursEdit/, '该页面用于修正或补录工时/报工记录,处理异常工时。'],
|
||||||
|
[/WorkHoursCheck/, '该页面用于工时校验和 SAP 提交,用户核对报工记录后批量或单条校验并上传相关单据。'],
|
||||||
|
[/Urgent/, '该页面用于维护加急任务,跟踪加急订单、加急数量和完成情况。'],
|
||||||
|
[/AbnormalControl/, '该页面用于生产异常管理,查询异常、处理异常、转办、查看进度和关闭异常。'],
|
||||||
|
[/QualityCenter/, '该页面是质量综合处理中心,集中处理待检、收检、检测明细、不合格和 SAP/WMS 联动。'],
|
||||||
|
[/QualityDetails/, '该页面用于查询质检明细,按订单、物料、检验类型和时间追溯检测记录。'],
|
||||||
|
[/QualityStandardQuery/, '该页面用于查询或维护质量检验标准、检测项目、上下限和启用状态。'],
|
||||||
|
[/Unqualified/, '该页面用于不合格品处理,记录处置方式、责任、原因和处理结果。'],
|
||||||
|
[/CheckTask[\\/].*purchaseIncoming/, '该页面用于采购/来料检验,质检人员录入来料检验数量、合格数、不合格数和检测明细。'],
|
||||||
|
[/CheckTask[\\/].*processReceive/, '该页面用于工序收检/序检收检,质检人员接收工序检验任务并录入检验结果。'],
|
||||||
|
[/CheckTask[\\/].*firstSpecial/, '该页面用于首检或特殊首件检验,录入首件检测结果。'],
|
||||||
|
[/CheckTask[\\/].*final/, '该页面用于终检任务处理,录入最终检验结果。'],
|
||||||
|
[/CheckTask[\\/].*materialReturn/, '该页面用于材料退库检验,核对退库物料并录入检验结论。'],
|
||||||
|
[/CheckTask[\\/].*salesReturn/, '该页面用于销售退货检验,录入退货质检结果。'],
|
||||||
|
[/CheckTask[\\/].*OtherInbound/, '该页面用于其他入库检验,录入其他入库质检结果。'],
|
||||||
|
[/CheckTask[\\/].*processSpecial/, '该页面用于过程特殊检验,录入特殊检验项目和结果。'],
|
||||||
|
[/saleorderstatus/, '该页面用于查询销售订单状态,跟踪销售订单在生产、交付和关闭过程中的状态。'],
|
||||||
|
[/MenuManagement/, '该页面用于维护系统菜单、按钮权限和路由配置。'],
|
||||||
|
[/OperationLog/, '该页面用于查询操作日志,追溯用户操作、报工或业务变更记录。'],
|
||||||
|
[/OrgManagement/, '该页面用于维护组织、部门或组织树基础资料。'],
|
||||||
|
[/PersonnelManagement/, '该页面用于维护人员账号、部门、角色和启用状态。'],
|
||||||
|
[/SystemRrolemaintenance/, '该页面用于维护系统角色和角色权限。'],
|
||||||
|
[/WorkstationManagement/, '该页面用于维护工位/资源主数据,并同步 SAP B1 Resources。'],
|
||||||
|
[/layout|Sidebar|Navbar|TagsView|AppMain|ResizeHandler/, '该文件属于系统布局和导航组件,用户通过它切换菜单、标签页、折叠菜单或退出登录,不维护具体业务单据。'],
|
||||||
|
];
|
||||||
|
const found = rules.find(([re]) => re.test(p));
|
||||||
|
if (found) return found[1];
|
||||||
|
return '该页面为业务页面,用户按查询条件筛选数据,在列表或弹窗中查看明细,并按页面按钮完成维护、提交或状态更新。';
|
||||||
|
}
|
||||||
|
|
||||||
|
function actionVerb(button) {
|
||||||
|
const text = button.text;
|
||||||
|
if (/查询|搜索|全部|待执行|可执行|已开工|已完成|未完成/.test(text)) return '查询/筛选';
|
||||||
|
if (/新增|添加|新建|创建/.test(text)) return '新增';
|
||||||
|
if (/编辑|修改|保存|确定|确 定/.test(text)) return '编辑/保存';
|
||||||
|
if (/删除|移除/.test(text)) return '删除';
|
||||||
|
if (/导出|打印/.test(text)) return '导出/打印';
|
||||||
|
if (/查看|详情|图纸|明细|进度/.test(text)) return '查看';
|
||||||
|
if (/排产|派工|开工|报工|送检|收料|发料|退库|关闭|提交|处理|转办|完结|校验|上传/.test(text)) return '业务提交';
|
||||||
|
if (/取消|关闭|返回/.test(text)) return '取消/关闭';
|
||||||
|
return '操作';
|
||||||
|
}
|
||||||
|
|
||||||
|
function fieldName(value) {
|
||||||
|
return value
|
||||||
|
.replace(/^.*\./, '')
|
||||||
|
.replace(/\[[^\]]+\]/g, '')
|
||||||
|
.replace(/Form$/, '')
|
||||||
|
.replace(/Time$/, '时间')
|
||||||
|
.replace(/No$/, '编号');
|
||||||
|
}
|
||||||
|
|
||||||
|
function queryItems(page) {
|
||||||
|
const fromParams = page.params
|
||||||
|
.filter(p => !/任务列表|操作人|最后编辑人|editstr|personnel|TaskAID/.test(p.name))
|
||||||
|
.map(p => p.name);
|
||||||
|
const fromModels = page.vModels
|
||||||
|
.filter(v => !/^scope\.row|^item\.|^row\.|multipleSelection|loading|dialog|Visible|activeTab/.test(v))
|
||||||
|
.map(fieldName);
|
||||||
|
const fromPlaceholders = page.placeholders
|
||||||
|
.map(x => x.replace(/^请输入/, '').replace(/^请选择/, '').replace(/起始|结束/g, '').trim())
|
||||||
|
.filter(Boolean);
|
||||||
|
return stripNoise([...fromParams, ...fromModels, ...fromPlaceholders]).slice(0, 22);
|
||||||
|
}
|
||||||
|
|
||||||
|
function tableItems(page) {
|
||||||
|
return stripNoise(page.tableColumns.map(c => c.label || c.prop || c.type)).slice(0, 34);
|
||||||
|
}
|
||||||
|
|
||||||
|
function buttonItems(page) {
|
||||||
|
return stripNoise(page.buttons.map(b => b.text)).slice(0, 30);
|
||||||
|
}
|
||||||
|
|
||||||
|
function procItems(page) {
|
||||||
|
return uniq(page.procs.map(p => p.name)).slice(0, 20);
|
||||||
|
}
|
||||||
|
|
||||||
|
function sapItems(page) {
|
||||||
|
return uniq(page.sapCalls.map(s => `${s.method} ${s.url}`)).slice(0, 12);
|
||||||
|
}
|
||||||
|
|
||||||
|
function lineList(values, fallback) {
|
||||||
|
if (!values.length) return `- ${fallback}`;
|
||||||
|
return values.map(v => `- \`${v}\``).join('\n');
|
||||||
|
}
|
||||||
|
|
||||||
|
function detailedSteps(page) {
|
||||||
|
const steps = [];
|
||||||
|
const queries = queryItems(page);
|
||||||
|
const tabs = page.tabLabels;
|
||||||
|
const columns = tableItems(page);
|
||||||
|
const buttons = page.buttons.slice(0, 24);
|
||||||
|
const dialogs = page.dialogs;
|
||||||
|
const forms = page.formLabels;
|
||||||
|
const procs = procItems(page);
|
||||||
|
const pathText = page.relative;
|
||||||
|
|
||||||
|
steps.push(`从左侧菜单进入该页,确认页面标题、当前账号和业务角色正确。`);
|
||||||
|
if (tabs.length) {
|
||||||
|
steps.push(`先查看页签:${tabs.map(x => `\`${x}\``).join('、')};需要表格处理时进入表单/列表页签,需要看时间排布时进入日程/看板页签。`);
|
||||||
|
}
|
||||||
|
if (queries.length) {
|
||||||
|
steps.push(`在查询区按需要填写筛选条件:${queries.slice(0, 12).map(x => `\`${x}\``).join('、')}。`);
|
||||||
|
if (queries.length > 12) steps.push(`如果仍查不到数据,继续补充条件:${queries.slice(12, 22).map(x => `\`${x}\``).join('、')},或清空过窄条件后重新查询。`);
|
||||||
|
} else {
|
||||||
|
steps.push(`该页没有识别到固定查询区,按页面提示直接查看信息或使用菜单/按钮进入下一步。`);
|
||||||
|
}
|
||||||
|
const queryButtons = buttons.filter(b => actionVerb(b) === '查询/筛选');
|
||||||
|
if (queryButtons.length) {
|
||||||
|
steps.push(`点击 ${stripNoise(queryButtons.map(b => b.text)).slice(0, 8).map(x => `\`${x}\``).join('、')} 刷新列表;状态按钮会切换任务范围。`);
|
||||||
|
} else if (buttons.length) {
|
||||||
|
steps.push(`点击页面上的查询或刷新类按钮获取最新数据;如果页面自动加载,则先核对默认列表是否符合当前业务范围。`);
|
||||||
|
}
|
||||||
|
if (page.hasPagination) {
|
||||||
|
steps.push(`列表较多时使用分页区切换页码或调整每页条数,避免只检查第一页。`);
|
||||||
|
}
|
||||||
|
if (columns.length) {
|
||||||
|
steps.push(`查询后先核对关键列:${columns.slice(0, 12).map(x => `\`${x}\``).join('、')}。`);
|
||||||
|
if (columns.length > 12) steps.push(`继续横向滚动或展开表格,核对:${columns.slice(12, 26).map(x => `\`${x}\``).join('、')}。`);
|
||||||
|
}
|
||||||
|
if (page.hasTree) {
|
||||||
|
steps.push(`如果页面左侧或上方有树形结构,先选中组织、物料、菜单或产品节点,再查看右侧列表;新增子节点前确认父节点选中正确。`);
|
||||||
|
}
|
||||||
|
const nonQueryButtons = buttons.filter(b => !['查询/筛选', '取消/关闭'].includes(actionVerb(b)));
|
||||||
|
for (const button of nonQueryButtons.slice(0, 10)) {
|
||||||
|
const verb = actionVerb(button);
|
||||||
|
if (verb === '新增') steps.push(`需要新增时点击 \`${button.text}\`,在弹窗中逐项填写必填字段,确认编码、名称、状态等基础信息后保存。`);
|
||||||
|
else if (verb === '编辑/保存') steps.push(`需要维护已有记录时先选中目标行,再点击或触发表格内 \`${button.text}\`,修改字段后保存并等待成功提示。`);
|
||||||
|
else if (verb === '删除') steps.push(`需要删除时先确认该记录没有正在使用的业务数据,再点击 \`${button.text}\`,按确认提示执行。`);
|
||||||
|
else if (verb === '导出/打印') steps.push(`需要留存或流转时点击 \`${button.text}\`,导出/打印前确认当前查询条件和选中记录正确。`);
|
||||||
|
else if (verb === '查看') steps.push(`需要查看明细时点击 \`${button.text}\`,在弹窗或新区域核对图纸、明细、进度、记录或关联单据。`);
|
||||||
|
else if (verb === '业务提交') steps.push(`需要推进业务时先选中目标行并核对数量、时间、人员、工位、物料和备注,再点击 \`${button.text}\` 提交。`);
|
||||||
|
else steps.push(`按业务需要点击 \`${button.text}\`,操作前先确认选中行和输入内容。`);
|
||||||
|
}
|
||||||
|
if (dialogs.length) {
|
||||||
|
steps.push(`出现弹窗时按弹窗标题处理:${dialogs.slice(0, 8).map(x => `\`${x}\``).join('、')};弹窗关闭前确认必填项已保存。`);
|
||||||
|
}
|
||||||
|
if (forms.length) {
|
||||||
|
steps.push(`弹窗或表单内重点填写:${forms.slice(0, 14).map(x => `\`${x}\``).join('、')},提交前逐项核对。`);
|
||||||
|
}
|
||||||
|
if (page.hasUpload) {
|
||||||
|
steps.push(`涉及上传时先选择正确文件,再点击上传/保存;上传后重新查询,确认文件名、版本、上传时间或预览内容已显示。`);
|
||||||
|
}
|
||||||
|
if (page.hasCalendar) {
|
||||||
|
steps.push(`进入日程页后,单击任务查看详情;拖拽任务可调整计划开始时间,拉伸任务可调整计划完成时间,系统提示确认后才会保存。`);
|
||||||
|
steps.push(`日程保存失败或取消时任务会恢复原日期;保存成功后回到表单页重新查询,核对计划开始和计划完成是否同步。`);
|
||||||
|
}
|
||||||
|
if (procs.length) {
|
||||||
|
steps.push(`保存或提交成功后重新点击查询,确认页面数据已通过 ${procs.slice(0, 5).map(x => `\`${x}\``).join('、')} 等后台过程更新。`);
|
||||||
|
}
|
||||||
|
if (page.sapCalls.length) {
|
||||||
|
steps.push(`涉及 SAP/WMS 接口时,必须查看页面成功或失败提示;失败时先记录错误信息,不要连续重复提交同一单据。`);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (/SelfMakePlando[\\/]/.test(pathText)) {
|
||||||
|
steps.push(`在 \`指派数量\` 中输入小于计划数的数量时,表示本次只派出部分数量,剩余数量需要继续跟踪和后续派工。`);
|
||||||
|
steps.push(`点击 \`批量排产\` 前应选择同一生产订单的多道工序,系统会按订单行号排序并继承上一道工序的部分计划信息。`);
|
||||||
|
steps.push(`点击 \`排产完成\` 后,系统校验指派对象、指派数量、计划开始、计划完成,并同步生产订单最早开始和最晚完成。`);
|
||||||
|
}
|
||||||
|
if (/SelfMakePlandone[\\/]/.test(pathText)) {
|
||||||
|
steps.push(`已排产列表中仍可调整指派对象、指派数量、计划开始、计划完成、外协分组、最晚开始和二次派工;调整后要重新查询确认。`);
|
||||||
|
}
|
||||||
|
if (/MachiningCenter|AssemblyCenter/.test(pathText)) {
|
||||||
|
steps.push(`现场执行类操作必须按实际顺序处理:先确认任务和工位,再收料/开工,完成加工或装配后再报工/送检。`);
|
||||||
|
}
|
||||||
|
if (/QualityManagement/.test(pathText)) {
|
||||||
|
steps.push(`录入检验结果时先核对检验类型、订单、物料、批次/工序,再填写合格数、不合格数和检测明细,避免检验记录挂错任务。`);
|
||||||
|
}
|
||||||
|
if (/WorkHoursCheck/.test(pathText)) {
|
||||||
|
steps.push(`工时校验前先比对 MES 报工、设备工时和 SAP 工序资源;只对核对无误的记录执行提交。`);
|
||||||
|
}
|
||||||
|
if (/WorkstationManagement/.test(pathText)) {
|
||||||
|
steps.push(`工位新增或修改会影响 SAP 资源、派工、报工和看板,保存后要用排产或生产执行页面验证工位是否可选。`);
|
||||||
|
}
|
||||||
|
if (/MenuManagement|SystemRrolemaintenance|PersonnelManagement/.test(pathText)) {
|
||||||
|
steps.push(`权限类修改保存后,需要让相关用户重新登录或刷新权限,再验证菜单、按钮和数据范围是否生效。`);
|
||||||
|
}
|
||||||
|
|
||||||
|
return steps.map((s, i) => `${i + 1}. ${s}`).join('\n');
|
||||||
|
}
|
||||||
|
|
||||||
|
function notes(page) {
|
||||||
|
const values = [];
|
||||||
|
if (/PlanManagement/.test(page.relative)) values.push('排产、派工和计划时间会影响生产看板、及时开工统计和 SAP 生产订单日期,提交前必须核对。');
|
||||||
|
if (/ProductionManagement/.test(page.relative)) values.push('生产执行页面的数据会直接影响报工、工时、质检和库存任务,现场操作必须与实际加工进度一致。');
|
||||||
|
if (/QualityManagement/.test(page.relative)) values.push('质检结果保存后会影响合格入库、不合格处理和后续工序,提交前必须核对数量。');
|
||||||
|
if (/ProcessManagement|CraftManagement/.test(page.relative)) values.push('工艺、图纸和结构资料会被排产、生产、质检引用,版本错误会直接影响现场执行。');
|
||||||
|
if (/DeviceManagement/.test(page.relative)) values.push('设备和采集数据用于看板、OEE 和报工分析,发现异常时应先确认设备编码和采集点位。');
|
||||||
|
if (/SystemMaintenance/.test(page.relative)) values.push('系统维护类数据会影响登录、权限、菜单和业务可选项,修改后需要验证。');
|
||||||
|
if (page.sapCalls.length) values.push('该页存在 SAP/WMS 调用,失败时应记录返回提示并确认是否已经生成外部单据。');
|
||||||
|
if (page.hasCalendar) values.push('日程拖拽属于直接改计划时间的操作,拖拽前应确认任务未被现场执行锁定。');
|
||||||
|
if (!values.length) values.push('操作后建议重新查询页面,确认列表、状态和明细已经刷新。');
|
||||||
|
return values.map(v => `- ${v}`).join('\n');
|
||||||
|
}
|
||||||
|
|
||||||
|
function section(page, index) {
|
||||||
|
const query = queryItems(page);
|
||||||
|
const columns = tableItems(page);
|
||||||
|
const buttons = buttonItems(page);
|
||||||
|
const procs = procItems(page);
|
||||||
|
const sap = sapItems(page);
|
||||||
|
|
||||||
|
return `### 21.${index} ${page.name}
|
||||||
|
|
||||||
|
页面路径:\`${page.relative}\`
|
||||||
|
所属模块:${moduleName(page)}
|
||||||
|
建议使用人员:${roleFor(page)}
|
||||||
|
|
||||||
|
页面用途:${purpose(page)}
|
||||||
|
|
||||||
|
**具体操作步骤**
|
||||||
|
${detailedSteps(page)}
|
||||||
|
|
||||||
|
**查询条件/输入项**
|
||||||
|
${lineList(query, '未识别到固定输入项,按现场页面提示操作。')}
|
||||||
|
|
||||||
|
**结果表重点列**
|
||||||
|
${lineList(columns, '未识别到固定表格列,以页面实际显示为准。')}
|
||||||
|
|
||||||
|
**页面按钮/状态/页签**
|
||||||
|
${lineList([...buttons, ...page.tabLabels].slice(0, 36), '未识别到明确按钮,以页面实际显示为准。')}
|
||||||
|
|
||||||
|
**弹窗/表单重点项**
|
||||||
|
${lineList([...page.dialogs, ...page.formLabels].slice(0, 30), '未识别到固定弹窗或表单项。')}
|
||||||
|
|
||||||
|
**后台处理/外部接口**
|
||||||
|
${lineList([...procs.map(x => `存储过程:${x}`), ...sap.map(x => `接口:${x}`)].slice(0, 30), '未发现页面级后台提交动作。')}
|
||||||
|
|
||||||
|
**操作注意事项**
|
||||||
|
${notes(page)}
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
|
||||||
|
function moduleOrder(page) {
|
||||||
|
const order = [
|
||||||
|
'404.vue',
|
||||||
|
'AnomalousManagement',
|
||||||
|
'CraftManagement',
|
||||||
|
'DeviceManagement',
|
||||||
|
'PlanManagement',
|
||||||
|
'ProcessManagement',
|
||||||
|
'ProductionManagement',
|
||||||
|
'QualityManagement',
|
||||||
|
'SaleManagement',
|
||||||
|
'SystemMaintenance',
|
||||||
|
'dashboard',
|
||||||
|
'layout',
|
||||||
|
'login'
|
||||||
|
];
|
||||||
|
const key = page.relative === 'src/views/404.vue' ? '404.vue' : page.module;
|
||||||
|
const idx = order.indexOf(key);
|
||||||
|
return idx >= 0 ? idx : 99;
|
||||||
|
}
|
||||||
|
|
||||||
|
function moduleHeading(page) {
|
||||||
|
const key = page.relative === 'src/views/404.vue' ? '404.vue' : page.module;
|
||||||
|
const headings = {
|
||||||
|
'404.vue': '错误页',
|
||||||
|
AnomalousManagement: '异常管理',
|
||||||
|
CraftManagement: '产品结构维护',
|
||||||
|
DeviceManagement: '设备管理',
|
||||||
|
PlanManagement: '计划排产',
|
||||||
|
ProcessManagement: '工艺与图纸管理',
|
||||||
|
ProductionManagement: '生产执行管理',
|
||||||
|
QualityManagement: '质量管理',
|
||||||
|
SaleManagement: '销售与交付查询',
|
||||||
|
SystemMaintenance: '系统维护',
|
||||||
|
dashboard: '首页与看板',
|
||||||
|
layout: '布局与导航',
|
||||||
|
login: '登录'
|
||||||
|
};
|
||||||
|
return headings[key] || key;
|
||||||
|
}
|
||||||
|
|
||||||
|
function buildChapter(pages) {
|
||||||
|
const sorted = pages.sort((a, b) => {
|
||||||
|
const m = moduleOrder(a) - moduleOrder(b);
|
||||||
|
if (m !== 0) return m;
|
||||||
|
return a.relative.localeCompare(b.relative, 'zh-Hans-CN');
|
||||||
|
});
|
||||||
|
|
||||||
|
const lines = [];
|
||||||
|
lines.push('## 二十一、逐页详细操作说明(按 src/views 页面)');
|
||||||
|
lines.push('');
|
||||||
|
lines.push('本章按源码页面逐页编写。每个页面都从实际 `v-model`、表格列、按钮、弹窗、页签、存储过程和 SAP/WMS 调用中提取操作线索,转换成用户可执行的步骤。');
|
||||||
|
lines.push('');
|
||||||
|
lines.push('通用阅读方法:');
|
||||||
|
lines.push('- `查询条件/输入项` 是用户进入页面后可以填写、选择或用于筛选的字段。');
|
||||||
|
lines.push('- `结果表重点列` 是查询后需要核对的表格列,表格可横向滚动时应继续向右查看。');
|
||||||
|
lines.push('- `页面按钮/状态/页签` 是页面上能触发查询、查看、编辑、提交、导出、状态切换或页面切换的入口。');
|
||||||
|
lines.push('- `后台处理/外部接口` 用于说明保存后可能调用的存储过程、SAP 或 WMS 接口,业务人员主要关注成功/失败提示。');
|
||||||
|
lines.push('- 涉及排产、报工、质检、外协、SAP/WMS 的操作,提交前必须核对订单、物料、数量、人员、工位和日期。');
|
||||||
|
lines.push('');
|
||||||
|
|
||||||
|
let current = '';
|
||||||
|
let moduleIndex = 0;
|
||||||
|
sorted.forEach((page, i) => {
|
||||||
|
const heading = moduleHeading(page);
|
||||||
|
if (heading !== current) {
|
||||||
|
moduleIndex += 1;
|
||||||
|
current = heading;
|
||||||
|
lines.push(`## 21-${moduleIndex} ${heading}`);
|
||||||
|
lines.push('');
|
||||||
|
}
|
||||||
|
lines.push(section(page, i + 1).trimEnd());
|
||||||
|
lines.push('');
|
||||||
|
});
|
||||||
|
return lines.join('\n').trimEnd() + '\n';
|
||||||
|
}
|
||||||
|
|
||||||
|
function main() {
|
||||||
|
const pages = walk(viewsRoot)
|
||||||
|
.filter(file => !/node_modules/.test(file))
|
||||||
|
.map(extractPage);
|
||||||
|
const chapter = buildChapter(pages);
|
||||||
|
const manual = readText(manualPath);
|
||||||
|
const marker = '## 二十一、逐页详细操作说明(按 src/views 页面)';
|
||||||
|
const idx = manual.indexOf(marker);
|
||||||
|
if (idx < 0) throw new Error(`找不到章节标记:${marker}`);
|
||||||
|
const nextChapter = manual.slice(idx + marker.length).search(/\n## 二十二、/);
|
||||||
|
const head = manual.slice(0, idx).trimEnd() + '\n\n';
|
||||||
|
const tail = nextChapter >= 0 ? manual.slice(idx + marker.length + nextChapter) : '';
|
||||||
|
writeText(manualPath, head + chapter + (tail ? '\n' + tail.trimStart() : ''));
|
||||||
|
console.log(`rewrote chapter 21 for ${pages.length} pages`);
|
||||||
|
}
|
||||||
|
|
||||||
|
main();
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user