Compare commits
12 Commits
master
...
345f39386d
| Author | SHA1 | Date | |
|---|---|---|---|
| 345f39386d | |||
| e89cef4895 | |||
| 68acbf76cb | |||
| a6a92ffeb2 | |||
| bd9ca09983 | |||
| 6d93e400a9 | |||
| c4a2f6e42e | |||
| 1399b9a80a | |||
| e0e1b5d2bb | |||
| ebee02d103 | |||
| abf822fd2c | |||
| f6dce5daa8 |
10
AGENTS.md
Normal file
10
AGENTS.md
Normal file
@@ -0,0 +1,10 @@
|
||||
# AGENTS.md
|
||||
|
||||
## Scope
|
||||
|
||||
日志记录规则
|
||||
每次 GPT/Codex 执行完毕后,须将完整的执行过程日志追加至:
|
||||
|
||||
gptlog-process/gpdlog.md
|
||||
|
||||
日志包含提问和结论以及完整的执行过程,写入该文件的日志内容必须使用中文记录。
|
||||
@@ -22,10 +22,7 @@ const devWebpackConfig = merge(baseWebpackConfig, {
|
||||
},
|
||||
devtool: 'eval-cheap-module-source-map',
|
||||
cache: {
|
||||
type: 'filesystem',
|
||||
buildDependencies: {
|
||||
config: [__filename]
|
||||
}
|
||||
type: 'memory'
|
||||
},
|
||||
devServer: {
|
||||
https: true,
|
||||
|
||||
188
db_backups/add_assignee_to_timesheet_export_procs_20260622.sql
Normal file
188
db_backups/add_assignee_to_timesheet_export_procs_20260622.sql
Normal file
@@ -0,0 +1,188 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[工时统计_项目工时_查询_导出]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
SELECT '项目工时统计_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype
|
||||
|
||||
SELECT 256*20 AS 合同号, 256*20 AS 订单号, 256*30 AS 产品名称, 256*40 AS 产品编码, 256*15 AS 工序名称, 256*12 AS 操作人,
|
||||
256*12 AS 指派对象, 256*12 AS 计划数量, 256*12 AS 完成数量, 256*10 AS 报工数量, 256*15 AS 计划开始, 256*15 AS 计划完成, 256*12 AS '工时(h)'
|
||||
|
||||
SELECT 0 AS 合同号, 0 AS 订单号, 0 AS 产品名称, 0 AS 产品编码, 0 AS 工序名称, 0 AS 操作人,
|
||||
0 AS 指派对象, 0 AS 计划数量, 0 AS 完成数量, 0 AS 报工数量, 0 AS 计划开始, 0 AS 计划完成, 0 AS '工时(h)'
|
||||
|
||||
SELECT
|
||||
v.订单合同号 AS 合同号,
|
||||
v.订单号,
|
||||
v.产品名称,
|
||||
v.产品编码,
|
||||
v.工序名称,
|
||||
v.操作人,
|
||||
ISNULL(v.工位名称, '') AS 指派对象,
|
||||
CASE WHEN v.计划数量 IS NULL THEN '' WHEN v.计划数量 = FLOOR(v.计划数量) THEN CAST(CAST(v.计划数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(v.计划数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS 计划数量,
|
||||
CASE WHEN v.完成数量 IS NULL THEN '' WHEN v.完成数量 = FLOOR(v.完成数量) THEN CAST(CAST(v.完成数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(v.完成数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS 完成数量,
|
||||
CASE WHEN v.操作类别 IN ('报工', '辅助结束') THEN CAST(v.操作数值 AS VARCHAR(20)) ELSE '0' END AS 报工数量,
|
||||
CONVERT(VARCHAR(10), v.报工日期, 120) AS 计划开始,
|
||||
CONVERT(VARCHAR(10), v.报工日期, 120) AS 计划完成,
|
||||
CAST(CAST(v.加工工时 / 60.0 / 60.0 AS DECIMAL(10,2)) AS VARCHAR(20)) AS '工时(h)'
|
||||
FROM View_生产工时视图 v
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR v.订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR v.操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR v.产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR v.工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR v.订单号 LIKE '%' + @订单号 + '%')
|
||||
ORDER BY v.订单合同号, v.产品编码, v.工序名称, v.操作人, v.订单号
|
||||
END
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[工时统计_作业者工时_查询_导出]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
SELECT '作业者工时统计_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype
|
||||
|
||||
SELECT 256*12 AS 操作人, 256*15 AS 工作日期, 256*20 AS 合同号, 256*12 AS 订单号, 256*40 AS 产品编码,
|
||||
256*25 AS 产品名称, 256*15 AS 工序名称, 256*12 AS 指派对象, 256*10 AS 报工数量, 256*20 AS 开始时间, 256*20 AS 结束时间, 256*12 AS '工时(h)'
|
||||
|
||||
SELECT 0 AS 操作人, 0 AS 工作日期, 0 AS 合同号, 0 AS 订单号, 0 AS 产品编码,
|
||||
0 AS 产品名称, 0 AS 工序名称, 0 AS 指派对象, 0 AS 报工数量, 0 AS 开始时间, 0 AS 结束时间, 0 AS '工时(h)'
|
||||
|
||||
SELECT
|
||||
操作人,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
ISNULL(订单合同号, '') AS 合同号,
|
||||
ISNULL(订单号, '') AS 订单号,
|
||||
ISNULL(产品编码, '') AS 产品编码,
|
||||
ISNULL(产品名称, '') AS 产品名称,
|
||||
ISNULL(工序名称, '') AS 工序名称,
|
||||
ISNULL(工位名称, '') AS 指派对象,
|
||||
CASE WHEN 操作类别 IN ('报工', '辅助结束', '加班', '异常', '开始加工') THEN CAST(操作数值 AS VARCHAR(20)) ELSE '0' END AS 报工数量,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间,
|
||||
CAST(CAST(总时长 / 60.0 / 60.0 AS DECIMAL(10,2)) AS VARCHAR(20)) AS '工时(h)'
|
||||
FROM [dbo].[View_生产工时视图]
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND ISNULL(阶段标识, 0) != -1
|
||||
ORDER BY 操作人, 开始时间
|
||||
END
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[工时统计_任务工时_查询_导出]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
SELECT '任务工时统计_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype
|
||||
|
||||
SELECT 256*20 AS 合同号, 256*12 AS 订单号, 256*40 AS 产品编码, 256*25 AS 产品名称, 256*15 AS 工序名称,
|
||||
256*12 AS 操作人, 256*12 AS 指派对象, 256*12 AS 计划数量, 256*12 AS 完成数量, 256*10 AS 报工数量, 256*20 AS 开始时间, 256*20 AS 结束时间, 256*12 AS '工时(h)'
|
||||
|
||||
SELECT 0 AS 合同号, 0 AS 订单号, 0 AS 产品编码, 0 AS 产品名称, 0 AS 工序名称,
|
||||
0 AS 操作人, 0 AS 指派对象, 0 AS 计划数量, 0 AS 完成数量, 0 AS 报工数量, 0 AS 开始时间, 0 AS 结束时间, 0 AS '工时(h)'
|
||||
|
||||
SELECT
|
||||
ISNULL(订单合同号, '') AS 合同号,
|
||||
ISNULL(订单号, '') AS 订单号,
|
||||
ISNULL(产品编码, '') AS 产品编码,
|
||||
ISNULL(产品名称, '') AS 产品名称,
|
||||
ISNULL(工序名称, '') AS 工序名称,
|
||||
ISNULL(操作人, '') AS 操作人,
|
||||
ISNULL(工位名称, '') AS 指派对象,
|
||||
CASE WHEN 计划数量 IS NULL THEN '' WHEN 计划数量 = FLOOR(计划数量) THEN CAST(CAST(计划数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(计划数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS 计划数量,
|
||||
CASE WHEN 完成数量 IS NULL THEN '' WHEN 完成数量 = FLOOR(完成数量) THEN CAST(CAST(完成数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(完成数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS 完成数量,
|
||||
CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN CAST(操作数值 AS VARCHAR(20)) ELSE '0' END AS 报工数量,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间,
|
||||
CAST(CAST(加工工时 / 60.0 / 60.0 AS DECIMAL(10,2)) AS VARCHAR(20)) AS '工时(h)'
|
||||
FROM View_生产工时视图
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
ORDER BY 订单合同号, 订单号, 产品编码, 工序名称, 开始时间
|
||||
END
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[工时统计_设备工时_查询_导出]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
SELECT '设备工时统计_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype
|
||||
|
||||
SELECT 256*12 AS 操作人, 256*15 AS 工作日期, 256*20 AS 合同号, 256*12 AS 订单号, 256*40 AS 产品编码,
|
||||
256*25 AS 产品名称, 256*15 AS 工序名称, 256*12 AS 指派对象, 256*10 AS 报工数量, 256*20 AS 开始时间, 256*20 AS 结束时间, 256*12 AS '工时(h)'
|
||||
|
||||
SELECT 0 AS 操作人, 0 AS 工作日期, 0 AS 合同号, 0 AS 订单号, 0 AS 产品编码,
|
||||
0 AS 产品名称, 0 AS 工序名称, 0 AS 指派对象, 0 AS 报工数量, 0 AS 开始时间, 0 AS 结束时间, 0 AS '工时(h)'
|
||||
|
||||
SELECT
|
||||
工位名称,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
ISNULL(订单合同号, '') AS 合同号,
|
||||
ISNULL(订单号, '') AS 订单号,
|
||||
ISNULL(产品编码, '') AS 产品编码,
|
||||
ISNULL(产品名称, '') AS 产品名称,
|
||||
ISNULL(工序名称, '') AS 工序名称,
|
||||
ISNULL(工位名称, '') AS 指派对象,
|
||||
CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN CAST(操作数值 AS VARCHAR(20)) ELSE '0' END AS 报工数量,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间,
|
||||
CAST(CAST(加工工时 / 60.0 / 60.0 AS DECIMAL(10,2)) AS VARCHAR(20)) AS '工时(h)'
|
||||
FROM View_生产工时视图
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 报工日期 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 报工日期 <= @结束日期)
|
||||
AND 工位名称 IS NOT NULL AND 工位名称 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 工位名称 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND ISNULL(阶段标识, 0) = -1
|
||||
ORDER BY 工位名称, 开始时间
|
||||
END
|
||||
GO
|
||||
492
db_backups/add_assignee_to_timesheet_query_procs_20260622.sql
Normal file
492
db_backups/add_assignee_to_timesheet_query_procs_20260622.sql
Normal file
@@ -0,0 +1,492 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[工时统计_项目工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH 订单工时汇总 AS (
|
||||
SELECT
|
||||
v.订单合同号 AS 合同号,
|
||||
v.产品编码,
|
||||
v.产品名称,
|
||||
MAX(v.计划数量) AS 计划数量,
|
||||
MAX(v.完成数量) AS 完成数量,
|
||||
SUM(CASE WHEN v.操作类别 IN ('报工', '辅助结束') THEN v.操作数值 ELSE 0 END) AS 报工数量,
|
||||
MIN(CONVERT(VARCHAR(10), v.报工日期, 120)) AS 计划开始,
|
||||
MAX(CONVERT(VARCHAR(10), v.报工日期, 120)) AS 计划完成,
|
||||
CAST(SUM(v.加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时
|
||||
FROM View_生产工时视图 v
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR v.订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR v.操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR v.产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR v.工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR v.订单号 LIKE '%' + @订单号 + '%')
|
||||
GROUP BY v.订单合同号, v.产品编码, v.产品名称
|
||||
),
|
||||
工序工时明细 AS (
|
||||
SELECT
|
||||
v.订单合同号 AS 合同号,
|
||||
v.产品编码,
|
||||
v.工序名称,
|
||||
v.操作人,
|
||||
MAX(v.工位名称) AS 指派对象,
|
||||
v.订单号,
|
||||
SUM(CASE WHEN v.操作类别 IN ('报工', '辅助结束') THEN v.操作数值 ELSE 0 END) AS 报工数量,
|
||||
CAST(SUM(v.加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 工时小时,
|
||||
MIN(CONVERT(VARCHAR(10), v.报工日期, 120)) AS 计划开始,
|
||||
MAX(CONVERT(VARCHAR(10), v.报工日期, 120)) AS 计划完成
|
||||
FROM View_生产工时视图 v
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR v.订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR v.操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR v.产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR v.工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR v.订单号 LIKE '%' + @订单号 + '%')
|
||||
GROUP BY v.订单合同号, v.产品编码, v.工序名称, v.操作人, v.订单号
|
||||
)
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
合同号 AS contractNo,
|
||||
产品名称 AS materialDesc,
|
||||
产品编码 AS materialCode,
|
||||
'' AS processName,
|
||||
'' AS operator,
|
||||
'' AS 指派对象,
|
||||
CASE WHEN 计划数量 = FLOOR(计划数量) THEN CAST(CAST(计划数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(计划数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END + '/' +
|
||||
CASE WHEN 完成数量 = FLOOR(完成数量) THEN CAST(CAST(完成数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(完成数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS qty,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
ISNULL(计划开始, '') AS planStart,
|
||||
ISNULL(计划完成, '') AS planEnd,
|
||||
CAST(总工时小时 AS VARCHAR(20)) AS workHours,
|
||||
'' AS 订单号
|
||||
FROM 订单工时汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
d.合同号 AS contractNo,
|
||||
'' AS materialDesc,
|
||||
d.产品编码 AS materialCode,
|
||||
d.工序名称 AS processName,
|
||||
d.操作人 AS operator,
|
||||
ISNULL(d.指派对象, '') AS 指派对象,
|
||||
'' AS qty,
|
||||
CAST(d.报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
d.计划开始 AS planStart,
|
||||
d.计划完成 AS planEnd,
|
||||
CAST(d.工时小时 AS VARCHAR(20)) AS workHours,
|
||||
d.订单号 AS 订单号
|
||||
FROM 工序工时明细 d
|
||||
|
||||
ORDER BY contractNo, materialCode, [Level], processName
|
||||
END
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[工时统计_作业者工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH 操作人汇总 AS (
|
||||
SELECT
|
||||
操作人,
|
||||
COUNT(*) AS 报工次数,
|
||||
SUM(CASE
|
||||
WHEN 操作类别 NOT IN ('异常') THEN 操作数值
|
||||
WHEN 操作类别 = '异常' THEN -操作数值
|
||||
ELSE 0
|
||||
END) AS 报工数量,
|
||||
CAST(SUM(CASE
|
||||
WHEN 操作类别 = '异常' THEN -总时长
|
||||
ELSE 总时长
|
||||
END) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时
|
||||
FROM [dbo].[View_生产工时视图]
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 开始时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 结束时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND ISNULL(阶段标识, 0) != -1
|
||||
GROUP BY 操作人
|
||||
),
|
||||
日期汇总 AS (
|
||||
SELECT
|
||||
操作人,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
COUNT(*) AS 报工次数,
|
||||
SUM(CASE
|
||||
WHEN 操作类别 NOT IN ('异常') THEN 操作数值
|
||||
WHEN 操作类别 = '异常' THEN -操作数值
|
||||
ELSE 0
|
||||
END) AS 报工数量,
|
||||
CAST(SUM(CASE
|
||||
WHEN 操作类别 = '异常' THEN -总时长
|
||||
ELSE 总时长
|
||||
END) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 工时小时
|
||||
FROM [dbo].[View_生产工时视图]
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 开始时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 结束时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND ISNULL(阶段标识, 0) != -1
|
||||
GROUP BY 操作人, CONVERT(VARCHAR(10), 开始时间, 120)
|
||||
),
|
||||
报工明细 AS (
|
||||
SELECT
|
||||
操作人,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
订单合同号 AS 合同号,
|
||||
订单号,
|
||||
产品编码,
|
||||
产品名称,
|
||||
工序名称,
|
||||
工位名称 AS 指派对象,
|
||||
CASE
|
||||
WHEN 操作类别 NOT IN ('异常') THEN 操作数值
|
||||
WHEN 操作类别 = '异常' THEN -操作数值
|
||||
ELSE 0
|
||||
END AS 报工数量,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间,
|
||||
CAST(CASE
|
||||
WHEN 操作类别 = '异常' THEN -总时长
|
||||
ELSE 总时长
|
||||
END / 60.0 / 60.0 AS DECIMAL(10,2)) AS 工时小时,
|
||||
异常说明,
|
||||
工序说明,
|
||||
操作类别
|
||||
FROM [dbo].[View_生产工时视图]
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 开始时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 结束时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND ISNULL(阶段标识, 0) != -1
|
||||
)
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
操作人 AS operator,
|
||||
'' AS dateLabel,
|
||||
CAST(报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
'' AS 指派对象,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
'' AS 异常说明,
|
||||
'' AS 工序说明,
|
||||
'' AS 操作类别,
|
||||
CAST(总工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 操作人汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
操作人 AS operator,
|
||||
工作日期 AS dateLabel,
|
||||
CAST(报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
'' AS 指派对象,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
'' AS 异常说明,
|
||||
'' AS 工序说明,
|
||||
'' AS 操作类别,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 日期汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
3 AS [Level],
|
||||
操作人 AS operator,
|
||||
工作日期 AS dateLabel,
|
||||
'' AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
ISNULL(合同号, '') AS contractNo,
|
||||
ISNULL(订单号, '') AS orderNo,
|
||||
ISNULL(产品编码, '') AS productCode,
|
||||
ISNULL(产品名称, '') AS productName,
|
||||
ISNULL(工序名称, '') AS processName,
|
||||
ISNULL(指派对象, '') AS 指派对象,
|
||||
ISNULL(开始时间, '') AS startTime,
|
||||
ISNULL(结束时间, '') AS endTime,
|
||||
ISNULL(异常说明, '') AS 异常说明,
|
||||
ISNULL(工序说明, '') AS 工序说明,
|
||||
ISNULL(操作类别, '') AS 操作类别,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 报工明细
|
||||
|
||||
ORDER BY operator, dateLabel, [Level]
|
||||
END
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[工时统计_任务工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH 任务汇总 AS (
|
||||
SELECT
|
||||
订单合同号 AS 合同号,
|
||||
订单号,
|
||||
产品编码,
|
||||
产品名称,
|
||||
工序名称,
|
||||
操作类别,
|
||||
MAX(计划数量) AS 计划数量,
|
||||
MAX(完成数量) AS 完成数量,
|
||||
SUM(CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN 操作数值 ELSE 0 END) AS 报工数量,
|
||||
CAST(SUM(总时长) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时
|
||||
FROM View_生产工时视图
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
GROUP BY 订单合同号, 订单号, 产品编码, 产品名称, 工序名称, 操作类别
|
||||
),
|
||||
报工明细 AS (
|
||||
SELECT
|
||||
订单合同号 AS 合同号,
|
||||
订单号,
|
||||
产品编码,
|
||||
工序名称,
|
||||
操作人,
|
||||
工位名称 AS 指派对象,
|
||||
操作类别,
|
||||
CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN 操作数值 ELSE 0 END AS 报工数量,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间,
|
||||
CAST(总时长 / 60.0 / 60.0 AS DECIMAL(10,2)) AS 工时小时
|
||||
FROM View_生产工时视图
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
)
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
ISNULL(合同号, '') AS contractNo,
|
||||
ISNULL(订单号, '') AS orderNo,
|
||||
ISNULL(产品编码, '') AS productCode,
|
||||
ISNULL(产品名称, '') AS productName,
|
||||
ISNULL(工序名称, '') AS processName,
|
||||
'' AS operator,
|
||||
'' AS 指派对象,
|
||||
CASE WHEN 计划数量 IS NULL THEN '0' WHEN 计划数量 = FLOOR(计划数量) THEN CAST(CAST(计划数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(计划数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END + '/' +
|
||||
CASE WHEN 完成数量 IS NULL THEN '0' WHEN 完成数量 = FLOOR(完成数量) THEN CAST(CAST(完成数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(完成数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS qty,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
CAST(总工时小时 AS VARCHAR(20)) AS workHours,
|
||||
操作类别
|
||||
FROM 任务汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
ISNULL(合同号, '') AS contractNo,
|
||||
ISNULL(订单号, '') AS orderNo,
|
||||
ISNULL(产品编码, '') AS productCode,
|
||||
'' AS productName,
|
||||
ISNULL(工序名称, '') AS processName,
|
||||
ISNULL(操作人, '') AS operator,
|
||||
ISNULL(指派对象, '') AS 指派对象,
|
||||
'' AS qty,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
ISNULL(开始时间, '') AS startTime,
|
||||
ISNULL(结束时间, '') AS endTime,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours,
|
||||
操作类别
|
||||
FROM 报工明细
|
||||
|
||||
ORDER BY contractNo, orderNo, productCode, processName, [Level], startTime
|
||||
END
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[工时统计_设备工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH 操作人汇总 AS (
|
||||
SELECT
|
||||
工位名称,
|
||||
COUNT(*) AS 报工次数,
|
||||
SUM(CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN 操作数值 ELSE 0 END) AS 报工数量,
|
||||
CAST(SUM(加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时
|
||||
FROM View_生产工时视图
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 工位名称 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND ISNULL(阶段标识, 0) = -1
|
||||
GROUP BY 工位名称
|
||||
),
|
||||
日期汇总 AS (
|
||||
SELECT
|
||||
工位名称,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
COUNT(*) AS 报工次数,
|
||||
SUM(CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN 操作数值 ELSE 0 END) AS 报工数量,
|
||||
CAST(SUM(加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 工时小时
|
||||
FROM View_生产工时视图
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND 工位名称 IS NOT NULL AND 工位名称 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 工位名称 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND ISNULL(阶段标识, 0) = -1
|
||||
GROUP BY 工位名称, CONVERT(VARCHAR(10), 开始时间, 120)
|
||||
),
|
||||
报工明细 AS (
|
||||
SELECT
|
||||
工位名称,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
订单合同号 AS 合同号,
|
||||
订单号,
|
||||
产品编码,
|
||||
产品名称,
|
||||
工序名称,
|
||||
工位名称 AS 指派对象,
|
||||
CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN 操作数值 ELSE 0 END AS 报工数量,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间,
|
||||
CAST(加工工时 / 60.0 / 60.0 AS DECIMAL(10,2)) AS 工时小时
|
||||
FROM View_生产工时视图
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 工位名称 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND ISNULL(阶段标识, 0) = -1
|
||||
)
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
工位名称 AS operator,
|
||||
'' AS dateLabel,
|
||||
CAST(报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
'' AS 指派对象,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
CAST(总工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 操作人汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
工位名称 AS operator,
|
||||
工作日期 AS dateLabel,
|
||||
CAST(报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
'' AS 指派对象,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 日期汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
3 AS [Level],
|
||||
工位名称 AS operator,
|
||||
工作日期 AS dateLabel,
|
||||
'' AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
ISNULL(合同号, '') AS contractNo,
|
||||
ISNULL(订单号, '') AS orderNo,
|
||||
ISNULL(产品编码, '') AS productCode,
|
||||
ISNULL(产品名称, '') AS productName,
|
||||
ISNULL(工序名称, '') AS processName,
|
||||
ISNULL(指派对象, '') AS 指派对象,
|
||||
ISNULL(开始时间, '') AS startTime,
|
||||
ISNULL(结束时间, '') AS endTime,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 报工明细
|
||||
|
||||
ORDER BY operator, dateLabel, [Level]
|
||||
END
|
||||
GO
|
||||
110
db_backups/add_delivery_notice_list_menu_20260626.sql
Normal file
110
db_backups/add_delivery_notice_list_menu_20260626.sql
Normal file
@@ -0,0 +1,110 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @Title nvarchar(100) = N'发货通知列表';
|
||||
DECLARE @Path nvarchar(300) = N'DeliveryNoticeList/index';
|
||||
DECLARE @Component nvarchar(300) = N'/ProductionManagement/DeliveryNoticeList/index';
|
||||
DECLARE @Name nvarchar(100) = N'DeliveryNoticeList';
|
||||
DECLARE @Icon nvarchar(100) = N'DocumentImport';
|
||||
DECLARE @TargetRole int = NULL;
|
||||
|
||||
IF OBJECT_ID(N'dbo.登录基础数据_二级菜单', N'U') IS NULL
|
||||
BEGIN
|
||||
RAISERROR(N'未找到表 dbo.登录基础数据_二级菜单。', 16, 1);
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
DECLARE @IdIsIdentity bit = ISNULL(COLUMNPROPERTY(OBJECT_ID(N'dbo.登录基础数据_二级菜单'), N'id', 'IsIdentity'), 0);
|
||||
|
||||
IF @IdIsIdentity = 1
|
||||
BEGIN
|
||||
;WITH SourceRows AS (
|
||||
SELECT
|
||||
src.[账号代码],
|
||||
src.[id] AS [pid]
|
||||
FROM [dbo].[登录基础数据_二级菜单] src
|
||||
WHERE src.[是否启用] = 1
|
||||
AND (@TargetRole IS NULL OR src.[账号代码] = @TargetRole)
|
||||
AND src.[pid] = 0
|
||||
AND src.[title] = N'生产管理'
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM [dbo].[登录基础数据_二级菜单] existing
|
||||
WHERE existing.[账号代码] = src.[账号代码]
|
||||
AND (existing.[path] = @Path OR existing.[componet] = @Component OR existing.[title] = @Title)
|
||||
)
|
||||
)
|
||||
INSERT INTO [dbo].[登录基础数据_二级菜单]
|
||||
([pid], [path], [componet], [redirect], [name], [title], [icon], [账号代码], [是否启用], [操作时间])
|
||||
SELECT
|
||||
[pid],
|
||||
@Path,
|
||||
@Component,
|
||||
NULL,
|
||||
@Name,
|
||||
@Title,
|
||||
@Icon,
|
||||
[账号代码],
|
||||
1,
|
||||
GETDATE()
|
||||
FROM SourceRows;
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
;WITH SourceRows AS (
|
||||
SELECT
|
||||
ROW_NUMBER() OVER (ORDER BY src.[账号代码], src.[id]) AS rn,
|
||||
src.[账号代码],
|
||||
src.[id] AS [pid]
|
||||
FROM [dbo].[登录基础数据_二级菜单] src
|
||||
WHERE src.[是否启用] = 1
|
||||
AND (@TargetRole IS NULL OR src.[账号代码] = @TargetRole)
|
||||
AND src.[pid] = 0
|
||||
AND src.[title] = N'生产管理'
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM [dbo].[登录基础数据_二级菜单] existing
|
||||
WHERE existing.[账号代码] = src.[账号代码]
|
||||
AND (existing.[path] = @Path OR existing.[componet] = @Component OR existing.[title] = @Title)
|
||||
)
|
||||
),
|
||||
BaseId AS (
|
||||
SELECT ISNULL(MAX([id]), 0) AS maxId
|
||||
FROM [dbo].[登录基础数据_二级菜单]
|
||||
)
|
||||
INSERT INTO [dbo].[登录基础数据_二级菜单]
|
||||
([id], [pid], [path], [componet], [redirect], [name], [title], [icon], [账号代码], [模块代码], [是否启用], [操作时间])
|
||||
SELECT
|
||||
BaseId.maxId + SourceRows.rn,
|
||||
SourceRows.[pid],
|
||||
@Path,
|
||||
@Component,
|
||||
NULL,
|
||||
@Name,
|
||||
@Title,
|
||||
@Icon,
|
||||
SourceRows.[账号代码],
|
||||
BaseId.maxId + SourceRows.rn,
|
||||
1,
|
||||
GETDATE()
|
||||
FROM SourceRows
|
||||
CROSS JOIN BaseId;
|
||||
END;
|
||||
|
||||
UPDATE [dbo].[登录基础数据_二级菜单]
|
||||
SET
|
||||
[path] = @Path,
|
||||
[componet] = @Component,
|
||||
[name] = @Name,
|
||||
[title] = @Title,
|
||||
[模块代码] = [id],
|
||||
[是否启用] = 1
|
||||
WHERE [title] = @Title OR [componet] = @Component;
|
||||
|
||||
SELECT [id], [pid], [path], [componet], [name], [title], [icon], [账号代码], [模块代码], [是否启用]
|
||||
FROM [dbo].[登录基础数据_二级菜单]
|
||||
WHERE [path] = @Path OR [componet] = @Component OR [title] = @Title
|
||||
ORDER BY [账号代码], [id];
|
||||
GO
|
||||
413
db_backups/add_design_report_category_field_20260709.sql
Normal file
413
db_backups/add_design_report_category_field_20260709.sql
Normal file
@@ -0,0 +1,413 @@
|
||||
USE [YL_MESDB];
|
||||
GO
|
||||
|
||||
IF COL_LENGTH(N'[dbo].[MES_设计报工_任务]', N'类别') IS NULL
|
||||
BEGIN
|
||||
ALTER TABLE [dbo].[MES_设计报工_任务] ADD [类别] nvarchar(100) NULL;
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE [dbo].[设计报工_任务_查询]
|
||||
@DID int = NULL,
|
||||
@项目号 nvarchar(100) = N'',
|
||||
@物料编码 nvarchar(100) = N'',
|
||||
@图号 nvarchar(100) = N'',
|
||||
@类别 nvarchar(100) = N'',
|
||||
@关联父件物料编码 nvarchar(100) = N'',
|
||||
@预计开始时间_Start nvarchar(30) = N'',
|
||||
@预计开始时间_End nvarchar(30) = N'',
|
||||
@预计结束时间_Start nvarchar(30) = N'',
|
||||
@预计结束时间_End nvarchar(30) = N'',
|
||||
@单据状态 nvarchar(50) = N'',
|
||||
@当前操作人ID nvarchar(100) = N'',
|
||||
@当前操作人 nvarchar(100) = N''
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @预计开始日期1 datetime = TRY_CONVERT(datetime, NULLIF(@预计开始时间_Start, N''));
|
||||
DECLARE @预计开始日期2 datetime = TRY_CONVERT(datetime, NULLIF(@预计开始时间_End, N''));
|
||||
DECLARE @预计结束日期1 datetime = TRY_CONVERT(datetime, NULLIF(@预计结束时间_Start, N''));
|
||||
DECLARE @预计结束日期2 datetime = TRY_CONVERT(datetime, NULLIF(@预计结束时间_End, N''));
|
||||
|
||||
SELECT TOP 1000
|
||||
t.[DID],
|
||||
t.[项目号],
|
||||
t.[物料编码],
|
||||
t.[物料名称],
|
||||
t.[图号],
|
||||
t.[类别],
|
||||
t.[任务描述],
|
||||
t.[关联父件物料编码],
|
||||
t.[关联父件物料名称],
|
||||
t.[设计要求],
|
||||
t.[研发立项号],
|
||||
t.[研发目的],
|
||||
t.[指派对象ID],
|
||||
t.[指派对象],
|
||||
CONVERT(varchar(19), t.[预计开始时间], 120) AS [预计开始时间],
|
||||
CONVERT(varchar(19), t.[预计结束时间], 120) AS [预计结束时间],
|
||||
t.[单据状态],
|
||||
CONVERT(varchar(19), t.[创建日期], 120) AS [创建日期],
|
||||
t.[创建人],
|
||||
t.[最后编辑人],
|
||||
CONVERT(varchar(19), t.[最后编辑时间], 120) AS [最后编辑时间],
|
||||
t.[备注],
|
||||
ISNULL(r.[报工次数], 0) AS [报工次数],
|
||||
ISNULL(r.[未结束报工数], 0) AS [未结束报工数],
|
||||
ISNULL(r.[当前用户未结束报工数], 0) AS [当前用户未结束报工数],
|
||||
ISNULL(p.[未结束报工人员], N'') AS [未结束报工人员],
|
||||
CONVERT(varchar(19), r.[最后开始时间], 120) AS [最后开始时间],
|
||||
CONVERT(varchar(19), r.[最后结束时间], 120) AS [最后结束时间]
|
||||
FROM [dbo].[MES_设计报工_任务] AS t
|
||||
OUTER APPLY
|
||||
(
|
||||
SELECT
|
||||
COUNT(1) AS [报工次数],
|
||||
SUM(CASE WHEN rr.[结束时间] IS NULL THEN 1 ELSE 0 END) AS [未结束报工数],
|
||||
SUM(CASE
|
||||
WHEN rr.[结束时间] IS NULL
|
||||
AND (
|
||||
(NULLIF(@当前操作人ID, N'') IS NOT NULL AND ISNULL(rr.[操作人ID], N'') = @当前操作人ID)
|
||||
OR (NULLIF(@当前操作人ID, N'') IS NULL AND NULLIF(@当前操作人, N'') IS NOT NULL AND ISNULL(rr.[操作人], N'') = @当前操作人)
|
||||
)
|
||||
THEN 1 ELSE 0 END) AS [当前用户未结束报工数],
|
||||
MAX(rr.[开始时间]) AS [最后开始时间],
|
||||
MAX(rr.[结束时间]) AS [最后结束时间]
|
||||
FROM [dbo].[MES_设计报工_记录] AS rr
|
||||
WHERE rr.[DID] = t.[DID]
|
||||
) AS r
|
||||
OUTER APPLY
|
||||
(
|
||||
SELECT STRING_AGG(CONVERT(nvarchar(max), x.[操作人标识]), N'、') AS [未结束报工人员]
|
||||
FROM
|
||||
(
|
||||
SELECT DISTINCT COALESCE(NULLIF(rr2.[操作人], N''), NULLIF(rr2.[操作人ID], N''), N'未填写操作人') AS [操作人标识]
|
||||
FROM [dbo].[MES_设计报工_记录] AS rr2
|
||||
WHERE rr2.[DID] = t.[DID]
|
||||
AND rr2.[结束时间] IS NULL
|
||||
) AS x
|
||||
) AS p
|
||||
WHERE
|
||||
(@DID IS NULL OR @DID = 0 OR t.[DID] = @DID)
|
||||
AND (ISNULL(@项目号, N'') = N'' OR t.[项目号] LIKE N'%' + @项目号 + N'%')
|
||||
AND (ISNULL(@物料编码, N'') = N'' OR t.[物料编码] LIKE N'%' + @物料编码 + N'%')
|
||||
AND (ISNULL(@图号, N'') = N'' OR t.[图号] LIKE N'%' + @图号 + N'%')
|
||||
AND (ISNULL(@类别, N'') = N'' OR t.[类别] LIKE N'%' + @类别 + N'%')
|
||||
AND (ISNULL(@关联父件物料编码, N'') = N'' OR t.[关联父件物料编码] LIKE N'%' + @关联父件物料编码 + N'%')
|
||||
AND (ISNULL(@单据状态, N'') = N'' OR @单据状态 = N'全部' OR t.[单据状态] = @单据状态)
|
||||
AND (@预计开始日期1 IS NULL OR t.[预计开始时间] >= @预计开始日期1)
|
||||
AND (@预计开始日期2 IS NULL OR t.[预计开始时间] < DATEADD(day, 1, @预计开始日期2))
|
||||
AND (@预计结束日期1 IS NULL OR t.[预计结束时间] >= @预计结束日期1)
|
||||
AND (@预计结束日期2 IS NULL OR t.[预计结束时间] < DATEADD(day, 1, @预计结束日期2))
|
||||
ORDER BY t.[DID] DESC;
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE [dbo].[设计报工_任务_新增]
|
||||
@项目号 nvarchar(100) = N'',
|
||||
@物料编码 nvarchar(100) = N'',
|
||||
@物料名称 nvarchar(200) = N'',
|
||||
@图号 nvarchar(100) = N'',
|
||||
@类别 nvarchar(100) = N'',
|
||||
@任务描述 nvarchar(500) = N'',
|
||||
@关联父件物料编码 nvarchar(100) = N'',
|
||||
@关联父件物料名称 nvarchar(200) = N'',
|
||||
@设计要求 nvarchar(max) = N'',
|
||||
@研发立项号 nvarchar(100) = N'',
|
||||
@研发目的 nvarchar(500) = N'',
|
||||
@指派对象ID nvarchar(1000) = N'',
|
||||
@指派对象 nvarchar(1000) = N'',
|
||||
@预计开始时间 nvarchar(30) = N'',
|
||||
@预计结束时间 nvarchar(30) = N'',
|
||||
@创建人 nvarchar(100) = N'',
|
||||
@备注 nvarchar(500) = N''
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
INSERT INTO [dbo].[MES_设计报工_任务]
|
||||
(
|
||||
[项目号], [物料编码], [物料名称], [图号], [类别], [任务描述],
|
||||
[关联父件物料编码], [关联父件物料名称], [设计要求],
|
||||
[研发立项号], [研发目的], [指派对象ID], [指派对象],
|
||||
[预计开始时间], [预计结束时间], [单据状态],
|
||||
[创建人], [最后编辑人], [最后编辑时间], [备注]
|
||||
)
|
||||
VALUES
|
||||
(
|
||||
NULLIF(@项目号, N''), NULLIF(@物料编码, N''), NULLIF(@物料名称, N''), NULLIF(@图号, N''), NULLIF(@类别, N''), NULLIF(@任务描述, N''),
|
||||
NULLIF(@关联父件物料编码, N''), NULLIF(@关联父件物料名称, N''), NULLIF(@设计要求, N''),
|
||||
NULLIF(@研发立项号, N''), NULLIF(@研发目的, N''), NULLIF(@指派对象ID, N''), NULLIF(@指派对象, N''),
|
||||
TRY_CONVERT(datetime, NULLIF(@预计开始时间, N'')), TRY_CONVERT(datetime, NULLIF(@预计结束时间, N'')), N'待开始',
|
||||
NULLIF(@创建人, N''), NULLIF(@创建人, N''), GETDATE(), NULLIF(@备注, N'')
|
||||
);
|
||||
|
||||
SELECT CAST(1 AS int) AS [result], N'新增成功' AS [message], SCOPE_IDENTITY() AS [DID];
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE [dbo].[设计报工_任务_编辑]
|
||||
@DID int,
|
||||
@项目号 nvarchar(100) = N'',
|
||||
@物料编码 nvarchar(100) = N'',
|
||||
@物料名称 nvarchar(200) = N'',
|
||||
@图号 nvarchar(100) = N'',
|
||||
@类别 nvarchar(100) = N'',
|
||||
@任务描述 nvarchar(500) = N'',
|
||||
@关联父件物料编码 nvarchar(100) = N'',
|
||||
@关联父件物料名称 nvarchar(200) = N'',
|
||||
@设计要求 nvarchar(max) = N'',
|
||||
@研发立项号 nvarchar(100) = N'',
|
||||
@研发目的 nvarchar(500) = N'',
|
||||
@指派对象ID nvarchar(1000) = N'',
|
||||
@指派对象 nvarchar(1000) = N'',
|
||||
@预计开始时间 nvarchar(30) = N'',
|
||||
@预计结束时间 nvarchar(30) = N'',
|
||||
@最后编辑人 nvarchar(100) = N'',
|
||||
@备注 nvarchar(500) = N''
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_任务] WHERE [DID] = @DID)
|
||||
BEGIN
|
||||
SELECT CAST(0 AS int) AS [result], N'任务不存在' AS [message];
|
||||
RETURN;
|
||||
END
|
||||
|
||||
UPDATE [dbo].[MES_设计报工_任务]
|
||||
SET
|
||||
[项目号] = NULLIF(@项目号, N''),
|
||||
[物料编码] = NULLIF(@物料编码, N''),
|
||||
[物料名称] = NULLIF(@物料名称, N''),
|
||||
[图号] = NULLIF(@图号, N''),
|
||||
[类别] = NULLIF(@类别, N''),
|
||||
[任务描述] = NULLIF(@任务描述, N''),
|
||||
[关联父件物料编码] = NULLIF(@关联父件物料编码, N''),
|
||||
[关联父件物料名称] = NULLIF(@关联父件物料名称, N''),
|
||||
[设计要求] = NULLIF(@设计要求, N''),
|
||||
[研发立项号] = NULLIF(@研发立项号, N''),
|
||||
[研发目的] = NULLIF(@研发目的, N''),
|
||||
[指派对象ID] = NULLIF(@指派对象ID, N''),
|
||||
[指派对象] = NULLIF(@指派对象, N''),
|
||||
[预计开始时间] = TRY_CONVERT(datetime, NULLIF(@预计开始时间, N'')),
|
||||
[预计结束时间] = TRY_CONVERT(datetime, NULLIF(@预计结束时间, N'')),
|
||||
[最后编辑人] = NULLIF(@最后编辑人, N''),
|
||||
[最后编辑时间] = GETDATE(),
|
||||
[备注] = NULLIF(@备注, N'')
|
||||
WHERE [DID] = @DID;
|
||||
|
||||
SELECT CAST(1 AS int) AS [result], N'编辑成功' AS [message];
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE [dbo].[设计报工_记录_查询]
|
||||
@DID int = NULL,
|
||||
@项目号 nvarchar(100) = N'',
|
||||
@物料编码 nvarchar(100) = N'',
|
||||
@类别 nvarchar(100) = N'',
|
||||
@操作人 nvarchar(100) = N'',
|
||||
@开始日期 nvarchar(30) = N'',
|
||||
@结束日期 nvarchar(30) = N'',
|
||||
@校验状态 nvarchar(50) = N''
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @开始 datetime = TRY_CONVERT(datetime, NULLIF(@开始日期, N''));
|
||||
DECLARE @结束 datetime = TRY_CONVERT(datetime, NULLIF(@结束日期, N''));
|
||||
|
||||
SELECT TOP 1000
|
||||
r.[RID],
|
||||
r.[DID],
|
||||
t.[项目号],
|
||||
t.[物料编码],
|
||||
t.[物料名称],
|
||||
t.[图号],
|
||||
t.[类别],
|
||||
t.[任务描述],
|
||||
t.[指派对象],
|
||||
r.[操作人ID],
|
||||
r.[操作人],
|
||||
CONVERT(varchar(19), r.[开始时间], 120) AS [开始时间],
|
||||
CONVERT(varchar(19), r.[结束时间], 120) AS [结束时间],
|
||||
r.[工时秒数],
|
||||
CAST(CAST(ISNULL(r.[工时秒数], 0) / 3600.0 AS decimal(18, 2)) AS varchar(30)) AS [工时小时],
|
||||
r.[报工状态],
|
||||
r.[已校验],
|
||||
CASE WHEN r.[已校验] = 1 THEN N'已校验' ELSE N'未校验' END AS [校验状态],
|
||||
r.[校验人],
|
||||
CONVERT(varchar(19), r.[校验时间], 120) AS [校验时间],
|
||||
r.[备注],
|
||||
t.[单据状态]
|
||||
FROM [dbo].[MES_设计报工_记录] AS r
|
||||
INNER JOIN [dbo].[MES_设计报工_任务] AS t ON r.[DID] = t.[DID]
|
||||
WHERE
|
||||
(@DID IS NULL OR @DID = 0 OR r.[DID] = @DID)
|
||||
AND (ISNULL(@项目号, N'') = N'' OR t.[项目号] LIKE N'%' + @项目号 + N'%')
|
||||
AND (ISNULL(@物料编码, N'') = N'' OR t.[物料编码] LIKE N'%' + @物料编码 + N'%')
|
||||
AND (ISNULL(@类别, N'') = N'' OR t.[类别] LIKE N'%' + @类别 + N'%')
|
||||
AND (ISNULL(@操作人, N'') = N'' OR r.[操作人] LIKE N'%' + @操作人 + N'%')
|
||||
AND (@开始 IS NULL OR r.[开始时间] >= @开始)
|
||||
AND (@结束 IS NULL OR r.[开始时间] < DATEADD(day, 1, @结束))
|
||||
AND (
|
||||
ISNULL(@校验状态, N'') = N''
|
||||
OR @校验状态 = N'全部'
|
||||
OR (@校验状态 = N'已校验' AND r.[已校验] = 1)
|
||||
OR (@校验状态 = N'未校验' AND r.[已校验] = 0)
|
||||
)
|
||||
ORDER BY r.[RID] DESC;
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE [dbo].[设计报工_工时校验_查询]
|
||||
@DID int = NULL,
|
||||
@项目号 nvarchar(100) = N'',
|
||||
@物料编码 nvarchar(100) = N'',
|
||||
@类别 nvarchar(100) = N'',
|
||||
@操作人 nvarchar(100) = N'',
|
||||
@开始日期 nvarchar(30) = N'',
|
||||
@结束日期 nvarchar(30) = N'',
|
||||
@校验状态 nvarchar(50) = N'未校验'
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
EXEC [dbo].[设计报工_记录_查询]
|
||||
@DID = @DID,
|
||||
@项目号 = @项目号,
|
||||
@物料编码 = @物料编码,
|
||||
@类别 = @类别,
|
||||
@操作人 = @操作人,
|
||||
@开始日期 = @开始日期,
|
||||
@结束日期 = @结束日期,
|
||||
@校验状态 = @校验状态;
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE [dbo].[设计报工_工时报表_作业者工时_查询]
|
||||
@开始日期 nvarchar(30) = N'',
|
||||
@结束日期 nvarchar(30) = N'',
|
||||
@操作人 nvarchar(100) = N'',
|
||||
@项目号 nvarchar(100) = N'',
|
||||
@物料编码 nvarchar(100) = N'',
|
||||
@类别 nvarchar(100) = N'',
|
||||
@DID int = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @开始 datetime = TRY_CONVERT(datetime, NULLIF(@开始日期, N''));
|
||||
DECLARE @结束 datetime = TRY_CONVERT(datetime, NULLIF(@结束日期, N''));
|
||||
|
||||
;WITH base AS
|
||||
(
|
||||
SELECT
|
||||
r.[RID],
|
||||
r.[DID],
|
||||
ISNULL(r.[操作人], N'') AS [操作人],
|
||||
CONVERT(varchar(10), r.[开始时间], 120) AS [工作日期],
|
||||
t.[项目号],
|
||||
t.[物料编码],
|
||||
t.[物料名称],
|
||||
t.[图号],
|
||||
t.[类别],
|
||||
t.[任务描述],
|
||||
r.[开始时间],
|
||||
r.[结束时间],
|
||||
ISNULL(r.[工时秒数], 0) AS [工时秒数],
|
||||
r.[已校验],
|
||||
r.[备注]
|
||||
FROM [dbo].[MES_设计报工_记录] AS r
|
||||
INNER JOIN [dbo].[MES_设计报工_任务] AS t ON r.[DID] = t.[DID]
|
||||
WHERE
|
||||
r.[开始时间] IS NOT NULL
|
||||
AND r.[结束时间] IS NOT NULL
|
||||
AND (@开始 IS NULL OR r.[开始时间] >= @开始)
|
||||
AND (@结束 IS NULL OR r.[开始时间] < DATEADD(day, 1, @结束))
|
||||
AND (ISNULL(@操作人, N'') = N'' OR r.[操作人] LIKE N'%' + @操作人 + N'%')
|
||||
AND (ISNULL(@项目号, N'') = N'' OR t.[项目号] LIKE N'%' + @项目号 + N'%')
|
||||
AND (ISNULL(@物料编码, N'') = N'' OR t.[物料编码] LIKE N'%' + @物料编码 + N'%')
|
||||
AND (ISNULL(@类别, N'') = N'' OR t.[类别] LIKE N'%' + @类别 + N'%')
|
||||
AND (@DID IS NULL OR @DID = 0 OR r.[DID] = @DID)
|
||||
),
|
||||
result AS
|
||||
(
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
N'p-' + [操作人] AS [id],
|
||||
CAST(N'' AS nvarchar(100)) AS [parentId],
|
||||
[操作人],
|
||||
CAST(N'' AS nvarchar(20)) AS [工作日期],
|
||||
CAST(NULL AS int) AS [RID],
|
||||
CAST(NULL AS int) AS [DID],
|
||||
CAST(N'' AS nvarchar(100)) AS [项目号],
|
||||
CAST(N'' AS nvarchar(100)) AS [物料编码],
|
||||
CAST(N'' AS nvarchar(200)) AS [物料名称],
|
||||
CAST(N'' AS nvarchar(100)) AS [图号],
|
||||
CAST(N'' AS nvarchar(100)) AS [类别],
|
||||
CAST(N'' AS nvarchar(500)) AS [任务描述],
|
||||
CAST(N'' AS varchar(19)) AS [开始时间],
|
||||
CAST(N'' AS varchar(19)) AS [结束时间],
|
||||
COUNT(1) AS [报工次数],
|
||||
CAST(SUM([工时秒数]) / 3600.0 AS decimal(18, 2)) AS [工时小时],
|
||||
CAST(N'' AS nvarchar(20)) AS [校验状态],
|
||||
CAST(N'' AS nvarchar(500)) AS [备注]
|
||||
FROM base
|
||||
GROUP BY [操作人]
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
N'd-' + [操作人] + N'-' + [工作日期] AS [id],
|
||||
N'p-' + [操作人] AS [parentId],
|
||||
[操作人],
|
||||
[工作日期],
|
||||
CAST(NULL AS int) AS [RID],
|
||||
CAST(NULL AS int) AS [DID],
|
||||
CAST(N'' AS nvarchar(100)) AS [项目号],
|
||||
CAST(N'' AS nvarchar(100)) AS [物料编码],
|
||||
CAST(N'' AS nvarchar(200)) AS [物料名称],
|
||||
CAST(N'' AS nvarchar(100)) AS [图号],
|
||||
CAST(N'' AS nvarchar(100)) AS [类别],
|
||||
CAST(N'' AS nvarchar(500)) AS [任务描述],
|
||||
CAST(N'' AS varchar(19)) AS [开始时间],
|
||||
CAST(N'' AS varchar(19)) AS [结束时间],
|
||||
COUNT(1) AS [报工次数],
|
||||
CAST(SUM([工时秒数]) / 3600.0 AS decimal(18, 2)) AS [工时小时],
|
||||
CAST(N'' AS nvarchar(20)) AS [校验状态],
|
||||
CAST(N'' AS nvarchar(500)) AS [备注]
|
||||
FROM base
|
||||
GROUP BY [操作人], [工作日期]
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
3 AS [Level],
|
||||
N'r-' + CAST([RID] AS nvarchar(20)) AS [id],
|
||||
N'd-' + [操作人] + N'-' + [工作日期] AS [parentId],
|
||||
[操作人],
|
||||
[工作日期],
|
||||
[RID],
|
||||
[DID],
|
||||
ISNULL([项目号], N'') AS [项目号],
|
||||
ISNULL([物料编码], N'') AS [物料编码],
|
||||
ISNULL([物料名称], N'') AS [物料名称],
|
||||
ISNULL([图号], N'') AS [图号],
|
||||
ISNULL([类别], N'') AS [类别],
|
||||
ISNULL([任务描述], N'') AS [任务描述],
|
||||
CONVERT(varchar(19), [开始时间], 120) AS [开始时间],
|
||||
CONVERT(varchar(19), [结束时间], 120) AS [结束时间],
|
||||
1 AS [报工次数],
|
||||
CAST([工时秒数] / 3600.0 AS decimal(18, 2)) AS [工时小时],
|
||||
CASE WHEN [已校验] = 1 THEN N'已校验' ELSE N'未校验' END AS [校验状态],
|
||||
ISNULL([备注], N'') AS [备注]
|
||||
FROM base
|
||||
)
|
||||
SELECT *
|
||||
FROM result
|
||||
ORDER BY [操作人], [工作日期], [Level], [RID];
|
||||
END
|
||||
GO
|
||||
288
db_backups/add_design_report_progress_note_20260710.sql
Normal file
288
db_backups/add_design_report_progress_note_20260710.sql
Normal file
@@ -0,0 +1,288 @@
|
||||
USE [YL_MESDB];
|
||||
GO
|
||||
|
||||
SET ANSI_NULLS ON;
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON;
|
||||
GO
|
||||
|
||||
IF COL_LENGTH(N'dbo.MES_设计报工_记录', N'进度说明') IS NULL
|
||||
BEGIN
|
||||
ALTER TABLE [dbo].[MES_设计报工_记录] ADD [进度说明] nvarchar(500) NULL;
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE [dbo].[设计报工_任务_结束]
|
||||
@DID int,
|
||||
@操作人ID nvarchar(100) = N'',
|
||||
@操作人 nvarchar(100) = N'',
|
||||
@进度说明 nvarchar(500) = N''
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
SET XACT_ABORT OFF;
|
||||
|
||||
DECLARE @当前操作人ID nvarchar(100) = NULLIF(@操作人ID, N'');
|
||||
DECLARE @当前操作人 nvarchar(100) = NULLIF(@操作人, N'');
|
||||
DECLARE @RID int;
|
||||
DECLARE @初始事务数 int = @@TRANCOUNT;
|
||||
DECLARE @保存点名称 sysname = N'DRT_Task_End';
|
||||
|
||||
IF @当前操作人ID IS NULL AND @当前操作人 IS NULL
|
||||
BEGIN
|
||||
SELECT CAST(0 AS int) AS [result], N'未获取到当前操作人,不能结束' AS [message];
|
||||
RETURN;
|
||||
END
|
||||
|
||||
BEGIN TRY
|
||||
IF @初始事务数 = 0 BEGIN TRANSACTION;
|
||||
ELSE SAVE TRANSACTION @保存点名称;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_任务] WITH (UPDLOCK, HOLDLOCK) WHERE [DID] = @DID)
|
||||
BEGIN
|
||||
IF @初始事务数 = 0 ROLLBACK TRANSACTION;
|
||||
ELSE ROLLBACK TRANSACTION @保存点名称;
|
||||
SELECT CAST(0 AS int) AS [result], N'任务不存在' AS [message];
|
||||
RETURN;
|
||||
END
|
||||
|
||||
SELECT TOP 1 @RID = [RID]
|
||||
FROM [dbo].[MES_设计报工_记录] WITH (UPDLOCK, HOLDLOCK)
|
||||
WHERE [DID] = @DID
|
||||
AND [结束时间] IS NULL
|
||||
AND (
|
||||
(@当前操作人ID IS NOT NULL AND ISNULL([操作人ID], N'') = @当前操作人ID)
|
||||
OR (@当前操作人ID IS NULL AND @当前操作人 IS NOT NULL AND ISNULL([操作人], N'') = @当前操作人)
|
||||
)
|
||||
ORDER BY [开始时间] DESC, [RID] DESC;
|
||||
|
||||
IF @RID IS NULL
|
||||
BEGIN
|
||||
IF @初始事务数 = 0 ROLLBACK TRANSACTION;
|
||||
ELSE ROLLBACK TRANSACTION @保存点名称;
|
||||
SELECT CAST(0 AS int) AS [result], N'当前人员没有未结束的报工记录' AS [message];
|
||||
RETURN;
|
||||
END
|
||||
|
||||
UPDATE [dbo].[MES_设计报工_记录]
|
||||
SET
|
||||
[结束时间] = GETDATE(),
|
||||
[工时秒数] = DATEDIFF(second, [开始时间], GETDATE()),
|
||||
[报工状态] = N'已结束',
|
||||
[进度说明] = NULLIF(@进度说明, N'')
|
||||
WHERE [RID] = @RID;
|
||||
|
||||
UPDATE [dbo].[MES_设计报工_任务]
|
||||
SET
|
||||
[单据状态] = CASE
|
||||
WHEN [单据状态] = N'已完成' THEN N'已完成'
|
||||
WHEN EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_记录] WHERE [DID] = @DID AND [结束时间] IS NULL) THEN N'执行中'
|
||||
ELSE N'已结束'
|
||||
END,
|
||||
[最后编辑人] = @当前操作人,
|
||||
[最后编辑时间] = GETDATE()
|
||||
WHERE [DID] = @DID;
|
||||
|
||||
IF @初始事务数 = 0 COMMIT TRANSACTION;
|
||||
SELECT CAST(1 AS int) AS [result], N'结束成功' AS [message], @RID AS [RID];
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
IF XACT_STATE() <> 0
|
||||
BEGIN
|
||||
IF @初始事务数 = 0 ROLLBACK TRANSACTION;
|
||||
ELSE IF XACT_STATE() = 1 ROLLBACK TRANSACTION @保存点名称;
|
||||
END
|
||||
SELECT CAST(0 AS int) AS [result], ERROR_MESSAGE() AS [message];
|
||||
END CATCH
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE [dbo].[设计报工_记录_查询]
|
||||
@DID int = NULL,
|
||||
@项目号 nvarchar(100) = N'',
|
||||
@物料编码 nvarchar(100) = N'',
|
||||
@类别 nvarchar(100) = N'',
|
||||
@操作人 nvarchar(100) = N'',
|
||||
@开始日期 nvarchar(30) = N'',
|
||||
@结束日期 nvarchar(30) = N'',
|
||||
@校验状态 nvarchar(50) = N''
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @开始 datetime = TRY_CONVERT(datetime, NULLIF(@开始日期, N''));
|
||||
DECLARE @结束 datetime = TRY_CONVERT(datetime, NULLIF(@结束日期, N''));
|
||||
|
||||
SELECT TOP 1000
|
||||
r.[RID],
|
||||
r.[DID],
|
||||
t.[项目号],
|
||||
t.[物料编码],
|
||||
t.[物料名称],
|
||||
t.[图号],
|
||||
t.[类别],
|
||||
t.[任务描述],
|
||||
t.[指派对象],
|
||||
r.[操作人ID],
|
||||
r.[操作人],
|
||||
CONVERT(varchar(19), r.[开始时间], 120) AS [开始时间],
|
||||
CONVERT(varchar(19), r.[结束时间], 120) AS [结束时间],
|
||||
r.[工时秒数],
|
||||
CAST(CAST(ISNULL(r.[工时秒数], 0) / 3600.0 AS decimal(18, 2)) AS varchar(30)) AS [工时小时],
|
||||
r.[报工状态],
|
||||
r.[已校验],
|
||||
CASE WHEN r.[已校验] = 1 THEN N'已校验' ELSE N'未校验' END AS [校验状态],
|
||||
r.[校验人],
|
||||
CONVERT(varchar(19), r.[校验时间], 120) AS [校验时间],
|
||||
r.[进度说明],
|
||||
r.[备注],
|
||||
t.[单据状态]
|
||||
FROM [dbo].[MES_设计报工_记录] AS r
|
||||
INNER JOIN [dbo].[MES_设计报工_任务] AS t ON r.[DID] = t.[DID]
|
||||
WHERE
|
||||
(@DID IS NULL OR @DID = 0 OR r.[DID] = @DID)
|
||||
AND (ISNULL(@项目号, N'') = N'' OR t.[项目号] LIKE N'%' + @项目号 + N'%')
|
||||
AND (ISNULL(@物料编码, N'') = N'' OR t.[物料编码] LIKE N'%' + @物料编码 + N'%')
|
||||
AND (ISNULL(@类别, N'') = N'' OR t.[类别] LIKE N'%' + @类别 + N'%')
|
||||
AND (ISNULL(@操作人, N'') = N'' OR r.[操作人] LIKE N'%' + @操作人 + N'%')
|
||||
AND (@开始 IS NULL OR r.[开始时间] >= @开始)
|
||||
AND (@结束 IS NULL OR r.[开始时间] < DATEADD(day, 1, @结束))
|
||||
AND (
|
||||
ISNULL(@校验状态, N'') = N''
|
||||
OR @校验状态 = N'全部'
|
||||
OR (@校验状态 = N'已校验' AND r.[已校验] = 1)
|
||||
OR (@校验状态 = N'未校验' AND r.[已校验] = 0)
|
||||
)
|
||||
ORDER BY r.[RID] DESC;
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE [dbo].[设计报工_工时报表_作业者工时_查询]
|
||||
@开始日期 nvarchar(30) = N'',
|
||||
@结束日期 nvarchar(30) = N'',
|
||||
@操作人 nvarchar(100) = N'',
|
||||
@项目号 nvarchar(100) = N'',
|
||||
@物料编码 nvarchar(100) = N'',
|
||||
@类别 nvarchar(100) = N'',
|
||||
@DID int = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @开始 datetime = TRY_CONVERT(datetime, NULLIF(@开始日期, N''));
|
||||
DECLARE @结束 datetime = TRY_CONVERT(datetime, NULLIF(@结束日期, N''));
|
||||
|
||||
;WITH base AS
|
||||
(
|
||||
SELECT
|
||||
r.[RID],
|
||||
r.[DID],
|
||||
ISNULL(r.[操作人], N'') AS [操作人],
|
||||
CONVERT(varchar(10), r.[开始时间], 120) AS [工作日期],
|
||||
t.[项目号],
|
||||
t.[物料编码],
|
||||
t.[物料名称],
|
||||
t.[图号],
|
||||
t.[类别],
|
||||
t.[任务描述],
|
||||
r.[开始时间],
|
||||
r.[结束时间],
|
||||
ISNULL(r.[工时秒数], 0) AS [工时秒数],
|
||||
r.[已校验],
|
||||
r.[进度说明],
|
||||
r.[备注]
|
||||
FROM [dbo].[MES_设计报工_记录] AS r
|
||||
INNER JOIN [dbo].[MES_设计报工_任务] AS t ON r.[DID] = t.[DID]
|
||||
WHERE
|
||||
r.[开始时间] IS NOT NULL
|
||||
AND r.[结束时间] IS NOT NULL
|
||||
AND (@开始 IS NULL OR r.[开始时间] >= @开始)
|
||||
AND (@结束 IS NULL OR r.[开始时间] < DATEADD(day, 1, @结束))
|
||||
AND (ISNULL(@操作人, N'') = N'' OR r.[操作人] LIKE N'%' + @操作人 + N'%')
|
||||
AND (ISNULL(@项目号, N'') = N'' OR t.[项目号] LIKE N'%' + @项目号 + N'%')
|
||||
AND (ISNULL(@物料编码, N'') = N'' OR t.[物料编码] LIKE N'%' + @物料编码 + N'%')
|
||||
AND (ISNULL(@类别, N'') = N'' OR t.[类别] LIKE N'%' + @类别 + N'%')
|
||||
AND (@DID IS NULL OR @DID = 0 OR r.[DID] = @DID)
|
||||
),
|
||||
result AS
|
||||
(
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
N'p-' + [操作人] AS [id],
|
||||
CAST(N'' AS nvarchar(100)) AS [parentId],
|
||||
[操作人],
|
||||
CAST(N'' AS nvarchar(20)) AS [工作日期],
|
||||
CAST(NULL AS int) AS [RID],
|
||||
CAST(NULL AS int) AS [DID],
|
||||
CAST(N'' AS nvarchar(100)) AS [项目号],
|
||||
CAST(N'' AS nvarchar(100)) AS [物料编码],
|
||||
CAST(N'' AS nvarchar(200)) AS [物料名称],
|
||||
CAST(N'' AS nvarchar(100)) AS [图号],
|
||||
CAST(N'' AS nvarchar(100)) AS [类别],
|
||||
CAST(N'' AS nvarchar(500)) AS [任务描述],
|
||||
CAST(N'' AS varchar(19)) AS [开始时间],
|
||||
CAST(N'' AS varchar(19)) AS [结束时间],
|
||||
COUNT(1) AS [报工次数],
|
||||
CAST(SUM([工时秒数]) / 3600.0 AS decimal(18, 2)) AS [工时小时],
|
||||
CAST(N'' AS nvarchar(20)) AS [校验状态],
|
||||
CAST(N'' AS nvarchar(500)) AS [进度说明],
|
||||
CAST(N'' AS nvarchar(500)) AS [备注]
|
||||
FROM base
|
||||
GROUP BY [操作人]
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
N'd-' + [操作人] + N'-' + [工作日期] AS [id],
|
||||
N'p-' + [操作人] AS [parentId],
|
||||
[操作人],
|
||||
[工作日期],
|
||||
CAST(NULL AS int) AS [RID],
|
||||
CAST(NULL AS int) AS [DID],
|
||||
CAST(N'' AS nvarchar(100)) AS [项目号],
|
||||
CAST(N'' AS nvarchar(100)) AS [物料编码],
|
||||
CAST(N'' AS nvarchar(200)) AS [物料名称],
|
||||
CAST(N'' AS nvarchar(100)) AS [图号],
|
||||
CAST(N'' AS nvarchar(100)) AS [类别],
|
||||
CAST(N'' AS nvarchar(500)) AS [任务描述],
|
||||
CAST(N'' AS varchar(19)) AS [开始时间],
|
||||
CAST(N'' AS varchar(19)) AS [结束时间],
|
||||
COUNT(1) AS [报工次数],
|
||||
CAST(SUM([工时秒数]) / 3600.0 AS decimal(18, 2)) AS [工时小时],
|
||||
CAST(N'' AS nvarchar(20)) AS [校验状态],
|
||||
CAST(N'' AS nvarchar(500)) AS [进度说明],
|
||||
CAST(N'' AS nvarchar(500)) AS [备注]
|
||||
FROM base
|
||||
GROUP BY [操作人], [工作日期]
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
3 AS [Level],
|
||||
N'r-' + CAST([RID] AS nvarchar(20)) AS [id],
|
||||
N'd-' + [操作人] + N'-' + [工作日期] AS [parentId],
|
||||
[操作人],
|
||||
[工作日期],
|
||||
[RID],
|
||||
[DID],
|
||||
ISNULL([项目号], N'') AS [项目号],
|
||||
ISNULL([物料编码], N'') AS [物料编码],
|
||||
ISNULL([物料名称], N'') AS [物料名称],
|
||||
ISNULL([图号], N'') AS [图号],
|
||||
ISNULL([类别], N'') AS [类别],
|
||||
ISNULL([任务描述], N'') AS [任务描述],
|
||||
CONVERT(varchar(19), [开始时间], 120) AS [开始时间],
|
||||
CONVERT(varchar(19), [结束时间], 120) AS [结束时间],
|
||||
1 AS [报工次数],
|
||||
CAST([工时秒数] / 3600.0 AS decimal(18, 2)) AS [工时小时],
|
||||
CASE WHEN [已校验] = 1 THEN N'已校验' ELSE N'未校验' END AS [校验状态],
|
||||
ISNULL([进度说明], N'') AS [进度说明],
|
||||
ISNULL([备注], N'') AS [备注]
|
||||
FROM base
|
||||
)
|
||||
SELECT *
|
||||
FROM result
|
||||
ORDER BY [操作人], [工作日期], [Level], [RID];
|
||||
END
|
||||
GO
|
||||
128
db_backups/add_design_report_task_menu_account1_20260709.sql
Normal file
128
db_backups/add_design_report_task_menu_account1_20260709.sql
Normal file
@@ -0,0 +1,128 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @TargetAccount int = 1;
|
||||
DECLARE @ParentTitle varchar(100) = '生产管理';
|
||||
DECLARE @ParentId int;
|
||||
|
||||
SELECT TOP (1)
|
||||
@ParentId = [id]
|
||||
FROM [dbo].[登录基础数据_二级菜单]
|
||||
WHERE [账号代码] = @TargetAccount
|
||||
AND [是否启用] = 1
|
||||
AND [pid] = 0
|
||||
AND [title] = @ParentTitle
|
||||
ORDER BY [id];
|
||||
|
||||
IF @ParentId IS NULL
|
||||
BEGIN
|
||||
RAISERROR('未找到账号 1 的生产管理父菜单。', 16, 1);
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
DECLARE @Menus TABLE
|
||||
(
|
||||
rn int IDENTITY(1,1) PRIMARY KEY,
|
||||
[path] varchar(300) NOT NULL,
|
||||
[componet] varchar(300) NOT NULL,
|
||||
[name] varchar(100) NOT NULL,
|
||||
[title] varchar(100) NOT NULL,
|
||||
[icon] varchar(100) NULL
|
||||
);
|
||||
|
||||
INSERT INTO @Menus ([path], [componet], [name], [title], [icon])
|
||||
VALUES
|
||||
('DesignReportTask/Task/index', '/ProductionManagement/DesignReportTask/Task/index', 'DesignReportTask', '设计任务', 'DocumentImport'),
|
||||
('DesignReportTask/Report/index', '/ProductionManagement/DesignReportTask/Report/index', 'DesignReportWork', '设计报工', 'DocumentImport'),
|
||||
('DesignReportTask/Check/index', '/ProductionManagement/DesignReportTask/Check/index', 'DesignReportCheck', '设计工时校验', 'PayStateSearch'),
|
||||
('DesignReportTask/HoursReport/index', '/ProductionManagement/DesignReportTask/HoursReport/index', 'DesignReportHoursReport', '设计工时报表', 'DimensionsSummaryReport');
|
||||
|
||||
DECLARE @BaseId int;
|
||||
|
||||
SELECT @BaseId = ISNULL(MAX([id]), 0)
|
||||
FROM [dbo].[登录基础数据_二级菜单];
|
||||
|
||||
;WITH MissingMenus AS
|
||||
(
|
||||
SELECT
|
||||
ROW_NUMBER() OVER (ORDER BY m.rn) AS new_rn,
|
||||
m.[path],
|
||||
m.[componet],
|
||||
m.[name],
|
||||
m.[title],
|
||||
m.[icon]
|
||||
FROM @Menus AS m
|
||||
WHERE NOT EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM [dbo].[登录基础数据_二级菜单] AS existing
|
||||
WHERE existing.[账号代码] = @TargetAccount
|
||||
AND
|
||||
(
|
||||
existing.[path] = m.[path]
|
||||
OR existing.[componet] = m.[componet]
|
||||
OR existing.[title] = m.[title]
|
||||
)
|
||||
)
|
||||
)
|
||||
INSERT INTO [dbo].[登录基础数据_二级菜单]
|
||||
([id], [pid], [path], [componet], [redirect], [name], [title], [icon], [账号代码], [模块代码], [是否启用], [操作时间])
|
||||
SELECT
|
||||
@BaseId + new_rn,
|
||||
@ParentId,
|
||||
[path],
|
||||
[componet],
|
||||
NULL,
|
||||
[name],
|
||||
[title],
|
||||
[icon],
|
||||
@TargetAccount,
|
||||
@BaseId + new_rn,
|
||||
1,
|
||||
GETDATE()
|
||||
FROM MissingMenus;
|
||||
|
||||
UPDATE target
|
||||
SET
|
||||
target.[pid] = @ParentId,
|
||||
target.[path] = source.[path],
|
||||
target.[componet] = source.[componet],
|
||||
target.[name] = source.[name],
|
||||
target.[title] = source.[title],
|
||||
target.[icon] = source.[icon],
|
||||
target.[模块代码] = target.[id],
|
||||
target.[是否启用] = 1,
|
||||
target.[操作时间] = GETDATE()
|
||||
FROM [dbo].[登录基础数据_二级菜单] AS target
|
||||
INNER JOIN @Menus AS source
|
||||
ON target.[账号代码] = @TargetAccount
|
||||
AND
|
||||
(
|
||||
target.[path] = source.[path]
|
||||
OR target.[componet] = source.[componet]
|
||||
OR target.[title] = source.[title]
|
||||
);
|
||||
|
||||
SELECT
|
||||
[id],
|
||||
[pid],
|
||||
[path],
|
||||
[componet],
|
||||
[name],
|
||||
[title],
|
||||
[icon],
|
||||
[账号代码],
|
||||
[模块代码],
|
||||
[是否启用]
|
||||
FROM [dbo].[登录基础数据_二级菜单]
|
||||
WHERE [账号代码] = @TargetAccount
|
||||
AND
|
||||
(
|
||||
[path] IN (SELECT [path] FROM @Menus)
|
||||
OR [componet] IN (SELECT [componet] FROM @Menus)
|
||||
OR [title] IN (SELECT [title] FROM @Menus)
|
||||
)
|
||||
ORDER BY [id];
|
||||
GO
|
||||
169
db_backups/add_device_name_and_import_excel_20260629.sql
Normal file
169
db_backups/add_device_name_and_import_excel_20260629.sql
Normal file
@@ -0,0 +1,169 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
IF COL_LENGTH(N'dbo.基础数据_设备工位点检表', N'名称') IS NULL
|
||||
ALTER TABLE [dbo].[基础数据_设备工位点检表] ADD [名称] nvarchar(100) NULL
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[设备管理_设备信息_增加]
|
||||
@名称 nvarchar(50) = NULL,
|
||||
@公司编码 nvarchar(100) = NULL,
|
||||
@设备名称 nvarchar(50) = NULL,
|
||||
@设备型号 nvarchar(50) = NULL,
|
||||
@设备类型 nvarchar(50) = NULL,
|
||||
@设备信息 nvarchar(500) = NULL,
|
||||
@使用部门 nvarchar(100) = NULL,
|
||||
@入账日期 nvarchar(50) = NULL,
|
||||
@单位 nvarchar(50) = NULL,
|
||||
@数量 decimal(18, 4) = NULL,
|
||||
@状态 nvarchar(50) = NULL,
|
||||
@维修记录 nvarchar(1000) = NULL,
|
||||
@维保记录 nvarchar(1000) = NULL,
|
||||
@工位绑定 nvarchar(1000) = NULL,
|
||||
@主要设备 nvarchar(10) = NULL,
|
||||
@设备标准开机工时 decimal(18, 4) = NULL,
|
||||
@特种设备 nvarchar(10) = NULL,
|
||||
@证书有效期至 nvarchar(50) = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
IF ISNULL(@公司编码, N'') = N'' BEGIN SELECT '0' AS result, N'公司编码不能为空' AS message; RETURN; END
|
||||
INSERT INTO [dbo].[基础数据_设备工位点检表] ([名称],[公司编码],[设备名称],[设备型号],[设备类型],[设备信息],[使用部门],[入账日期],[单位],[数量],[状态],[维修记录],[维保记录],[工位绑定],[主要设备],[设备标准开机工时],[特种设备],[证书有效期至])
|
||||
VALUES (@名称,@公司编码,@设备名称,@设备型号,@设备类型,@设备信息,@使用部门,TRY_CONVERT(date, NULLIF(@入账日期, N'')),@单位,@数量,@状态,@维修记录,@维保记录,@工位绑定,@主要设备,@设备标准开机工时,@特种设备,TRY_CONVERT(date, NULLIF(@证书有效期至, N'')));
|
||||
SELECT '1' AS result;
|
||||
END
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[设备管理_设备信息_编辑]
|
||||
@设备流水号 int = NULL,
|
||||
@名称 nvarchar(50) = NULL,
|
||||
@公司编码 nvarchar(100) = NULL,
|
||||
@设备名称 nvarchar(50) = NULL,
|
||||
@设备型号 nvarchar(50) = NULL,
|
||||
@设备类型 nvarchar(50) = NULL,
|
||||
@设备信息 nvarchar(500) = NULL,
|
||||
@使用部门 nvarchar(100) = NULL,
|
||||
@入账日期 nvarchar(50) = NULL,
|
||||
@单位 nvarchar(50) = NULL,
|
||||
@数量 decimal(18, 4) = NULL,
|
||||
@状态 nvarchar(50) = NULL,
|
||||
@维修记录 nvarchar(1000) = NULL,
|
||||
@维保记录 nvarchar(1000) = NULL,
|
||||
@工位绑定 nvarchar(1000) = NULL,
|
||||
@主要设备 nvarchar(10) = NULL,
|
||||
@设备标准开机工时 decimal(18, 4) = NULL,
|
||||
@特种设备 nvarchar(10) = NULL,
|
||||
@证书有效期至 nvarchar(50) = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
UPDATE [dbo].[基础数据_设备工位点检表]
|
||||
SET [名称]=@名称,[设备名称]=@设备名称,[设备型号]=@设备型号,[设备类型]=@设备类型,[设备信息]=@设备信息,[使用部门]=@使用部门,[入账日期]=TRY_CONVERT(date, NULLIF(@入账日期, N'')),[单位]=@单位,[数量]=@数量,[状态]=@状态,[维修记录]=@维修记录,[维保记录]=@维保记录,[工位绑定]=@工位绑定,[主要设备]=@主要设备,[设备标准开机工时]=@设备标准开机工时,[特种设备]=@特种设备,[证书有效期至]=TRY_CONVERT(date, NULLIF(@证书有效期至, N''))
|
||||
WHERE [设备流水号]=@设备流水号;
|
||||
SELECT '1' AS result;
|
||||
END
|
||||
GO
|
||||
|
||||
DECLARE @导入设备 TABLE ([名称] nvarchar(100),[公司编码] nvarchar(100),[生产用名] nvarchar(50),[型号规格] nvarchar(50),[设备信息] nvarchar(500),[使用部门] nvarchar(100),[入账日期] date,[单位] nvarchar(50),[数量] decimal(18,4),[状态] nvarchar(50));
|
||||
INSERT INTO @导入设备 VALUES (N'气泵(空压机)',N'REALLY-11',N'气泵',N'1.4MPa/YT132S-4',N'最大压力0.8Mpa',N'一楼机加车间','2006-12-31',N'台',1,N'停用');
|
||||
INSERT INTO @导入设备 VALUES (N'台钻',N'REALLY-21',N'台钻',N'JW7114',N'φ2-12mm/0.1mm',N'二楼机加车间','2007-01-01',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'数控加工中心',N'REALLY-6',N'加1',N'VDL-600A',N'X600/Y420/Z520/',N'一楼机加车间','2008-12-23',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'普通车床',N'REALLY-1',N'普1',N'CD6240A',N'回转直径400/转速1400/0.04mm',N'一楼机加车间','2010-12-31',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'砂轮机',N'REALLY-19',N'砂轮机',N'MQ3225',N'转速3000/砂轮直径250',N'一楼机加车间','2010-12-31',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'数控车床',N'REALLY-3',N'数2',N'CAK5085di',N'床鞍直径280',N'一楼机加车间','2011-09-29',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'万能外圆磨床',N'REALLY-8',N'磨2',N'MG1420E',N'0.005mm',N'一楼机加车间','2012-03-29',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'数控车床',N'REALLY-2',N'数1',N'CAK3665DI',N'0.01mm',N'一楼机加车间','2013-12-31',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'数显鼓风干燥箱/烤箱',N'REALLY-14',N'烤箱',N'101A-0',NULL,N'二楼装配区','2014-06-05',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'数控车床',N'REALLY-4',N'数3',N'Viva T2c/500',N'0.01mm',N'一楼机加车间','2015-03-17',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'超声波清洗机',N'REALLY-16',N'清洗机',N'FRQ-20100ST',NULL,N'二楼清洗室','2015-04-12',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'抛光机',N'REALLY-44',N'抛光机',N'ZXH-Z615-1/ZXH-756',NULL,N'一楼机加车间','2015-05-17',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'激光打标机',N'REALLY-13',N'打标机',N'骄子LMK-F20',NULL,N'二楼装配区','2016-02-01',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'数控车床',N'REALLY-5',N'数4',N'Viva T2C/500',N'0.01mm',N'一楼机加车间','2018-05-11',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'锯床',N'REALLY-10',N'锯1',N'GZ4232',N'0.1mm',N'一楼机加车间','2018-08-26',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'内燃叉车',N'REALLY-33',N'油叉',N'CPCD30/3.0T',N'<3T',N'一楼机加车间','2020-04-15',N'辆',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'螺杆空压机',N'REALLY-23',N'15KW空压机',N'LU15 Pmi',N'最大压力0.8Mpa',N'一楼空压机室','2020-06-29',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'冷干机',N'已报废',NULL,N'PRIMAK D21',NULL,N'一楼空压机室','2020-06-29',N'台',1,N'报废');
|
||||
INSERT INTO @导入设备 VALUES (N'数控车床',N'REALLY-25',N'数5',N'T55M含自动排屑器',N'0.01mm',N'一楼机加车间','2020-11-05',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'立卧两用数控台',N'加1#用',N'加1四轴',N'SKT13170F',N'0.05mm',N'加1设备内','2020-12-10',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'立式加工中心',N'REALLY-26',N'加3',N'VDF-850A',N'0.02mm',N'一楼机加车间','2020-12-10',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'立卧两用数控台',N'加3#用',NULL,N'SKT13200F',N'0.05mm',N'一楼机加车间','2020-12-10',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'带锯床',N'REALLY-31',N'锯2',N'B33',N'0.1mm',N'一楼机加车间','2021-02-01',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'电动攻丝机',N'RELLY-29',N'攻丝机2#',N'SW-U16-L',N'夹头范围M3-M16',N'一楼机加车间','2021-02-28',N'台',1,N'停用');
|
||||
INSERT INTO @导入设备 VALUES (N'自动数控穿孔机',N'REALLY-28',N'电火花',N'NC4030高精度线规结构',N'穿孔直径0.8-3.0mm/0.05mm',N'一楼机加车间','2021-03-03',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'立式加工中心',N'REALLY-27',N'加4',N'VDF-850A',N'0.02mm',N'一楼机加车间','2021-03-11',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'摇臂钻床',N'REALLY-30',N'钻床',N'Z3050/16',N'夹头范围3-50',N'一楼机加车间','2021-03-17',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'航车',N'起重机/吊车',N'5T吊',N'YLHC-27',N'<5T',N'一楼机加车间','2021-04-05',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'电动叉车',N'REALLY-34',N'1.5T电叉',N'CDD-1525/CPCZ1.5T',N'<1.5T',N'二楼机加车间','2021-04-05',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'普通车床',N'REALLY-32',N'普2',N'CDE6150A',N'0.03mm',N'一楼机加车间','2021-09-02',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'数控车床',N'REALLY-36',N'数7',N'T55S',N'0.01mm',N'一楼机加车间','2022-04-03',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'数控车床',N'REALLY-37',N'数8',N'T55S',N'0.01mm',N'一楼机加车间','2022-04-03',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'洗地机',N'RELLY-38',N'洗地机',N'YZ-X2',NULL,N'一楼机加车间','2022-04-29',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'自动上下料设备',N'REALLY-39',N'数8机械人',N'HY2119/HY-JCSXL1-2',NULL,N'一楼机加车间','2022-06-22',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'加工中心',N'REALLY-40',N'加5',N'V11L',N'0.02mm',N'一楼机加车间','2022-12-09',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'转台',N'加5#用',N'加5四轴',N'HR-255N-K',N'0.05mm',N'一楼机加车间','2022-12-22',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'旋转接头',N'数7#数#8用',NULL,N'YQXJ56M-20',N'0.1mm',N'一楼机加车间','2023-02-06',N'台',2,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'中实三爪液压卡盘',N'数7#数#8用',N'液压卡盘',N'CL-06A5',NULL,N'一楼机加车间','2023-02-14',N'台',2,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'套丝机',N'RELLY-41',N'套丝机',N'SQ-50B1',NULL,N'一楼机加车间','2023-03-12',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'线号机',N'REALLY-17',N'线号机',N'LM-550B/LM550E',NULL,N'二楼装配车间','2023-04-22',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'高频加热炉',N'REALLY-42',N'高频加热',N'TGG-35KW进品版',NULL,N'二楼装配车间','2023-08-06',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'普通车床',N'REALLY-43',N'普3',N'CW6163E/1000',N'0.03mm',N'一楼机加车间','2023-08-14',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'光栅尺数显系统',N'普3#用',N'普3数显',N'Z向1100mm,X向570mm',NULL,N'一楼机加车间','2023-08-16',N'套',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'卧式加工中心',N'REALLY-45',N'卧加1',N'HCN-6000L',N'0.01mm',N'一楼机加车间','2023-11-27',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'姊妹刀功能软件',N'数7#数#8用',N'对刀仪',N'6FC5800-OAM78-OYB0',NULL,N'一楼机加车间','2023-12-03',N'套',2,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'自动料仓',N'机器人用',N'机器人料仓',N'配机械手定制件',NULL,N'一楼机加车间','2024-01-28',N'套',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'电动悬挂起重机(欧式)',N'REALLY-46',N'普车吊',N'LX2.8T-7.3M/LD2-70/YJ',N'<1.5T',N'一楼机加车间','2024-06-29',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'电动悬挂起重机(欧式)',N'REALLY-47',N'装配吊',N'LX2.8T-7M/LD2-40/OR6',N'<1.5T',N'二楼车间装配区','2024-06-29',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'多功能除渣除油一体机',N'REALLY-50',N'除渣除油机',N'FGB-4',NULL,N'一楼机加车间','2024-06-29',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'桥式悬挂起重机',N'REALLY-49',N'原料吊',N'LX2-7m/LD2-70Y/YK',N'<1.5T',N'一楼车间库房区','2024-06-29',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'切割剥皮两用机',N'REALLY-60',N'割管机',N'QB-51',NULL,N'二楼车间清洗间','2024-09-29',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'缩管机',N'REALLY-61',N'缩管机',N'KM-91C8-323',NULL,N'二楼车间清洗间','2024-09-29',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'冷冻式干燥机',N'REALLY-59',N'冷干机',N'AD2-10',NULL,N'一楼三坐标室','2024-11-25',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'工业脉冲集尘机',N'REALLY-52',N'磨床除尘机',N'FMCJC-2200',NULL,N'一楼机加车间','2024-11-25',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'闪链云智能物',N'REALLY-58',N'刀具柜',N'智能刀具柜主柜88货道+40侧边格/SCCM-03',NULL,N'一楼机加车间','2024-11-25',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'小锯床',N'REALLY-63',N'小带锯',N'DLY-18F1',N'切割范围45°φ100mm/90°180mm',N'二楼车间装配区','2024-11-25',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'车床桁架机械手',N'REALLY-51',N'数5机械手',N'CNPR-B02/CNPR-3000-B',NULL,N'一楼机加车间','2024-11-29',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'二氧焊机',N'REALLY-55',N'二氧焊机',N'YM-350FR2',NULL,N'一楼车间打磨间','2024-11-29',N'台',1,N'停用');
|
||||
INSERT INTO @导入设备 VALUES (N'弯管机',N'REALLY-62',N'弯管机',N'DW38NC',NULL,N'二楼车间装配区','2024-11-29',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'数控机床(多主轴车削中心)',N'REALLY-57',N'数9',N'DUAL TURN200/DT200',N'0.01mm',N'一楼机加车间','2024-12-10',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'外圆磨床',N'REALLY-53',N'磨1',N'M1332B/1000',N'0.005mm',N'一楼机加车间','2024-12-25',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'气动压力机',N'REALLY-64',N'压力机1',N'大双柱63型 推力200KG',NULL,N'二楼车间装配','2024-12-03',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'气动压力机',N'REALLY-65',N'压力机2',N'大双柱63型 推力200KG',NULL,N'二楼车间装配','2024-12-03',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'气动压力机',N'REALLY-66',N'压力机3',N'大双柱63型 推力200KG',NULL,N'二楼车间装配','2024-12-03',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'卡套预装机+模具四套',N'REALLY-67',N'卡套预装机',N'KC-A01',NULL,N'二楼车间装配区','2025-01-01',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'单臂移动式焊烟净化器',N'REALLY-56',N'焊烟净化器',N'LW1201L-030AF(LW-C-M1201-030A1)',N'3000m³/小时',N'一楼车间打磨间','2025-02-13',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'冷干机',N'REALLY-24(注:替换原冷干机)',N'冷干机',N'FX45-230/1/50-CN',NULL,N'一楼空压机室','2025-02-07',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'管型预绝缘端子压接机',N'REALLY-68',N'端子机1',N'MD-E(0.5-4平方)',N'压接端子范围0.5-4mm²',N'二楼装配车间','2025-08-29',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'OTUT端子压接机2#',N'REALLY-69',N'端子机2',N'MD-180S/MD-180TUT',N'截面积0.33-0.82mm²',N'二楼装配车间','2025-09-04',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'车床桁架机械手',N'REALLY-70',N'数7机械手',N'CNPR-B02/SX-621',NULL,N'一楼机加车间','2025-08-31',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'氩弧焊机',N'REALLY-71',N'氩弧焊机',N'WSE-315',N'使用焊丝规格φ1.0-3.0mm/电流范围20-315A',N'一楼焊接区','2014-06-03',N'台',1,N'停用');
|
||||
INSERT INTO @导入设备 VALUES (N'车床桁架机械手',N'REALLY-74',N'数9机械手',N'CNPR-B02/SX-620',N'0.1mm',N'一楼机加车间','2025-08-31',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'电动悬挂起重机(欧式)',N'REALLY-72',N'阀类吊',N'LX2.8T-6M',N'最大起重2.8T/链长6M',N'二楼阀类测试区','2025-12-04',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'马扎克数控车床',N'REALLY-73',N'数6',N'QTE200/500L',N'12工位刀塔/加工φ290/行程500',N'一楼机加车间','2026-01-10',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'马扎克加工中心',N'REALLY-75',N'加2',N'FF400V/30L',N'X500/Y400/Z400',N'一楼机加车间','2026-02-10',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'电动攻丝机',N'RELLY-54',N'攻丝机1#',N'M3-M20(YZ-20C)',N'夹头范围M3-M20',N'一楼机加车间','2025-12-01',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'手动液压叉车',N'REALLY-76',N'手动搬运车',N'黄色AC540 2.5T',N'最大承重2.5T',N'一楼机加车间','2025-12-11',N'辆',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'455铜铝型材切割机(全自动)',N'REALLY-77',N'自动切割机',N'455铜铝型材切割机',N'最大切割行程100',N'一楼机加车间','2026-03-09',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'油雾收集器',N'REALLY-78',N'数5用',N'YWJC-LD300',NULL,N'一楼机加车间',NULL,N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'油雾收集器',N'REALLY-79',N'数7用',N'YWJC-LD300',NULL,N'一楼机加车间',NULL,N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'油雾收集器',N'REALLY-80',N'数8用',N'YWJC-LD300',NULL,N'一楼机加车间',NULL,N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'油雾收集器',N'REALLY-81',N'数6用',N'YWJC-LD300',NULL,N'一楼机加车间',NULL,N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'油雾收集器',N'REALLY-82',N'加2用',N'YWJC-LD1100',NULL,N'一楼机加车间',NULL,N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'油雾收集器',N'REALLY-83',N'加3用',N'YWJC-LD1100',NULL,N'一楼机加车间',NULL,N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'油雾收集器',N'REALLY-84',N'加5用',N'YWJC-LD1100',NULL,N'一楼机加车间',NULL,N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'油雾收集器',N'REALLY-85',N'卧加用',N'YWJC-LD1500',NULL,N'一楼机加车间',NULL,N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'油雾收集器',N'REALLY-86',N'数9用',N'YWJC-LD600',NULL,N'一楼机加车间',NULL,N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'无尘环保带锯床',N'REALLY-87',N'小带锯2#',N'DLY-18F1',N'45°切割范围φ100',N'一楼机打磨间','2026-05-20',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'车床桁架机械手',N'REALLY-88',N'数6机械手',N'CNPR-B03',NULL,N'一楼机加车间',NULL,N'套',1,NULL);
|
||||
|
||||
MERGE [dbo].[基础数据_设备工位点检表] AS target
|
||||
USING @导入设备 AS source
|
||||
ON ISNULL(target.[公司编码], N'') = ISNULL(source.[公司编码], N'') AND ISNULL(source.[公司编码], N'') <> N''
|
||||
WHEN MATCHED THEN UPDATE SET
|
||||
target.[名称]=source.[名称], target.[设备名称]=source.[生产用名], target.[设备型号]=source.[型号规格], target.[设备信息]=source.[设备信息], target.[使用部门]=source.[使用部门], target.[入账日期]=source.[入账日期], target.[单位]=source.[单位], target.[数量]=source.[数量], target.[状态]=source.[状态]
|
||||
WHEN NOT MATCHED BY TARGET THEN
|
||||
INSERT ([名称],[公司编码],[设备名称],[设备型号],[设备信息],[使用部门],[入账日期],[单位],[数量],[状态])
|
||||
VALUES (source.[名称],source.[公司编码],source.[生产用名],source.[型号规格],source.[设备信息],source.[使用部门],source.[入账日期],source.[单位],source.[数量],source.[状态]);
|
||||
GO
|
||||
|
||||
SELECT COUNT(*) AS [设备信息导入后总数] FROM [dbo].[基础数据_设备工位点检表];
|
||||
GO
|
||||
110
db_backups/add_formality_confirm_report_menu_20260626.sql
Normal file
110
db_backups/add_formality_confirm_report_menu_20260626.sql
Normal file
@@ -0,0 +1,110 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @Title nvarchar(100) = N'手续确认报表';
|
||||
DECLARE @Path nvarchar(300) = N'FormalityConfirmReport/index';
|
||||
DECLARE @Component nvarchar(300) = N'/ProductionManagement/FormalityConfirmReport/index';
|
||||
DECLARE @Name nvarchar(100) = N'FormalityConfirmReport';
|
||||
DECLARE @SourcePath nvarchar(300) = N'AssemblyCenter/index';
|
||||
DECLARE @SourceComponent nvarchar(300) = N'/ProductionManagement/AssemblyCenter/index';
|
||||
DECLARE @TargetRole int = NULL;
|
||||
|
||||
IF OBJECT_ID(N'dbo.登录基础数据_二级菜单', N'U') IS NULL
|
||||
BEGIN
|
||||
RAISERROR(N'未找到表 dbo.登录基础数据_二级菜单。', 16, 1);
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
DECLARE @IdIsIdentity bit = ISNULL(COLUMNPROPERTY(OBJECT_ID(N'dbo.登录基础数据_二级菜单'), N'id', 'IsIdentity'), 0);
|
||||
|
||||
IF @IdIsIdentity = 1
|
||||
BEGIN
|
||||
;WITH SourceRows AS (
|
||||
SELECT
|
||||
src.[账号代码],
|
||||
src.[pid],
|
||||
src.[icon]
|
||||
FROM [dbo].[登录基础数据_二级菜单] src
|
||||
WHERE src.[是否启用] = 1
|
||||
AND (@TargetRole IS NULL OR src.[账号代码] = @TargetRole)
|
||||
AND (src.[path] = @SourcePath OR src.[componet] = @SourceComponent OR src.[title] = N'装配中心')
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM [dbo].[登录基础数据_二级菜单] existing
|
||||
WHERE existing.[账号代码] = src.[账号代码]
|
||||
AND (existing.[path] = @Path OR existing.[componet] = @Component OR existing.[title] = @Title)
|
||||
)
|
||||
)
|
||||
INSERT INTO [dbo].[登录基础数据_二级菜单]
|
||||
([pid], [path], [componet], [redirect], [name], [title], [icon], [账号代码], [是否启用], [操作时间])
|
||||
SELECT
|
||||
[pid],
|
||||
@Path,
|
||||
@Component,
|
||||
NULL,
|
||||
@Name,
|
||||
@Title,
|
||||
[icon],
|
||||
[账号代码],
|
||||
1,
|
||||
GETDATE()
|
||||
FROM SourceRows;
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
;WITH SourceRows AS (
|
||||
SELECT
|
||||
ROW_NUMBER() OVER (ORDER BY src.[账号代码], src.[id]) AS rn,
|
||||
src.[账号代码],
|
||||
src.[pid],
|
||||
src.[icon]
|
||||
FROM [dbo].[登录基础数据_二级菜单] src
|
||||
WHERE src.[是否启用] = 1
|
||||
AND (@TargetRole IS NULL OR src.[账号代码] = @TargetRole)
|
||||
AND (src.[path] = @SourcePath OR src.[componet] = @SourceComponent OR src.[title] = N'装配中心')
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM [dbo].[登录基础数据_二级菜单] existing
|
||||
WHERE existing.[账号代码] = src.[账号代码]
|
||||
AND (existing.[path] = @Path OR existing.[componet] = @Component OR existing.[title] = @Title)
|
||||
)
|
||||
),
|
||||
BaseId AS (
|
||||
SELECT ISNULL(MAX([id]), 0) AS maxId
|
||||
FROM [dbo].[登录基础数据_二级菜单]
|
||||
)
|
||||
INSERT INTO [dbo].[登录基础数据_二级菜单]
|
||||
([id], [pid], [path], [componet], [redirect], [name], [title], [icon], [账号代码], [模块代码], [是否启用], [操作时间])
|
||||
SELECT
|
||||
BaseId.maxId + SourceRows.rn,
|
||||
SourceRows.[pid],
|
||||
@Path,
|
||||
@Component,
|
||||
NULL,
|
||||
@Name,
|
||||
@Title,
|
||||
SourceRows.[icon],
|
||||
SourceRows.[账号代码],
|
||||
BaseId.maxId + SourceRows.rn,
|
||||
1,
|
||||
GETDATE()
|
||||
FROM SourceRows
|
||||
CROSS JOIN BaseId;
|
||||
END;
|
||||
|
||||
UPDATE [dbo].[登录基础数据_二级菜单]
|
||||
SET
|
||||
[path] = @Path,
|
||||
[componet] = @Component,
|
||||
[name] = @Name,
|
||||
[title] = @Title,
|
||||
[模块代码] = [id],
|
||||
[是否启用] = 1
|
||||
WHERE [title] = @Title OR [componet] = @Component;
|
||||
|
||||
SELECT [id], [pid], [path], [componet], [name], [title], [icon], [账号代码], [模块代码], [是否启用]
|
||||
FROM [dbo].[登录基础数据_二级菜单]
|
||||
WHERE [path] = @Path OR [componet] = @Component OR [title] = @Title
|
||||
ORDER BY [账号代码], [id];
|
||||
147
db_backups/add_product_pass_rate_workstation_menu_20260630.sql
Normal file
147
db_backups/add_product_pass_rate_workstation_menu_20260630.sql
Normal file
@@ -0,0 +1,147 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @Title nvarchar(100) = N'产品合格率(工位)';
|
||||
DECLARE @Path nvarchar(300) = N'ProductPassRateWorkstation/index';
|
||||
DECLARE @Component nvarchar(300) = N'/ProductionManagement/ProductPassRateWorkstation/index';
|
||||
DECLARE @Name nvarchar(100) = N'ProductPassRateWorkstation';
|
||||
DECLARE @SourcePath nvarchar(300) = N'ProductionPlanTrack/index';
|
||||
DECLARE @SourceComponent nvarchar(300) = N'/ProductionManagement/ProductionPlanTrack/index';
|
||||
DECLARE @TargetRole int = NULL;
|
||||
|
||||
IF OBJECT_ID(N'dbo.登录基础数据_二级菜单', N'U') IS NULL
|
||||
BEGIN
|
||||
RAISERROR(N'未找到表 dbo.登录基础数据_二级菜单。', 16, 1);
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
DECLARE @IdIsIdentity bit = ISNULL(COLUMNPROPERTY(OBJECT_ID(N'dbo.登录基础数据_二级菜单'), N'id', 'IsIdentity'), 0);
|
||||
|
||||
IF @IdIsIdentity = 1
|
||||
BEGIN
|
||||
;WITH SourceRows AS
|
||||
(
|
||||
SELECT
|
||||
src.[账号代码],
|
||||
COALESCE(prodParent.[id], src.[pid]) AS [pid],
|
||||
src.[icon],
|
||||
src.[AddData],
|
||||
src.[DeleteData],
|
||||
src.[EditData],
|
||||
src.[SearchData]
|
||||
FROM [dbo].[登录基础数据_二级菜单] AS src
|
||||
OUTER APPLY
|
||||
(
|
||||
SELECT TOP (1) rp.[id]
|
||||
FROM [dbo].[登录基础数据_二级菜单] AS rp
|
||||
WHERE rp.[账号代码] = src.[账号代码]
|
||||
AND rp.[是否启用] = 1
|
||||
AND rp.[title] = N'生产管理'
|
||||
ORDER BY rp.[id]
|
||||
) AS prodParent
|
||||
WHERE src.[是否启用] = 1
|
||||
AND (@TargetRole IS NULL OR src.[账号代码] = @TargetRole)
|
||||
AND (src.[path] = @SourcePath OR src.[componet] = @SourceComponent OR src.[title] = N'生产计划跟踪')
|
||||
AND NOT EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM [dbo].[登录基础数据_二级菜单] AS existing
|
||||
WHERE existing.[账号代码] = src.[账号代码]
|
||||
AND (existing.[path] = @Path OR existing.[componet] = @Component OR existing.[title] = @Title)
|
||||
)
|
||||
)
|
||||
INSERT INTO [dbo].[登录基础数据_二级菜单]
|
||||
([pid], [path], [componet], [redirect], [name], [title], [icon], [账号代码], [是否启用], [AddData], [DeleteData], [EditData], [SearchData])
|
||||
SELECT
|
||||
[pid],
|
||||
@Path,
|
||||
@Component,
|
||||
NULL,
|
||||
@Name,
|
||||
@Title,
|
||||
[icon],
|
||||
[账号代码],
|
||||
1,
|
||||
[AddData],
|
||||
[DeleteData],
|
||||
[EditData],
|
||||
[SearchData]
|
||||
FROM SourceRows;
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
;WITH SourceRows AS
|
||||
(
|
||||
SELECT
|
||||
ROW_NUMBER() OVER (ORDER BY src.[账号代码], src.[id]) AS rn,
|
||||
src.[账号代码],
|
||||
COALESCE(prodParent.[id], src.[pid]) AS [pid],
|
||||
src.[icon],
|
||||
src.[AddData],
|
||||
src.[DeleteData],
|
||||
src.[EditData],
|
||||
src.[SearchData]
|
||||
FROM [dbo].[登录基础数据_二级菜单] AS src
|
||||
OUTER APPLY
|
||||
(
|
||||
SELECT TOP (1) rp.[id]
|
||||
FROM [dbo].[登录基础数据_二级菜单] AS rp
|
||||
WHERE rp.[账号代码] = src.[账号代码]
|
||||
AND rp.[是否启用] = 1
|
||||
AND rp.[title] = N'生产管理'
|
||||
ORDER BY rp.[id]
|
||||
) AS prodParent
|
||||
WHERE src.[是否启用] = 1
|
||||
AND (@TargetRole IS NULL OR src.[账号代码] = @TargetRole)
|
||||
AND (src.[path] = @SourcePath OR src.[componet] = @SourceComponent OR src.[title] = N'生产计划跟踪')
|
||||
AND NOT EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM [dbo].[登录基础数据_二级菜单] AS existing
|
||||
WHERE existing.[账号代码] = src.[账号代码]
|
||||
AND (existing.[path] = @Path OR existing.[componet] = @Component OR existing.[title] = @Title)
|
||||
)
|
||||
),
|
||||
BaseId AS
|
||||
(
|
||||
SELECT ISNULL(MAX([id]), 0) AS maxId
|
||||
FROM [dbo].[登录基础数据_二级菜单]
|
||||
)
|
||||
INSERT INTO [dbo].[登录基础数据_二级菜单]
|
||||
([id], [pid], [path], [componet], [redirect], [name], [title], [icon], [账号代码], [是否启用], [AddData], [DeleteData], [EditData], [SearchData])
|
||||
SELECT
|
||||
BaseId.maxId + SourceRows.rn,
|
||||
SourceRows.[pid],
|
||||
@Path,
|
||||
@Component,
|
||||
NULL,
|
||||
@Name,
|
||||
@Title,
|
||||
SourceRows.[icon],
|
||||
SourceRows.[账号代码],
|
||||
1,
|
||||
SourceRows.[AddData],
|
||||
SourceRows.[DeleteData],
|
||||
SourceRows.[EditData],
|
||||
SourceRows.[SearchData]
|
||||
FROM SourceRows
|
||||
CROSS JOIN BaseId;
|
||||
END;
|
||||
|
||||
UPDATE [dbo].[登录基础数据_二级菜单]
|
||||
SET
|
||||
[path] = @Path,
|
||||
[componet] = @Component,
|
||||
[name] = @Name,
|
||||
[title] = @Title,
|
||||
[模块代码] = [id],
|
||||
[是否启用] = 1
|
||||
WHERE [title] = @Title OR [componet] = @Component OR [path] = @Path;
|
||||
|
||||
SELECT [id], [pid], [path], [componet], [name], [title], [icon], [账号代码], [是否启用], [SearchData]
|
||||
FROM [dbo].[登录基础数据_二级菜单]
|
||||
WHERE [path] = @Path OR [componet] = @Component OR [title] = @Title
|
||||
ORDER BY [账号代码], [id];
|
||||
|
||||
123
db_backups/add_punctual_inspection_menu_20260626.sql
Normal file
123
db_backups/add_punctual_inspection_menu_20260626.sql
Normal file
@@ -0,0 +1,123 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @Title nvarchar(100) = N'及时检验报表';
|
||||
DECLARE @Path nvarchar(300) = N'CheckTask/punctualInspection';
|
||||
DECLARE @Component nvarchar(300) = N'/QualityManagement/CheckTask/punctualInspection';
|
||||
DECLARE @Name nvarchar(100) = N'PunctualInspectionReport';
|
||||
DECLARE @SourcePath nvarchar(300) = N'CheckTask/processReceive';
|
||||
DECLARE @SourceComponent nvarchar(300) = N'/QualityManagement/CheckTask/processReceive';
|
||||
DECLARE @TargetRole int = NULL; -- NULL means all roles that already have 序检收检.
|
||||
|
||||
IF OBJECT_ID(N'dbo.登录基础数据_二级菜单', N'U') IS NULL
|
||||
BEGIN
|
||||
RAISERROR(N'未找到表 dbo.登录基础数据_二级菜单。', 16, 1);
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
DECLARE @IdIsIdentity bit = ISNULL(COLUMNPROPERTY(OBJECT_ID(N'dbo.登录基础数据_二级菜单'), N'id', 'IsIdentity'), 0);
|
||||
|
||||
IF @IdIsIdentity = 1
|
||||
BEGIN
|
||||
;WITH SourceRows AS (
|
||||
SELECT
|
||||
src.[账号代码],
|
||||
COALESCE(reportParent.[id], src.[pid]) AS [pid],
|
||||
src.[icon]
|
||||
FROM [dbo].[登录基础数据_二级菜单] src
|
||||
OUTER APPLY (
|
||||
SELECT TOP (1) rp.[id]
|
||||
FROM [dbo].[登录基础数据_二级菜单] rp
|
||||
WHERE rp.[账号代码] = src.[账号代码]
|
||||
AND rp.[是否启用] = 1
|
||||
AND rp.[title] = N'质量报表'
|
||||
ORDER BY rp.[id]
|
||||
) reportParent
|
||||
WHERE src.[是否启用] = 1
|
||||
AND (@TargetRole IS NULL OR src.[账号代码] = @TargetRole)
|
||||
AND (src.[path] = @SourcePath OR src.[componet] = @SourceComponent OR src.[title] = N'序检收检')
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM [dbo].[登录基础数据_二级菜单] existing
|
||||
WHERE existing.[账号代码] = src.[账号代码]
|
||||
AND (existing.[path] = @Path OR existing.[componet] = @Component OR existing.[title] = @Title)
|
||||
)
|
||||
)
|
||||
INSERT INTO [dbo].[登录基础数据_二级菜单]
|
||||
([pid], [path], [componet], [redirect], [name], [title], [icon], [账号代码], [是否启用])
|
||||
SELECT
|
||||
[pid],
|
||||
@Path,
|
||||
@Component,
|
||||
NULL,
|
||||
@Name,
|
||||
@Title,
|
||||
[icon],
|
||||
[账号代码],
|
||||
1
|
||||
FROM SourceRows;
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
;WITH SourceRows AS (
|
||||
SELECT
|
||||
ROW_NUMBER() OVER (ORDER BY src.[账号代码], src.[id]) AS rn,
|
||||
src.[账号代码],
|
||||
COALESCE(reportParent.[id], src.[pid]) AS [pid],
|
||||
src.[icon]
|
||||
FROM [dbo].[登录基础数据_二级菜单] src
|
||||
OUTER APPLY (
|
||||
SELECT TOP (1) rp.[id]
|
||||
FROM [dbo].[登录基础数据_二级菜单] rp
|
||||
WHERE rp.[账号代码] = src.[账号代码]
|
||||
AND rp.[是否启用] = 1
|
||||
AND rp.[title] = N'质量报表'
|
||||
ORDER BY rp.[id]
|
||||
) reportParent
|
||||
WHERE src.[是否启用] = 1
|
||||
AND (@TargetRole IS NULL OR src.[账号代码] = @TargetRole)
|
||||
AND (src.[path] = @SourcePath OR src.[componet] = @SourceComponent OR src.[title] = N'序检收检')
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM [dbo].[登录基础数据_二级菜单] existing
|
||||
WHERE existing.[账号代码] = src.[账号代码]
|
||||
AND (existing.[path] = @Path OR existing.[componet] = @Component OR existing.[title] = @Title)
|
||||
)
|
||||
),
|
||||
BaseId AS (
|
||||
SELECT ISNULL(MAX([id]), 0) AS maxId
|
||||
FROM [dbo].[登录基础数据_二级菜单]
|
||||
)
|
||||
INSERT INTO [dbo].[登录基础数据_二级菜单]
|
||||
([id], [pid], [path], [componet], [redirect], [name], [title], [icon], [账号代码], [是否启用])
|
||||
SELECT
|
||||
BaseId.maxId + SourceRows.rn,
|
||||
SourceRows.[pid],
|
||||
@Path,
|
||||
@Component,
|
||||
NULL,
|
||||
@Name,
|
||||
@Title,
|
||||
SourceRows.[icon],
|
||||
SourceRows.[账号代码],
|
||||
1
|
||||
FROM SourceRows
|
||||
CROSS JOIN BaseId;
|
||||
END;
|
||||
|
||||
UPDATE [dbo].[登录基础数据_二级菜单]
|
||||
SET
|
||||
[path] = @Path,
|
||||
[componet] = @Component,
|
||||
[name] = @Name,
|
||||
[title] = @Title,
|
||||
[模块代码] = [id],
|
||||
[是否启用] = 1
|
||||
WHERE [title] = @Title OR [componet] = @Component;
|
||||
|
||||
SELECT [id], [pid], [path], [componet], [name], [title], [icon], [账号代码], [是否启用]
|
||||
FROM [dbo].[登录基础数据_二级菜单]
|
||||
WHERE [path] = @Path OR [componet] = @Component OR [title] = @Title
|
||||
ORDER BY [账号代码], [id];
|
||||
43
db_backups/add_settlement_workhours_menu_20260627.sql
Normal file
43
db_backups/add_settlement_workhours_menu_20260627.sql
Normal file
@@ -0,0 +1,43 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
DECLARE @NewMenuId INT;
|
||||
|
||||
SELECT @NewMenuId = MAX(id)
|
||||
FROM [dbo].[登录基础数据_二级菜单]
|
||||
WHERE title = N'结算工时'
|
||||
OR componet = '/ProductionManagement/SettlementWorkhours/index';
|
||||
|
||||
IF @NewMenuId IS NULL
|
||||
BEGIN
|
||||
SELECT @NewMenuId = ISNULL(MAX(id), 0) + 1
|
||||
FROM [dbo].[登录基础数据_二级菜单];
|
||||
END;
|
||||
|
||||
INSERT INTO [dbo].[登录基础数据_二级菜单]
|
||||
(id, pid, path, componet, redirect, name, title, icon, 账号代码, 模块代码, 是否启用, AddData, DeleteData, EditData, SearchData)
|
||||
SELECT
|
||||
@NewMenuId AS id,
|
||||
3 AS pid,
|
||||
'SettlementWorkhours/index' AS path,
|
||||
'/ProductionManagement/SettlementWorkhours/index' AS componet,
|
||||
'' AS redirect,
|
||||
'SettlementWorkhours' AS name,
|
||||
N'结算工时' AS title,
|
||||
ISNULL(NULLIF(w.icon, ''), 'DimensionsSummaryReport') AS icon,
|
||||
w.账号代码,
|
||||
w.模块代码,
|
||||
ISNULL(w.是否启用, 1) AS 是否启用,
|
||||
w.AddData,
|
||||
w.DeleteData,
|
||||
w.EditData,
|
||||
w.SearchData
|
||||
FROM [dbo].[登录基础数据_二级菜单] w
|
||||
WHERE w.title = N'工时查询'
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM [dbo].[登录基础数据_二级菜单] existing
|
||||
WHERE existing.title = N'结算工时'
|
||||
AND existing.账号代码 = w.账号代码
|
||||
);
|
||||
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
|
||||
85
db_backups/add_timely_kit_tracking_result_menu_20260629.sql
Normal file
85
db_backups/add_timely_kit_tracking_result_menu_20260629.sql
Normal file
@@ -0,0 +1,85 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @Title nvarchar(100) = N'及时齐套跟踪结果';
|
||||
DECLARE @Path nvarchar(300) = N'TimelyKitTrackingResult/index';
|
||||
DECLARE @Component nvarchar(300) = N'/PlanManagement/TimelyKitTrackingResult/index';
|
||||
DECLARE @Name nvarchar(100) = N'TimelyKitTrackingResult';
|
||||
DECLARE @SourcePath nvarchar(300) = N'PlanShell/index';
|
||||
DECLARE @SourceComponent nvarchar(300) = N'/PlanManagement/PlanShell/index';
|
||||
|
||||
IF OBJECT_ID(N'dbo.登录基础数据_二级菜单', N'U') IS NULL
|
||||
BEGIN
|
||||
RAISERROR(N'未找到表 dbo.登录基础数据_二级菜单。', 16, 1);
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
DECLARE @IdIsIdentity bit = ISNULL(COLUMNPROPERTY(OBJECT_ID(N'dbo.登录基础数据_二级菜单'), N'id', 'IsIdentity'), 0);
|
||||
|
||||
IF @IdIsIdentity = 1
|
||||
BEGIN
|
||||
;WITH SourceRows AS (
|
||||
SELECT
|
||||
src.[账号代码],
|
||||
src.[pid],
|
||||
src.[icon]
|
||||
FROM [dbo].[登录基础数据_二级菜单] src
|
||||
WHERE src.[是否启用] = 1
|
||||
AND (src.[path] = @SourcePath OR src.[componet] = @SourceComponent OR src.[title] = N'计划用表')
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM [dbo].[登录基础数据_二级菜单] existing
|
||||
WHERE existing.[账号代码] = src.[账号代码]
|
||||
AND (existing.[path] = @Path OR existing.[componet] = @Component OR existing.[title] = @Title)
|
||||
)
|
||||
)
|
||||
INSERT INTO [dbo].[登录基础数据_二级菜单]
|
||||
([pid], [path], [componet], [redirect], [name], [title], [icon], [账号代码], [是否启用])
|
||||
SELECT [pid], @Path, @Component, NULL, @Name, @Title, [icon], [账号代码], 1
|
||||
FROM SourceRows;
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
;WITH SourceRows AS (
|
||||
SELECT
|
||||
ROW_NUMBER() OVER (ORDER BY src.[账号代码], src.[id]) AS rn,
|
||||
src.[账号代码],
|
||||
src.[pid],
|
||||
src.[icon]
|
||||
FROM [dbo].[登录基础数据_二级菜单] src
|
||||
WHERE src.[是否启用] = 1
|
||||
AND (src.[path] = @SourcePath OR src.[componet] = @SourceComponent OR src.[title] = N'计划用表')
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM [dbo].[登录基础数据_二级菜单] existing
|
||||
WHERE existing.[账号代码] = src.[账号代码]
|
||||
AND (existing.[path] = @Path OR existing.[componet] = @Component OR existing.[title] = @Title)
|
||||
)
|
||||
),
|
||||
BaseId AS (
|
||||
SELECT ISNULL(MAX([id]), 0) AS maxId
|
||||
FROM [dbo].[登录基础数据_二级菜单]
|
||||
)
|
||||
INSERT INTO [dbo].[登录基础数据_二级菜单]
|
||||
([id], [pid], [path], [componet], [redirect], [name], [title], [icon], [账号代码], [是否启用])
|
||||
SELECT BaseId.maxId + SourceRows.rn, SourceRows.[pid], @Path, @Component, NULL, @Name, @Title, SourceRows.[icon], SourceRows.[账号代码], 1
|
||||
FROM SourceRows
|
||||
CROSS JOIN BaseId;
|
||||
END;
|
||||
|
||||
UPDATE [dbo].[登录基础数据_二级菜单]
|
||||
SET
|
||||
[path] = @Path,
|
||||
[componet] = @Component,
|
||||
[name] = @Name,
|
||||
[title] = @Title,
|
||||
[模块代码] = [id],
|
||||
[是否启用] = 1
|
||||
WHERE [title] = @Title OR [componet] = @Component;
|
||||
|
||||
SELECT [id], [pid], [path], [componet], [name], [title], [icon], [账号代码], [是否启用]
|
||||
FROM [dbo].[登录基础数据_二级菜单]
|
||||
WHERE [path] = @Path OR [componet] = @Component OR [title] = @Title
|
||||
ORDER BY [账号代码], [id];
|
||||
81
db_backups/alter_quality_details_query_fieldkey_20260625.sql
Normal file
81
db_backups/alter_quality_details_query_fieldkey_20260625.sql
Normal file
@@ -0,0 +1,81 @@
|
||||
ALTER PROCEDURE [dbo].[质量管理_质检明细_查询]
|
||||
@质检类型 nvarchar(4000) = '10',
|
||||
@开始日期 datetime = NULL,
|
||||
@结束日期 datetime = NULL,
|
||||
@订单号 nvarchar(4000) = '0',
|
||||
@合同号 nvarchar(4000) = '0',
|
||||
@零件编码 nvarchar(4000) = '0',
|
||||
@零件名称 nvarchar(4000) = '0',
|
||||
@PageCurrent int = 1,
|
||||
@PageSize int = 20,
|
||||
@PageCount int OUTPUT,
|
||||
@ItemCount int OUTPUT
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @tbname sysname = ' [dbo].[View_质检明细] '
|
||||
DECLARE @fieldkey sysname = 'QT_AID'
|
||||
DECLARE @where nvarchar(4000)
|
||||
DECLARE @fieldshow nvarchar(1000)
|
||||
DECLARE @fieldOrder nvarchar(1000) = ' 检测时间 DESC, QT_AID DESC '
|
||||
|
||||
SET @where = ' (1=1) '
|
||||
|
||||
IF @质检类型 = '10'
|
||||
SET @where = @where + ' AND (1=1) '
|
||||
ELSE IF @质检类型 = '0'
|
||||
SET @where = @where + ' AND 质检类型 = ''收检'' '
|
||||
ELSE IF @质检类型 = '1'
|
||||
SET @where = @where + ' AND 质检类型 = ''终检'' '
|
||||
ELSE IF @质检类型 = '2'
|
||||
SET @where = @where + ' AND 质检类型 = ''来料检验'' '
|
||||
ELSE IF @质检类型 = '3'
|
||||
SET @where = @where + ' AND 质检类型 = ''退库检验'' '
|
||||
|
||||
IF @订单号 <> '0'
|
||||
SET @where = @where + ' AND 计划号 LIKE ''%' + @订单号 + '%'' '
|
||||
|
||||
--IF @合同号 <> '0'
|
||||
-- SET @where = @where + ' AND 内部合同号 LIKE ''%' + @合同号 + '%'' '
|
||||
|
||||
IF @零件编码 <> '0'
|
||||
SET @where = @where + ' AND 零件编码 LIKE ''%' + @零件编码 + '%'' '
|
||||
|
||||
IF @零件名称 <> '0'
|
||||
SET @where = @where + ' AND 零件名称 LIKE ''%' + @零件名称 + '%'' '
|
||||
|
||||
IF @开始日期 IS NOT NULL
|
||||
SET @where = @where + ' AND 检测时间 >= ''' + CONVERT(nvarchar(30), @开始日期, 120) + ''' '
|
||||
|
||||
IF @结束日期 IS NOT NULL
|
||||
SET @where = @where + ' AND 检测时间 <= ''' + CONVERT(nvarchar(30), @结束日期, 120) + ''' '
|
||||
|
||||
SET @fieldshow = '
|
||||
[QT_AID]
|
||||
,[质检类型]
|
||||
,[零件编码]
|
||||
,[零件名称]
|
||||
,[内部合同号]
|
||||
,[计划号]
|
||||
,[工序名称]
|
||||
,[检验数量]
|
||||
,[合格数]
|
||||
,[不合格数]
|
||||
,[检测人]
|
||||
,[检测时间]
|
||||
,[检测说明]
|
||||
,[工位名称]
|
||||
,[订单类型]'
|
||||
|
||||
EXEC [dbo].[sp_xt_pagesplit]
|
||||
@tbname,
|
||||
@fieldkey,
|
||||
@where,
|
||||
@fieldshow,
|
||||
@fieldOrder,
|
||||
@PageCurrent,
|
||||
@PageSize,
|
||||
@PageCount OUTPUT,
|
||||
@ItemCount OUTPUT
|
||||
END
|
||||
@@ -0,0 +1,426 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[工时统计_设备工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
IF @开始日期 = CONVERT(DATE, '19000101', 112) SET @开始日期 = NULL;
|
||||
IF @结束日期 = CONVERT(DATE, '19000101', 112) SET @结束日期 = NULL;
|
||||
|
||||
;WITH 操作人汇总 AS (
|
||||
SELECT
|
||||
工位名称,
|
||||
COUNT(*) AS 报工次数,
|
||||
SUM(CASE WHEN 操作类别 IN (N'报工', N'辅助结束') THEN 操作数值 ELSE 0 END) AS 报工数量,
|
||||
CAST(SUM(加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时
|
||||
FROM View_生产工时视图全部
|
||||
WHERE (@开始日期 IS NULL OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR 开始时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 工位名称 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND ISNULL(阶段标识, 0) = -1
|
||||
GROUP BY 工位名称
|
||||
),
|
||||
日期汇总 AS (
|
||||
SELECT
|
||||
工位名称,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
COUNT(*) AS 报工次数,
|
||||
SUM(CASE WHEN 操作类别 IN (N'报工', N'辅助结束') THEN 操作数值 ELSE 0 END) AS 报工数量,
|
||||
CAST(SUM(加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 工时小时
|
||||
FROM View_生产工时视图全部
|
||||
WHERE (@开始日期 IS NULL OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR 开始时间 <= @结束日期)
|
||||
AND 工位名称 IS NOT NULL AND 工位名称 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 工位名称 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND ISNULL(阶段标识, 0) = -1
|
||||
GROUP BY 工位名称, CONVERT(VARCHAR(10), 开始时间, 120)
|
||||
),
|
||||
报工明细 AS (
|
||||
SELECT
|
||||
工位名称,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
订单合同号 AS 合同号,
|
||||
订单号,
|
||||
产品编码,
|
||||
产品名称,
|
||||
CAST(计划数量 AS DECIMAL(19,6)) AS 计划数量,
|
||||
工序名称,
|
||||
工位名称 AS 指派对象,
|
||||
CASE
|
||||
WHEN 操作描述 LIKE N'%白班%' THEN N'白班'
|
||||
WHEN 操作描述 LIKE N'%夜班%' THEN N'夜班'
|
||||
ELSE N''
|
||||
END AS 班次,
|
||||
操作类别 AS 报工类型,
|
||||
CASE WHEN 操作类别 IN (N'报工', N'辅助结束') THEN 操作数值 ELSE 0 END AS 报工数量,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间,
|
||||
CAST(加工工时 / 60.0 / 60.0 AS DECIMAL(10,2)) AS 工时小时
|
||||
FROM View_生产工时视图全部
|
||||
WHERE (@开始日期 IS NULL OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR 开始时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 工位名称 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND ISNULL(阶段标识, 0) = -1
|
||||
)
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
工位名称 AS operator,
|
||||
'' AS dateLabel,
|
||||
CAST(报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
CAST(NULL AS DECIMAL(19,6)) AS 计划数量,
|
||||
'' AS processName,
|
||||
'' AS 班次,
|
||||
'' AS 报工类型,
|
||||
'' AS 指派对象,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
CAST(总工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 操作人汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
工位名称 AS operator,
|
||||
工作日期 AS dateLabel,
|
||||
CAST(报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
CAST(NULL AS DECIMAL(19,6)) AS 计划数量,
|
||||
'' AS processName,
|
||||
'' AS 班次,
|
||||
'' AS 报工类型,
|
||||
'' AS 指派对象,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 日期汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
3 AS [Level],
|
||||
工位名称 AS operator,
|
||||
工作日期 AS dateLabel,
|
||||
'' AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
ISNULL(合同号, '') AS contractNo,
|
||||
ISNULL(订单号, '') AS orderNo,
|
||||
ISNULL(产品编码, '') AS productCode,
|
||||
ISNULL(产品名称, '') AS productName,
|
||||
计划数量 AS 计划数量,
|
||||
ISNULL(工序名称, '') AS processName,
|
||||
ISNULL(班次, '') AS 班次,
|
||||
ISNULL(报工类型, '') AS 报工类型,
|
||||
ISNULL(指派对象, '') AS 指派对象,
|
||||
ISNULL(开始时间, '') AS startTime,
|
||||
ISNULL(结束时间, '') AS endTime,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 报工明细
|
||||
|
||||
ORDER BY operator, dateLabel, [Level]
|
||||
END
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[工时统计_项目工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@工时类型 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
IF @开始日期 = CONVERT(DATE, '19000101', 112) SET @开始日期 = NULL;
|
||||
IF @结束日期 = CONVERT(DATE, '19000101', 112) SET @结束日期 = NULL;
|
||||
|
||||
;WITH 人员班组 AS (
|
||||
SELECT
|
||||
LTRIM(RTRIM(Personnel_Name)) AS Personnel_Name,
|
||||
MAX(NULLIF(LTRIM(RTRIM(班组)), '')) AS 班组
|
||||
FROM [YL_MESDB].[dbo].[登录基础数据_人员信息]
|
||||
WHERE Personnel_Name IS NOT NULL
|
||||
GROUP BY LTRIM(RTRIM(Personnel_Name))
|
||||
),
|
||||
工时基础 AS (
|
||||
SELECT
|
||||
v.*,
|
||||
ISNULL(p.班组, '未分类') AS 工时类型,
|
||||
CASE
|
||||
WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.加工工时, 0) > 0 THEN ISNULL(v.加工工时, 0)
|
||||
WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.总时长, 0) > 0 AND ISNULL(v.加工工时, 0) = 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 LIKE '%加班%' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 = '开始加工' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0)
|
||||
ELSE 0
|
||||
END AS 有效工时秒
|
||||
FROM View_生产工时视图全部 v
|
||||
LEFT JOIN 人员班组 p ON LTRIM(RTRIM(v.操作人)) = p.Personnel_Name
|
||||
),
|
||||
订单工时汇总 AS (
|
||||
SELECT
|
||||
v.订单合同号 AS 合同号,
|
||||
v.产品编码,
|
||||
v.产品名称,
|
||||
MAX(v.计划数量) AS 计划数量,
|
||||
MAX(v.完成数量) AS 完成数量,
|
||||
SUM(CASE WHEN v.操作类别 IN ('报工', '辅助结束') THEN v.操作数值 ELSE 0 END) AS 报工数量,
|
||||
MIN(CONVERT(VARCHAR(10), v.开始时间, 120)) AS 计划开始,
|
||||
MAX(CONVERT(VARCHAR(10), v.结束时间, 120)) AS 计划完成,
|
||||
CAST(SUM(v.有效工时秒) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时
|
||||
FROM 工时基础 v
|
||||
WHERE (@开始日期 IS NULL OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR 开始时间 <= @结束日期)
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR v.订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR v.操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR v.产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR v.工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR v.订单号 LIKE '%' + @订单号 + '%')
|
||||
AND (@工时类型 IS NULL OR @工时类型 = '' OR v.工时类型 = @工时类型)
|
||||
GROUP BY v.订单合同号, v.产品编码, v.产品名称
|
||||
),
|
||||
工序工时明细 AS (
|
||||
SELECT
|
||||
v.订单合同号 AS 合同号,
|
||||
v.产品编码,
|
||||
v.工序名称,
|
||||
MAX(v.工序说明) AS 工序说明,
|
||||
v.工时类型,
|
||||
v.操作人,
|
||||
MAX(v.工位名称) AS 指派对象,
|
||||
v.订单号,
|
||||
SUM(CASE WHEN v.操作类别 IN ('报工', '辅助结束') THEN v.操作数值 ELSE 0 END) AS 报工数量,
|
||||
CAST(SUM(v.有效工时秒) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 工时小时,
|
||||
MIN(CONVERT(VARCHAR(10), v.开始时间, 120)) AS 计划开始,
|
||||
MAX(CONVERT(VARCHAR(10), v.结束时间, 120)) AS 计划完成,
|
||||
MAX(v.计划数量) AS 计划数量
|
||||
FROM 工时基础 v
|
||||
WHERE (@开始日期 IS NULL OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR 开始时间 <= @结束日期)
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR v.订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR v.操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR v.产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR v.工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR v.订单号 LIKE '%' + @订单号 + '%')
|
||||
AND (@工时类型 IS NULL OR @工时类型 = '' OR v.工时类型 = @工时类型)
|
||||
GROUP BY v.订单合同号, v.产品编码, v.工序名称, v.工时类型, v.操作人, v.订单号
|
||||
)
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
合同号 AS contractNo,
|
||||
产品名称 AS materialDesc,
|
||||
产品编码 AS materialCode,
|
||||
CAST(NULL AS DECIMAL(19,6)) AS 计划数量,
|
||||
'' AS processName,
|
||||
'' AS 工序说明,
|
||||
'' AS 工时类型,
|
||||
'' AS operator,
|
||||
'' AS 指派对象,
|
||||
CASE WHEN 计划数量 = FLOOR(计划数量) THEN CAST(CAST(计划数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(计划数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END + '/' +
|
||||
CASE WHEN 完成数量 = FLOOR(完成数量) THEN CAST(CAST(完成数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(完成数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS qty,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
ISNULL(计划开始, '') AS planStart,
|
||||
ISNULL(计划完成, '') AS planEnd,
|
||||
CAST(总工时小时 AS VARCHAR(20)) AS workHours,
|
||||
'' AS 订单号
|
||||
FROM 订单工时汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
d.合同号 AS contractNo,
|
||||
'' AS materialDesc,
|
||||
d.产品编码 AS materialCode,
|
||||
d.计划数量 AS 计划数量,
|
||||
d.工序名称 AS processName,
|
||||
ISNULL(d.工序说明, '') AS 工序说明,
|
||||
d.工时类型 AS 工时类型,
|
||||
d.操作人 AS operator,
|
||||
ISNULL(d.指派对象, '') AS 指派对象,
|
||||
'' AS qty,
|
||||
CAST(d.报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
d.计划开始 AS planStart,
|
||||
d.计划完成 AS planEnd,
|
||||
CAST(d.工时小时 AS VARCHAR(20)) AS workHours,
|
||||
d.订单号 AS 订单号
|
||||
FROM 工序工时明细 d
|
||||
|
||||
ORDER BY contractNo, materialCode, [Level], processName, 工时类型
|
||||
END
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[工时统计_任务工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@工时类型 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
IF @开始日期 = CONVERT(DATE, '19000101', 112) SET @开始日期 = NULL;
|
||||
IF @结束日期 = CONVERT(DATE, '19000101', 112) SET @结束日期 = NULL;
|
||||
|
||||
;WITH 人员班组 AS (
|
||||
SELECT
|
||||
LTRIM(RTRIM(Personnel_Name)) AS Personnel_Name,
|
||||
MAX(NULLIF(LTRIM(RTRIM(班组)), '')) AS 班组
|
||||
FROM [YL_MESDB].[dbo].[登录基础数据_人员信息]
|
||||
WHERE Personnel_Name IS NOT NULL
|
||||
GROUP BY LTRIM(RTRIM(Personnel_Name))
|
||||
),
|
||||
工时基础 AS (
|
||||
SELECT
|
||||
v.*,
|
||||
ISNULL(p.班组, '未分类') AS 工时类型,
|
||||
CASE
|
||||
WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.加工工时, 0) > 0 THEN ISNULL(v.加工工时, 0)
|
||||
WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.总时长, 0) > 0 AND ISNULL(v.加工工时, 0) = 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 LIKE '%加班%' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 = '开始加工' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0)
|
||||
ELSE 0
|
||||
END AS 有效工时秒
|
||||
FROM View_生产工时视图全部 v
|
||||
LEFT JOIN 人员班组 p ON LTRIM(RTRIM(v.操作人)) = p.Personnel_Name
|
||||
),
|
||||
任务汇总 AS (
|
||||
SELECT
|
||||
订单合同号 AS 合同号,
|
||||
订单号,
|
||||
产品编码,
|
||||
产品名称,
|
||||
工序名称,
|
||||
MAX(工序说明) AS 工序说明,
|
||||
工时类型,
|
||||
操作类别,
|
||||
MAX(计划数量) AS 计划数量,
|
||||
MAX(完成数量) AS 完成数量,
|
||||
SUM(CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN 操作数值 ELSE 0 END) AS 报工数量,
|
||||
CAST(SUM(有效工时秒) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时
|
||||
FROM 工时基础
|
||||
WHERE (@开始日期 IS NULL OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR 开始时间 <= @结束日期)
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND (@工时类型 IS NULL OR @工时类型 = '' OR 工时类型 = @工时类型)
|
||||
GROUP BY 订单合同号, 订单号, 产品编码, 产品名称, 工序名称, 工时类型, 操作类别
|
||||
),
|
||||
报工明细 AS (
|
||||
SELECT
|
||||
订单合同号 AS 合同号,
|
||||
订单号,
|
||||
产品编码,
|
||||
工序名称,
|
||||
工序说明,
|
||||
操作人,
|
||||
工位名称 AS 指派对象,
|
||||
工时类型,
|
||||
计划数量,
|
||||
操作类别,
|
||||
CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN 操作数值 ELSE 0 END AS 报工数量,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间,
|
||||
CAST(有效工时秒 / 60.0 / 60.0 AS DECIMAL(10,2)) AS 工时小时
|
||||
FROM 工时基础
|
||||
WHERE (@开始日期 IS NULL OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR 开始时间 <= @结束日期)
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND (@工时类型 IS NULL OR @工时类型 = '' OR 工时类型 = @工时类型)
|
||||
)
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
ISNULL(合同号, '') AS contractNo,
|
||||
ISNULL(订单号, '') AS orderNo,
|
||||
ISNULL(产品编码, '') AS productCode,
|
||||
ISNULL(产品名称, '') AS productName,
|
||||
ISNULL(工序名称, '') AS processName,
|
||||
ISNULL(工序说明, '') AS 工序说明,
|
||||
CAST(计划数量 AS DECIMAL(19,6)) AS 计划数量,
|
||||
ISNULL(工时类型, '') AS 工时类型,
|
||||
'' AS operator,
|
||||
'' AS 指派对象,
|
||||
CASE WHEN 计划数量 IS NULL THEN '0' WHEN 计划数量 = FLOOR(计划数量) THEN CAST(CAST(计划数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(计划数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END + '/' +
|
||||
CASE WHEN 完成数量 IS NULL THEN '0' WHEN 完成数量 = FLOOR(完成数量) THEN CAST(CAST(完成数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(完成数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS qty,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
CAST(总工时小时 AS VARCHAR(20)) AS workHours,
|
||||
操作类别
|
||||
FROM 任务汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
ISNULL(合同号, '') AS contractNo,
|
||||
ISNULL(订单号, '') AS orderNo,
|
||||
ISNULL(产品编码, '') AS productCode,
|
||||
'' AS productName,
|
||||
ISNULL(工序名称, '') AS processName,
|
||||
ISNULL(工序说明, '') AS 工序说明,
|
||||
CAST(计划数量 AS DECIMAL(19,6)) AS 计划数量,
|
||||
ISNULL(工时类型, '') AS 工时类型,
|
||||
ISNULL(操作人, '') AS operator,
|
||||
ISNULL(指派对象, '') AS 指派对象,
|
||||
'' AS qty,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
ISNULL(开始时间, '') AS startTime,
|
||||
ISNULL(结束时间, '') AS endTime,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours,
|
||||
操作类别
|
||||
FROM 报工明细
|
||||
|
||||
ORDER BY contractNo, orderNo, productCode, processName, [Level], startTime
|
||||
END
|
||||
GO
|
||||
@@ -0,0 +1,328 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER OFF
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[工时统计_作业者工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@工时类型 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH 人员班组 AS (
|
||||
SELECT
|
||||
LTRIM(RTRIM(Personnel_Name)) AS Personnel_Name,
|
||||
MAX(NULLIF(LTRIM(RTRIM(班组)), '')) AS 班组
|
||||
FROM [YL_MESDB].[dbo].[登录基础数据_人员信息]
|
||||
WHERE Personnel_Name IS NOT NULL
|
||||
GROUP BY LTRIM(RTRIM(Personnel_Name))
|
||||
),
|
||||
工时基础 AS (
|
||||
SELECT
|
||||
v.*,
|
||||
ISNULL(p.班组, '未分类') AS 工时类型,
|
||||
CASE
|
||||
WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.加工工时, 0) > 0 THEN ISNULL(v.加工工时, 0)
|
||||
WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.总时长, 0) > 0 AND ISNULL(v.加工工时, 0) = 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 LIKE '%加班%' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 = '开始加工' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 = '异常' THEN -ISNULL(v.总时长, 0)
|
||||
ELSE 0
|
||||
END AS 有效工时秒
|
||||
FROM [dbo].[View_生产工时视图] v
|
||||
LEFT JOIN 人员班组 p ON LTRIM(RTRIM(v.操作人)) = p.Personnel_Name
|
||||
),
|
||||
操作人汇总 AS (
|
||||
SELECT
|
||||
操作人,
|
||||
COUNT(*) AS 报工次数,
|
||||
SUM(CASE
|
||||
WHEN 操作类别 NOT IN ('异常') THEN 操作数值
|
||||
WHEN 操作类别 = '异常' THEN -操作数值
|
||||
ELSE 0
|
||||
END) AS 报工数量,
|
||||
CAST(SUM(有效工时秒) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时
|
||||
FROM 工时基础
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 开始时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 结束时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND (@工时类型 IS NULL OR @工时类型 = '' OR 工时类型 = @工时类型)
|
||||
AND ISNULL(阶段标识, 0) != -1
|
||||
GROUP BY 操作人
|
||||
),
|
||||
日期汇总 AS (
|
||||
SELECT
|
||||
操作人,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
COUNT(*) AS 报工次数,
|
||||
SUM(CASE
|
||||
WHEN 操作类别 NOT IN ('异常') THEN 操作数值
|
||||
WHEN 操作类别 = '异常' THEN -操作数值
|
||||
ELSE 0
|
||||
END) AS 报工数量,
|
||||
CAST(SUM(有效工时秒) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 工时小时
|
||||
FROM 工时基础
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 开始时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 结束时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND (@工时类型 IS NULL OR @工时类型 = '' OR 工时类型 = @工时类型)
|
||||
AND ISNULL(阶段标识, 0) != -1
|
||||
GROUP BY 操作人, CONVERT(VARCHAR(10), 开始时间, 120)
|
||||
),
|
||||
报工明细 AS (
|
||||
SELECT
|
||||
操作人,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
订单合同号 AS 合同号,
|
||||
订单号,
|
||||
产品编码,
|
||||
产品名称,
|
||||
工序名称,
|
||||
工时类型,
|
||||
计划数量,
|
||||
工位名称 AS 指派对象,
|
||||
CASE
|
||||
WHEN 操作类别 NOT IN ('异常') THEN 操作数值
|
||||
WHEN 操作类别 = '异常' THEN -操作数值
|
||||
ELSE 0
|
||||
END AS 报工数量,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间,
|
||||
CAST(有效工时秒 / 60.0 / 60.0 AS DECIMAL(10,2)) AS 工时小时,
|
||||
异常说明,
|
||||
工序说明,
|
||||
操作类别
|
||||
FROM 工时基础
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 开始时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 结束时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND (@工时类型 IS NULL OR @工时类型 = '' OR 工时类型 = @工时类型)
|
||||
AND ISNULL(阶段标识, 0) != -1
|
||||
)
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
操作人 AS operator,
|
||||
'' AS dateLabel,
|
||||
CAST(报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
CAST(NULL AS DECIMAL(19,6)) AS 计划数量,
|
||||
'' AS 工时类型,
|
||||
'' AS 指派对象,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
'' AS 异常说明,
|
||||
'' AS 工序说明,
|
||||
'' AS 操作类别,
|
||||
CAST(总工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 操作人汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
操作人 AS operator,
|
||||
工作日期 AS dateLabel,
|
||||
CAST(报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
CAST(NULL AS DECIMAL(19,6)) AS 计划数量,
|
||||
'' AS 工时类型,
|
||||
'' AS 指派对象,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
'' AS 异常说明,
|
||||
'' AS 工序说明,
|
||||
'' AS 操作类别,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 日期汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
3 AS [Level],
|
||||
操作人 AS operator,
|
||||
工作日期 AS dateLabel,
|
||||
'' AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
ISNULL(合同号, '') AS contractNo,
|
||||
ISNULL(订单号, '') AS orderNo,
|
||||
ISNULL(产品编码, '') AS productCode,
|
||||
ISNULL(产品名称, '') AS productName,
|
||||
ISNULL(工序名称, '') AS processName,
|
||||
计划数量 AS 计划数量,
|
||||
ISNULL(工时类型, '') AS 工时类型,
|
||||
ISNULL(指派对象, '') AS 指派对象,
|
||||
ISNULL(开始时间, '') AS startTime,
|
||||
ISNULL(结束时间, '') AS endTime,
|
||||
ISNULL(异常说明, '') AS 异常说明,
|
||||
ISNULL(工序说明, '') AS 工序说明,
|
||||
ISNULL(操作类别, '') AS 操作类别,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 报工明细
|
||||
|
||||
ORDER BY operator, dateLabel, [Level]
|
||||
END
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[工时统计_任务工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@工时类型 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH 人员班组 AS (
|
||||
SELECT
|
||||
LTRIM(RTRIM(Personnel_Name)) AS Personnel_Name,
|
||||
MAX(NULLIF(LTRIM(RTRIM(班组)), '')) AS 班组
|
||||
FROM [YL_MESDB].[dbo].[登录基础数据_人员信息]
|
||||
WHERE Personnel_Name IS NOT NULL
|
||||
GROUP BY LTRIM(RTRIM(Personnel_Name))
|
||||
),
|
||||
工时基础 AS (
|
||||
SELECT
|
||||
v.*,
|
||||
ISNULL(p.班组, '未分类') AS 工时类型,
|
||||
CASE
|
||||
WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.加工工时, 0) > 0 THEN ISNULL(v.加工工时, 0)
|
||||
WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.总时长, 0) > 0 AND ISNULL(v.加工工时, 0) = 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 LIKE '%加班%' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 = '开始加工' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0)
|
||||
ELSE 0
|
||||
END AS 有效工时秒
|
||||
FROM View_生产工时视图 v
|
||||
LEFT JOIN 人员班组 p ON LTRIM(RTRIM(v.操作人)) = p.Personnel_Name
|
||||
),
|
||||
任务汇总 AS (
|
||||
SELECT
|
||||
订单合同号 AS 合同号,
|
||||
订单号,
|
||||
产品编码,
|
||||
产品名称,
|
||||
工序名称,
|
||||
工时类型,
|
||||
操作类别,
|
||||
MAX(计划数量) AS 计划数量,
|
||||
MAX(完成数量) AS 完成数量,
|
||||
SUM(CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN 操作数值 ELSE 0 END) AS 报工数量,
|
||||
CAST(SUM(有效工时秒) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时
|
||||
FROM 工时基础
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND (@工时类型 IS NULL OR @工时类型 = '' OR 工时类型 = @工时类型)
|
||||
GROUP BY 订单合同号, 订单号, 产品编码, 产品名称, 工序名称, 工时类型, 操作类别
|
||||
),
|
||||
报工明细 AS (
|
||||
SELECT
|
||||
订单合同号 AS 合同号,
|
||||
订单号,
|
||||
产品编码,
|
||||
工序名称,
|
||||
操作人,
|
||||
工位名称 AS 指派对象,
|
||||
工时类型,
|
||||
计划数量,
|
||||
操作类别,
|
||||
CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN 操作数值 ELSE 0 END AS 报工数量,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间,
|
||||
CAST(有效工时秒 / 60.0 / 60.0 AS DECIMAL(10,2)) AS 工时小时
|
||||
FROM 工时基础
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND (@工时类型 IS NULL OR @工时类型 = '' OR 工时类型 = @工时类型)
|
||||
)
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
ISNULL(合同号, '') AS contractNo,
|
||||
ISNULL(订单号, '') AS orderNo,
|
||||
ISNULL(产品编码, '') AS productCode,
|
||||
ISNULL(产品名称, '') AS productName,
|
||||
ISNULL(工序名称, '') AS processName,
|
||||
CAST(计划数量 AS DECIMAL(19,6)) AS 计划数量,
|
||||
ISNULL(工时类型, '') AS 工时类型,
|
||||
'' AS operator,
|
||||
'' AS 指派对象,
|
||||
CASE WHEN 计划数量 IS NULL THEN '0' WHEN 计划数量 = FLOOR(计划数量) THEN CAST(CAST(计划数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(计划数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END + '/' +
|
||||
CASE WHEN 完成数量 IS NULL THEN '0' WHEN 完成数量 = FLOOR(完成数量) THEN CAST(CAST(完成数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(完成数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS qty,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
CAST(总工时小时 AS VARCHAR(20)) AS workHours,
|
||||
操作类别
|
||||
FROM 任务汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
ISNULL(合同号, '') AS contractNo,
|
||||
ISNULL(订单号, '') AS orderNo,
|
||||
ISNULL(产品编码, '') AS productCode,
|
||||
'' AS productName,
|
||||
ISNULL(工序名称, '') AS processName,
|
||||
CAST(计划数量 AS DECIMAL(19,6)) AS 计划数量,
|
||||
ISNULL(工时类型, '') AS 工时类型,
|
||||
ISNULL(操作人, '') AS operator,
|
||||
ISNULL(指派对象, '') AS 指派对象,
|
||||
'' AS qty,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
ISNULL(开始时间, '') AS startTime,
|
||||
ISNULL(结束时间, '') AS endTime,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours,
|
||||
操作类别
|
||||
FROM 报工明细
|
||||
|
||||
ORDER BY contractNo, orderNo, productCode, processName, [Level], startTime
|
||||
END
|
||||
GO
|
||||
152
db_backups/alter_工时统计_设备工时_查询_add_shift_reporttype_20260623.sql
Normal file
152
db_backups/alter_工时统计_设备工时_查询_add_shift_reporttype_20260623.sql
Normal file
@@ -0,0 +1,152 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[工时统计_设备工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH 操作人汇总 AS (
|
||||
SELECT
|
||||
工位名称,
|
||||
COUNT(*) AS 报工次数,
|
||||
SUM(CASE WHEN 操作类别 IN (N'报工', N'辅助结束') THEN 操作数值 ELSE 0 END) AS 报工数量,
|
||||
CAST(SUM(加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时
|
||||
FROM View_生产工时视图
|
||||
WHERE (@开始日期 IS NULL OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR 开始时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 工位名称 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND ISNULL(阶段标识, 0) = -1
|
||||
GROUP BY 工位名称
|
||||
),
|
||||
日期汇总 AS (
|
||||
SELECT
|
||||
工位名称,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
COUNT(*) AS 报工次数,
|
||||
SUM(CASE WHEN 操作类别 IN (N'报工', N'辅助结束') THEN 操作数值 ELSE 0 END) AS 报工数量,
|
||||
CAST(SUM(加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 工时小时
|
||||
FROM View_生产工时视图
|
||||
WHERE (@开始日期 IS NULL OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR 开始时间 <= @结束日期)
|
||||
AND 工位名称 IS NOT NULL AND 工位名称 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 工位名称 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND ISNULL(阶段标识, 0) = -1
|
||||
GROUP BY 工位名称, CONVERT(VARCHAR(10), 开始时间, 120)
|
||||
),
|
||||
报工明细 AS (
|
||||
SELECT
|
||||
工位名称,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
订单合同号 AS 合同号,
|
||||
订单号,
|
||||
产品编码,
|
||||
产品名称,
|
||||
工序名称,
|
||||
工位名称 AS 指派对象,
|
||||
CASE
|
||||
WHEN 操作描述 LIKE N'%白班%' THEN N'白班'
|
||||
WHEN 操作描述 LIKE N'%夜班%' THEN N'夜班'
|
||||
ELSE N''
|
||||
END AS 班次,
|
||||
操作类别 AS 报工类型,
|
||||
CASE WHEN 操作类别 IN (N'报工', N'辅助结束') THEN 操作数值 ELSE 0 END AS 报工数量,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间,
|
||||
CAST(加工工时 / 60.0 / 60.0 AS DECIMAL(10,2)) AS 工时小时
|
||||
FROM View_生产工时视图
|
||||
WHERE (@开始日期 IS NULL OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR 开始时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 工位名称 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND ISNULL(阶段标识, 0) = -1
|
||||
)
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
工位名称 AS operator,
|
||||
'' AS dateLabel,
|
||||
CAST(报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
'' AS 班次,
|
||||
'' AS 报工类型,
|
||||
'' AS 指派对象,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
CAST(总工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 操作人汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
工位名称 AS operator,
|
||||
工作日期 AS dateLabel,
|
||||
CAST(报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
'' AS 班次,
|
||||
'' AS 报工类型,
|
||||
'' AS 指派对象,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 日期汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
3 AS [Level],
|
||||
工位名称 AS operator,
|
||||
工作日期 AS dateLabel,
|
||||
'' AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
ISNULL(合同号, '') AS contractNo,
|
||||
ISNULL(订单号, '') AS orderNo,
|
||||
ISNULL(产品编码, '') AS productCode,
|
||||
ISNULL(产品名称, '') AS productName,
|
||||
ISNULL(工序名称, '') AS processName,
|
||||
ISNULL(班次, '') AS 班次,
|
||||
ISNULL(报工类型, '') AS 报工类型,
|
||||
ISNULL(指派对象, '') AS 指派对象,
|
||||
ISNULL(开始时间, '') AS startTime,
|
||||
ISNULL(结束时间, '') AS endTime,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 报工明细
|
||||
|
||||
ORDER BY operator, dateLabel, [Level]
|
||||
END
|
||||
GO
|
||||
132
db_backups/alter_工时统计_项目工时_查询_add_workhour_type_20260623.sql
Normal file
132
db_backups/alter_工时统计_项目工时_查询_add_workhour_type_20260623.sql
Normal file
@@ -0,0 +1,132 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER OFF
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[工时统计_项目工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@工时类型 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH 人员班组 AS (
|
||||
SELECT
|
||||
LTRIM(RTRIM(Personnel_Name)) AS Personnel_Name,
|
||||
MAX(NULLIF(LTRIM(RTRIM(班组)), '')) AS 班组
|
||||
FROM [YL_MESDB].[dbo].[登录基础数据_人员信息]
|
||||
WHERE Personnel_Name IS NOT NULL
|
||||
GROUP BY LTRIM(RTRIM(Personnel_Name))
|
||||
),
|
||||
工时基础 AS (
|
||||
SELECT
|
||||
v.*,
|
||||
ISNULL(p.班组, '未分类') AS 工时类型,
|
||||
CASE
|
||||
WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.加工工时, 0) > 0 THEN ISNULL(v.加工工时, 0)
|
||||
WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.总时长, 0) > 0 AND ISNULL(v.加工工时, 0) = 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 LIKE '%加班%' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 = '开始加工' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0)
|
||||
ELSE 0
|
||||
END AS 有效工时秒
|
||||
FROM View_生产工时视图 v
|
||||
LEFT JOIN 人员班组 p ON LTRIM(RTRIM(v.操作人)) = p.Personnel_Name
|
||||
),
|
||||
订单工时汇总 AS (
|
||||
SELECT
|
||||
v.订单合同号 AS 合同号,
|
||||
v.产品编码,
|
||||
v.产品名称,
|
||||
MAX(v.计划数量) AS 计划数量,
|
||||
MAX(v.完成数量) AS 完成数量,
|
||||
SUM(CASE WHEN v.操作类别 IN ('报工', '辅助结束') THEN v.操作数值 ELSE 0 END) AS 报工数量,
|
||||
MIN(CONVERT(VARCHAR(10), v.报工日期, 120)) AS 计划开始,
|
||||
MAX(CONVERT(VARCHAR(10), v.报工日期, 120)) AS 计划完成,
|
||||
CAST(SUM(v.有效工时秒) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时
|
||||
FROM 工时基础 v
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR v.订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR v.操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR v.产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR v.工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR v.订单号 LIKE '%' + @订单号 + '%')
|
||||
AND (@工时类型 IS NULL OR @工时类型 = '' OR v.工时类型 = @工时类型)
|
||||
GROUP BY v.订单合同号, v.产品编码, v.产品名称
|
||||
),
|
||||
工序工时明细 AS (
|
||||
SELECT
|
||||
v.订单合同号 AS 合同号,
|
||||
v.产品编码,
|
||||
v.工序名称,
|
||||
v.工时类型,
|
||||
v.操作人,
|
||||
MAX(v.工位名称) AS 指派对象,
|
||||
v.订单号,
|
||||
SUM(CASE WHEN v.操作类别 IN ('报工', '辅助结束') THEN v.操作数值 ELSE 0 END) AS 报工数量,
|
||||
CAST(SUM(v.有效工时秒) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 工时小时,
|
||||
MIN(CONVERT(VARCHAR(10), v.报工日期, 120)) AS 计划开始,
|
||||
MAX(CONVERT(VARCHAR(10), v.报工日期, 120)) AS 计划完成,
|
||||
MAX(v.计划数量) AS 计划数量
|
||||
FROM 工时基础 v
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR v.订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR v.操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR v.产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR v.工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR v.订单号 LIKE '%' + @订单号 + '%')
|
||||
AND (@工时类型 IS NULL OR @工时类型 = '' OR v.工时类型 = @工时类型)
|
||||
GROUP BY v.订单合同号, v.产品编码, v.工序名称, v.工时类型, v.操作人, v.订单号
|
||||
)
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
合同号 AS contractNo,
|
||||
产品名称 AS materialDesc,
|
||||
产品编码 AS materialCode,
|
||||
CAST(NULL AS DECIMAL(19,6)) AS 计划数量,
|
||||
'' AS processName,
|
||||
'' AS 工时类型,
|
||||
'' AS operator,
|
||||
'' AS 指派对象,
|
||||
CASE WHEN 计划数量 = FLOOR(计划数量) THEN CAST(CAST(计划数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(计划数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END + '/' +
|
||||
CASE WHEN 完成数量 = FLOOR(完成数量) THEN CAST(CAST(完成数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(完成数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS qty,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
ISNULL(计划开始, '') AS planStart,
|
||||
ISNULL(计划完成, '') AS planEnd,
|
||||
CAST(总工时小时 AS VARCHAR(20)) AS workHours,
|
||||
'' AS 订单号
|
||||
FROM 订单工时汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
d.合同号 AS contractNo,
|
||||
'' AS materialDesc,
|
||||
d.产品编码 AS materialCode,
|
||||
d.计划数量 AS 计划数量,
|
||||
d.工序名称 AS processName,
|
||||
d.工时类型 AS 工时类型,
|
||||
d.操作人 AS operator,
|
||||
ISNULL(d.指派对象, '') AS 指派对象,
|
||||
'' AS qty,
|
||||
CAST(d.报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
d.计划开始 AS planStart,
|
||||
d.计划完成 AS planEnd,
|
||||
CAST(d.工时小时 AS VARCHAR(20)) AS workHours,
|
||||
d.订单号 AS 订单号
|
||||
FROM 工序工时明细 d
|
||||
|
||||
ORDER BY contractNo, materialCode, [Level], processName, 工时类型
|
||||
END
|
||||
GO
|
||||
1010
db_backups/create_design_report_task_module_20260630.sql
Normal file
1010
db_backups/create_design_report_task_module_20260630.sql
Normal file
File diff suppressed because it is too large
Load Diff
212
db_backups/create_formality_confirm_report_20260626.sql
Normal file
212
db_backups/create_formality_confirm_report_20260626.sql
Normal file
@@ -0,0 +1,212 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
IF OBJECT_ID(N'dbo.生产管理_手续确认报表记录', N'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE [dbo].[生产管理_手续确认报表记录] (
|
||||
[AID] bigint IDENTITY(1,1) NOT NULL CONSTRAINT [PK_生产管理_手续确认报表记录] PRIMARY KEY,
|
||||
[TaskAID] bigint NOT NULL,
|
||||
[订单编号] int NULL,
|
||||
[手续确认] int NOT NULL CONSTRAINT [DF_生产管理_手续确认报表记录_手续确认] DEFAULT (1),
|
||||
[确认人] nvarchar(50) NULL,
|
||||
[确认时间] datetime NOT NULL CONSTRAINT [DF_生产管理_手续确认报表记录_确认时间] DEFAULT (GETDATE()),
|
||||
[备注] nvarchar(500) NULL
|
||||
);
|
||||
|
||||
CREATE UNIQUE INDEX [UX_生产管理_手续确认报表记录_TaskAID]
|
||||
ON [dbo].[生产管理_手续确认报表记录] ([TaskAID]);
|
||||
END
|
||||
GO
|
||||
|
||||
IF OBJECT_ID(N'dbo.生产管理_手续确认报表_查询', N'P') IS NULL
|
||||
BEGIN
|
||||
EXEC(N'CREATE PROCEDURE [dbo].[生产管理_手续确认报表_查询] AS BEGIN SET NOCOUNT ON; END');
|
||||
END
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[生产管理_手续确认报表_查询]
|
||||
@TaskAID int = -1,
|
||||
@订单号 int = -1,
|
||||
@零件编号 nvarchar(50) = N'',
|
||||
@零件名称 nvarchar(50) = N'',
|
||||
@计划开工_Start nvarchar(50) = N'',
|
||||
@计划开工_End nvarchar(50) = N'',
|
||||
@生产状态 int = -1,
|
||||
@工位名称 nvarchar(50) = N'',
|
||||
@计划号 nvarchar(50) = N'',
|
||||
@销售订单 nvarchar(50) = N''
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
SELECT TOP (500)
|
||||
main.TaskAID,
|
||||
main.[订单编号] AS 订单号,
|
||||
main.合同号,
|
||||
main.自制件属性,
|
||||
main.加急总数,
|
||||
main.派工特殊说明,
|
||||
main.[订单拆分内码],
|
||||
main.[订单行号],
|
||||
main.[开工时间],
|
||||
main.[物料编号] AS 零件编码,
|
||||
main.[物料描述] AS 零件名称,
|
||||
CASE WHEN ISNULL(main.[加急状态], 0) = 1 THEN N'加急' ELSE N'否' END AS [加急],
|
||||
main.[优先级] AS [优先],
|
||||
main.[指派对象编号],
|
||||
main.[指派对象],
|
||||
main.[工序名称],
|
||||
main.[二次派工],
|
||||
main.[计划号],
|
||||
ISNULL(main.[指派数量], 0) AS 分配数,
|
||||
main.[计划开始时间] AS 计划开始,
|
||||
main.[计划完成时间] AS 计划完成,
|
||||
main.[最晚开始时间] AS 最晚开始,
|
||||
main.[齐套时间] AS 发料齐套时间,
|
||||
ISNULL(main.[收料数量], 0) AS 收料,
|
||||
ISNULL(main.[完成数量], 0) AS 完成数量,
|
||||
ISNULL(main.[入库], 0) AS 入库,
|
||||
ISNULL(main.[入库数量], 0) AS 入库数量,
|
||||
main.[订单状态],
|
||||
main.[单据状态],
|
||||
CASE
|
||||
WHEN ISNULL(main.齐套, 0) = 1 THEN N'是'
|
||||
WHEN ISNULL(main.齐套, 0) = 0 THEN N'否'
|
||||
ELSE N''
|
||||
END AS [齐套],
|
||||
CASE
|
||||
WHEN ISNULL(main.发料状态, 0) = 1 THEN N'发料齐套'
|
||||
WHEN ISNULL(main.发料状态, 0) = 2 THEN N'发料缺件'
|
||||
ELSE N''
|
||||
END AS [发料状态],
|
||||
CASE
|
||||
WHEN ISNULL(main.拣配状态, 0) = 1 THEN N'已拣配'
|
||||
WHEN ISNULL(main.拣配状态, 0) = 0 THEN N'未拣配'
|
||||
ELSE N''
|
||||
END AS [拣配状态],
|
||||
CASE
|
||||
WHEN ISNULL(main.任务状态, 0) = 4 THEN N'已完成'
|
||||
WHEN ISNULL(main.任务状态, 0) = 2 THEN N'已开工'
|
||||
WHEN ISNULL(main.任务状态, 0) = 0 THEN N'待执行'
|
||||
WHEN ISNULL(main.任务状态, 0) = 1 THEN N'可执行'
|
||||
ELSE N''
|
||||
END AS [任务状态],
|
||||
CASE
|
||||
WHEN ISNULL(main.加工状态, 0) = 2 THEN N'辅助开始'
|
||||
WHEN ISNULL(main.加工状态, 0) = 3 THEN N'辅助结束'
|
||||
WHEN ISNULL(main.加工状态, 0) = 4 THEN N'开始加工'
|
||||
WHEN ISNULL(main.加工状态, 0) = 5 THEN N'暂停'
|
||||
WHEN ISNULL(main.加工状态, 0) = 6 THEN N'报工'
|
||||
ELSE N''
|
||||
END AS [加工状态],
|
||||
ISNULL(main.加工状态, 0) AS 加工状态编号,
|
||||
CASE WHEN ISNULL(main.[首检], -1) = 1 THEN N'OK' WHEN ISNULL(main.[首检], -1) = 0 THEN N'NG' ELSE N'' END AS [首检],
|
||||
CASE WHEN ISNULL(main.[序检], -1) = 1 THEN N'OK' WHEN ISNULL(main.[序检], -1) = 0 THEN N'NG' ELSE N'' END AS [序检],
|
||||
next_task.[工序名称] AS 下序名称,
|
||||
ISNULL(prev_quality.上序合格数, 0) AS 上序合格数,
|
||||
second_worker.二次派工名称,
|
||||
CASE WHEN confirm.TaskAID IS NULL THEN N'未完成' ELSE N'已完成' END AS 手续确认,
|
||||
confirm.确认人 AS 手续确认人,
|
||||
confirm.确认时间 AS 手续确认时间
|
||||
FROM [dbo].[View_生产订单_MES] AS main
|
||||
OUTER APPLY (
|
||||
SELECT TOP (1) next_task.[工序名称]
|
||||
FROM [dbo].[View_生产订单_MES] AS next_task
|
||||
WHERE next_task.[订单编号] = main.[订单编号]
|
||||
AND next_task.[订单行号] = main.[订单行号] + 1
|
||||
AND next_task.[排产状态] = 1
|
||||
ORDER BY next_task.[订单行号]
|
||||
) AS next_task
|
||||
OUTER APPLY (
|
||||
SELECT ISNULL(SUM(ISNULL(a.合格数, 0)), 0) AS 上序合格数
|
||||
FROM [dbo].[YL_质量检验_质检记录] AS a
|
||||
INNER JOIN [dbo].[MES_接口_生产计划_生产任务] AS b ON a.TaskAID = b.AID
|
||||
WHERE b.订单编号 = main.[订单编号]
|
||||
AND b.订单行号 = main.[订单行号] - 1
|
||||
AND a.检测类型编号 = 6
|
||||
) AS prev_quality
|
||||
OUTER APPLY (
|
||||
SELECT STRING_AGG(a.Personnel_Name, N',') AS 二次派工名称
|
||||
FROM [dbo].[登录基础数据_人员信息] AS a
|
||||
WHERE EXISTS (
|
||||
SELECT 1
|
||||
FROM STRING_SPLIT(ISNULL(main.二次派工, N''), N',') AS ids
|
||||
WHERE LTRIM(RTRIM(ids.value)) = CAST(a.Personnel_Number AS varchar(50))
|
||||
)
|
||||
) AS second_worker
|
||||
LEFT JOIN [dbo].[生产管理_手续确认报表记录] AS confirm ON confirm.TaskAID = main.TaskAID
|
||||
WHERE main.[排产状态] = 1
|
||||
AND ISNULL(main.[指派对象], N'') <> N'外协'
|
||||
AND ISNULL(main.[指派对象], N'') LIKE N'%装配%'
|
||||
AND confirm.TaskAID IS NULL
|
||||
AND ISNULL(main.[入库], 0) <> 1
|
||||
AND ISNULL(main.[入库数量], 0) <= 0
|
||||
AND ISNULL(main.[订单状态], N'') NOT LIKE N'%取消%'
|
||||
AND ISNULL(main.[订单状态], N'') NOT LIKE N'%关闭%'
|
||||
AND ISNULL(main.[单据状态], N'') = N''
|
||||
AND (@订单号 <= 0 OR main.[订单编号] = @订单号)
|
||||
AND (@计划号 = N'' OR main.[计划号] = @计划号)
|
||||
AND (@销售订单 = N'' OR main.[合同号] LIKE N'%' + @销售订单 + N'%')
|
||||
AND (@TaskAID <= 0 OR main.[TaskAID] = @TaskAID)
|
||||
AND (@零件编号 = N'' OR main.[物料编号] LIKE N'%' + @零件编号 + N'%')
|
||||
AND (@零件名称 = N'' OR main.[物料描述] LIKE N'%' + @零件名称 + N'%')
|
||||
AND (@计划开工_Start = N'' OR main.[计划开始时间] >= TRY_CONVERT(datetime, @计划开工_Start))
|
||||
AND (@计划开工_End = N'' OR main.[计划开始时间] <= TRY_CONVERT(datetime, @计划开工_End))
|
||||
AND (@工位名称 = N'' OR main.[指派对象] IN (SELECT LTRIM(RTRIM(value)) FROM STRING_SPLIT(@工位名称, N',')))
|
||||
AND (
|
||||
@生产状态 IS NULL
|
||||
OR @生产状态 = -1
|
||||
OR @生产状态 = 10
|
||||
OR ISNULL(main.任务状态, 0) = @生产状态
|
||||
)
|
||||
ORDER BY
|
||||
CASE WHEN ISNULL(main.[加急状态], 0) = 1 THEN 0 ELSE 1 END,
|
||||
CASE WHEN ISNULL(main.齐套, 0) = 1 THEN 0 ELSE 1 END,
|
||||
main.[计划开始时间],
|
||||
main.[订单编号],
|
||||
main.[阶段标识];
|
||||
END
|
||||
GO
|
||||
|
||||
IF OBJECT_ID(N'dbo.生产管理_手续确认报表_确认', N'P') IS NULL
|
||||
BEGIN
|
||||
EXEC(N'CREATE PROCEDURE [dbo].[生产管理_手续确认报表_确认] AS BEGIN SET NOCOUNT ON; END');
|
||||
END
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[生产管理_手续确认报表_确认]
|
||||
@TaskAID bigint,
|
||||
@订单号 int = NULL,
|
||||
@确认人 nvarchar(50) = N'',
|
||||
@备注 nvarchar(500) = N''
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
IF @TaskAID IS NULL OR @TaskAID <= 0
|
||||
BEGIN
|
||||
SELECT 0 AS result, N'TaskAID不能为空' AS msg;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
IF EXISTS (SELECT 1 FROM [dbo].[生产管理_手续确认报表记录] WHERE TaskAID = @TaskAID)
|
||||
BEGIN
|
||||
UPDATE [dbo].[生产管理_手续确认报表记录]
|
||||
SET
|
||||
[手续确认] = 1,
|
||||
[确认人] = @确认人,
|
||||
[确认时间] = GETDATE(),
|
||||
[备注] = @备注
|
||||
WHERE TaskAID = @TaskAID;
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
INSERT INTO [dbo].[生产管理_手续确认报表记录]
|
||||
([TaskAID], [订单编号], [手续确认], [确认人], [确认时间], [备注])
|
||||
VALUES
|
||||
(@TaskAID, @订单号, 1, @确认人, GETDATE(), @备注);
|
||||
END;
|
||||
|
||||
SELECT 1 AS result, N'确认成功' AS msg;
|
||||
END
|
||||
GO
|
||||
172
db_backups/create_product_pass_rate_workstation_20260630.sql
Normal file
172
db_backups/create_product_pass_rate_workstation_20260630.sql
Normal file
@@ -0,0 +1,172 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
IF OBJECT_ID(N'dbo.生产管理_产品合格率工位_查询', N'P') IS NULL
|
||||
BEGIN
|
||||
EXEC(N'CREATE PROCEDURE [dbo].[生产管理_产品合格率工位_查询] AS BEGIN SET NOCOUNT ON; END');
|
||||
END
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[生产管理_产品合格率工位_查询]
|
||||
@生产订单号 nvarchar(100) = N'',
|
||||
@物料编码 nvarchar(200) = N'',
|
||||
@物料名称 nvarchar(200) = N'',
|
||||
@关闭日期_Start nvarchar(50) = N'',
|
||||
@关闭日期_End nvarchar(50) = N'',
|
||||
@工序 nvarchar(100) = N'',
|
||||
@工位 nvarchar(100) = N'',
|
||||
@合格状态 nvarchar(20) = N'不合格'
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @开始日期 date = TRY_CONVERT(date, NULLIF(@关闭日期_Start, N''));
|
||||
DECLARE @结束日期 date = TRY_CONVERT(date, NULLIF(@关闭日期_End, N''));
|
||||
|
||||
IF @开始日期 IS NULL AND @结束日期 IS NULL AND @生产订单号 = N''
|
||||
BEGIN
|
||||
SET @开始日期 = DATEADD(day, -30, CONVERT(date, GETDATE()));
|
||||
SET @结束日期 = CONVERT(date, GETDATE());
|
||||
END;
|
||||
|
||||
CREATE TABLE #已关闭订单
|
||||
(
|
||||
[生产订单号] nvarchar(100) NOT NULL PRIMARY KEY,
|
||||
[关闭日期] datetime NULL,
|
||||
[物料名称] nvarchar(200) NULL,
|
||||
[物料编码] nvarchar(50) NULL,
|
||||
[计划数量] decimal(18, 4) NULL
|
||||
);
|
||||
|
||||
DECLARE @SapSql nvarchar(max) =
|
||||
N'SELECT 生产订单号, 实际结算日期, 产品名称, 产品编码, 产品计划数量, 单据状态 FROM SBO_YL.dbo.UBT_OWOR WHERE 单据状态 IS NOT NULL';
|
||||
|
||||
IF @生产订单号 <> N''
|
||||
SET @SapSql += N' AND 生产订单号 = ''' + REPLACE(@生产订单号, N'''', N'''''') + N'''';
|
||||
|
||||
IF @开始日期 IS NOT NULL
|
||||
SET @SapSql += N' AND 实际结算日期 >= ''' + CONVERT(nvarchar(10), @开始日期, 120) + N'''';
|
||||
|
||||
IF @结束日期 IS NOT NULL
|
||||
SET @SapSql += N' AND 实际结算日期 < ''' + CONVERT(nvarchar(10), DATEADD(day, 1, @结束日期), 120) + N'''';
|
||||
|
||||
DECLARE @OpenQuerySql nvarchar(max) =
|
||||
N'INSERT INTO #已关闭订单
|
||||
([生产订单号], [关闭日期], [物料名称], [物料编码], [计划数量])
|
||||
SELECT CONVERT(nvarchar(100), [生产订单号]) AS [生产订单号],
|
||||
[实际结算日期] AS [关闭日期],
|
||||
[产品名称] AS [物料名称],
|
||||
[产品编码] AS [物料编码],
|
||||
CAST(ISNULL([产品计划数量], 0) AS decimal(18, 4)) AS [计划数量]
|
||||
FROM OPENQUERY([SAP], ''' + REPLACE(@SapSql, N'''', N'''''') + N''')
|
||||
WHERE (@物料编码 = N'''' OR [产品编码] LIKE N''%'' + @物料编码 + N''%'')
|
||||
AND (@物料名称 = N'''' OR [产品名称] LIKE N''%'' + @物料名称 + N''%'')';
|
||||
|
||||
EXEC sp_executesql
|
||||
@OpenQuerySql,
|
||||
N'@物料编码 nvarchar(200), @物料名称 nvarchar(200)',
|
||||
@物料编码 = @物料编码,
|
||||
@物料名称 = @物料名称;
|
||||
|
||||
CREATE TABLE #明细汇总
|
||||
(
|
||||
[生产订单号] nvarchar(100) NOT NULL,
|
||||
[工序号] int NULL,
|
||||
[工序] nvarchar(200) NOT NULL,
|
||||
[工位] nvarchar(200) NOT NULL,
|
||||
[完成数量] decimal(18, 4) NOT NULL,
|
||||
[不良数量] decimal(18, 4) NOT NULL,
|
||||
[合格率] decimal(18, 2) NULL,
|
||||
[检测说明] nvarchar(max) NULL
|
||||
);
|
||||
|
||||
;WITH 明细基础 AS
|
||||
(
|
||||
SELECT
|
||||
o.[生产订单号],
|
||||
COALESCE(t.[订单行号], q.[行号]) AS [工序号],
|
||||
COALESCE(NULLIF(q.[工序名称], N''), NULLIF(t.[工序名称], N''), N'') AS [工序],
|
||||
COALESCE(NULLIF(q.[工位名称], N''), NULLIF(t.[指派对象], N''), N'空白') AS [工位],
|
||||
CAST(ISNULL(q.[检验数量], ISNULL(q.[合格数], 0) + ISNULL(q.[不合格数], 0)) AS decimal(18, 4)) AS [完成数量],
|
||||
CAST(ISNULL(q.[不合格数], 0) AS decimal(18, 4)) AS [不良数量],
|
||||
NULLIF(LTRIM(RTRIM(CONVERT(nvarchar(max), q.[检测说明]))), N'') AS [检测说明]
|
||||
FROM #已关闭订单 AS o
|
||||
INNER JOIN [dbo].[YL_质量检验_质检记录] AS q
|
||||
ON CONVERT(nvarchar(100), q.[计划号]) = o.[生产订单号]
|
||||
LEFT JOIN [dbo].[MES_接口_生产计划_生产任务] AS t
|
||||
ON q.[TaskAID] = t.[AID]
|
||||
WHERE q.[质检类型] = N'收检'
|
||||
AND (@工序 = N'' OR COALESCE(NULLIF(q.[工序名称], N''), NULLIF(t.[工序名称], N''), N'') LIKE N'%' + @工序 + N'%')
|
||||
AND (@工位 = N'' OR COALESCE(NULLIF(q.[工位名称], N''), NULLIF(t.[指派对象], N''), N'空白') LIKE N'%' + @工位 + N'%')
|
||||
)
|
||||
INSERT INTO #明细汇总
|
||||
([生产订单号], [工序号], [工序], [工位], [完成数量], [不良数量], [合格率], [检测说明])
|
||||
SELECT
|
||||
[生产订单号],
|
||||
[工序号],
|
||||
[工序],
|
||||
[工位],
|
||||
SUM([完成数量]) AS [完成数量],
|
||||
SUM([不良数量]) AS [不良数量],
|
||||
CAST(
|
||||
CASE
|
||||
WHEN SUM([完成数量]) = 0 THEN NULL
|
||||
ELSE (SUM([完成数量]) - SUM([不良数量])) * 100.0 / SUM([完成数量])
|
||||
END AS decimal(18, 2)
|
||||
) AS [合格率],
|
||||
STRING_AGG(CONVERT(nvarchar(max), [检测说明]), N';') AS [检测说明]
|
||||
FROM 明细基础
|
||||
GROUP BY [生产订单号], [工序号], [工序], [工位];
|
||||
|
||||
;WITH 一级汇总 AS
|
||||
(
|
||||
SELECT
|
||||
[生产订单号],
|
||||
SUM([完成数量]) AS [完成数量],
|
||||
SUM([不良数量]) AS [不良数量],
|
||||
CAST(
|
||||
CASE
|
||||
WHEN SUM([完成数量]) = 0 THEN NULL
|
||||
ELSE (SUM([完成数量]) - SUM([不良数量])) * 100.0 / SUM([完成数量])
|
||||
END AS decimal(18, 2)
|
||||
) AS [合格率]
|
||||
FROM #明细汇总
|
||||
GROUP BY [生产订单号]
|
||||
)
|
||||
SELECT
|
||||
o.[关闭日期],
|
||||
o.[生产订单号],
|
||||
o.[物料名称],
|
||||
o.[物料编码],
|
||||
o.[计划数量],
|
||||
a.[完成数量],
|
||||
a.[不良数量],
|
||||
a.[合格率],
|
||||
(
|
||||
SELECT
|
||||
d.[工序],
|
||||
d.[工序号],
|
||||
d.[工位],
|
||||
d.[完成数量],
|
||||
d.[不良数量],
|
||||
d.[合格率],
|
||||
ISNULL(d.[检测说明], N'') AS [检测说明]
|
||||
FROM #明细汇总 AS d
|
||||
WHERE d.[生产订单号] = o.[生产订单号]
|
||||
ORDER BY d.[工序号], d.[工序], d.[工位]
|
||||
FOR JSON PATH
|
||||
) AS [明细JSON]
|
||||
FROM #已关闭订单 AS o
|
||||
INNER JOIN 一级汇总 AS a
|
||||
ON o.[生产订单号] = a.[生产订单号]
|
||||
WHERE (@合格状态 = N'' OR @合格状态 = N'全部'
|
||||
OR (@合格状态 = N'合格' AND ISNULL(a.[合格率], 0) >= 100)
|
||||
OR (@合格状态 = N'不合格' AND ISNULL(a.[合格率], 0) < 100))
|
||||
ORDER BY o.[关闭日期] DESC, TRY_CONVERT(int, o.[生产订单号]) DESC, o.[生产订单号] DESC;
|
||||
END
|
||||
GO
|
||||
@@ -0,0 +1,132 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
IF OBJECT_ID(N'dbo.质量管理_及时检验报表_查询', N'P') IS NULL
|
||||
BEGIN
|
||||
EXEC(N'CREATE PROCEDURE [dbo].[质量管理_及时检验报表_查询] AS BEGIN SET NOCOUNT ON; END');
|
||||
END
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[质量管理_及时检验报表_查询]
|
||||
@合同号 nvarchar(100) = N'',
|
||||
@订单号 nvarchar(100) = N'',
|
||||
@零件编号 nvarchar(100) = N'',
|
||||
@零件名称 nvarchar(100) = N'',
|
||||
@完工日期_Start nvarchar(20) = N'',
|
||||
@完工日期_End nvarchar(20) = N'',
|
||||
@检测日期_Start nvarchar(20) = N'',
|
||||
@检测日期_End nvarchar(20) = N'',
|
||||
@检测结果 nvarchar(10) = N'',
|
||||
@检测人 nvarchar(50) = N'',
|
||||
@检测类别 nvarchar(50) = N'',
|
||||
@属性 nvarchar(50) = N''
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH QualitySummary AS (
|
||||
SELECT
|
||||
TaskAID,
|
||||
SUM(ISNULL(检验数量, 0)) AS 检验数量,
|
||||
SUM(ISNULL(合格数, 0)) AS 合格数,
|
||||
SUM(ISNULL(不合格数, 0)) AS 不合格数,
|
||||
MAX(检测人) AS 检测人,
|
||||
MAX(检测时间) AS 检测时间,
|
||||
MAX(检测说明) AS 检测说明
|
||||
FROM [dbo].[YL_质量检验_质检记录]
|
||||
WHERE 检测类型编号 = 6
|
||||
GROUP BY TaskAID
|
||||
),
|
||||
OperationSummary AS (
|
||||
SELECT
|
||||
TaskAID,
|
||||
订单编号,
|
||||
物料描述,
|
||||
物料编号,
|
||||
工序名称,
|
||||
SUM(ISNULL(操作数值, 0)) AS 完成数量,
|
||||
MAX(结束时间) AS 结束时间
|
||||
FROM [dbo].[YL_加工中心_操作记录表]
|
||||
WHERE ISNULL(操作类别编号, 0) IN (3, 6)
|
||||
AND TaskAID IS NOT NULL
|
||||
AND 结束时间 IS NOT NULL
|
||||
GROUP BY
|
||||
TaskAID,
|
||||
订单编号,
|
||||
物料描述,
|
||||
物料编号,
|
||||
工序名称
|
||||
)
|
||||
SELECT TOP (500)
|
||||
o.TaskAID AS TaskAID,
|
||||
o.订单编号 AS 计划号,
|
||||
v.合同号,
|
||||
o.物料描述 AS 零件名称,
|
||||
o.物料编号 AS 零件编码,
|
||||
v.指派对象 AS 工位名称,
|
||||
o.工序名称 AS 工序名称,
|
||||
CAST(N'' AS nvarchar(100)) AS 供应商,
|
||||
CAST(N'' AS nvarchar(100)) AS 采购收货单,
|
||||
v.自制件属性,
|
||||
o.完成数量 AS 完成数量,
|
||||
ISNULL(v.加急状态, 0) AS 加急状态,
|
||||
ISNULL(v.加急总数, 0) AS 加急总数,
|
||||
ISNULL(q.检验数量, 0) AS 检验数量,
|
||||
ISNULL(q.合格数, 0) AS 合格数,
|
||||
ISNULL(q.不合格数, 0) AS 不合格数,
|
||||
ISNULL(q.检测人, N'') AS 检测人,
|
||||
ISNULL(CONVERT(nvarchar(19), q.检测时间, 120), N'') AS 检测时间,
|
||||
ISNULL(q.检测说明, N'') AS 检测说明,
|
||||
CONVERT(nvarchar(19), o.结束时间, 120) AS 结束时间,
|
||||
DATEDIFF(DAY, CONVERT(date, o.结束时间), CONVERT(date, GETDATE())) AS 超期天数,
|
||||
CASE
|
||||
WHEN q.TaskAID IS NULL THEN 0
|
||||
WHEN q.合格数 > 0 AND q.不合格数 = 0 THEN 1
|
||||
WHEN q.不合格数 > 0 THEN 2
|
||||
ELSE 0
|
||||
END AS 检测状态
|
||||
FROM OperationSummary AS o
|
||||
LEFT JOIN QualitySummary AS q ON o.TaskAID = q.TaskAID
|
||||
LEFT JOIN [dbo].[View_生产订单全部(包括已关闭)] AS v ON o.TaskAID = v.TaskAID
|
||||
WHERE ISNULL(v.单据状态, N'') = N''
|
||||
AND ISNULL(o.完成数量, 0) > ISNULL(q.检验数量, 0)
|
||||
AND DATEDIFF(DAY, CONVERT(date, o.结束时间), CONVERT(date, GETDATE())) > 2
|
||||
AND (@订单号 = N'' OR o.订单编号 = @订单号)
|
||||
AND (@合同号 = N'' OR v.合同号 LIKE N'%' + @合同号 + N'%')
|
||||
AND (@零件编号 = N'' OR o.物料编号 LIKE N'%' + @零件编号 + N'%')
|
||||
AND (@零件名称 = N'' OR o.物料描述 LIKE N'%' + @零件名称 + N'%')
|
||||
AND (
|
||||
@完工日期_Start = N''
|
||||
OR CONVERT(date, o.结束时间) >= TRY_CONVERT(date, @完工日期_Start)
|
||||
)
|
||||
AND (
|
||||
@完工日期_End = N''
|
||||
OR CONVERT(date, o.结束时间) <= TRY_CONVERT(date, @完工日期_End)
|
||||
)
|
||||
AND (
|
||||
@检测日期_Start = N''
|
||||
OR CONVERT(date, q.检测时间) >= TRY_CONVERT(date, @检测日期_Start)
|
||||
)
|
||||
AND (
|
||||
@检测日期_End = N''
|
||||
OR CONVERT(date, q.检测时间) <= TRY_CONVERT(date, @检测日期_End)
|
||||
)
|
||||
AND (
|
||||
@检测结果 = N''
|
||||
OR (@检测结果 = N'1' AND ISNULL(q.合格数, 0) > 0 AND ISNULL(q.不合格数, 0) = 0)
|
||||
OR (@检测结果 = N'0' AND ISNULL(q.不合格数, 0) > 0)
|
||||
)
|
||||
AND (@检测人 = N'' OR ISNULL(q.检测人, N'') LIKE N'%' + @检测人 + N'%')
|
||||
AND (
|
||||
@属性 = N''
|
||||
OR @属性 = N'0'
|
||||
OR (@属性 = N'1' AND ISNULL(v.自制件属性, N'') NOT LIKE N'%装配%')
|
||||
OR (@属性 = N'2' AND ISNULL(v.自制件属性, N'') LIKE N'%装配%')
|
||||
)
|
||||
ORDER BY
|
||||
ISNULL(v.加急状态, 0) DESC,
|
||||
DATEDIFF(DAY, CONVERT(date, o.结束时间), CONVERT(date, GETDATE())) DESC,
|
||||
o.结束时间 ASC,
|
||||
o.订单编号 DESC;
|
||||
END
|
||||
GO
|
||||
231
db_backups/create_settlement_workhours_query_20260627.sql
Normal file
231
db_backups/create_settlement_workhours_query_20260627.sql
Normal file
@@ -0,0 +1,231 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
IF OBJECT_ID(N'[dbo].[生产管理_结算工时_查询]', N'P') IS NULL
|
||||
EXEC(N'CREATE PROCEDURE [dbo].[生产管理_结算工时_查询] AS BEGIN SET NOCOUNT ON; END')
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[生产管理_结算工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@工位 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL,
|
||||
@数据条数 INT = 100
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH 结算任务 AS (
|
||||
SELECT
|
||||
AID,
|
||||
订单编号,
|
||||
物料编号,
|
||||
物料描述
|
||||
FROM [dbo].[MES_接口_生产计划]
|
||||
WHERE 单据状态 IS NULL
|
||||
),
|
||||
基础数据 AS (
|
||||
SELECT TOP (CASE WHEN ISNULL(@数据条数, 0) <= 0 THEN 100 ELSE @数据条数 END)
|
||||
v.TaskAID,
|
||||
v.开始时间,
|
||||
v.操作内容,
|
||||
v.操作类别,
|
||||
v.操作人,
|
||||
v.加工工时,
|
||||
v.操作数值,
|
||||
v.订单合同号,
|
||||
v.订单号,
|
||||
v.订单行号,
|
||||
v.产品编码,
|
||||
v.产品名称,
|
||||
v.工序名称,
|
||||
v.工位名称,
|
||||
p.物料编号,
|
||||
p.物料描述
|
||||
FROM [dbo].[View_生产工时视图] v
|
||||
INNER JOIN 结算任务 p ON p.AID = v.TaskAID
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR v.开始时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR v.开始时间 < DATEADD(DAY, 1, @结束日期))
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR v.订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR v.产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR v.订单号 = @订单号)
|
||||
AND (@工位 IS NULL OR @工位 = '' OR v.工位名称 LIKE '%' + @工位 + '%')
|
||||
AND ISNULL(v.加工工时, 0) > 0
|
||||
AND (ISNULL(v.操作内容, '') IN ('报工', '辅助结束') OR ISNULL(v.操作类别, '') IN ('报工', '辅助结束'))
|
||||
ORDER BY v.开始时间 DESC
|
||||
),
|
||||
明细键 AS (
|
||||
SELECT DISTINCT
|
||||
TaskAID,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间
|
||||
FROM 基础数据
|
||||
),
|
||||
操作人明细 AS (
|
||||
SELECT
|
||||
k.TaskAID,
|
||||
k.开始时间,
|
||||
LTRIM(RTRIM(s.value)) AS 操作人
|
||||
FROM 明细键 k
|
||||
INNER JOIN [dbo].[View_生产工时视图全部] v2
|
||||
ON v2.TaskAID = k.TaskAID
|
||||
AND v2.开始时间 >= CONVERT(DATETIME, k.开始时间, 120)
|
||||
AND v2.开始时间 < DATEADD(SECOND, 1, CONVERT(DATETIME, k.开始时间, 120))
|
||||
CROSS APPLY STRING_SPLIT(REPLACE(REPLACE(ISNULL(v2.操作人, ''), N',', ','), N'、', ','), ',') s
|
||||
WHERE ISNULL(v2.加工工时, 0) <= 0
|
||||
AND NULLIF(LTRIM(RTRIM(s.value)), '') IS NOT NULL
|
||||
),
|
||||
操作人拼接 AS (
|
||||
SELECT
|
||||
TaskAID,
|
||||
开始时间,
|
||||
STRING_AGG(操作人, ',') AS 操作人
|
||||
FROM (
|
||||
SELECT DISTINCT TaskAID, 开始时间, 操作人
|
||||
FROM 操作人明细
|
||||
) x
|
||||
GROUP BY TaskAID, 开始时间
|
||||
),
|
||||
结算明细 AS (
|
||||
SELECT
|
||||
ISNULL(b.物料编号, b.产品编码) AS 物料编号,
|
||||
ISNULL(b.物料描述, b.产品名称) AS 物料描述,
|
||||
b.订单号,
|
||||
b.工位名称,
|
||||
b.TaskAID,
|
||||
b.工序名称,
|
||||
b.订单行号,
|
||||
ISNULL(o.操作人, '') AS 操作人,
|
||||
CASE
|
||||
WHEN ISNULL(b.操作内容, '') LIKE '%辅助%' OR ISNULL(b.操作类别, '') LIKE '%辅助%' THEN '辅助结束'
|
||||
ELSE '报工'
|
||||
END AS 操作类型,
|
||||
CAST(ISNULL(b.加工工时, 0) / 60.0 / 60.0 AS DECIMAL(18, 4)) AS 工时小时,
|
||||
ISNULL(b.操作数值, 0) AS 完成数
|
||||
FROM 基础数据 b
|
||||
LEFT JOIN 操作人拼接 o
|
||||
ON o.TaskAID = b.TaskAID
|
||||
AND o.开始时间 = CONVERT(VARCHAR(19), b.开始时间, 120)
|
||||
),
|
||||
订单工位汇总基础 AS (
|
||||
SELECT
|
||||
物料编号,
|
||||
物料描述,
|
||||
订单号,
|
||||
工位名称,
|
||||
MAX(工序名称) AS 工序名称,
|
||||
MAX(订单行号) AS 工序顺序,
|
||||
COUNT(*) AS 记录数,
|
||||
SUM(CASE WHEN 操作类型 = '报工' THEN 工时小时 ELSE 0 END) AS 报工工时,
|
||||
SUM(CASE WHEN 操作类型 = '辅助结束' THEN 工时小时 ELSE 0 END) AS 主辅工时,
|
||||
SUM(CASE WHEN 操作类型 = '报工' THEN 完成数 ELSE 0 END) AS 报工完成数,
|
||||
SUM(CASE WHEN 操作类型 = '辅助结束' THEN 完成数 ELSE 0 END) AS 辅助完成数,
|
||||
SUM(工时小时) AS 合计工时
|
||||
FROM 结算明细 j
|
||||
GROUP BY 物料编号, 物料描述, 订单号, 工位名称
|
||||
),
|
||||
订单工位操作人 AS (
|
||||
SELECT
|
||||
物料编号,
|
||||
订单号,
|
||||
ISNULL(工位名称, '') AS 工位名称,
|
||||
STRING_AGG(操作人, ',') AS 操作人
|
||||
FROM (
|
||||
SELECT DISTINCT
|
||||
j.物料编号,
|
||||
j.订单号,
|
||||
ISNULL(j.工位名称, '') AS 工位名称,
|
||||
LTRIM(RTRIM(s.value)) AS 操作人
|
||||
FROM 结算明细 j
|
||||
CROSS APPLY STRING_SPLIT(REPLACE(REPLACE(ISNULL(j.操作人, ''), N',', ','), N'、', ','), ',') s
|
||||
WHERE NULLIF(LTRIM(RTRIM(s.value)), '') IS NOT NULL
|
||||
) x
|
||||
GROUP BY 物料编号, 订单号, ISNULL(工位名称, '')
|
||||
),
|
||||
订单工位汇总 AS (
|
||||
SELECT
|
||||
b.物料编号,
|
||||
b.物料描述,
|
||||
b.订单号,
|
||||
b.工位名称,
|
||||
b.工序名称,
|
||||
b.工序顺序,
|
||||
b.记录数,
|
||||
b.报工工时,
|
||||
b.主辅工时,
|
||||
b.报工完成数,
|
||||
b.辅助完成数,
|
||||
b.合计工时,
|
||||
ISNULL(o.操作人, '') AS 操作人
|
||||
FROM 订单工位汇总基础 b
|
||||
LEFT JOIN 订单工位操作人 o
|
||||
ON o.物料编号 = b.物料编号
|
||||
AND o.订单号 = b.订单号
|
||||
AND o.工位名称 = ISNULL(b.工位名称, '')
|
||||
),
|
||||
物料汇总 AS (
|
||||
SELECT
|
||||
物料编号,
|
||||
物料描述,
|
||||
SUM(记录数) AS 记录数,
|
||||
SUM(报工工时) AS 报工工时,
|
||||
SUM(主辅工时) AS 主辅工时,
|
||||
SUM(报工完成数) AS 报工完成数,
|
||||
SUM(辅助完成数) AS 辅助完成数,
|
||||
SUM(合计工时) AS 合计工时
|
||||
FROM 订单工位汇总
|
||||
GROUP BY 物料编号, 物料描述
|
||||
)
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
物料编号 AS materialCode,
|
||||
物料描述 AS materialDesc,
|
||||
ISNULL(物料描述, '') + ' ' + ISNULL(物料编号, '') AS taskDescription,
|
||||
'' AS productionOrderNo,
|
||||
'' AS station,
|
||||
CAST(报工工时 AS VARCHAR(20)) AS reportWorkHours,
|
||||
CAST(主辅工时 AS VARCHAR(20)) AS auxiliaryWorkHours,
|
||||
CAST(报工完成数 AS VARCHAR(20)) AS reportFinishQty,
|
||||
CAST(辅助完成数 AS VARCHAR(20)) AS auxiliaryFinishQty,
|
||||
CAST(合计工时 AS VARCHAR(20)) AS totalWorkHours,
|
||||
CAST(CASE WHEN 报工完成数 > 0 THEN (报工工时 - 0 * 报工完成数) / 报工完成数 ELSE 0 END AS VARCHAR(20)) AS clampingTime,
|
||||
CAST(0 AS VARCHAR(20)) AS programTime,
|
||||
CAST(CASE WHEN 报工完成数 > 0 THEN 报工工时 / 报工完成数 ELSE 0 END AS VARCHAR(20)) AS settlementReportPieceHours,
|
||||
CAST(CASE WHEN 辅助完成数 > 0 THEN 主辅工时 / 辅助完成数 ELSE 0 END AS VARCHAR(20)) AS settlementAuxiliaryPieceHours,
|
||||
'' AS operatorNames,
|
||||
CAST(记录数 AS VARCHAR(20)) AS recordCount
|
||||
FROM 物料汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
物料编号 AS materialCode,
|
||||
物料描述 AS materialDesc,
|
||||
ISNULL(物料描述, '') + ' ' + ISNULL(物料编号, '')
|
||||
+ CASE WHEN NULLIF(ISNULL(工序名称, ''), '') IS NULL THEN '' ELSE ' ' + 工序名称 END
|
||||
+ CASE WHEN 工序顺序 IS NULL THEN '' ELSE ' 序' + CAST(工序顺序 AS VARCHAR(20)) END AS taskDescription,
|
||||
ISNULL(订单号, '') AS productionOrderNo,
|
||||
ISNULL(工位名称, '') AS station,
|
||||
CAST(报工工时 AS VARCHAR(20)) AS reportWorkHours,
|
||||
CAST(主辅工时 AS VARCHAR(20)) AS auxiliaryWorkHours,
|
||||
CAST(报工完成数 AS VARCHAR(20)) AS reportFinishQty,
|
||||
CAST(辅助完成数 AS VARCHAR(20)) AS auxiliaryFinishQty,
|
||||
CAST(合计工时 AS VARCHAR(20)) AS totalWorkHours,
|
||||
CAST(CASE WHEN 报工完成数 > 0 THEN (报工工时 - 0 * 报工完成数) / 报工完成数 ELSE 0 END AS VARCHAR(20)) AS clampingTime,
|
||||
CAST(0 AS VARCHAR(20)) AS programTime,
|
||||
CAST(CASE WHEN 报工完成数 > 0 THEN 报工工时 / 报工完成数 ELSE 0 END AS VARCHAR(20)) AS settlementReportPieceHours,
|
||||
CAST(CASE WHEN 辅助完成数 > 0 THEN 主辅工时 / 辅助完成数 ELSE 0 END AS VARCHAR(20)) AS settlementAuxiliaryPieceHours,
|
||||
ISNULL(操作人, '') AS operatorNames,
|
||||
CAST(记录数 AS VARCHAR(20)) AS recordCount
|
||||
FROM 订单工位汇总
|
||||
|
||||
ORDER BY materialCode, [Level], productionOrderNo, station
|
||||
END
|
||||
GO
|
||||
410
db_backups/create_timely_kit_tracking_result_20260629.sql
Normal file
410
db_backups/create_timely_kit_tracking_result_20260629.sql
Normal file
@@ -0,0 +1,410 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
IF OBJECT_ID(N'dbo.生产管理_及时齐套跟踪结果_查询', N'P') IS NULL
|
||||
BEGIN
|
||||
EXEC(N'CREATE PROCEDURE [dbo].[生产管理_及时齐套跟踪结果_查询] AS BEGIN SET NOCOUNT ON; END');
|
||||
END
|
||||
GO
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[生产管理_及时齐套跟踪结果_查询]
|
||||
@订单号 int = 0,
|
||||
@物料类型 nvarchar(50) = N'',
|
||||
@合同号 nvarchar(50) = N'',
|
||||
@产品编码 nvarchar(50) = N'',
|
||||
@产品名称 nvarchar(50) = N'',
|
||||
@工序名称 nvarchar(50) = N'',
|
||||
@计划开始 nvarchar(50) = N'',
|
||||
@计划完成 nvarchar(50) = N'',
|
||||
@排产状态 nvarchar(50) = N'全部',
|
||||
@指派对象 nvarchar(50) = N'全部',
|
||||
@计划号 nvarchar(50) = N'',
|
||||
@发货状态 nvarchar(50) = N'全部',
|
||||
@齐套 nvarchar(50) = N'全部',
|
||||
@检验状态 nvarchar(50) = N'',
|
||||
@发料状态 nvarchar(50) = N'全部',
|
||||
@自制件属性 nvarchar(50) = N'全部'
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH SAP缺件源 AS (
|
||||
SELECT
|
||||
s.DocEntry,
|
||||
s.Project COLLATE DATABASE_DEFAULT AS Project,
|
||||
s.[行号],
|
||||
s.ItemCode COLLATE DATABASE_DEFAULT AS ItemCode,
|
||||
s.U_Name COLLATE DATABASE_DEFAULT AS U_Name,
|
||||
ISNULL(s.[属性] COLLATE DATABASE_DEFAULT, N'') AS 属性,
|
||||
ISNULL(s.[未发货数量], 0) AS 未发货数量,
|
||||
ISNULL(s.[在制采购], 0) AS 在制采购,
|
||||
s.[采购员] COLLATE DATABASE_DEFAULT AS 采购员,
|
||||
s.[采购预计交货日期],
|
||||
ISNULL(s.[采购未清数量], 0) AS 采购未清数量,
|
||||
ISNULL(s.[到货草稿], 0) AS 到货草稿
|
||||
FROM [SAP].[SBO_YL].[dbo].[VIEW_Jijiankukc] AS s
|
||||
WHERE ISNULL(s.[未发货数量], 0) > 0
|
||||
),
|
||||
SAP缺件 AS (
|
||||
SELECT TOP (2000)
|
||||
src.*
|
||||
FROM (
|
||||
SELECT
|
||||
SAP缺件源.*,
|
||||
ROW_NUMBER() OVER (
|
||||
PARTITION BY
|
||||
SAP缺件源.DocEntry,
|
||||
SAP缺件源.Project,
|
||||
SAP缺件源.ItemCode,
|
||||
SAP缺件源.属性
|
||||
ORDER BY
|
||||
SAP缺件源.[未发货数量] DESC,
|
||||
SAP缺件源.[行号]
|
||||
) AS rn
|
||||
FROM SAP缺件源
|
||||
) AS src
|
||||
WHERE src.rn = 1
|
||||
),
|
||||
查询结果 AS (
|
||||
SELECT
|
||||
ISNULL(v.[计划号], N'') AS [计划号],
|
||||
ISNULL(v.[合同号], N'') AS [合同号],
|
||||
v.[订单编号] AS [订单号],
|
||||
v.[物料编号] AS [产品编码],
|
||||
v.[物料描述] AS [产品名称],
|
||||
v.[计划数量订单],
|
||||
v.[入库数量],
|
||||
v.[计划完成] AS [要求完工日期],
|
||||
v.[要求发货日期],
|
||||
CASE
|
||||
WHEN ISNULL(v.[发货状态], 0) = 1 THEN N'已发货'
|
||||
ELSE N'未发货'
|
||||
END AS [发货状态],
|
||||
CASE
|
||||
WHEN ISNULL(v.[齐套], 0) = 1 THEN N'是'
|
||||
ELSE N'否'
|
||||
END AS [齐套],
|
||||
CASE
|
||||
WHEN ISNULL(v.[拣配状态], 0) = 1 THEN N'已拣配'
|
||||
ELSE N'未拣配'
|
||||
END AS [拣配状态],
|
||||
CASE
|
||||
WHEN ISNULL(v.[发料状态], N'') = N'1' THEN N'发料齐套'
|
||||
WHEN ISNULL(v.[发料状态], N'') = N'2' THEN N'发料缺件'
|
||||
ELSE N'未发料'
|
||||
END AS [发料状态],
|
||||
CASE
|
||||
WHEN ISNULL(v.[任务状态], 0) IN (2, 4) OR v.[开工时间] > '1900-01-01' THEN N'已开工'
|
||||
ELSE N'待执行'
|
||||
END AS [装配开工],
|
||||
v.[完成数量],
|
||||
CASE
|
||||
WHEN final_check.[计划号] IS NOT NULL THEN N'是'
|
||||
ELSE N'否'
|
||||
END AS [终检],
|
||||
CASE WHEN ISNULL(v.[生产工艺], 0) = 1 THEN N'是' ELSE N'否' END AS [生产工艺],
|
||||
CASE WHEN ISNULL(v.[排产状态], 0) = 1 THEN N'已排产' ELSE N'未排产' END AS [排产状态],
|
||||
ISNULL(v.[自制件属性], N'') AS [自制件属性],
|
||||
v.[计划开始时间] AS [预计齐套时间],
|
||||
sap.ItemCode AS [缺件物料编码],
|
||||
sap.U_Name AS [缺件物料名称],
|
||||
sap.[未发货数量] AS [缺件数量],
|
||||
CASE WHEN sap.[属性] = N'' THEN N'外购' ELSE sap.[属性] END AS [缺件属性],
|
||||
CASE
|
||||
WHEN sap.[属性] = N'' THEN ISNULL(CONVERT(nvarchar(50), NULLIF(sap.[到货草稿], 0)), N'')
|
||||
ELSE ISNULL(CONVERT(nvarchar(50), detail_order.[订单编号]), N'')
|
||||
END AS [缺件生产订单号],
|
||||
CASE WHEN sap.[属性] = N'' THEN N'' ELSE ISNULL(current_step.[当前序], N'') END AS [进度],
|
||||
CASE
|
||||
WHEN sap.[属性] = N'' THEN
|
||||
N'采购员:' + ISNULL(NULLIF(sap.[采购员], N''), N'-') +
|
||||
N' / 未清数量:' + CONVERT(nvarchar(30), sap.[采购未清数量]) +
|
||||
N' / 到货草稿:' + CONVERT(nvarchar(30), sap.[到货草稿]) +
|
||||
N' / 质检状态:' + ISNULL(purchase_check.[质检状态], N'未完成')
|
||||
ELSE ISNULL(route.[工艺路线], N'')
|
||||
END AS [工艺路线],
|
||||
CASE
|
||||
WHEN sap.[属性] = N'' THEN sap.[采购预计交货日期]
|
||||
ELSE route.[预计完成时间]
|
||||
END AS [预计完成时间],
|
||||
CASE WHEN sap.[属性] = N'' THEN N'' ELSE ISNULL(route.[工艺路线明细], N'[]') END AS [工艺路线明细],
|
||||
sap.[采购员],
|
||||
sap.[采购未清数量],
|
||||
sap.[到货草稿],
|
||||
ISNULL(purchase_check.[质检状态], CASE WHEN sap.[属性] = N'' THEN N'未完成' ELSE N'' END) AS [质检状态],
|
||||
sap.DocEntry AS [SAP单据],
|
||||
sap.[行号] AS [SAP行号]
|
||||
FROM SAP缺件 AS sap
|
||||
OUTER APPLY (
|
||||
SELECT TOP (1) m.*
|
||||
FROM [dbo].[View_生产订单_MES] AS m
|
||||
WHERE m.[物料类型] = N'pit_Resource'
|
||||
AND ISNULL(m.[排产状态], 0) = 1
|
||||
AND m.[订单编号] = sap.DocEntry
|
||||
ORDER BY m.[订单行号]
|
||||
) AS v
|
||||
OUTER APPLY (
|
||||
SELECT TOP (1) m.*
|
||||
FROM [dbo].[View_生产订单_MES] AS m
|
||||
WHERE m.[物料类型] = N'pit_Resource'
|
||||
AND ISNULL(m.[排产状态], 0) = 1
|
||||
AND m.[订单编号] <> v.[订单编号]
|
||||
AND (
|
||||
(sap.[属性] = N'机加件' AND m.[物料编号] = sap.ItemCode)
|
||||
OR (sap.[属性] LIKE N'%装配%' AND m.[物料编号] = sap.ItemCode AND ISNULL(m.[合同号], N'') = ISNULL(sap.Project, N''))
|
||||
)
|
||||
ORDER BY m.[订单编号] DESC, m.[订单行号]
|
||||
) AS detail_order
|
||||
OUTER APPLY (
|
||||
SELECT TOP (1) q.[计划号]
|
||||
FROM [dbo].[YL_质量检验_质检记录] AS q
|
||||
WHERE q.[质检类型] = N'终检'
|
||||
AND q.[计划号] = v.[订单编号]
|
||||
) AS final_check
|
||||
OUTER APPLY (
|
||||
SELECT
|
||||
MAX(p.[计划完成时间]) AS [预计完成时间],
|
||||
STUFF((
|
||||
SELECT N'、' + p2.[工序名称] +
|
||||
CASE WHEN ISNULL(p2.[指派对象], N'') = N'' THEN N'' ELSE N'(' + p2.[指派对象] + N')' END
|
||||
FROM [dbo].[View_生产订单_MES] AS p2
|
||||
WHERE p2.[订单编号] = detail_order.[订单编号]
|
||||
AND p2.[物料类型] = N'pit_Resource'
|
||||
ORDER BY p2.[订单行号]
|
||||
FOR XML PATH(N''), TYPE
|
||||
).value(N'.', N'nvarchar(max)'), 1, 1, N'') AS [工艺路线],
|
||||
(
|
||||
SELECT
|
||||
p2.[订单行号],
|
||||
p2.[工序名称],
|
||||
p2.[指派对象],
|
||||
p2.[计划开始时间],
|
||||
p2.[计划完成时间],
|
||||
ISNULL(p2.[进度], 0) AS [进度],
|
||||
ISNULL(p2.[完成数量], 0) AS [完成数量],
|
||||
ISNULL(p2.[收料数量], 0) AS [收料数量],
|
||||
ISNULL(p2.[加工状态], 0) AS [加工状态],
|
||||
p2.[开工时间],
|
||||
ISNULL(check_qty.[收检合格数], 0) AS [收检合格数],
|
||||
ISNULL(check_qty.[收检不合格数], 0) AS [收检不合格数]
|
||||
FROM [dbo].[View_生产订单_MES] AS p2
|
||||
OUTER APPLY (
|
||||
SELECT
|
||||
SUM(ISNULL(q.[合格数], 0)) AS [收检合格数],
|
||||
SUM(ISNULL(q.[不合格数], 0)) AS [收检不合格数]
|
||||
FROM [dbo].[YL_质量检验_质检记录] AS q
|
||||
WHERE q.[TaskAID] = p2.[TaskAID]
|
||||
AND q.[质检类型] = N'收检'
|
||||
) AS check_qty
|
||||
WHERE p2.[订单编号] = detail_order.[订单编号]
|
||||
AND p2.[物料类型] = N'pit_Resource'
|
||||
ORDER BY p2.[订单行号]
|
||||
FOR JSON PATH
|
||||
) AS [工艺路线明细]
|
||||
FROM [dbo].[View_生产订单_MES] AS p
|
||||
WHERE p.[订单编号] = detail_order.[订单编号]
|
||||
AND p.[物料类型] = N'pit_Resource'
|
||||
) AS route
|
||||
OUTER APPLY (
|
||||
SELECT TOP (1)
|
||||
pending.[订单行号],
|
||||
pending.[工序名称],
|
||||
pending.[加工状态],
|
||||
pending.[进度],
|
||||
pending.[完成数量],
|
||||
pending.[计划数量],
|
||||
pending.[开工时间]
|
||||
FROM [dbo].[View_生产订单_MES] AS pending
|
||||
WHERE pending.[订单编号] = detail_order.[订单编号]
|
||||
AND pending.[物料类型] = N'pit_Resource'
|
||||
AND NOT (
|
||||
ISNULL(pending.[进度], 0) >= 100
|
||||
OR (ISNULL(pending.[计划数量], 0) > 0 AND ISNULL(pending.[完成数量], 0) >= ISNULL(pending.[计划数量], 0))
|
||||
)
|
||||
ORDER BY pending.[订单行号]
|
||||
) AS pending
|
||||
OUTER APPLY (
|
||||
SELECT TOP (1) prev.[工序名称]
|
||||
FROM [dbo].[View_生产订单_MES] AS prev
|
||||
WHERE prev.[订单编号] = detail_order.[订单编号]
|
||||
AND prev.[物料类型] = N'pit_Resource'
|
||||
AND prev.[订单行号] < pending.[订单行号]
|
||||
ORDER BY prev.[订单行号] DESC
|
||||
) AS prev_step
|
||||
OUTER APPLY (
|
||||
SELECT TOP (1) last_step.[工序名称]
|
||||
FROM [dbo].[View_生产订单_MES] AS last_step
|
||||
WHERE last_step.[订单编号] = detail_order.[订单编号]
|
||||
AND last_step.[物料类型] = N'pit_Resource'
|
||||
ORDER BY last_step.[订单行号] DESC
|
||||
) AS last_step
|
||||
OUTER APPLY (
|
||||
SELECT
|
||||
CASE
|
||||
WHEN detail_order.[订单编号] IS NULL THEN N''
|
||||
WHEN pending.[订单行号] IS NULL THEN ISNULL(last_step.[工序名称], N'') + N'毕'
|
||||
WHEN ISNULL(pending.[进度], 0) > 0
|
||||
OR ISNULL(pending.[完成数量], 0) > 0
|
||||
OR ISNULL(pending.[加工状态], 0) IN (2, 3, 4, 5, 6)
|
||||
OR pending.[开工时间] > '1900-01-01'
|
||||
THEN ISNULL(pending.[工序名称], N'') + N'中'
|
||||
WHEN prev_step.[工序名称] IS NULL THEN N''
|
||||
ELSE prev_step.[工序名称] + N'毕待' + ISNULL(pending.[工序名称], N'')
|
||||
END AS [当前序]
|
||||
) AS current_step
|
||||
OUTER APPLY (
|
||||
SELECT
|
||||
CASE
|
||||
WHEN sap.[属性] <> N'' THEN N''
|
||||
WHEN EXISTS (
|
||||
SELECT 1
|
||||
FROM [dbo].[质量检验_质检任务_SAP] AS task
|
||||
OUTER APPLY (
|
||||
SELECT SUM(ISNULL(q.[检验数量], 0)) AS [已检验数量]
|
||||
FROM [dbo].[YL_质量检验_质检记录] AS q
|
||||
WHERE q.[检测类型编号] = 5
|
||||
AND q.[计划号] = task.[订单编号]
|
||||
AND q.[行号] = task.[行号]
|
||||
AND q.[订单类型] = task.[订单类型]
|
||||
) AS checked_qty
|
||||
WHERE sap.[到货草稿] > 0
|
||||
AND task.[订单类型] = N'20'
|
||||
AND task.[订单编号] = sap.[到货草稿]
|
||||
AND ISNULL(task.[入库数量], 0) > 0
|
||||
)
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM [dbo].[质量检验_质检任务_SAP] AS task
|
||||
OUTER APPLY (
|
||||
SELECT SUM(ISNULL(q.[检验数量], 0)) AS [已检验数量]
|
||||
FROM [dbo].[YL_质量检验_质检记录] AS q
|
||||
WHERE q.[检测类型编号] = 5
|
||||
AND q.[计划号] = task.[订单编号]
|
||||
AND q.[行号] = task.[行号]
|
||||
AND q.[订单类型] = task.[订单类型]
|
||||
) AS checked_qty
|
||||
WHERE sap.[到货草稿] > 0
|
||||
AND task.[订单类型] = N'20'
|
||||
AND task.[订单编号] = sap.[到货草稿]
|
||||
AND (
|
||||
ISNULL(task.[入库数量], 0) <= 0
|
||||
OR ISNULL(checked_qty.[已检验数量], 0) < ISNULL(task.[入库数量], 0)
|
||||
)
|
||||
) THEN N'已完成'
|
||||
ELSE N'未完成'
|
||||
END AS [质检状态]
|
||||
) AS purchase_check
|
||||
WHERE
|
||||
v.[订单编号] IS NOT NULL
|
||||
AND (@订单号 <= 0 OR v.[订单编号] = @订单号)
|
||||
AND (@计划号 = N'' OR ISNULL(v.[计划号], N'') = @计划号)
|
||||
AND (@合同号 = N'' OR ISNULL(v.[合同号], N'') LIKE N'%' + @合同号 + N'%')
|
||||
AND (@产品编码 = N'' OR ISNULL(v.[物料编号], N'') LIKE N'%' + @产品编码 + N'%')
|
||||
AND (@产品名称 = N'' OR ISNULL(v.[物料描述], N'') LIKE N'%' + @产品名称 + N'%')
|
||||
AND (@工序名称 = N'' OR EXISTS (
|
||||
SELECT 1
|
||||
FROM [dbo].[View_生产订单_MES] AS fp
|
||||
WHERE fp.[订单编号] = v.[订单编号]
|
||||
AND fp.[工序名称] = @工序名称
|
||||
))
|
||||
AND (@计划开始 = N'' OR v.[计划开始时间] >= TRY_CONVERT(datetime, @计划开始))
|
||||
AND (@计划完成 = N'' OR v.[计划开始时间] <= TRY_CONVERT(datetime, @计划完成))
|
||||
AND (@排产状态 = N'全部' OR @排产状态 = N'' OR
|
||||
(@排产状态 = N'已完成' AND ISNULL(v.[排产状态], 0) = 1) OR
|
||||
(@排产状态 = N'未完成' AND ISNULL(v.[排产状态], 0) = 0)
|
||||
)
|
||||
AND (@指派对象 = N'全部' OR @指派对象 = N'' OR EXISTS (
|
||||
SELECT 1
|
||||
FROM [dbo].[View_生产订单_MES] AS ap
|
||||
WHERE ap.[订单编号] = v.[订单编号]
|
||||
AND ap.[指派对象] IN (SELECT LTRIM(RTRIM(value)) FROM STRING_SPLIT(@指派对象, N','))
|
||||
))
|
||||
AND (@发货状态 = N'全部' OR @发货状态 = N'' OR
|
||||
(@发货状态 = N'已发货' AND ISNULL(v.[发货状态], N'0') = N'1') OR
|
||||
(@发货状态 = N'未发货' AND ISNULL(v.[发货状态], N'0') <> N'1')
|
||||
)
|
||||
AND (@齐套 = N'全部' OR @齐套 = N'' OR
|
||||
(@齐套 = N'是' AND ISNULL(v.[齐套], 0) = 1) OR
|
||||
(@齐套 = N'否' AND ISNULL(v.[齐套], 0) <> 1)
|
||||
)
|
||||
AND (@发料状态 = N'全部' OR @发料状态 = N'' OR
|
||||
(@发料状态 = N'发料齐套' AND ISNULL(v.[发料状态], N'0') = N'1') OR
|
||||
(@发料状态 = N'发料缺件' AND ISNULL(v.[发料状态], N'0') = N'2') OR
|
||||
(@发料状态 = N'未发料' AND ISNULL(v.[发料状态], N'0') NOT IN (N'1', N'2'))
|
||||
)
|
||||
AND (@自制件属性 = N'全部' OR @自制件属性 = N'' OR
|
||||
(@自制件属性 = N'机加' AND (sap.[属性] = N'机加件' OR v.[自制件属性] = N'机加件')) OR
|
||||
(@自制件属性 = N'装配' AND (sap.[属性] LIKE N'%装配%' OR v.[自制件属性] LIKE N'%装配%'))
|
||||
)
|
||||
AND (@检验状态 = N'' OR (sap.[属性] = N'' AND ISNULL(purchase_check.[质检状态], N'') = @检验状态))
|
||||
)
|
||||
SELECT TOP (1000)
|
||||
[计划号],
|
||||
[合同号],
|
||||
[订单号],
|
||||
[产品编码],
|
||||
[产品名称],
|
||||
[计划数量订单],
|
||||
[入库数量],
|
||||
[要求完工日期],
|
||||
[要求发货日期],
|
||||
[发货状态],
|
||||
[齐套],
|
||||
[拣配状态],
|
||||
[发料状态],
|
||||
[装配开工],
|
||||
[完成数量],
|
||||
[终检],
|
||||
[生产工艺],
|
||||
[排产状态],
|
||||
[自制件属性],
|
||||
[预计齐套时间],
|
||||
[缺件物料编码],
|
||||
[缺件物料名称],
|
||||
[缺件数量],
|
||||
[缺件属性],
|
||||
[缺件生产订单号],
|
||||
[进度],
|
||||
[工艺路线],
|
||||
[预计完成时间],
|
||||
[工艺路线明细],
|
||||
[采购员],
|
||||
[采购未清数量],
|
||||
[到货草稿],
|
||||
[质检状态],
|
||||
[SAP单据],
|
||||
[SAP行号]
|
||||
FROM (
|
||||
SELECT
|
||||
查询结果.*,
|
||||
ROW_NUMBER() OVER (
|
||||
PARTITION BY
|
||||
[订单号],
|
||||
CASE
|
||||
WHEN ISNULL([缺件生产订单号], N'') <> N'' THEN [缺件生产订单号]
|
||||
ELSE [缺件物料编码] + N':' + CONVERT(nvarchar(30), [SAP行号])
|
||||
END
|
||||
ORDER BY [缺件数量] DESC, [SAP单据], [SAP行号]
|
||||
) AS rn
|
||||
FROM 查询结果
|
||||
) AS dedup
|
||||
WHERE rn = 1
|
||||
ORDER BY
|
||||
[预计齐套时间],
|
||||
[订单号],
|
||||
[缺件生产订单号],
|
||||
[缺件物料编码];
|
||||
END
|
||||
GO
|
||||
@@ -0,0 +1,48 @@
|
||||
[
|
||||
{
|
||||
"DID": 2,
|
||||
"项目号": "CW-260001",
|
||||
"物料编码": "101101-105",
|
||||
"物料名称": "圆棒",
|
||||
"图号": "123",
|
||||
"任务描述": "测试",
|
||||
"关联父件物料编码": "101101-100",
|
||||
"关联父件物料名称": "圆棒",
|
||||
"设计要求": "123456",
|
||||
"研发立项号": "234",
|
||||
"研发目的": "456",
|
||||
"指派对象ID": "95,50,74",
|
||||
"指派对象": "蔡根,曹元,曹作梁",
|
||||
"预计开始时间": "\/Date(1783526400000)\/",
|
||||
"预计结束时间": "\/Date(1783612800000)\/",
|
||||
"单据状态": "已完成",
|
||||
"创建日期": "\/Date(1783563588967)\/",
|
||||
"创建人": "超级管理员",
|
||||
"最后编辑人": "超级管理员",
|
||||
"最后编辑时间": "\/Date(1783563771493)\/",
|
||||
"备注": "的伟大的我无法"
|
||||
},
|
||||
{
|
||||
"DID": 3,
|
||||
"项目号": "CW-260003",
|
||||
"物料编码": "101105-30x23x72",
|
||||
"物料名称": "板材",
|
||||
"图号": null,
|
||||
"任务描述": "测试",
|
||||
"关联父件物料编码": "101101-45",
|
||||
"关联父件物料名称": "圆棒",
|
||||
"设计要求": null,
|
||||
"研发立项号": null,
|
||||
"研发目的": null,
|
||||
"指派对象ID": "95,50,74",
|
||||
"指派对象": "蔡根,曹元,曹作梁",
|
||||
"预计开始时间": null,
|
||||
"预计结束时间": null,
|
||||
"单据状态": "已完成",
|
||||
"创建日期": "\/Date(1783564298800)\/",
|
||||
"创建人": "超级管理员",
|
||||
"最后编辑人": "超级管理员",
|
||||
"最后编辑时间": "\/Date(1783565606673)\/",
|
||||
"备注": null
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"VID": 1,
|
||||
"RID": 2,
|
||||
"DID": 2,
|
||||
"校验前开始时间": "\/Date(1783563746910)\/",
|
||||
"校验前结束时间": "\/Date(1783563764437)\/",
|
||||
"校验后开始时间": "\/Date(1783563746000)\/",
|
||||
"校验后结束时间": "\/Date(1783563808000)\/",
|
||||
"校验后工时秒数": 62,
|
||||
"校验人ID": "1",
|
||||
"校验人": "超级管理员",
|
||||
"校验时间": "\/Date(1783563815987)\/",
|
||||
"校验备注": "测试"
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
[
|
||||
{
|
||||
"RID": 2,
|
||||
"DID": 2,
|
||||
"操作人ID": "1",
|
||||
"操作人": "超级管理员",
|
||||
"开始时间": "\/Date(1783563746000)\/",
|
||||
"结束时间": "\/Date(1783563808000)\/",
|
||||
"工时秒数": 62,
|
||||
"报工状态": "已结束",
|
||||
"已校验": true,
|
||||
"校验人ID": "1",
|
||||
"校验人": "超级管理员",
|
||||
"校验时间": "\/Date(1783563815990)\/",
|
||||
"创建时间": "\/Date(1783563746910)\/",
|
||||
"备注": "测试"
|
||||
},
|
||||
{
|
||||
"RID": 3,
|
||||
"DID": 3,
|
||||
"操作人ID": "1",
|
||||
"操作人": "超级管理员",
|
||||
"开始时间": "\/Date(1783564338263)\/",
|
||||
"结束时间": "\/Date(1783565595690)\/",
|
||||
"工时秒数": 1257,
|
||||
"报工状态": "已结束",
|
||||
"已校验": false,
|
||||
"校验人ID": null,
|
||||
"校验人": null,
|
||||
"校验时间": null,
|
||||
"创建时间": "\/Date(1783564338263)\/",
|
||||
"备注": null
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,17 @@
|
||||
[
|
||||
{
|
||||
"表名": "MES_设计报工_任务",
|
||||
"行数": 2,
|
||||
"备份文件": "C:\\WorkYuanLy\\MES_Manage_View_V20\\db_backups\\design_report_data_backup_20260709_110417\\MES_设计报工_任务.json"
|
||||
},
|
||||
{
|
||||
"表名": "MES_设计报工_记录",
|
||||
"行数": 2,
|
||||
"备份文件": "C:\\WorkYuanLy\\MES_Manage_View_V20\\db_backups\\design_report_data_backup_20260709_110417\\MES_设计报工_记录.json"
|
||||
},
|
||||
{
|
||||
"表名": "MES_设计报工_校验记录",
|
||||
"行数": 1,
|
||||
"备份文件": "C:\\WorkYuanLy\\MES_Manage_View_V20\\db_backups\\design_report_data_backup_20260709_110417\\MES_设计报工_校验记录.json"
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,210 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[计划排产_生产订单关闭_查询全部订单]
|
||||
@订单号 nvarchar(100) = N'',
|
||||
@单据状态 nvarchar(100) = N'', -- 可选值:'已关闭'、'未关闭'、'可关闭'
|
||||
@属性 nvarchar(100) = N''
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
IF (@单据状态 = N'可关闭')
|
||||
BEGIN
|
||||
CREATE TABLE #工时订单
|
||||
(
|
||||
订单号 nvarchar(100) NOT NULL PRIMARY KEY
|
||||
);
|
||||
|
||||
INSERT INTO #工时订单 (订单号)
|
||||
SELECT DISTINCT CONVERT(nvarchar(100), 订单号)
|
||||
FROM dbo.View_生产工时视图
|
||||
WHERE 订单号 IS NOT NULL;
|
||||
|
||||
;WITH 未结束装配订单 AS
|
||||
(
|
||||
SELECT
|
||||
CONVERT(nvarchar(100), t.订单编号) AS 订单编号
|
||||
FROM dbo.YL_加工中心_操作记录表 AS t
|
||||
WHERE t.操作类别 = N'开始加工'
|
||||
AND t.结束时间 IS NULL
|
||||
AND t.工位名称 LIKE N'%装配%'
|
||||
AND t.操作数值 IS NOT NULL
|
||||
GROUP BY CONVERT(nvarchar(100), t.订单编号)
|
||||
),
|
||||
收检数量 AS
|
||||
(
|
||||
SELECT
|
||||
计划号,
|
||||
SUM(ISNULL(合格数, 0)) AS 合格数合计,
|
||||
SUM(ISNULL(不合格数, 0)) AS 不合格数合计
|
||||
FROM dbo.YL_质量检验_质检记录
|
||||
WHERE 质检类型 = N'收检'
|
||||
GROUP BY 计划号
|
||||
),
|
||||
终检数量 AS
|
||||
(
|
||||
SELECT
|
||||
计划号,
|
||||
SUM(ISNULL(合格数, 0)) AS 终检合格数合计,
|
||||
SUM(ISNULL(不合格数, 0)) AS 终检不合格数合计
|
||||
FROM dbo.YL_质量检验_质检记录
|
||||
WHERE 质检类型 = N'终检'
|
||||
GROUP BY 计划号
|
||||
),
|
||||
可关闭订单 AS
|
||||
(
|
||||
SELECT
|
||||
v.订单号 AS 订单编号,
|
||||
MAX(v.产品名称) AS 产品名称,
|
||||
MAX(v.产品编码) AS 产品编码,
|
||||
MAX(v.入库数量) AS 入库数量,
|
||||
MAX(v.订单合同号) AS 合同号,
|
||||
MAX(终检数量.终检不合格数合计) AS 终检不合格数合计,
|
||||
MAX(终检数量.终检合格数合计) AS 终检合格数合计,
|
||||
MAX(v.计划数量) AS 计划数量,
|
||||
MAX(v.确认状态) AS 确认状态,
|
||||
MAX(v.单据状态) AS 单据状态,
|
||||
MAX(收检数量.不合格数合计) AS 不合格数合计,
|
||||
MIN(CASE WHEN v.Expr1 IS NULL THEN 0 ELSE 1 END) AS 是否全部校验
|
||||
FROM dbo.View_生产工时视图 AS v
|
||||
LEFT JOIN 收检数量 ON v.订单号 = 收检数量.计划号
|
||||
LEFT JOIN 终检数量 ON v.订单号 = 终检数量.计划号
|
||||
WHERE v.单据状态 IS NULL
|
||||
AND (@订单号 = N'' OR v.订单号 = @订单号)
|
||||
AND (
|
||||
@属性 NOT IN (N'机加', N'装配')
|
||||
OR (@属性 = N'机加' AND v.自制件属性 = N'机加件')
|
||||
OR (@属性 = N'装配' AND v.自制件属性 LIKE N'%装配%')
|
||||
)
|
||||
GROUP BY v.订单号
|
||||
HAVING
|
||||
MIN(CASE WHEN v.Expr1 IS NULL THEN 0 ELSE 1 END) = 1
|
||||
AND (
|
||||
MAX(终检数量.终检合格数合计) + MAX(收检数量.不合格数合计) = MAX(v.计划数量)
|
||||
OR MAX(v.计划数量) = MAX(v.入库数量)
|
||||
OR MAX(收检数量.不合格数合计) = MAX(v.计划数量)
|
||||
)
|
||||
AND MAX(ISNULL(v.入库数量, 0)) = MAX(ISNULL(终检数量.终检合格数合计, 0))
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
CONVERT(nvarchar(100), p.订单编号) AS 订单编号,
|
||||
MAX(p.物料描述) AS 产品名称,
|
||||
MAX(p.物料编号) AS 产品编码,
|
||||
MAX(p.入库数量) AS 入库数量,
|
||||
MAX(p.合同号) AS 合同号,
|
||||
MAX(终检数量.终检不合格数合计) AS 终检不合格数合计,
|
||||
MAX(终检数量.终检合格数合计) AS 终检合格数合计,
|
||||
MAX(p.计划数量) AS 计划数量,
|
||||
MAX(p.确认状态) AS 确认状态,
|
||||
MAX(p.单据状态) AS 单据状态,
|
||||
MAX(收检数量.不合格数合计) AS 不合格数合计,
|
||||
1 AS 是否全部校验
|
||||
FROM dbo.MES_接口_生产计划 AS p
|
||||
LEFT JOIN 收检数量 ON CONVERT(nvarchar(100), p.订单编号) = CONVERT(nvarchar(100), 收检数量.计划号)
|
||||
LEFT JOIN 终检数量 ON CONVERT(nvarchar(100), p.订单编号) = CONVERT(nvarchar(100), 终检数量.计划号)
|
||||
LEFT JOIN #工时订单 AS wh ON wh.订单号 = CONVERT(nvarchar(100), p.订单编号)
|
||||
WHERE p.单据状态 IS NULL
|
||||
AND wh.订单号 IS NULL
|
||||
AND (@订单号 = N'' OR CONVERT(nvarchar(100), p.订单编号) = @订单号)
|
||||
AND (
|
||||
@属性 NOT IN (N'机加', N'装配')
|
||||
OR (@属性 = N'机加' AND p.自制件属性 = N'机加件')
|
||||
OR (@属性 = N'装配' AND p.自制件属性 LIKE N'%装配%')
|
||||
)
|
||||
GROUP BY p.订单编号
|
||||
HAVING
|
||||
(
|
||||
MAX(终检数量.终检合格数合计) + MAX(收检数量.不合格数合计) = MAX(p.计划数量)
|
||||
OR MAX(p.计划数量) = MAX(p.入库数量)
|
||||
OR MAX(收检数量.不合格数合计) = MAX(p.计划数量)
|
||||
)
|
||||
AND MAX(ISNULL(p.入库数量, 0)) = MAX(ISNULL(终检数量.终检合格数合计, 0))
|
||||
)
|
||||
SELECT
|
||||
c.订单编号,
|
||||
c.产品名称,
|
||||
c.产品编码,
|
||||
c.入库数量,
|
||||
c.合同号,
|
||||
c.终检不合格数合计,
|
||||
c.终检合格数合计,
|
||||
c.计划数量,
|
||||
c.确认状态,
|
||||
c.单据状态,
|
||||
c.不合格数合计,
|
||||
c.是否全部校验
|
||||
FROM 可关闭订单 AS c
|
||||
WHERE NOT EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM 未结束装配订单 AS u
|
||||
WHERE u.订单编号 = CONVERT(nvarchar(100), c.订单编号)
|
||||
)
|
||||
ORDER BY c.订单编号;
|
||||
|
||||
RETURN;
|
||||
END
|
||||
|
||||
;WITH 未结束装配订单 AS
|
||||
(
|
||||
SELECT
|
||||
CONVERT(nvarchar(100), t.订单编号) AS 订单编号
|
||||
FROM dbo.YL_加工中心_操作记录表 AS t
|
||||
WHERE t.操作类别 = N'开始加工'
|
||||
AND t.结束时间 IS NULL
|
||||
AND t.工位名称 LIKE N'%装配%'
|
||||
AND t.操作数值 IS NOT NULL
|
||||
GROUP BY CONVERT(nvarchar(100), t.订单编号)
|
||||
)
|
||||
SELECT TOP 100
|
||||
v.订单编号,
|
||||
MAX(v.物料描述) AS 产品名称,
|
||||
MAX(v.物料编号) AS 产品编码,
|
||||
MAX(v.入库数量) AS 入库数量,
|
||||
MAX(v.合同号) AS 合同号,
|
||||
MAX(zj_终检数量.终检不合格数合计) AS 终检不合格数合计,
|
||||
MAX(zj_终检数量.终检合格数合计) AS 终检合格数合计,
|
||||
MAX(v.计划数量) AS 计划数量,
|
||||
MAX(v.确认状态) AS 确认状态,
|
||||
MAX(v.单据状态) AS 单据状态
|
||||
FROM dbo.MES_接口_生产计划 AS v
|
||||
LEFT JOIN
|
||||
(
|
||||
SELECT
|
||||
计划号,
|
||||
SUM(ISNULL(合格数, 0)) AS 终检合格数合计,
|
||||
SUM(ISNULL(不合格数, 0)) AS 终检不合格数合计
|
||||
FROM dbo.YL_质量检验_质检记录
|
||||
WHERE 质检类型 = N'终检'
|
||||
GROUP BY 计划号
|
||||
) AS zj_终检数量 ON v.订单编号 = zj_终检数量.计划号
|
||||
WHERE 1 = 1
|
||||
AND (@订单号 = N'' OR CONVERT(nvarchar(100), v.订单编号) = @订单号)
|
||||
AND NOT EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM 未结束装配订单 AS u
|
||||
WHERE u.订单编号 = CONVERT(nvarchar(100), v.订单编号)
|
||||
)
|
||||
AND (
|
||||
@单据状态 NOT IN (N'SAP未关闭', N'已关闭', N'未关闭')
|
||||
OR (@单据状态 = N'SAP未关闭' AND v.单据状态 = N'已关闭')
|
||||
OR (@单据状态 = N'已关闭' AND (v.单据状态 = N'已关闭' OR v.单据状态 = N'已取消'))
|
||||
OR (@单据状态 = N'未关闭' AND v.单据状态 IS NULL)
|
||||
)
|
||||
AND (
|
||||
@属性 NOT IN (N'机加', N'装配')
|
||||
OR (@属性 = N'机加' AND v.自制件属性 = N'机加件')
|
||||
OR (@属性 = N'装配' AND v.自制件属性 LIKE N'%装配%')
|
||||
)
|
||||
GROUP BY v.订单编号;
|
||||
END
|
||||
GO
|
||||
158
db_backups/fix_design_report_check_status_20260710.sql
Normal file
158
db_backups/fix_design_report_check_status_20260710.sql
Normal file
@@ -0,0 +1,158 @@
|
||||
USE [YL_MESDB];
|
||||
GO
|
||||
|
||||
SET ANSI_NULLS ON;
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON;
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE [dbo].[设计报工_工时校验_保存]
|
||||
@RID int,
|
||||
@开始时间 nvarchar(30),
|
||||
@结束时间 nvarchar(30),
|
||||
@校验人ID nvarchar(100) = N'',
|
||||
@校验人 nvarchar(100) = N'',
|
||||
@校验备注 nvarchar(500) = N''
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @开始 datetime = TRY_CONVERT(datetime, NULLIF(@开始时间, N''));
|
||||
DECLARE @结束 datetime = TRY_CONVERT(datetime, NULLIF(@结束时间, N''));
|
||||
DECLARE @DID int;
|
||||
DECLARE @旧开始 datetime;
|
||||
DECLARE @旧结束 datetime;
|
||||
|
||||
SELECT @DID = [DID], @旧开始 = [开始时间], @旧结束 = [结束时间]
|
||||
FROM [dbo].[MES_设计报工_记录]
|
||||
WHERE [RID] = @RID;
|
||||
|
||||
IF @DID IS NULL
|
||||
BEGIN
|
||||
SELECT CAST(0 AS int) AS [result], N'报工记录不存在' AS [message];
|
||||
RETURN;
|
||||
END
|
||||
|
||||
IF @开始 IS NULL OR @结束 IS NULL OR @结束 <= @开始
|
||||
BEGIN
|
||||
SELECT CAST(0 AS int) AS [result], N'开始时间和结束时间不合法' AS [message];
|
||||
RETURN;
|
||||
END
|
||||
|
||||
INSERT INTO [dbo].[MES_设计报工_校验记录]
|
||||
(
|
||||
[RID], [DID], [校验前开始时间], [校验前结束时间],
|
||||
[校验后开始时间], [校验后结束时间], [校验后工时秒数],
|
||||
[校验人ID], [校验人], [校验时间], [校验备注]
|
||||
)
|
||||
VALUES
|
||||
(
|
||||
@RID, @DID, @旧开始, @旧结束,
|
||||
@开始, @结束, DATEDIFF(second, @开始, @结束),
|
||||
NULLIF(@校验人ID, N''), NULLIF(@校验人, N''), GETDATE(), NULLIF(@校验备注, N'')
|
||||
);
|
||||
|
||||
UPDATE [dbo].[MES_设计报工_记录]
|
||||
SET
|
||||
[开始时间] = @开始,
|
||||
[结束时间] = @结束,
|
||||
[工时秒数] = DATEDIFF(second, @开始, @结束),
|
||||
[报工状态] = N'已结束',
|
||||
[已校验] = 1,
|
||||
[校验人ID] = NULLIF(@校验人ID, N''),
|
||||
[校验人] = NULLIF(@校验人, N''),
|
||||
[校验时间] = GETDATE(),
|
||||
[备注] = NULLIF(@校验备注, N'')
|
||||
WHERE [RID] = @RID;
|
||||
|
||||
UPDATE [dbo].[MES_设计报工_任务]
|
||||
SET
|
||||
[单据状态] = CASE
|
||||
WHEN [单据状态] = N'已完成' THEN N'已完成'
|
||||
WHEN EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_记录] WHERE [DID] = @DID AND [结束时间] IS NULL) THEN N'执行中'
|
||||
ELSE N'已结束'
|
||||
END,
|
||||
[最后编辑人] = NULLIF(@校验人, N''),
|
||||
[最后编辑时间] = GETDATE()
|
||||
WHERE [DID] = @DID;
|
||||
|
||||
SELECT
|
||||
CAST(1 AS int) AS [result],
|
||||
N'校验成功' AS [message],
|
||||
(SELECT [单据状态] FROM [dbo].[MES_设计报工_任务] WHERE [DID] = @DID) AS [任务状态];
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE [dbo].[设计报工_工时校验_批量保存]
|
||||
@RIDs nvarchar(max),
|
||||
@校验人ID nvarchar(100) = N'',
|
||||
@校验人 nvarchar(100) = N''
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @RID表 table([RID] int PRIMARY KEY);
|
||||
DECLARE @DID表 table([DID] int PRIMARY KEY);
|
||||
DECLARE @xml xml;
|
||||
DECLARE @更新记录数 int;
|
||||
|
||||
SET @xml = TRY_CONVERT(xml, N'<r><i>' + REPLACE(ISNULL(@RIDs, N''), N',', N'</i><i>') + N'</i></r>');
|
||||
|
||||
INSERT INTO @RID表([RID])
|
||||
SELECT DISTINCT TRY_CONVERT(int, T.c.value(N'.', N'nvarchar(30)'))
|
||||
FROM @xml.nodes(N'/r/i') AS T(c)
|
||||
WHERE TRY_CONVERT(int, T.c.value(N'.', N'nvarchar(30)')) IS NOT NULL;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM @RID表)
|
||||
BEGIN
|
||||
SELECT CAST(0 AS int) AS [result], N'没有可校验记录' AS [message];
|
||||
RETURN;
|
||||
END
|
||||
|
||||
INSERT INTO @DID表([DID])
|
||||
SELECT DISTINCT r.[DID]
|
||||
FROM [dbo].[MES_设计报工_记录] AS r
|
||||
INNER JOIN @RID表 AS ids ON r.[RID] = ids.[RID]
|
||||
WHERE r.[开始时间] IS NOT NULL AND r.[结束时间] IS NOT NULL;
|
||||
|
||||
INSERT INTO [dbo].[MES_设计报工_校验记录]
|
||||
(
|
||||
[RID], [DID], [校验前开始时间], [校验前结束时间],
|
||||
[校验后开始时间], [校验后结束时间], [校验后工时秒数],
|
||||
[校验人ID], [校验人], [校验时间], [校验备注]
|
||||
)
|
||||
SELECT
|
||||
r.[RID], r.[DID], r.[开始时间], r.[结束时间],
|
||||
r.[开始时间], r.[结束时间], r.[工时秒数],
|
||||
NULLIF(@校验人ID, N''), NULLIF(@校验人, N''), GETDATE(), N'批量校验'
|
||||
FROM [dbo].[MES_设计报工_记录] AS r
|
||||
INNER JOIN @RID表 AS ids ON r.[RID] = ids.[RID]
|
||||
WHERE r.[开始时间] IS NOT NULL AND r.[结束时间] IS NOT NULL;
|
||||
|
||||
UPDATE r
|
||||
SET
|
||||
[已校验] = 1,
|
||||
[校验人ID] = NULLIF(@校验人ID, N''),
|
||||
[校验人] = NULLIF(@校验人, N''),
|
||||
[校验时间] = GETDATE()
|
||||
FROM [dbo].[MES_设计报工_记录] AS r
|
||||
INNER JOIN @RID表 AS ids ON r.[RID] = ids.[RID]
|
||||
WHERE r.[开始时间] IS NOT NULL AND r.[结束时间] IS NOT NULL;
|
||||
|
||||
SET @更新记录数 = @@ROWCOUNT;
|
||||
|
||||
UPDATE t
|
||||
SET
|
||||
[单据状态] = CASE
|
||||
WHEN t.[单据状态] = N'已完成' THEN N'已完成'
|
||||
WHEN EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_记录] WHERE [DID] = t.[DID] AND [结束时间] IS NULL) THEN N'执行中'
|
||||
ELSE N'已结束'
|
||||
END,
|
||||
[最后编辑人] = NULLIF(@校验人, N''),
|
||||
[最后编辑时间] = GETDATE()
|
||||
FROM [dbo].[MES_设计报工_任务] AS t
|
||||
INNER JOIN @DID表 AS ids ON t.[DID] = ids.[DID];
|
||||
|
||||
SELECT CAST(1 AS int) AS [result], N'批量校验成功' AS [message], @更新记录数 AS [count];
|
||||
END
|
||||
GO
|
||||
242
db_backups/fix_design_report_complete_guard_20260709.sql
Normal file
242
db_backups/fix_design_report_complete_guard_20260709.sql
Normal file
@@ -0,0 +1,242 @@
|
||||
USE [YL_MESDB];
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE [dbo].[设计报工_任务_开始]
|
||||
@DID int,
|
||||
@操作人ID nvarchar(100) = N'',
|
||||
@操作人 nvarchar(100) = N''
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
SET XACT_ABORT OFF;
|
||||
|
||||
DECLARE @当前操作人ID nvarchar(100) = NULLIF(@操作人ID, N'');
|
||||
DECLARE @当前操作人 nvarchar(100) = NULLIF(@操作人, N'');
|
||||
DECLARE @RID int;
|
||||
DECLARE @初始事务数 int = @@TRANCOUNT;
|
||||
DECLARE @保存点名称 sysname = N'DRT_Task_Start';
|
||||
|
||||
IF @当前操作人ID IS NULL AND @当前操作人 IS NULL
|
||||
BEGIN
|
||||
SELECT CAST(0 AS int) AS [result], N'未获取到当前操作人,不能开始' AS [message];
|
||||
RETURN;
|
||||
END
|
||||
|
||||
BEGIN TRY
|
||||
IF @初始事务数 = 0 BEGIN TRANSACTION;
|
||||
ELSE SAVE TRANSACTION @保存点名称;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_任务] WITH (UPDLOCK, HOLDLOCK) WHERE [DID] = @DID)
|
||||
BEGIN
|
||||
IF @初始事务数 = 0 ROLLBACK TRANSACTION;
|
||||
ELSE ROLLBACK TRANSACTION @保存点名称;
|
||||
SELECT CAST(0 AS int) AS [result], N'任务不存在' AS [message];
|
||||
RETURN;
|
||||
END
|
||||
|
||||
IF EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_任务] WHERE [DID] = @DID AND [单据状态] = N'已完成')
|
||||
BEGIN
|
||||
IF @初始事务数 = 0 ROLLBACK TRANSACTION;
|
||||
ELSE ROLLBACK TRANSACTION @保存点名称;
|
||||
SELECT CAST(0 AS int) AS [result], N'任务已完成,不能开始' AS [message];
|
||||
RETURN;
|
||||
END
|
||||
|
||||
IF EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM [dbo].[MES_设计报工_记录] WITH (UPDLOCK, HOLDLOCK)
|
||||
WHERE [DID] = @DID
|
||||
AND [结束时间] IS NULL
|
||||
AND (
|
||||
(@当前操作人ID IS NOT NULL AND ISNULL([操作人ID], N'') = @当前操作人ID)
|
||||
OR (@当前操作人ID IS NULL AND @当前操作人 IS NOT NULL AND ISNULL([操作人], N'') = @当前操作人)
|
||||
)
|
||||
)
|
||||
BEGIN
|
||||
IF @初始事务数 = 0 ROLLBACK TRANSACTION;
|
||||
ELSE ROLLBACK TRANSACTION @保存点名称;
|
||||
SELECT CAST(0 AS int) AS [result], N'当前人员已存在未结束的报工记录' AS [message];
|
||||
RETURN;
|
||||
END
|
||||
|
||||
INSERT INTO [dbo].[MES_设计报工_记录]([DID], [操作人ID], [操作人], [开始时间], [报工状态])
|
||||
VALUES(@DID, @当前操作人ID, @当前操作人, GETDATE(), N'执行中');
|
||||
|
||||
SET @RID = CONVERT(int, SCOPE_IDENTITY());
|
||||
|
||||
UPDATE [dbo].[MES_设计报工_任务]
|
||||
SET [单据状态] = N'执行中', [最后编辑人] = @当前操作人, [最后编辑时间] = GETDATE()
|
||||
WHERE [DID] = @DID;
|
||||
|
||||
IF @初始事务数 = 0 COMMIT TRANSACTION;
|
||||
SELECT CAST(1 AS int) AS [result], N'开始成功' AS [message], @RID AS [RID];
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
IF XACT_STATE() <> 0
|
||||
BEGIN
|
||||
IF @初始事务数 = 0 ROLLBACK TRANSACTION;
|
||||
ELSE IF XACT_STATE() = 1 ROLLBACK TRANSACTION @保存点名称;
|
||||
END
|
||||
SELECT CAST(0 AS int) AS [result], ERROR_MESSAGE() AS [message];
|
||||
END CATCH
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE [dbo].[设计报工_任务_结束]
|
||||
@DID int,
|
||||
@操作人ID nvarchar(100) = N'',
|
||||
@操作人 nvarchar(100) = N''
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
SET XACT_ABORT OFF;
|
||||
|
||||
DECLARE @当前操作人ID nvarchar(100) = NULLIF(@操作人ID, N'');
|
||||
DECLARE @当前操作人 nvarchar(100) = NULLIF(@操作人, N'');
|
||||
DECLARE @RID int;
|
||||
DECLARE @初始事务数 int = @@TRANCOUNT;
|
||||
DECLARE @保存点名称 sysname = N'DRT_Task_End';
|
||||
|
||||
IF @当前操作人ID IS NULL AND @当前操作人 IS NULL
|
||||
BEGIN
|
||||
SELECT CAST(0 AS int) AS [result], N'未获取到当前操作人,不能结束' AS [message];
|
||||
RETURN;
|
||||
END
|
||||
|
||||
BEGIN TRY
|
||||
IF @初始事务数 = 0 BEGIN TRANSACTION;
|
||||
ELSE SAVE TRANSACTION @保存点名称;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_任务] WITH (UPDLOCK, HOLDLOCK) WHERE [DID] = @DID)
|
||||
BEGIN
|
||||
IF @初始事务数 = 0 ROLLBACK TRANSACTION;
|
||||
ELSE ROLLBACK TRANSACTION @保存点名称;
|
||||
SELECT CAST(0 AS int) AS [result], N'任务不存在' AS [message];
|
||||
RETURN;
|
||||
END
|
||||
|
||||
SELECT TOP 1 @RID = [RID]
|
||||
FROM [dbo].[MES_设计报工_记录] WITH (UPDLOCK, HOLDLOCK)
|
||||
WHERE [DID] = @DID
|
||||
AND [结束时间] IS NULL
|
||||
AND (
|
||||
(@当前操作人ID IS NOT NULL AND ISNULL([操作人ID], N'') = @当前操作人ID)
|
||||
OR (@当前操作人ID IS NULL AND @当前操作人 IS NOT NULL AND ISNULL([操作人], N'') = @当前操作人)
|
||||
)
|
||||
ORDER BY [开始时间] DESC, [RID] DESC;
|
||||
|
||||
IF @RID IS NULL
|
||||
BEGIN
|
||||
IF @初始事务数 = 0 ROLLBACK TRANSACTION;
|
||||
ELSE ROLLBACK TRANSACTION @保存点名称;
|
||||
SELECT CAST(0 AS int) AS [result], N'当前人员没有未结束的报工记录' AS [message];
|
||||
RETURN;
|
||||
END
|
||||
|
||||
UPDATE [dbo].[MES_设计报工_记录]
|
||||
SET
|
||||
[结束时间] = GETDATE(),
|
||||
[工时秒数] = DATEDIFF(second, [开始时间], GETDATE()),
|
||||
[报工状态] = N'已结束'
|
||||
WHERE [RID] = @RID;
|
||||
|
||||
UPDATE [dbo].[MES_设计报工_任务]
|
||||
SET
|
||||
[单据状态] = CASE
|
||||
WHEN [单据状态] = N'已完成' THEN N'已完成'
|
||||
WHEN EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_记录] WHERE [DID] = @DID AND [结束时间] IS NULL) THEN N'执行中'
|
||||
ELSE N'已结束'
|
||||
END,
|
||||
[最后编辑人] = @当前操作人,
|
||||
[最后编辑时间] = GETDATE()
|
||||
WHERE [DID] = @DID;
|
||||
|
||||
IF @初始事务数 = 0 COMMIT TRANSACTION;
|
||||
SELECT CAST(1 AS int) AS [result], N'结束成功' AS [message], @RID AS [RID];
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
IF XACT_STATE() <> 0
|
||||
BEGIN
|
||||
IF @初始事务数 = 0 ROLLBACK TRANSACTION;
|
||||
ELSE IF XACT_STATE() = 1 ROLLBACK TRANSACTION @保存点名称;
|
||||
END
|
||||
SELECT CAST(0 AS int) AS [result], ERROR_MESSAGE() AS [message];
|
||||
END CATCH
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE [dbo].[设计报工_任务_完成]
|
||||
@DID int,
|
||||
@操作人 nvarchar(100) = N''
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
SET XACT_ABORT OFF;
|
||||
|
||||
DECLARE @未结束人员 nvarchar(max);
|
||||
DECLARE @初始事务数 int = @@TRANCOUNT;
|
||||
DECLARE @保存点名称 sysname = N'DRT_Task_Complete';
|
||||
|
||||
BEGIN TRY
|
||||
IF @初始事务数 = 0 BEGIN TRANSACTION;
|
||||
ELSE SAVE TRANSACTION @保存点名称;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_任务] WITH (UPDLOCK, HOLDLOCK) WHERE [DID] = @DID)
|
||||
BEGIN
|
||||
IF @初始事务数 = 0 ROLLBACK TRANSACTION;
|
||||
ELSE ROLLBACK TRANSACTION @保存点名称;
|
||||
SELECT CAST(0 AS int) AS [result], N'任务不存在' AS [message];
|
||||
RETURN;
|
||||
END
|
||||
|
||||
SELECT @未结束人员 = STRING_AGG(CONVERT(nvarchar(max), x.[操作人标识]), N'、')
|
||||
FROM
|
||||
(
|
||||
SELECT DISTINCT COALESCE(NULLIF([操作人], N''), NULLIF([操作人ID], N''), N'未填写操作人') AS [操作人标识]
|
||||
FROM [dbo].[MES_设计报工_记录] WITH (UPDLOCK, HOLDLOCK)
|
||||
WHERE [DID] = @DID
|
||||
AND [结束时间] IS NULL
|
||||
) AS x;
|
||||
|
||||
IF NULLIF(@未结束人员, N'') IS NOT NULL
|
||||
BEGIN
|
||||
IF @初始事务数 = 0 ROLLBACK TRANSACTION;
|
||||
ELSE ROLLBACK TRANSACTION @保存点名称;
|
||||
SELECT CAST(0 AS int) AS [result], N'以下人员还未点击结束:' + @未结束人员 AS [message], @未结束人员 AS [未结束人员];
|
||||
RETURN;
|
||||
END
|
||||
|
||||
IF EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_任务] WHERE [DID] = @DID AND [单据状态] = N'已完成')
|
||||
BEGIN
|
||||
IF @初始事务数 = 0 ROLLBACK TRANSACTION;
|
||||
ELSE ROLLBACK TRANSACTION @保存点名称;
|
||||
SELECT CAST(0 AS int) AS [result], N'任务已完成' AS [message];
|
||||
RETURN;
|
||||
END
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_记录] WITH (HOLDLOCK) WHERE [DID] = @DID AND [结束时间] IS NOT NULL)
|
||||
BEGIN
|
||||
IF @初始事务数 = 0 ROLLBACK TRANSACTION;
|
||||
ELSE ROLLBACK TRANSACTION @保存点名称;
|
||||
SELECT CAST(0 AS int) AS [result], N'任务未产生已结束报工,不能完成' AS [message];
|
||||
RETURN;
|
||||
END
|
||||
|
||||
UPDATE [dbo].[MES_设计报工_任务]
|
||||
SET [单据状态] = N'已完成', [最后编辑人] = NULLIF(@操作人, N''), [最后编辑时间] = GETDATE()
|
||||
WHERE [DID] = @DID;
|
||||
|
||||
IF @初始事务数 = 0 COMMIT TRANSACTION;
|
||||
SELECT CAST(1 AS int) AS [result], N'完成成功' AS [message];
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
IF XACT_STATE() <> 0
|
||||
BEGIN
|
||||
IF @初始事务数 = 0 ROLLBACK TRANSACTION;
|
||||
ELSE IF XACT_STATE() = 1 ROLLBACK TRANSACTION @保存点名称;
|
||||
END
|
||||
SELECT CAST(0 AS int) AS [result], ERROR_MESSAGE() AS [message];
|
||||
END CATCH
|
||||
END
|
||||
GO
|
||||
76
db_backups/fix_design_report_delete_guard_20260709.sql
Normal file
76
db_backups/fix_design_report_delete_guard_20260709.sql
Normal file
@@ -0,0 +1,76 @@
|
||||
USE [YL_MESDB];
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE [dbo].[设计报工_任务_删除]
|
||||
@DID int
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
SET XACT_ABORT ON;
|
||||
|
||||
DECLARE @单据状态 nvarchar(50);
|
||||
DECLARE @删除行数 int;
|
||||
|
||||
BEGIN TRY
|
||||
BEGIN TRANSACTION;
|
||||
|
||||
SELECT @单据状态 = [单据状态]
|
||||
FROM [dbo].[MES_设计报工_任务] WITH (UPDLOCK, HOLDLOCK)
|
||||
WHERE [DID] = @DID;
|
||||
|
||||
IF @单据状态 IS NULL
|
||||
BEGIN
|
||||
ROLLBACK TRANSACTION;
|
||||
SELECT CAST(0 AS int) AS [result], N'删除失败:任务不存在或已被删除' AS [message];
|
||||
RETURN;
|
||||
END
|
||||
|
||||
IF EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_记录] WITH (HOLDLOCK) WHERE [DID] = @DID)
|
||||
BEGIN
|
||||
ROLLBACK TRANSACTION;
|
||||
SELECT CAST(0 AS int) AS [result], N'删除失败:该任务已有设计报工记录,不能删除' AS [message];
|
||||
RETURN;
|
||||
END
|
||||
|
||||
IF EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_校验记录] WITH (HOLDLOCK) WHERE [DID] = @DID)
|
||||
BEGIN
|
||||
ROLLBACK TRANSACTION;
|
||||
SELECT CAST(0 AS int) AS [result], N'删除失败:该任务已有设计工时校验记录,不能删除' AS [message];
|
||||
RETURN;
|
||||
END
|
||||
|
||||
IF @单据状态 = N'已完成'
|
||||
BEGIN
|
||||
ROLLBACK TRANSACTION;
|
||||
SELECT CAST(0 AS int) AS [result], N'删除失败:任务已完成,不能删除' AS [message];
|
||||
RETURN;
|
||||
END
|
||||
|
||||
IF @单据状态 <> N'待开始'
|
||||
BEGIN
|
||||
ROLLBACK TRANSACTION;
|
||||
SELECT CAST(0 AS int) AS [result], N'删除失败:任务状态为' + @单据状态 + N',不能删除' AS [message];
|
||||
RETURN;
|
||||
END
|
||||
|
||||
DELETE FROM [dbo].[MES_设计报工_任务]
|
||||
WHERE [DID] = @DID;
|
||||
|
||||
SET @删除行数 = @@ROWCOUNT;
|
||||
|
||||
IF @删除行数 <> 1
|
||||
BEGIN
|
||||
ROLLBACK TRANSACTION;
|
||||
SELECT CAST(0 AS int) AS [result], N'删除失败:任务不存在或已被删除' AS [message];
|
||||
RETURN;
|
||||
END
|
||||
|
||||
COMMIT TRANSACTION;
|
||||
SELECT CAST(1 AS int) AS [result], N'删除成功' AS [message];
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION;
|
||||
SELECT CAST(0 AS int) AS [result], N'删除失败:' + ERROR_MESSAGE() AS [message];
|
||||
END CATCH
|
||||
END
|
||||
GO
|
||||
76
db_backups/fix_device_add_company_code_message_20260629.sql
Normal file
76
db_backups/fix_device_add_company_code_message_20260629.sql
Normal file
@@ -0,0 +1,76 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[设备管理_设备信息_增加]
|
||||
@名称 nvarchar(50) = NULL,
|
||||
@公司编码 nvarchar(100) = NULL,
|
||||
@设备名称 nvarchar(50) = NULL,
|
||||
@设备型号 nvarchar(50) = NULL,
|
||||
@设备类型 nvarchar(50) = NULL,
|
||||
@设备信息 nvarchar(500) = NULL,
|
||||
@使用部门 nvarchar(100) = NULL,
|
||||
@入账日期 nvarchar(50) = NULL,
|
||||
@单位 nvarchar(50) = NULL,
|
||||
@数量 decimal(18, 4) = NULL,
|
||||
@状态 nvarchar(50) = NULL,
|
||||
@维修记录 nvarchar(1000) = NULL,
|
||||
@维保记录 nvarchar(1000) = NULL,
|
||||
@工位绑定 nvarchar(1000) = NULL,
|
||||
@主要设备 nvarchar(10) = NULL,
|
||||
@设备标准开机工时 decimal(18, 4) = NULL,
|
||||
@特种设备 nvarchar(10) = NULL,
|
||||
@证书有效期至 nvarchar(50) = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
IF ISNULL(@公司编码, N'') = N''
|
||||
BEGIN
|
||||
SELECT '0' AS result, N'公司编码不能为空' AS message;
|
||||
RETURN;
|
||||
END
|
||||
|
||||
INSERT INTO [dbo].[基础数据_设备工位点检表] (
|
||||
[名称],
|
||||
[公司编码],
|
||||
[设备名称],
|
||||
[设备型号],
|
||||
[设备类型],
|
||||
[设备信息],
|
||||
[使用部门],
|
||||
[入账日期],
|
||||
[单位],
|
||||
[数量],
|
||||
[状态],
|
||||
[维修记录],
|
||||
[维保记录],
|
||||
[工位绑定],
|
||||
[主要设备],
|
||||
[设备标准开机工时],
|
||||
[特种设备],
|
||||
[证书有效期至]
|
||||
)
|
||||
VALUES (
|
||||
@名称,
|
||||
@公司编码,
|
||||
@设备名称,
|
||||
@设备型号,
|
||||
@设备类型,
|
||||
@设备信息,
|
||||
@使用部门,
|
||||
TRY_CONVERT(date, NULLIF(@入账日期, N'')),
|
||||
@单位,
|
||||
@数量,
|
||||
@状态,
|
||||
@维修记录,
|
||||
@维保记录,
|
||||
@工位绑定,
|
||||
@主要设备,
|
||||
@设备标准开机工时,
|
||||
@特种设备,
|
||||
TRY_CONVERT(date, NULLIF(@证书有效期至, N''))
|
||||
);
|
||||
|
||||
SELECT '1' AS result;
|
||||
END
|
||||
GO
|
||||
96
db_backups/fix_device_excel_import_dates_20260629.sql
Normal file
96
db_backups/fix_device_excel_import_dates_20260629.sql
Normal file
@@ -0,0 +1,96 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
DECLARE @导入设备日期 TABLE ([公司编码] nvarchar(100), [入账日期] date);
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-11', '2007-01-01');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-21', '2007-01-02');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-6', '2008-12-24');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-1', '2011-01-01');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-19', '2011-01-01');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-3', '2011-09-30');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-8', '2012-03-30');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-2', '2014-01-01');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-14', '2014-06-06');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-4', '2015-03-18');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-16', '2015-04-13');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-44', '2015-05-18');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-13', '2016-02-02');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-5', '2018-05-12');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-10', '2018-08-27');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-33', '2020-04-16');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-23', '2020-06-30');
|
||||
INSERT INTO @导入设备日期 VALUES (N'已报废', '2020-06-30');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-25', '2020-11-06');
|
||||
INSERT INTO @导入设备日期 VALUES (N'加1#用', '2020-12-11');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-26', '2020-12-11');
|
||||
INSERT INTO @导入设备日期 VALUES (N'加3#用', '2020-12-11');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-31', '2021-02-02');
|
||||
INSERT INTO @导入设备日期 VALUES (N'RELLY-29', '2021-03-01');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-28', '2021-03-04');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-27', '2021-03-12');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-30', '2021-03-18');
|
||||
INSERT INTO @导入设备日期 VALUES (N'起重机/吊车', '2021-04-06');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-34', '2021-04-06');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-32', '2021-09-03');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-36', '2022-04-04');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-37', '2022-04-04');
|
||||
INSERT INTO @导入设备日期 VALUES (N'RELLY-38', '2022-04-30');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-39', '2022-06-23');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-40', '2022-12-10');
|
||||
INSERT INTO @导入设备日期 VALUES (N'加5#用', '2022-12-23');
|
||||
INSERT INTO @导入设备日期 VALUES (N'数7#数#8用', '2023-02-07');
|
||||
INSERT INTO @导入设备日期 VALUES (N'数7#数#8用', '2023-02-15');
|
||||
INSERT INTO @导入设备日期 VALUES (N'RELLY-41', '2023-03-13');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-17', '2023-04-23');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-42', '2023-08-07');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-43', '2023-08-15');
|
||||
INSERT INTO @导入设备日期 VALUES (N'普3#用', '2023-08-17');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-45', '2023-11-28');
|
||||
INSERT INTO @导入设备日期 VALUES (N'数7#数#8用', '2023-12-04');
|
||||
INSERT INTO @导入设备日期 VALUES (N'机器人用', '2024-01-29');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-46', '2024-06-30');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-47', '2024-06-30');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-50', '2024-06-30');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-49', '2024-06-30');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-60', '2024-09-30');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-61', '2024-09-30');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-59', '2024-11-26');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-52', '2024-11-26');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-58', '2024-11-26');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-63', '2024-11-26');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-51', '2024-11-30');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-55', '2024-11-30');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-62', '2024-11-30');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-57', '2024-12-11');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-53', '2024-12-26');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-64', '2024-12-04');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-65', '2024-12-04');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-66', '2024-12-04');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-67', '2025-01-02');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-56', '2025-02-14');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-24(注:替换原冷干机)', '2025-02-08');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-68', '2025-08-30');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-69', '2025-09-05');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-70', '2025-09-01');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-71', '2014-06-04');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-74', '2025-09-01');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-72', '2025-12-04');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-73', '2026-01-10');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-75', '2026-02-10');
|
||||
INSERT INTO @导入设备日期 VALUES (N'RELLY-54', '2025-12-01');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-76', '2025-12-11');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-77', '2026-03-09');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-78', NULL);
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-79', NULL);
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-80', NULL);
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-81', NULL);
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-82', NULL);
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-83', NULL);
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-84', NULL);
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-85', NULL);
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-86', NULL);
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-87', '2026-05-20');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-88', NULL);
|
||||
UPDATE target SET target.[入账日期] = source.[入账日期]
|
||||
FROM [dbo].[基础数据_设备工位点检表] target INNER JOIN @导入设备日期 source ON target.[公司编码] = source.[公司编码];
|
||||
SELECT COUNT(*) AS [设备信息日期修正后总数] FROM [dbo].[基础数据_设备工位点检表];
|
||||
GO
|
||||
120
db_backups/fix_device_information_date_edit_20260629.sql
Normal file
120
db_backups/fix_device_information_date_edit_20260629.sql
Normal file
@@ -0,0 +1,120 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[设备管理_设备信息_增加]
|
||||
@公司编码 nvarchar(100) = NULL,
|
||||
@设备名称 nvarchar(50) = NULL,
|
||||
@设备型号 nvarchar(50) = NULL,
|
||||
@设备类型 nvarchar(50) = NULL,
|
||||
@设备信息 nvarchar(500) = NULL,
|
||||
@使用部门 nvarchar(100) = NULL,
|
||||
@入账日期 nvarchar(50) = NULL,
|
||||
@单位 nvarchar(50) = NULL,
|
||||
@数量 decimal(18, 4) = NULL,
|
||||
@状态 nvarchar(50) = NULL,
|
||||
@维修记录 nvarchar(1000) = NULL,
|
||||
@维保记录 nvarchar(1000) = NULL,
|
||||
@工位绑定 nvarchar(1000) = NULL,
|
||||
@主要设备 nvarchar(10) = NULL,
|
||||
@设备标准开机工时 decimal(18, 4) = NULL,
|
||||
@特种设备 nvarchar(10) = NULL,
|
||||
@证书有效期至 nvarchar(50) = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
IF ISNULL(@公司编码, N'') = N''
|
||||
BEGIN
|
||||
SELECT '0' AS result, N'公司编码不能为空' AS message;
|
||||
RETURN;
|
||||
END
|
||||
|
||||
INSERT INTO [dbo].[基础数据_设备工位点检表] (
|
||||
[公司编码],
|
||||
[设备名称],
|
||||
[设备型号],
|
||||
[设备类型],
|
||||
[设备信息],
|
||||
[使用部门],
|
||||
[入账日期],
|
||||
[单位],
|
||||
[数量],
|
||||
[状态],
|
||||
[维修记录],
|
||||
[维保记录],
|
||||
[工位绑定],
|
||||
[主要设备],
|
||||
[设备标准开机工时],
|
||||
[特种设备],
|
||||
[证书有效期至]
|
||||
)
|
||||
VALUES (
|
||||
@公司编码,
|
||||
@设备名称,
|
||||
@设备型号,
|
||||
@设备类型,
|
||||
@设备信息,
|
||||
@使用部门,
|
||||
TRY_CONVERT(date, NULLIF(@入账日期, N'')),
|
||||
@单位,
|
||||
@数量,
|
||||
@状态,
|
||||
@维修记录,
|
||||
@维保记录,
|
||||
@工位绑定,
|
||||
@主要设备,
|
||||
@设备标准开机工时,
|
||||
@特种设备,
|
||||
TRY_CONVERT(date, NULLIF(@证书有效期至, N''))
|
||||
);
|
||||
|
||||
SELECT '1' AS result;
|
||||
END
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[设备管理_设备信息_编辑]
|
||||
@设备流水号 int = NULL,
|
||||
@公司编码 nvarchar(100) = NULL,
|
||||
@设备名称 nvarchar(50) = NULL,
|
||||
@设备型号 nvarchar(50) = NULL,
|
||||
@设备类型 nvarchar(50) = NULL,
|
||||
@设备信息 nvarchar(500) = NULL,
|
||||
@使用部门 nvarchar(100) = NULL,
|
||||
@入账日期 nvarchar(50) = NULL,
|
||||
@单位 nvarchar(50) = NULL,
|
||||
@数量 decimal(18, 4) = NULL,
|
||||
@状态 nvarchar(50) = NULL,
|
||||
@维修记录 nvarchar(1000) = NULL,
|
||||
@维保记录 nvarchar(1000) = NULL,
|
||||
@工位绑定 nvarchar(1000) = NULL,
|
||||
@主要设备 nvarchar(10) = NULL,
|
||||
@设备标准开机工时 decimal(18, 4) = NULL,
|
||||
@特种设备 nvarchar(10) = NULL,
|
||||
@证书有效期至 nvarchar(50) = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
UPDATE [dbo].[基础数据_设备工位点检表]
|
||||
SET
|
||||
[设备名称] = @设备名称,
|
||||
[设备型号] = @设备型号,
|
||||
[设备类型] = @设备类型,
|
||||
[设备信息] = @设备信息,
|
||||
[使用部门] = @使用部门,
|
||||
[入账日期] = TRY_CONVERT(date, NULLIF(@入账日期, N'')),
|
||||
[单位] = @单位,
|
||||
[数量] = @数量,
|
||||
[状态] = @状态,
|
||||
[维修记录] = @维修记录,
|
||||
[维保记录] = @维保记录,
|
||||
[工位绑定] = @工位绑定,
|
||||
[主要设备] = @主要设备,
|
||||
[设备标准开机工时] = @设备标准开机工时,
|
||||
[特种设备] = @特种设备,
|
||||
[证书有效期至] = TRY_CONVERT(date, NULLIF(@证书有效期至, N''))
|
||||
WHERE [设备流水号] = @设备流水号;
|
||||
|
||||
SELECT '1' AS result;
|
||||
END
|
||||
GO
|
||||
@@ -0,0 +1,280 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[生产管理_结算工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@工位 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL,
|
||||
@数据条数 INT = 100
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @TopCount INT = CASE WHEN ISNULL(@数据条数, 0) <= 0 THEN 100 ELSE @数据条数 END;
|
||||
|
||||
CREATE TABLE #基础数据
|
||||
(
|
||||
RowID INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
|
||||
TaskAID BIGINT NULL,
|
||||
开始时间 DATETIME NULL,
|
||||
操作内容 NVARCHAR(1000) NULL,
|
||||
操作类别 NVARCHAR(100) NULL,
|
||||
操作人 NVARCHAR(100) NULL,
|
||||
加工工时 INT NULL,
|
||||
操作数值 INT NULL,
|
||||
订单合同号 NVARCHAR(100) NULL,
|
||||
订单号 INT NOT NULL,
|
||||
订单行号 INT NULL,
|
||||
产品编码 NVARCHAR(1000) NULL,
|
||||
产品名称 NVARCHAR(1000) NULL,
|
||||
工序名称 NVARCHAR(100) NULL,
|
||||
工位名称 NVARCHAR(100) NULL,
|
||||
物料编号 NVARCHAR(1000) NULL,
|
||||
物料描述 NVARCHAR(1000) NULL
|
||||
);
|
||||
|
||||
INSERT INTO #基础数据
|
||||
(
|
||||
TaskAID,
|
||||
开始时间,
|
||||
操作内容,
|
||||
操作类别,
|
||||
操作人,
|
||||
加工工时,
|
||||
操作数值,
|
||||
订单合同号,
|
||||
订单号,
|
||||
订单行号,
|
||||
产品编码,
|
||||
产品名称,
|
||||
工序名称,
|
||||
工位名称,
|
||||
物料编号,
|
||||
物料描述
|
||||
)
|
||||
SELECT TOP (@TopCount)
|
||||
v.TaskAID,
|
||||
v.开始时间,
|
||||
v.操作内容,
|
||||
v.操作类别,
|
||||
v.操作人,
|
||||
v.加工工时,
|
||||
v.操作数值,
|
||||
v.订单合同号,
|
||||
q.订单编号 AS 订单号,
|
||||
q.订单行号,
|
||||
q.物料编码 AS 产品编码,
|
||||
q.物料名称 AS 产品名称,
|
||||
q.工序名称,
|
||||
COALESCE(NULLIF(q.指派对象, N''), v.工位名称) AS 工位名称,
|
||||
p.物料编号,
|
||||
p.物料描述
|
||||
FROM dbo.MES_接口_生产计划 AS p
|
||||
INNER JOIN dbo.MES_接口_生产计划_生产任务 AS q
|
||||
ON q.订单编号 = p.订单编号
|
||||
AND q.物料类型 = N'pit_Resource'
|
||||
INNER JOIN dbo.View_生产工时视图 AS v
|
||||
ON v.TaskAID = q.AID
|
||||
WHERE p.单据状态 IS NOT NULL
|
||||
AND p.订单编号 > 6000
|
||||
AND (@开始日期 IS NULL OR @开始日期 = N'' OR v.开始时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = N'' OR v.开始时间 < DATEADD(DAY, 1, @结束日期))
|
||||
AND (@合同号 IS NULL OR @合同号 = N'' OR v.订单合同号 LIKE N'%' + @合同号 + N'%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = N'' OR q.物料编码 LIKE N'%' + @产品编码 + N'%')
|
||||
AND (@订单号 IS NULL OR @订单号 = N'' OR CONVERT(NVARCHAR(50), q.订单编号) = @订单号)
|
||||
AND (@工位 IS NULL OR @工位 = N'' OR COALESCE(NULLIF(q.指派对象, N''), v.工位名称) LIKE N'%' + @工位 + N'%')
|
||||
ORDER BY q.订单编号 DESC, q.订单行号, v.开始时间 DESC;
|
||||
|
||||
CREATE INDEX IX_基础数据_TaskStart ON #基础数据 (TaskAID, 开始时间);
|
||||
|
||||
CREATE TABLE #操作人拼接
|
||||
(
|
||||
TaskAID BIGINT NOT NULL,
|
||||
开始时间 VARCHAR(19) NOT NULL,
|
||||
操作人 NVARCHAR(MAX) NULL,
|
||||
PRIMARY KEY (TaskAID, 开始时间)
|
||||
);
|
||||
|
||||
INSERT INTO #操作人拼接 (TaskAID, 开始时间, 操作人)
|
||||
SELECT
|
||||
TaskAID,
|
||||
开始时间,
|
||||
STRING_AGG(CONVERT(NVARCHAR(MAX), 操作人), N',') AS 操作人
|
||||
FROM
|
||||
(
|
||||
SELECT DISTINCT
|
||||
k.TaskAID,
|
||||
k.开始时间,
|
||||
LTRIM(RTRIM(s.value)) AS 操作人
|
||||
FROM
|
||||
(
|
||||
SELECT DISTINCT
|
||||
TaskAID,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间
|
||||
FROM #基础数据
|
||||
WHERE TaskAID IS NOT NULL
|
||||
AND 开始时间 IS NOT NULL
|
||||
) AS k
|
||||
INNER JOIN dbo.View_生产工时视图全部 AS v2
|
||||
ON v2.TaskAID = k.TaskAID
|
||||
AND v2.开始时间 >= CONVERT(DATETIME, k.开始时间, 120)
|
||||
AND v2.开始时间 < DATEADD(SECOND, 1, CONVERT(DATETIME, k.开始时间, 120))
|
||||
CROSS APPLY STRING_SPLIT(REPLACE(REPLACE(ISNULL(v2.操作人, N''), N',', N','), N'、', N','), N',') AS s
|
||||
WHERE ISNULL(v2.加工工时, 0) <= 0
|
||||
AND NULLIF(LTRIM(RTRIM(s.value)), N'') IS NOT NULL
|
||||
) AS x
|
||||
GROUP BY TaskAID, 开始时间;
|
||||
|
||||
;WITH 结算明细 AS
|
||||
(
|
||||
SELECT
|
||||
ISNULL(b.物料编号, b.产品编码) AS 物料编号,
|
||||
ISNULL(b.物料描述, b.产品名称) AS 物料描述,
|
||||
b.订单号,
|
||||
b.工位名称,
|
||||
b.TaskAID,
|
||||
b.工序名称,
|
||||
b.订单行号,
|
||||
ISNULL(o.操作人, N'') AS 操作人,
|
||||
CASE
|
||||
WHEN ISNULL(b.操作内容, N'') LIKE N'%辅助%' OR ISNULL(b.操作类别, N'') LIKE N'%辅助%' THEN N'辅助结束'
|
||||
ELSE N'报工'
|
||||
END AS 操作类型,
|
||||
CAST(ISNULL(b.加工工时, 0) / 60.0 / 60.0 AS DECIMAL(18, 4)) AS 工时小时,
|
||||
ISNULL(b.操作数值, 0) AS 完成数
|
||||
FROM #基础数据 AS b
|
||||
LEFT JOIN #操作人拼接 AS o
|
||||
ON o.TaskAID = b.TaskAID
|
||||
AND o.开始时间 = CONVERT(VARCHAR(19), b.开始时间, 120)
|
||||
),
|
||||
订单工位汇总基础 AS
|
||||
(
|
||||
SELECT
|
||||
物料编号,
|
||||
物料描述,
|
||||
订单号,
|
||||
工位名称,
|
||||
MAX(工序名称) AS 工序名称,
|
||||
订单行号 AS 工序顺序,
|
||||
COUNT(*) AS 记录数,
|
||||
SUM(CASE WHEN 操作类型 = N'报工' THEN 工时小时 ELSE 0 END) AS 报工工时,
|
||||
SUM(CASE WHEN 操作类型 = N'辅助结束' THEN 工时小时 ELSE 0 END) AS 主辅工时,
|
||||
SUM(CASE WHEN 操作类型 = N'报工' THEN 完成数 ELSE 0 END) AS 报工完成数,
|
||||
SUM(CASE WHEN 操作类型 = N'辅助结束' THEN 完成数 ELSE 0 END) AS 辅助完成数,
|
||||
SUM(工时小时) AS 合计工时
|
||||
FROM 结算明细
|
||||
GROUP BY 物料编号, 物料描述, 订单号, 工位名称, 订单行号
|
||||
),
|
||||
订单工位操作人 AS
|
||||
(
|
||||
SELECT
|
||||
物料编号,
|
||||
订单号,
|
||||
ISNULL(工位名称, N'') AS 工位名称,
|
||||
STRING_AGG(CONVERT(NVARCHAR(MAX), 操作人), N',') AS 操作人
|
||||
FROM
|
||||
(
|
||||
SELECT DISTINCT
|
||||
j.物料编号,
|
||||
j.订单号,
|
||||
ISNULL(j.工位名称, N'') AS 工位名称,
|
||||
LTRIM(RTRIM(s.value)) AS 操作人
|
||||
FROM 结算明细 AS j
|
||||
CROSS APPLY STRING_SPLIT(REPLACE(REPLACE(ISNULL(j.操作人, N''), N',', N','), N'、', N','), N',') AS s
|
||||
WHERE NULLIF(LTRIM(RTRIM(s.value)), N'') IS NOT NULL
|
||||
) AS x
|
||||
GROUP BY 物料编号, 订单号, ISNULL(工位名称, N'')
|
||||
),
|
||||
订单工位汇总 AS
|
||||
(
|
||||
SELECT
|
||||
b.物料编号,
|
||||
b.物料描述,
|
||||
b.订单号,
|
||||
b.工位名称,
|
||||
b.工序名称,
|
||||
b.工序顺序,
|
||||
b.记录数,
|
||||
b.报工工时,
|
||||
b.主辅工时,
|
||||
b.报工完成数,
|
||||
b.辅助完成数,
|
||||
b.合计工时,
|
||||
ISNULL(o.操作人, N'') AS 操作人
|
||||
FROM 订单工位汇总基础 AS b
|
||||
LEFT JOIN 订单工位操作人 AS o
|
||||
ON o.物料编号 = b.物料编号
|
||||
AND o.订单号 = b.订单号
|
||||
AND o.工位名称 = ISNULL(b.工位名称, N'')
|
||||
),
|
||||
物料汇总 AS
|
||||
(
|
||||
SELECT
|
||||
物料编号,
|
||||
物料描述,
|
||||
SUM(记录数) AS 记录数,
|
||||
SUM(报工工时) AS 报工工时,
|
||||
SUM(主辅工时) AS 主辅工时,
|
||||
SUM(报工完成数) AS 报工完成数,
|
||||
SUM(辅助完成数) AS 辅助完成数,
|
||||
SUM(合计工时) AS 合计工时
|
||||
FROM 订单工位汇总
|
||||
GROUP BY 物料编号, 物料描述
|
||||
)
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
物料编号 AS materialCode,
|
||||
物料描述 AS materialDesc,
|
||||
ISNULL(物料描述, N'') + N' ' + ISNULL(物料编号, N'') AS taskDescription,
|
||||
CAST(0 AS INT) AS productionOrderNo,
|
||||
N'' AS station,
|
||||
CAST(报工工时 AS VARCHAR(20)) AS reportWorkHours,
|
||||
CAST(主辅工时 AS VARCHAR(20)) AS auxiliaryWorkHours,
|
||||
CAST(报工完成数 AS VARCHAR(20)) AS reportFinishQty,
|
||||
CAST(辅助完成数 AS VARCHAR(20)) AS auxiliaryFinishQty,
|
||||
CAST(合计工时 AS VARCHAR(20)) AS totalWorkHours,
|
||||
CAST(CASE WHEN 报工完成数 > 0 THEN (报工工时 - 0 * 报工完成数) / 报工完成数 ELSE 0 END AS VARCHAR(20)) AS clampingTime,
|
||||
CAST(0 AS VARCHAR(20)) AS programTime,
|
||||
CAST(CASE WHEN 报工完成数 > 0 THEN 报工工时 / 报工完成数 ELSE 0 END AS VARCHAR(20)) AS settlementReportPieceHours,
|
||||
CAST(CASE WHEN 辅助完成数 > 0 THEN 主辅工时 / 辅助完成数 ELSE 0 END AS VARCHAR(20)) AS settlementAuxiliaryPieceHours,
|
||||
N'' AS operatorNames,
|
||||
CAST(记录数 AS VARCHAR(20)) AS recordCount,
|
||||
CAST(0 AS INT) AS 工序顺序
|
||||
FROM 物料汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
物料编号 AS materialCode,
|
||||
物料描述 AS materialDesc,
|
||||
ISNULL(物料描述, N'') + N' ' + ISNULL(物料编号, N'')
|
||||
+ CASE WHEN NULLIF(ISNULL(工序名称, N''), N'') IS NULL THEN N'' ELSE N' ' + 工序名称 END
|
||||
+ CASE WHEN 工序顺序 IS NULL THEN N'' ELSE N' 序' + CAST(工序顺序 AS VARCHAR(20)) END AS taskDescription,
|
||||
订单号 AS productionOrderNo,
|
||||
ISNULL(工位名称, N'') AS station,
|
||||
CAST(报工工时 AS VARCHAR(20)) AS reportWorkHours,
|
||||
CAST(主辅工时 AS VARCHAR(20)) AS auxiliaryWorkHours,
|
||||
CAST(报工完成数 AS VARCHAR(20)) AS reportFinishQty,
|
||||
CAST(辅助完成数 AS VARCHAR(20)) AS auxiliaryFinishQty,
|
||||
CAST(合计工时 AS VARCHAR(20)) AS totalWorkHours,
|
||||
CAST(CASE WHEN 报工完成数 > 0 THEN (报工工时 - 0 * 报工完成数) / 报工完成数 ELSE 0 END AS VARCHAR(20)) AS clampingTime,
|
||||
CAST(0 AS VARCHAR(20)) AS programTime,
|
||||
CAST(CASE WHEN 报工完成数 > 0 THEN 报工工时 / 报工完成数 ELSE 0 END AS VARCHAR(20)) AS settlementReportPieceHours,
|
||||
CAST(CASE WHEN 辅助完成数 > 0 THEN 主辅工时 / 辅助完成数 ELSE 0 END AS VARCHAR(20)) AS settlementAuxiliaryPieceHours,
|
||||
ISNULL(操作人, N'') AS operatorNames,
|
||||
CAST(记录数 AS VARCHAR(20)) AS recordCount,
|
||||
工序顺序
|
||||
FROM 订单工位汇总
|
||||
|
||||
ORDER BY productionOrderNo, 工序顺序, materialCode, [Level], station;
|
||||
END
|
||||
GO
|
||||
@@ -0,0 +1,178 @@
|
||||
USE [YL_MESDB];
|
||||
GO
|
||||
|
||||
SET NOCOUNT ON;
|
||||
SET XACT_ABORT ON;
|
||||
|
||||
DECLARE @TargetAccount int = 1;
|
||||
DECLARE @ResearchMenuId int;
|
||||
DECLARE @PreferredResearchMenuId int = 9;
|
||||
|
||||
BEGIN TRANSACTION;
|
||||
|
||||
SELECT TOP (1)
|
||||
@ResearchMenuId = [id]
|
||||
FROM [dbo].[登录基础数据_二级菜单] WITH (UPDLOCK, HOLDLOCK)
|
||||
WHERE [账号代码] = @TargetAccount
|
||||
AND [pid] = 0
|
||||
AND
|
||||
(
|
||||
[title] = N'研发管理'
|
||||
OR [path] = '/ResearchManagement'
|
||||
OR [name] = 'ResearchManagement'
|
||||
)
|
||||
ORDER BY
|
||||
CASE WHEN [title] = N'研发管理' THEN 0 ELSE 1 END,
|
||||
[id];
|
||||
|
||||
IF @ResearchMenuId IS NULL
|
||||
BEGIN
|
||||
IF NOT EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM [dbo].[登录基础数据_二级菜单] WITH (UPDLOCK, HOLDLOCK)
|
||||
WHERE [账号代码] = @TargetAccount
|
||||
AND [id] = @PreferredResearchMenuId
|
||||
)
|
||||
BEGIN
|
||||
SET @ResearchMenuId = @PreferredResearchMenuId;
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
SELECT @ResearchMenuId = ISNULL(MAX([id]), 0) + 1
|
||||
FROM [dbo].[登录基础数据_二级菜单] WITH (UPDLOCK, HOLDLOCK)
|
||||
WHERE [账号代码] = @TargetAccount;
|
||||
END;
|
||||
|
||||
INSERT INTO [dbo].[登录基础数据_二级菜单]
|
||||
([id], [pid], [path], [componet], [redirect], [name], [title], [icon], [账号代码], [模块代码], [是否启用], [操作时间])
|
||||
VALUES
|
||||
(@ResearchMenuId, 0, '/ResearchManagement', '/layout/Layout', NULL, 'ResearchManagement', N'研发管理', 'CreateProject', @TargetAccount, @ResearchMenuId, 1, GETDATE());
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
UPDATE [dbo].[登录基础数据_二级菜单]
|
||||
SET
|
||||
[pid] = 0,
|
||||
[path] = '/ResearchManagement',
|
||||
[componet] = '/layout/Layout',
|
||||
[redirect] = NULL,
|
||||
[name] = 'ResearchManagement',
|
||||
[title] = N'研发管理',
|
||||
[icon] = 'CreateProject',
|
||||
[模块代码] = [id],
|
||||
[是否启用] = 1,
|
||||
[操作时间] = GETDATE()
|
||||
WHERE [账号代码] = @TargetAccount
|
||||
AND [id] = @ResearchMenuId;
|
||||
END;
|
||||
|
||||
DECLARE @Menus TABLE
|
||||
(
|
||||
rn int IDENTITY(1,1) PRIMARY KEY,
|
||||
[path] varchar(100) NOT NULL,
|
||||
[componet] varchar(100) NOT NULL,
|
||||
[name] varchar(100) NOT NULL,
|
||||
[title] varchar(100) NOT NULL,
|
||||
[icon] varchar(100) NULL
|
||||
);
|
||||
|
||||
INSERT INTO @Menus ([path], [componet], [name], [title], [icon])
|
||||
VALUES
|
||||
('DesignReportTask/Task/index', '/ProductionManagement/DesignReportTask/Task/index', 'DesignReportTask', N'设计任务', 'DocumentImport'),
|
||||
('DesignReportTask/Report/index', '/ProductionManagement/DesignReportTask/Report/index', 'DesignReportWork', N'设计报工', 'DocumentImport'),
|
||||
('DesignReportTask/Check/index', '/ProductionManagement/DesignReportTask/Check/index', 'DesignReportCheck', N'设计工时校验', 'PayStateSearch'),
|
||||
('DesignReportTask/HoursReport/index', '/ProductionManagement/DesignReportTask/HoursReport/index', 'DesignReportHoursReport', N'设计工时报表', 'DimensionsSummaryReport');
|
||||
|
||||
DECLARE @BaseId int;
|
||||
|
||||
SELECT @BaseId = ISNULL(MAX([id]), 0)
|
||||
FROM [dbo].[登录基础数据_二级菜单] WITH (UPDLOCK, HOLDLOCK)
|
||||
WHERE [账号代码] = @TargetAccount;
|
||||
|
||||
;WITH MissingMenus AS
|
||||
(
|
||||
SELECT
|
||||
ROW_NUMBER() OVER (ORDER BY m.rn) AS new_rn,
|
||||
m.[path],
|
||||
m.[componet],
|
||||
m.[name],
|
||||
m.[title],
|
||||
m.[icon]
|
||||
FROM @Menus AS m
|
||||
WHERE NOT EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM [dbo].[登录基础数据_二级菜单] AS existing WITH (UPDLOCK, HOLDLOCK)
|
||||
WHERE existing.[账号代码] = @TargetAccount
|
||||
AND
|
||||
(
|
||||
existing.[path] = m.[path]
|
||||
OR existing.[componet] = m.[componet]
|
||||
OR existing.[title] = m.[title]
|
||||
)
|
||||
)
|
||||
)
|
||||
INSERT INTO [dbo].[登录基础数据_二级菜单]
|
||||
([id], [pid], [path], [componet], [redirect], [name], [title], [icon], [账号代码], [模块代码], [是否启用], [操作时间])
|
||||
SELECT
|
||||
@BaseId + new_rn,
|
||||
@ResearchMenuId,
|
||||
[path],
|
||||
[componet],
|
||||
NULL,
|
||||
[name],
|
||||
[title],
|
||||
[icon],
|
||||
@TargetAccount,
|
||||
@BaseId + new_rn,
|
||||
1,
|
||||
GETDATE()
|
||||
FROM MissingMenus;
|
||||
|
||||
UPDATE target
|
||||
SET
|
||||
target.[pid] = @ResearchMenuId,
|
||||
target.[path] = source.[path],
|
||||
target.[componet] = source.[componet],
|
||||
target.[redirect] = NULL,
|
||||
target.[name] = source.[name],
|
||||
target.[title] = source.[title],
|
||||
target.[icon] = source.[icon],
|
||||
target.[模块代码] = target.[id],
|
||||
target.[是否启用] = 1,
|
||||
target.[操作时间] = GETDATE()
|
||||
FROM [dbo].[登录基础数据_二级菜单] AS target
|
||||
INNER JOIN @Menus AS source
|
||||
ON target.[账号代码] = @TargetAccount
|
||||
AND
|
||||
(
|
||||
target.[path] = source.[path]
|
||||
OR target.[componet] = source.[componet]
|
||||
OR target.[title] = source.[title]
|
||||
);
|
||||
|
||||
COMMIT TRANSACTION;
|
||||
|
||||
SELECT
|
||||
[id],
|
||||
[pid],
|
||||
[path],
|
||||
[componet],
|
||||
[name],
|
||||
[title],
|
||||
[icon],
|
||||
[账号代码],
|
||||
[模块代码],
|
||||
[是否启用]
|
||||
FROM [dbo].[登录基础数据_二级菜单]
|
||||
WHERE [账号代码] = @TargetAccount
|
||||
AND
|
||||
(
|
||||
[id] = @ResearchMenuId
|
||||
OR [path] IN (SELECT [path] FROM @Menus)
|
||||
OR [componet] IN (SELECT [componet] FROM @Menus)
|
||||
OR [title] IN (SELECT [title] FROM @Menus)
|
||||
)
|
||||
ORDER BY [pid], [id];
|
||||
GO
|
||||
378
db_backups/optimize_settlement_workhours_query_20260707.sql
Normal file
378
db_backups/optimize_settlement_workhours_query_20260707.sql
Normal file
@@ -0,0 +1,378 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[生产管理_结算工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@工位 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL,
|
||||
@数据条数 INT = 100
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @TopCount INT = CASE WHEN ISNULL(@数据条数, 0) <= 0 THEN 100 ELSE @数据条数 END;
|
||||
|
||||
CREATE TABLE #任务
|
||||
(
|
||||
TaskAID BIGINT NOT NULL PRIMARY KEY,
|
||||
订单编号 INT NOT NULL,
|
||||
订单行号 INT NULL,
|
||||
产品编码 NVARCHAR(1000) NULL,
|
||||
产品名称 NVARCHAR(1000) NULL,
|
||||
工序名称 NVARCHAR(100) NULL,
|
||||
工位名称 NVARCHAR(100) NULL,
|
||||
物料编号 NVARCHAR(1000) NULL,
|
||||
物料描述 NVARCHAR(1000) NULL,
|
||||
合同号 NVARCHAR(100) NULL
|
||||
);
|
||||
|
||||
INSERT INTO #任务
|
||||
(
|
||||
TaskAID,
|
||||
订单编号,
|
||||
订单行号,
|
||||
产品编码,
|
||||
产品名称,
|
||||
工序名称,
|
||||
工位名称,
|
||||
物料编号,
|
||||
物料描述,
|
||||
合同号
|
||||
)
|
||||
SELECT TOP (@TopCount)
|
||||
q.AID AS TaskAID,
|
||||
q.订单编号,
|
||||
q.订单行号,
|
||||
q.物料编码 AS 产品编码,
|
||||
q.物料名称 AS 产品名称,
|
||||
q.工序名称,
|
||||
q.指派对象 AS 工位名称,
|
||||
p.物料编号,
|
||||
p.物料描述,
|
||||
p.合同号
|
||||
FROM dbo.MES_接口_生产计划 AS p
|
||||
INNER JOIN dbo.MES_接口_生产计划_生产任务 AS q
|
||||
ON q.订单编号 = p.订单编号
|
||||
AND q.物料类型 = N'pit_Resource'
|
||||
WHERE p.单据状态 IS NOT NULL
|
||||
AND p.订单编号 > 6000
|
||||
AND (@合同号 IS NULL OR @合同号 = N'' OR p.合同号 LIKE N'%' + @合同号 + N'%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = N'' OR q.物料编码 LIKE N'%' + @产品编码 + N'%')
|
||||
AND (@订单号 IS NULL OR @订单号 = N'' OR CONVERT(NVARCHAR(50), q.订单编号) = @订单号)
|
||||
AND (@工位 IS NULL OR @工位 = N'' OR q.指派对象 LIKE N'%' + @工位 + N'%')
|
||||
ORDER BY q.订单编号 DESC, q.订单行号;
|
||||
|
||||
CREATE TABLE #基础数据
|
||||
(
|
||||
TaskAID BIGINT NULL,
|
||||
开始时间 DATETIME NULL,
|
||||
操作内容 NVARCHAR(1000) NULL,
|
||||
操作类别 NVARCHAR(100) NULL,
|
||||
操作人 NVARCHAR(100) NULL,
|
||||
加工工时 INT NULL,
|
||||
操作数值 INT NULL,
|
||||
订单合同号 NVARCHAR(100) NULL,
|
||||
订单号 INT NOT NULL,
|
||||
订单行号 INT NULL,
|
||||
产品编码 NVARCHAR(1000) NULL,
|
||||
产品名称 NVARCHAR(1000) NULL,
|
||||
工序名称 NVARCHAR(100) NULL,
|
||||
工位名称 NVARCHAR(100) NULL,
|
||||
物料编号 NVARCHAR(1000) NULL,
|
||||
物料描述 NVARCHAR(1000) NULL
|
||||
);
|
||||
|
||||
INSERT INTO #基础数据
|
||||
(
|
||||
TaskAID,
|
||||
开始时间,
|
||||
操作内容,
|
||||
操作类别,
|
||||
操作人,
|
||||
加工工时,
|
||||
操作数值,
|
||||
订单合同号,
|
||||
订单号,
|
||||
订单行号,
|
||||
产品编码,
|
||||
产品名称,
|
||||
工序名称,
|
||||
工位名称,
|
||||
物料编号,
|
||||
物料描述
|
||||
)
|
||||
SELECT
|
||||
t.TaskAID,
|
||||
v.开始时间,
|
||||
v.操作内容,
|
||||
v.操作类别,
|
||||
v.操作人,
|
||||
v.加工工时,
|
||||
v.操作数值,
|
||||
t.合同号 AS 订单合同号,
|
||||
t.订单编号 AS 订单号,
|
||||
t.订单行号,
|
||||
t.产品编码,
|
||||
t.产品名称,
|
||||
t.工序名称,
|
||||
t.工位名称,
|
||||
t.物料编号,
|
||||
t.物料描述
|
||||
FROM #任务 AS t
|
||||
OUTER APPLY
|
||||
(
|
||||
SELECT
|
||||
ISNULL(c.操作类别, o.操作类别) AS 操作类别,
|
||||
ISNULL(c.操作人, o.操作人) AS 操作人,
|
||||
ISNULL(c.操作数值, o.操作数值) AS 操作数值,
|
||||
ISNULL(c.操作内容, o.操作内容) AS 操作内容,
|
||||
ISNULL(c.开始时间, o.开始时间) AS 开始时间,
|
||||
ISNULL(c.结束时间, o.结束时间) AS 结束时间,
|
||||
ISNULL(c.工时, o.实际工时) AS 加工工时
|
||||
FROM dbo.YL_加工中心_操作记录表 AS o
|
||||
LEFT JOIN dbo.生产管理_工时校验_校验工时表 AS c
|
||||
ON o.AID = c.报工记录id
|
||||
WHERE o.TaskAID = t.TaskAID
|
||||
AND o.工位名称 <> N'外协'
|
||||
AND (o.操作类别 <> N'报工' OR ISNULL(c.结束时间, o.结束时间) IS NOT NULL)
|
||||
AND (c.AID IS NOT NULL OR o.操作类别 <> N'收料')
|
||||
AND (
|
||||
c.AID IS NOT NULL
|
||||
OR o.操作内容 NOT IN (N'开始加工', N'辅助开始')
|
||||
OR o.结束时间 IS NOT NULL
|
||||
OR NOT EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM dbo.YL_加工中心_操作记录表 AS t2
|
||||
WHERE t2.操作内容 IN (N'报工', N'辅助结束')
|
||||
AND t2.TaskAID = o.TaskAID
|
||||
AND t2.开始时间 = o.开始时间
|
||||
)
|
||||
)
|
||||
AND (
|
||||
o.操作内容 NOT IN (N'辅助结束')
|
||||
OR NOT EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM dbo.YL_加工中心_操作记录表 AS p
|
||||
WHERE p.操作内容 = N'辅助结束'
|
||||
AND p.TaskAID = o.TaskAID
|
||||
AND p.结束时间 IS NULL
|
||||
)
|
||||
)
|
||||
AND (
|
||||
o.操作内容 NOT IN (N'开始加工', N'辅助开始')
|
||||
OR NOT EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM dbo.YL_加工中心_操作记录表 AS p
|
||||
WHERE p.操作内容 = N'暂停'
|
||||
AND p.TaskAID = o.TaskAID
|
||||
AND p.结束时间 = o.开始时间
|
||||
AND p.操作人 = o.操作人
|
||||
)
|
||||
)
|
||||
AND (
|
||||
o.操作数值 IS NOT NULL
|
||||
OR (o.操作内容 IN (N'开始加工', N'辅助开始') AND o.结束时间 IS NULL)
|
||||
OR o.操作描述 <> N''
|
||||
)
|
||||
) AS v
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = N'' OR v.开始时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = N'' OR v.开始时间 < DATEADD(DAY, 1, @结束日期));
|
||||
|
||||
CREATE INDEX IX_基础数据_TaskStart ON #基础数据 (TaskAID, 开始时间);
|
||||
|
||||
CREATE TABLE #操作人拼接
|
||||
(
|
||||
TaskAID BIGINT NOT NULL,
|
||||
开始时间 VARCHAR(19) NOT NULL,
|
||||
操作人 NVARCHAR(MAX) NULL,
|
||||
PRIMARY KEY (TaskAID, 开始时间)
|
||||
);
|
||||
|
||||
INSERT INTO #操作人拼接 (TaskAID, 开始时间, 操作人)
|
||||
SELECT
|
||||
TaskAID,
|
||||
开始时间,
|
||||
STRING_AGG(CONVERT(NVARCHAR(MAX), 操作人), N',') AS 操作人
|
||||
FROM
|
||||
(
|
||||
SELECT DISTINCT
|
||||
k.TaskAID,
|
||||
k.开始时间,
|
||||
LTRIM(RTRIM(s.value)) AS 操作人
|
||||
FROM
|
||||
(
|
||||
SELECT DISTINCT
|
||||
TaskAID,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间
|
||||
FROM #基础数据
|
||||
WHERE TaskAID IS NOT NULL
|
||||
AND 开始时间 IS NOT NULL
|
||||
) AS k
|
||||
INNER JOIN dbo.YL_加工中心_操作记录表 AS o
|
||||
ON o.TaskAID = k.TaskAID
|
||||
AND o.开始时间 >= CONVERT(DATETIME, k.开始时间, 120)
|
||||
AND o.开始时间 < DATEADD(SECOND, 1, CONVERT(DATETIME, k.开始时间, 120))
|
||||
LEFT JOIN dbo.生产管理_工时校验_校验工时表 AS c
|
||||
ON o.AID = c.报工记录id
|
||||
CROSS APPLY STRING_SPLIT(REPLACE(REPLACE(ISNULL(ISNULL(c.操作人, o.操作人), N''), N',', N','), N'、', N','), N',') AS s
|
||||
WHERE ISNULL(ISNULL(c.工时, o.实际工时), 0) <= 0
|
||||
AND NULLIF(LTRIM(RTRIM(s.value)), N'') IS NOT NULL
|
||||
) AS x
|
||||
GROUP BY TaskAID, 开始时间;
|
||||
|
||||
;WITH 结算明细 AS
|
||||
(
|
||||
SELECT
|
||||
ISNULL(b.物料编号, b.产品编码) AS 物料编号,
|
||||
ISNULL(b.物料描述, b.产品名称) AS 物料描述,
|
||||
b.订单号,
|
||||
b.工位名称,
|
||||
b.TaskAID,
|
||||
b.工序名称,
|
||||
b.订单行号,
|
||||
ISNULL(o.操作人, N'') AS 操作人,
|
||||
CASE
|
||||
WHEN ISNULL(b.操作内容, N'') LIKE N'%辅助%' OR ISNULL(b.操作类别, N'') LIKE N'%辅助%' THEN N'辅助结束'
|
||||
ELSE N'报工'
|
||||
END AS 操作类型,
|
||||
CAST(ISNULL(b.加工工时, 0) / 60.0 / 60.0 AS DECIMAL(18, 4)) AS 工时小时,
|
||||
ISNULL(b.操作数值, 0) AS 完成数
|
||||
FROM #基础数据 AS b
|
||||
LEFT JOIN #操作人拼接 AS o
|
||||
ON o.TaskAID = b.TaskAID
|
||||
AND o.开始时间 = CONVERT(VARCHAR(19), b.开始时间, 120)
|
||||
),
|
||||
订单工位汇总基础 AS
|
||||
(
|
||||
SELECT
|
||||
物料编号,
|
||||
物料描述,
|
||||
订单号,
|
||||
工位名称,
|
||||
MAX(工序名称) AS 工序名称,
|
||||
订单行号 AS 工序顺序,
|
||||
COUNT(*) AS 记录数,
|
||||
SUM(CASE WHEN 操作类型 = N'报工' THEN 工时小时 ELSE 0 END) AS 报工工时,
|
||||
SUM(CASE WHEN 操作类型 = N'辅助结束' THEN 工时小时 ELSE 0 END) AS 主辅工时,
|
||||
SUM(CASE WHEN 操作类型 = N'报工' THEN 完成数 ELSE 0 END) AS 报工完成数,
|
||||
SUM(CASE WHEN 操作类型 = N'辅助结束' THEN 完成数 ELSE 0 END) AS 辅助完成数,
|
||||
SUM(工时小时) AS 合计工时
|
||||
FROM 结算明细
|
||||
GROUP BY 物料编号, 物料描述, 订单号, 工位名称, 订单行号
|
||||
),
|
||||
订单工位操作人 AS
|
||||
(
|
||||
SELECT
|
||||
物料编号,
|
||||
订单号,
|
||||
ISNULL(工位名称, N'') AS 工位名称,
|
||||
STRING_AGG(CONVERT(NVARCHAR(MAX), 操作人), N',') AS 操作人
|
||||
FROM
|
||||
(
|
||||
SELECT DISTINCT
|
||||
j.物料编号,
|
||||
j.订单号,
|
||||
ISNULL(j.工位名称, N'') AS 工位名称,
|
||||
LTRIM(RTRIM(s.value)) AS 操作人
|
||||
FROM 结算明细 AS j
|
||||
CROSS APPLY STRING_SPLIT(REPLACE(REPLACE(ISNULL(j.操作人, N''), N',', N','), N'、', N','), N',') AS s
|
||||
WHERE NULLIF(LTRIM(RTRIM(s.value)), N'') IS NOT NULL
|
||||
) AS x
|
||||
GROUP BY 物料编号, 订单号, ISNULL(工位名称, N'')
|
||||
),
|
||||
订单工位汇总 AS
|
||||
(
|
||||
SELECT
|
||||
b.物料编号,
|
||||
b.物料描述,
|
||||
b.订单号,
|
||||
b.工位名称,
|
||||
b.工序名称,
|
||||
b.工序顺序,
|
||||
b.记录数,
|
||||
b.报工工时,
|
||||
b.主辅工时,
|
||||
b.报工完成数,
|
||||
b.辅助完成数,
|
||||
b.合计工时,
|
||||
ISNULL(o.操作人, N'') AS 操作人
|
||||
FROM 订单工位汇总基础 AS b
|
||||
LEFT JOIN 订单工位操作人 AS o
|
||||
ON o.物料编号 = b.物料编号
|
||||
AND o.订单号 = b.订单号
|
||||
AND o.工位名称 = ISNULL(b.工位名称, N'')
|
||||
),
|
||||
物料汇总 AS
|
||||
(
|
||||
SELECT
|
||||
物料编号,
|
||||
物料描述,
|
||||
SUM(记录数) AS 记录数,
|
||||
SUM(报工工时) AS 报工工时,
|
||||
SUM(主辅工时) AS 主辅工时,
|
||||
SUM(报工完成数) AS 报工完成数,
|
||||
SUM(辅助完成数) AS 辅助完成数,
|
||||
SUM(合计工时) AS 合计工时
|
||||
FROM 订单工位汇总
|
||||
GROUP BY 物料编号, 物料描述
|
||||
)
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
物料编号 AS materialCode,
|
||||
物料描述 AS materialDesc,
|
||||
ISNULL(物料描述, N'') + N' ' + ISNULL(物料编号, N'') AS taskDescription,
|
||||
CAST(0 AS INT) AS productionOrderNo,
|
||||
N'' AS station,
|
||||
CAST(报工工时 AS VARCHAR(20)) AS reportWorkHours,
|
||||
CAST(主辅工时 AS VARCHAR(20)) AS auxiliaryWorkHours,
|
||||
CAST(报工完成数 AS VARCHAR(20)) AS reportFinishQty,
|
||||
CAST(辅助完成数 AS VARCHAR(20)) AS auxiliaryFinishQty,
|
||||
CAST(合计工时 AS VARCHAR(20)) AS totalWorkHours,
|
||||
CAST(CASE WHEN 报工完成数 > 0 THEN (报工工时 - 0 * 报工完成数) / 报工完成数 ELSE 0 END AS VARCHAR(20)) AS clampingTime,
|
||||
CAST(0 AS VARCHAR(20)) AS programTime,
|
||||
CAST(CASE WHEN 报工完成数 > 0 THEN 报工工时 / 报工完成数 ELSE 0 END AS VARCHAR(20)) AS settlementReportPieceHours,
|
||||
CAST(CASE WHEN 辅助完成数 > 0 THEN 主辅工时 / 辅助完成数 ELSE 0 END AS VARCHAR(20)) AS settlementAuxiliaryPieceHours,
|
||||
N'' AS operatorNames,
|
||||
CAST(记录数 AS VARCHAR(20)) AS recordCount,
|
||||
CAST(0 AS INT) AS 工序顺序
|
||||
FROM 物料汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
物料编号 AS materialCode,
|
||||
物料描述 AS materialDesc,
|
||||
ISNULL(物料描述, N'') + N' ' + ISNULL(物料编号, N'')
|
||||
+ CASE WHEN NULLIF(ISNULL(工序名称, N''), N'') IS NULL THEN N'' ELSE N' ' + 工序名称 END
|
||||
+ CASE WHEN 工序顺序 IS NULL THEN N'' ELSE N' 序' + CAST(工序顺序 AS VARCHAR(20)) END AS taskDescription,
|
||||
订单号 AS productionOrderNo,
|
||||
ISNULL(工位名称, N'') AS station,
|
||||
CAST(报工工时 AS VARCHAR(20)) AS reportWorkHours,
|
||||
CAST(主辅工时 AS VARCHAR(20)) AS auxiliaryWorkHours,
|
||||
CAST(报工完成数 AS VARCHAR(20)) AS reportFinishQty,
|
||||
CAST(辅助完成数 AS VARCHAR(20)) AS auxiliaryFinishQty,
|
||||
CAST(合计工时 AS VARCHAR(20)) AS totalWorkHours,
|
||||
CAST(CASE WHEN 报工完成数 > 0 THEN (报工工时 - 0 * 报工完成数) / 报工完成数 ELSE 0 END AS VARCHAR(20)) AS clampingTime,
|
||||
CAST(0 AS VARCHAR(20)) AS programTime,
|
||||
CAST(CASE WHEN 报工完成数 > 0 THEN 报工工时 / 报工完成数 ELSE 0 END AS VARCHAR(20)) AS settlementReportPieceHours,
|
||||
CAST(CASE WHEN 辅助完成数 > 0 THEN 主辅工时 / 辅助完成数 ELSE 0 END AS VARCHAR(20)) AS settlementAuxiliaryPieceHours,
|
||||
ISNULL(操作人, N'') AS operatorNames,
|
||||
CAST(记录数 AS VARCHAR(20)) AS recordCount,
|
||||
工序顺序
|
||||
FROM 订单工位汇总
|
||||
|
||||
ORDER BY productionOrderNo, 工序顺序, materialCode, [Level], station;
|
||||
END
|
||||
GO
|
||||
@@ -0,0 +1,94 @@
|
||||
CREATE PROCEDURE [dbo].[sp_xt_pagesplit]
|
||||
@tbname sysname,
|
||||
@fieldkey sysname,
|
||||
@where nvarchar(1000),
|
||||
@fieldshow nvarchar(max),
|
||||
@fieldOrder nvarchar(1000),
|
||||
@PageCurrent int=1,
|
||||
@PageSize int=30,
|
||||
@PageCount int OUTPUT,
|
||||
@ItemCount int output
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON
|
||||
|
||||
-- 参数检查
|
||||
IF ISNULL(@PageCurrent,0)<1 SET @PageCurrent=1
|
||||
IF ISNULL(@PageSize,0)<1 SET @PageSize=10
|
||||
IF ISNULL(@FieldShow,N'')=N'' SET @FieldShow=N'*'
|
||||
|
||||
-- 处理排序
|
||||
DECLARE @OrderBy nvarchar(1000)
|
||||
IF ISNULL(@FieldOrder,N'')=N''
|
||||
SET @OrderBy = N''
|
||||
ELSE
|
||||
SET @OrderBy = N'ORDER BY ' + LTRIM(@FieldOrder)
|
||||
|
||||
-- 处理条件 - 重要:去掉WHERE关键字,只保留条件内容
|
||||
DECLARE @WhereCondition nvarchar(1000)
|
||||
IF ISNULL(@Where,N'')=N''
|
||||
SET @WhereCondition = N''
|
||||
ELSE
|
||||
SET @WhereCondition = @Where -- 只保存条件内容,不加WHERE
|
||||
|
||||
-- 清理字段名
|
||||
SET @fieldkey = LTRIM(RTRIM(@fieldkey))
|
||||
DECLARE @quotedKey NVARCHAR(128) = QUOTENAME(@fieldkey)
|
||||
|
||||
-- 计算总记录数
|
||||
DECLARE @sql nvarchar(MAX)
|
||||
IF @WhereCondition = N''
|
||||
SET @sql = N'SELECT @ItemCount = COUNT(*) FROM ' + @tbname
|
||||
ELSE
|
||||
SET @sql = N'SELECT @ItemCount = COUNT(*) FROM ' + @tbname + N' WHERE ' + @WhereCondition
|
||||
|
||||
EXEC sp_executesql @sql, N'@ItemCount int OUTPUT', @ItemCount OUTPUT
|
||||
|
||||
-- 计算总页数
|
||||
SET @PageCount = CEILING((@ItemCount + 0.0) / @PageSize)
|
||||
IF @PageCount = 0 SET @PageCount = 1
|
||||
|
||||
-- 返回当前页数据
|
||||
DECLARE @TopRows INT = (@PageCurrent - 1) * @PageSize
|
||||
|
||||
IF @PageCurrent = 1
|
||||
BEGIN
|
||||
-- 第一页
|
||||
IF @WhereCondition = N''
|
||||
SET @sql = N'SELECT TOP ' + CONVERT(NVARCHAR, @PageSize) + N' ' + @FieldShow + N'
|
||||
FROM ' + @tbname + N' ' + @OrderBy
|
||||
ELSE
|
||||
SET @sql = N'SELECT TOP ' + CONVERT(NVARCHAR, @PageSize) + N' ' + @FieldShow + N'
|
||||
FROM ' + @tbname + N' WHERE ' + @WhereCondition + N' ' + @OrderBy
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
-- 其他页
|
||||
IF @WhereCondition = N''
|
||||
BEGIN
|
||||
-- 无条件的情况
|
||||
SET @sql = N'SELECT TOP ' + CONVERT(NVARCHAR, @PageSize) + N' ' + @FieldShow + N'
|
||||
FROM ' + @tbname + N'
|
||||
WHERE ' + @quotedKey + N' NOT IN (
|
||||
SELECT TOP ' + CONVERT(NVARCHAR, @TopRows) + N' ' + @quotedKey + N'
|
||||
FROM ' + @tbname + N' ' + @OrderBy + N'
|
||||
) ' + @OrderBy
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
-- 有条件的情况
|
||||
SET @sql = N'SELECT TOP ' + CONVERT(NVARCHAR, @PageSize) + N' ' + @FieldShow + N'
|
||||
FROM ' + @tbname + N'
|
||||
WHERE ' + @quotedKey + N' NOT IN (
|
||||
SELECT TOP ' + CONVERT(NVARCHAR, @TopRows) + N' ' + @quotedKey + N'
|
||||
FROM ' + @tbname + N' WHERE ' + @WhereCondition + N' ' + @OrderBy + N'
|
||||
) AND ' + @WhereCondition + N' ' + @OrderBy
|
||||
END
|
||||
END
|
||||
|
||||
-- 调试用,可以注释掉
|
||||
-- PRINT @sql
|
||||
|
||||
-- 执行
|
||||
EXEC(@sql)
|
||||
END
|
||||
@@ -0,0 +1,208 @@
|
||||
|
||||
CREATE PROCEDURE [dbo].[工时统计_作业者工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@工时类型 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH 人员班组 AS (
|
||||
SELECT
|
||||
LTRIM(RTRIM(Personnel_Name)) AS Personnel_Name,
|
||||
MAX(NULLIF(LTRIM(RTRIM(班组)), '')) AS 班组
|
||||
FROM [YL_MESDB].[dbo].[登录基础数据_人员信息]
|
||||
WHERE Personnel_Name IS NOT NULL
|
||||
GROUP BY LTRIM(RTRIM(Personnel_Name))
|
||||
),
|
||||
工时基础 AS (
|
||||
SELECT
|
||||
v.*,
|
||||
ISNULL(p.班组, '未分类') AS 工时类型,
|
||||
CASE
|
||||
WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.加工工时, 0) > 0 THEN ISNULL(v.加工工时, 0)
|
||||
WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.总时长, 0) > 0 AND ISNULL(v.加工工时, 0) = 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 LIKE '%加班%' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 = '开始加工' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 = '异常' THEN -ISNULL(v.总时长, 0)
|
||||
ELSE 0
|
||||
END AS 有效工时秒
|
||||
FROM [dbo].[View_生产工时视图全部] v
|
||||
LEFT JOIN 人员班组 p ON LTRIM(RTRIM(v.操作人)) = p.Personnel_Name
|
||||
),
|
||||
筛选明细 AS (
|
||||
SELECT *
|
||||
FROM 工时基础
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 开始时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 结束时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND (@工时类型 IS NULL OR @工时类型 = '' OR 工时类型 = @工时类型)
|
||||
AND ISNULL(阶段标识, 0) != -1
|
||||
),
|
||||
TaskStart报工数量 AS (
|
||||
SELECT
|
||||
TaskAID,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
MAX(CASE
|
||||
WHEN 操作类别 NOT IN ('异常') THEN ISNULL(操作数值, 0)
|
||||
WHEN 操作类别 = '异常' THEN -ISNULL(操作数值, 0)
|
||||
ELSE 0
|
||||
END) AS 报工数量
|
||||
FROM [dbo].[View_生产工时视图全部]
|
||||
WHERE 操作类别编号 = 6
|
||||
GROUP BY TaskAID, CONVERT(VARCHAR(19), 开始时间, 120)
|
||||
),
|
||||
报工明细 AS (
|
||||
SELECT
|
||||
b.操作人,
|
||||
CONVERT(VARCHAR(10), b.开始时间, 120) AS 工作日期,
|
||||
b.TaskAID,
|
||||
b.订单合同号 AS 合同号,
|
||||
b.订单号,
|
||||
b.产品编码,
|
||||
b.产品名称,
|
||||
b.工序名称,
|
||||
b.工时类型,
|
||||
b.计划数量,
|
||||
b.工位名称 AS 指派对象,
|
||||
ISNULL(q.报工数量, CASE
|
||||
WHEN b.操作类别 NOT IN ('异常') THEN ISNULL(b.操作数值, 0)
|
||||
WHEN b.操作类别 = '异常' THEN -ISNULL(b.操作数值, 0)
|
||||
ELSE 0
|
||||
END) AS 报工数量,
|
||||
CONVERT(VARCHAR(19), b.开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), b.结束时间, 120) AS 结束时间,
|
||||
CAST(b.有效工时秒 / 60.0 / 60.0 AS DECIMAL(10,2)) AS 工时小时,
|
||||
b.异常说明,
|
||||
b.工序说明,
|
||||
b.操作类别
|
||||
FROM 筛选明细 b
|
||||
LEFT JOIN TaskStart报工数量 q
|
||||
ON q.TaskAID = b.TaskAID
|
||||
AND q.开始时间 = CONVERT(VARCHAR(19), b.开始时间, 120)
|
||||
),
|
||||
操作人报工数量 AS (
|
||||
SELECT 操作人, SUM(报工数量) AS 报工数量
|
||||
FROM (
|
||||
SELECT 操作人, TaskAID, 开始时间, MAX(报工数量) AS 报工数量
|
||||
FROM 报工明细
|
||||
WHERE TaskAID IS NOT NULL AND 开始时间 IS NOT NULL AND 开始时间 != ''
|
||||
GROUP BY 操作人, TaskAID, 开始时间
|
||||
) x
|
||||
GROUP BY 操作人
|
||||
),
|
||||
日期报工数量 AS (
|
||||
SELECT 操作人, 工作日期, SUM(报工数量) AS 报工数量
|
||||
FROM (
|
||||
SELECT 操作人, 工作日期, TaskAID, 开始时间, MAX(报工数量) AS 报工数量
|
||||
FROM 报工明细
|
||||
WHERE TaskAID IS NOT NULL AND 开始时间 IS NOT NULL AND 开始时间 != ''
|
||||
GROUP BY 操作人, 工作日期, TaskAID, 开始时间
|
||||
) x
|
||||
GROUP BY 操作人, 工作日期
|
||||
),
|
||||
操作人汇总 AS (
|
||||
SELECT
|
||||
操作人,
|
||||
COUNT(*) AS 报工次数,
|
||||
CAST(SUM(有效工时秒) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时
|
||||
FROM 筛选明细
|
||||
GROUP BY 操作人
|
||||
),
|
||||
日期汇总 AS (
|
||||
SELECT
|
||||
操作人,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
COUNT(*) AS 报工次数,
|
||||
CAST(SUM(有效工时秒) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 工时小时
|
||||
FROM 筛选明细
|
||||
GROUP BY 操作人, CONVERT(VARCHAR(10), 开始时间, 120)
|
||||
)
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
s.操作人 AS operator,
|
||||
'' AS dateLabel,
|
||||
CAST(s.报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(ISNULL(q.报工数量, 0) AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
CAST(NULL AS DECIMAL(19,6)) AS 计划数量,
|
||||
'' AS 工时类型,
|
||||
'' AS 指派对象,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
'' AS 异常说明,
|
||||
'' AS 工序说明,
|
||||
'' AS 操作类别,
|
||||
CAST(s.总工时小时 AS VARCHAR(20)) AS workHours,
|
||||
'' AS TaskAID
|
||||
FROM 操作人汇总 s
|
||||
LEFT JOIN 操作人报工数量 q ON q.操作人 = s.操作人
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
s.操作人 AS operator,
|
||||
s.工作日期 AS dateLabel,
|
||||
CAST(s.报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(ISNULL(q.报工数量, 0) AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
CAST(NULL AS DECIMAL(19,6)) AS 计划数量,
|
||||
'' AS 工时类型,
|
||||
'' AS 指派对象,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
'' AS 异常说明,
|
||||
'' AS 工序说明,
|
||||
'' AS 操作类别,
|
||||
CAST(s.工时小时 AS VARCHAR(20)) AS workHours,
|
||||
'' AS TaskAID
|
||||
FROM 日期汇总 s
|
||||
LEFT JOIN 日期报工数量 q ON q.操作人 = s.操作人 AND q.工作日期 = s.工作日期
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
3 AS [Level],
|
||||
操作人 AS operator,
|
||||
工作日期 AS dateLabel,
|
||||
'' AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
ISNULL(合同号, '') AS contractNo,
|
||||
ISNULL(订单号, '') AS orderNo,
|
||||
ISNULL(产品编码, '') AS productCode,
|
||||
ISNULL(产品名称, '') AS productName,
|
||||
ISNULL(工序名称, '') AS processName,
|
||||
计划数量 AS 计划数量,
|
||||
ISNULL(工时类型, '') AS 工时类型,
|
||||
ISNULL(指派对象, '') AS 指派对象,
|
||||
ISNULL(开始时间, '') AS startTime,
|
||||
ISNULL(结束时间, '') AS endTime,
|
||||
ISNULL(异常说明, '') AS 异常说明,
|
||||
ISNULL(工序说明, '') AS 工序说明,
|
||||
ISNULL(操作类别, '') AS 操作类别,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours,
|
||||
CAST(TaskAID AS VARCHAR(50)) AS TaskAID
|
||||
FROM 报工明细
|
||||
|
||||
ORDER BY operator, dateLabel, [Level], startTime
|
||||
END
|
||||
|
||||
@@ -0,0 +1,192 @@
|
||||
|
||||
CREATE PROCEDURE [dbo].[工时统计_作业者工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@工时类型 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH 人员班组 AS (
|
||||
SELECT
|
||||
LTRIM(RTRIM(Personnel_Name)) AS Personnel_Name,
|
||||
MAX(NULLIF(LTRIM(RTRIM(班组)), '')) AS 班组
|
||||
FROM [YL_MESDB].[dbo].[登录基础数据_人员信息]
|
||||
WHERE Personnel_Name IS NOT NULL
|
||||
GROUP BY LTRIM(RTRIM(Personnel_Name))
|
||||
),
|
||||
工时基础 AS (
|
||||
SELECT
|
||||
v.*,
|
||||
ISNULL(p.班组, '未分类') AS 工时类型,
|
||||
CASE
|
||||
WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.加工工时, 0) > 0 THEN ISNULL(v.加工工时, 0)
|
||||
WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.总时长, 0) > 0 AND ISNULL(v.加工工时, 0) = 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 LIKE '%加班%' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 = '开始加工' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 = '异常' THEN -ISNULL(v.总时长, 0)
|
||||
ELSE 0
|
||||
END AS 有效工时秒
|
||||
FROM [dbo].[View_生产工时视图全部] v
|
||||
LEFT JOIN 人员班组 p ON LTRIM(RTRIM(v.操作人)) = p.Personnel_Name
|
||||
),
|
||||
操作人汇总 AS (
|
||||
SELECT
|
||||
操作人,
|
||||
COUNT(*) AS 报工次数,
|
||||
SUM(CASE
|
||||
WHEN 操作类别 NOT IN ('异常') THEN 操作数值
|
||||
WHEN 操作类别 = '异常' THEN -操作数值
|
||||
ELSE 0
|
||||
END) AS 报工数量,
|
||||
CAST(SUM(有效工时秒) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时
|
||||
FROM 工时基础
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 开始时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 结束时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND (@工时类型 IS NULL OR @工时类型 = '' OR 工时类型 = @工时类型)
|
||||
AND ISNULL(阶段标识, 0) != -1
|
||||
GROUP BY 操作人
|
||||
),
|
||||
日期汇总 AS (
|
||||
SELECT
|
||||
操作人,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
COUNT(*) AS 报工次数,
|
||||
SUM(CASE
|
||||
WHEN 操作类别 NOT IN ('异常') THEN 操作数值
|
||||
WHEN 操作类别 = '异常' THEN -操作数值
|
||||
ELSE 0
|
||||
END) AS 报工数量,
|
||||
CAST(SUM(有效工时秒) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 工时小时
|
||||
FROM 工时基础
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 开始时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 结束时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND (@工时类型 IS NULL OR @工时类型 = '' OR 工时类型 = @工时类型)
|
||||
AND ISNULL(阶段标识, 0) != -1
|
||||
GROUP BY 操作人, CONVERT(VARCHAR(10), 开始时间, 120)
|
||||
),
|
||||
报工明细 AS (
|
||||
SELECT
|
||||
操作人,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
订单合同号 AS 合同号,
|
||||
订单号,
|
||||
产品编码,
|
||||
产品名称,
|
||||
工序名称,
|
||||
工时类型,
|
||||
计划数量,
|
||||
工位名称 AS 指派对象,
|
||||
CASE
|
||||
WHEN 操作类别 NOT IN ('异常') THEN 操作数值
|
||||
WHEN 操作类别 = '异常' THEN -操作数值
|
||||
ELSE 0
|
||||
END AS 报工数量,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间,
|
||||
CAST(有效工时秒 / 60.0 / 60.0 AS DECIMAL(10,2)) AS 工时小时,
|
||||
异常说明,
|
||||
工序说明,
|
||||
操作类别
|
||||
FROM 工时基础
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 开始时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 结束时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND (@工时类型 IS NULL OR @工时类型 = '' OR 工时类型 = @工时类型)
|
||||
AND ISNULL(阶段标识, 0) != -1
|
||||
)
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
操作人 AS operator,
|
||||
'' AS dateLabel,
|
||||
CAST(报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
CAST(NULL AS DECIMAL(19,6)) AS 计划数量,
|
||||
'' AS 工时类型,
|
||||
'' AS 指派对象,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
'' AS 异常说明,
|
||||
'' AS 工序说明,
|
||||
'' AS 操作类别,
|
||||
CAST(总工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 操作人汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
操作人 AS operator,
|
||||
工作日期 AS dateLabel,
|
||||
CAST(报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
CAST(NULL AS DECIMAL(19,6)) AS 计划数量,
|
||||
'' AS 工时类型,
|
||||
'' AS 指派对象,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
'' AS 异常说明,
|
||||
'' AS 工序说明,
|
||||
'' AS 操作类别,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 日期汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
3 AS [Level],
|
||||
操作人 AS operator,
|
||||
工作日期 AS dateLabel,
|
||||
'' AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
ISNULL(合同号, '') AS contractNo,
|
||||
ISNULL(订单号, '') AS orderNo,
|
||||
ISNULL(产品编码, '') AS productCode,
|
||||
ISNULL(产品名称, '') AS productName,
|
||||
ISNULL(工序名称, '') AS processName,
|
||||
计划数量 AS 计划数量,
|
||||
ISNULL(工时类型, '') AS 工时类型,
|
||||
ISNULL(指派对象, '') AS 指派对象,
|
||||
ISNULL(开始时间, '') AS startTime,
|
||||
ISNULL(结束时间, '') AS endTime,
|
||||
ISNULL(异常说明, '') AS 异常说明,
|
||||
ISNULL(工序说明, '') AS 工序说明,
|
||||
ISNULL(操作类别, '') AS 操作类别,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 报工明细
|
||||
|
||||
ORDER BY operator, dateLabel, [Level]
|
||||
END
|
||||
|
||||
@@ -0,0 +1,209 @@
|
||||
|
||||
CREATE PROCEDURE [dbo].[工时统计_作业者工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@工时类型 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH 人员班组 AS (
|
||||
SELECT
|
||||
LTRIM(RTRIM(Personnel_Name)) AS Personnel_Name,
|
||||
MAX(NULLIF(LTRIM(RTRIM(班组)), '')) AS 班组
|
||||
FROM [YL_MESDB].[dbo].[登录基础数据_人员信息]
|
||||
WHERE Personnel_Name IS NOT NULL
|
||||
GROUP BY LTRIM(RTRIM(Personnel_Name))
|
||||
),
|
||||
工时基础 AS (
|
||||
SELECT
|
||||
v.*,
|
||||
ISNULL(p.班组, '未分类') AS 工时类型,
|
||||
CASE
|
||||
WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.加工工时, 0) > 0 THEN ISNULL(v.加工工时, 0)
|
||||
WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.总时长, 0) > 0 AND ISNULL(v.加工工时, 0) = 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 LIKE '%加班%' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 = '开始加工' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 = '异常' THEN -ISNULL(v.总时长, 0)
|
||||
ELSE 0
|
||||
END AS 有效工时秒
|
||||
FROM [dbo].[View_生产工时视图全部] v
|
||||
LEFT JOIN 人员班组 p ON LTRIM(RTRIM(v.操作人)) = p.Personnel_Name
|
||||
),
|
||||
筛选明细 AS (
|
||||
SELECT *
|
||||
FROM 工时基础
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 开始时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 结束时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND (@工时类型 IS NULL OR @工时类型 = '' OR 工时类型 = @工时类型)
|
||||
AND ISNULL(阶段标识, 0) != -1
|
||||
),
|
||||
TaskStart报工数量 AS (
|
||||
SELECT
|
||||
TaskAID,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
MAX(CASE
|
||||
WHEN 操作类别 NOT IN ('异常') THEN ISNULL(操作数值, 0)
|
||||
WHEN 操作类别 = '异常' THEN -ISNULL(操作数值, 0)
|
||||
ELSE 0
|
||||
END) AS 报工数量
|
||||
FROM [dbo].[View_生产工时视图全部]
|
||||
where 操作类别编号 = 6
|
||||
GROUP BY TaskAID, CONVERT(VARCHAR(19), 开始时间, 120)
|
||||
|
||||
),
|
||||
报工明细 AS (
|
||||
SELECT
|
||||
b.操作人,
|
||||
CONVERT(VARCHAR(10), b.开始时间, 120) AS 工作日期,
|
||||
b.TaskAID,
|
||||
b.订单合同号 AS 合同号,
|
||||
b.订单号,
|
||||
b.产品编码,
|
||||
b.产品名称,
|
||||
b.工序名称,
|
||||
b.工时类型,
|
||||
b.计划数量,
|
||||
b.工位名称 AS 指派对象,
|
||||
ISNULL(q.报工数量, CASE
|
||||
WHEN b.操作类别 NOT IN ('异常') THEN ISNULL(b.操作数值, 0)
|
||||
WHEN b.操作类别 = '异常' THEN -ISNULL(b.操作数值, 0)
|
||||
ELSE 0
|
||||
END) AS 报工数量,
|
||||
CONVERT(VARCHAR(19), b.开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), b.结束时间, 120) AS 结束时间,
|
||||
CAST(b.有效工时秒 / 60.0 / 60.0 AS DECIMAL(10,2)) AS 工时小时,
|
||||
b.异常说明,
|
||||
b.工序说明,
|
||||
b.操作类别
|
||||
FROM 筛选明细 b
|
||||
LEFT JOIN TaskStart报工数量 q
|
||||
ON q.TaskAID = b.TaskAID
|
||||
AND q.开始时间 = CONVERT(VARCHAR(19), b.开始时间, 120)
|
||||
),
|
||||
操作人报工数量 AS (
|
||||
SELECT 操作人, SUM(报工数量) AS 报工数量
|
||||
FROM (
|
||||
SELECT 操作人, TaskAID, 开始时间, MAX(报工数量) AS 报工数量
|
||||
FROM 报工明细
|
||||
WHERE TaskAID IS NOT NULL AND 开始时间 IS NOT NULL AND 开始时间 != ''
|
||||
GROUP BY 操作人, TaskAID, 开始时间
|
||||
) x
|
||||
GROUP BY 操作人
|
||||
),
|
||||
日期报工数量 AS (
|
||||
SELECT 操作人, 工作日期, SUM(报工数量) AS 报工数量
|
||||
FROM (
|
||||
SELECT 操作人, 工作日期, TaskAID, 开始时间, MAX(报工数量) AS 报工数量
|
||||
FROM 报工明细
|
||||
WHERE TaskAID IS NOT NULL AND 开始时间 IS NOT NULL AND 开始时间 != ''
|
||||
GROUP BY 操作人, 工作日期, TaskAID, 开始时间
|
||||
) x
|
||||
GROUP BY 操作人, 工作日期
|
||||
),
|
||||
操作人汇总 AS (
|
||||
SELECT
|
||||
操作人,
|
||||
COUNT(*) AS 报工次数,
|
||||
CAST(SUM(有效工时秒) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时
|
||||
FROM 筛选明细
|
||||
GROUP BY 操作人
|
||||
),
|
||||
日期汇总 AS (
|
||||
SELECT
|
||||
操作人,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
COUNT(*) AS 报工次数,
|
||||
CAST(SUM(有效工时秒) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 工时小时
|
||||
FROM 筛选明细
|
||||
GROUP BY 操作人, CONVERT(VARCHAR(10), 开始时间, 120)
|
||||
)
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
s.操作人 AS operator,
|
||||
'' AS dateLabel,
|
||||
CAST(s.报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(ISNULL(q.报工数量, 0) AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
CAST(NULL AS DECIMAL(19,6)) AS 计划数量,
|
||||
'' AS 工时类型,
|
||||
'' AS 指派对象,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
'' AS 异常说明,
|
||||
'' AS 工序说明,
|
||||
'' AS 操作类别,
|
||||
CAST(s.总工时小时 AS VARCHAR(20)) AS workHours,
|
||||
'' AS TaskAID
|
||||
FROM 操作人汇总 s
|
||||
LEFT JOIN 操作人报工数量 q ON q.操作人 = s.操作人
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
s.操作人 AS operator,
|
||||
s.工作日期 AS dateLabel,
|
||||
CAST(s.报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(ISNULL(q.报工数量, 0) AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
CAST(NULL AS DECIMAL(19,6)) AS 计划数量,
|
||||
'' AS 工时类型,
|
||||
'' AS 指派对象,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
'' AS 异常说明,
|
||||
'' AS 工序说明,
|
||||
'' AS 操作类别,
|
||||
CAST(s.工时小时 AS VARCHAR(20)) AS workHours,
|
||||
'' AS TaskAID
|
||||
FROM 日期汇总 s
|
||||
LEFT JOIN 日期报工数量 q ON q.操作人 = s.操作人 AND q.工作日期 = s.工作日期
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
3 AS [Level],
|
||||
操作人 AS operator,
|
||||
工作日期 AS dateLabel,
|
||||
'' AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
ISNULL(合同号, '') AS contractNo,
|
||||
ISNULL(订单号, '') AS orderNo,
|
||||
ISNULL(产品编码, '') AS productCode,
|
||||
ISNULL(产品名称, '') AS productName,
|
||||
ISNULL(工序名称, '') AS processName,
|
||||
计划数量 AS 计划数量,
|
||||
ISNULL(工时类型, '') AS 工时类型,
|
||||
ISNULL(指派对象, '') AS 指派对象,
|
||||
ISNULL(开始时间, '') AS startTime,
|
||||
ISNULL(结束时间, '') AS endTime,
|
||||
ISNULL(异常说明, '') AS 异常说明,
|
||||
ISNULL(工序说明, '') AS 工序说明,
|
||||
ISNULL(操作类别, '') AS 操作类别,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours,
|
||||
CAST(TaskAID AS VARCHAR(50)) AS TaskAID
|
||||
FROM 报工明细
|
||||
|
||||
ORDER BY operator, dateLabel, [Level], startTime
|
||||
END
|
||||
|
||||
@@ -0,0 +1,209 @@
|
||||
|
||||
CREATE PROCEDURE [dbo].[工时统计_作业者工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@工时类型 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH 人员班组 AS (
|
||||
SELECT
|
||||
LTRIM(RTRIM(Personnel_Name)) AS Personnel_Name,
|
||||
MAX(NULLIF(LTRIM(RTRIM(班组)), '')) AS 班组
|
||||
FROM [YL_MESDB].[dbo].[登录基础数据_人员信息]
|
||||
WHERE Personnel_Name IS NOT NULL
|
||||
GROUP BY LTRIM(RTRIM(Personnel_Name))
|
||||
),
|
||||
工时基础 AS (
|
||||
SELECT
|
||||
v.*,
|
||||
ISNULL(p.班组, '未分类') AS 工时类型,
|
||||
CASE
|
||||
WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.加工工时, 0) > 0 THEN ISNULL(v.加工工时, 0)
|
||||
WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.总时长, 0) > 0 AND ISNULL(v.加工工时, 0) = 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 LIKE '%加班%' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 = '开始加工' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 = '异常' THEN -ISNULL(v.总时长, 0)
|
||||
ELSE 0
|
||||
END AS 有效工时秒
|
||||
FROM [dbo].[View_生产工时视图全部] v
|
||||
LEFT JOIN 人员班组 p ON LTRIM(RTRIM(v.操作人)) = p.Personnel_Name
|
||||
),
|
||||
筛选明细 AS (
|
||||
SELECT *
|
||||
FROM 工时基础
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 开始时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 结束时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND (@工时类型 IS NULL OR @工时类型 = '' OR 工时类型 = @工时类型)
|
||||
AND ISNULL(阶段标识, 0) != -1
|
||||
),
|
||||
TaskStart报工数量 AS (
|
||||
SELECT
|
||||
TaskAID,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
MAX(CASE
|
||||
WHEN 操作类别 NOT IN ('异常') THEN ISNULL(操作数值, 0)
|
||||
WHEN 操作类别 = '异常' THEN -ISNULL(操作数值, 0)
|
||||
ELSE 0
|
||||
END) AS 报工数量
|
||||
FROM 筛选明细
|
||||
WHERE TaskAID IS NOT NULL
|
||||
AND 开始时间 IS NOT NULL
|
||||
GROUP BY TaskAID, CONVERT(VARCHAR(19), 开始时间, 120)
|
||||
),
|
||||
报工明细 AS (
|
||||
SELECT
|
||||
b.操作人,
|
||||
CONVERT(VARCHAR(10), b.开始时间, 120) AS 工作日期,
|
||||
b.TaskAID,
|
||||
b.订单合同号 AS 合同号,
|
||||
b.订单号,
|
||||
b.产品编码,
|
||||
b.产品名称,
|
||||
b.工序名称,
|
||||
b.工时类型,
|
||||
b.计划数量,
|
||||
b.工位名称 AS 指派对象,
|
||||
ISNULL(q.报工数量, CASE
|
||||
WHEN b.操作类别 NOT IN ('异常') THEN ISNULL(b.操作数值, 0)
|
||||
WHEN b.操作类别 = '异常' THEN -ISNULL(b.操作数值, 0)
|
||||
ELSE 0
|
||||
END) AS 报工数量,
|
||||
CONVERT(VARCHAR(19), b.开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), b.结束时间, 120) AS 结束时间,
|
||||
CAST(b.有效工时秒 / 60.0 / 60.0 AS DECIMAL(10,2)) AS 工时小时,
|
||||
b.异常说明,
|
||||
b.工序说明,
|
||||
b.操作类别
|
||||
FROM 筛选明细 b
|
||||
LEFT JOIN TaskStart报工数量 q
|
||||
ON q.TaskAID = b.TaskAID
|
||||
AND q.开始时间 = CONVERT(VARCHAR(19), b.开始时间, 120)
|
||||
),
|
||||
操作人报工数量 AS (
|
||||
SELECT 操作人, SUM(报工数量) AS 报工数量
|
||||
FROM (
|
||||
SELECT 操作人, TaskAID, 开始时间, MAX(报工数量) AS 报工数量
|
||||
FROM 报工明细
|
||||
WHERE TaskAID IS NOT NULL AND 开始时间 IS NOT NULL AND 开始时间 != ''
|
||||
GROUP BY 操作人, TaskAID, 开始时间
|
||||
) x
|
||||
GROUP BY 操作人
|
||||
),
|
||||
日期报工数量 AS (
|
||||
SELECT 操作人, 工作日期, SUM(报工数量) AS 报工数量
|
||||
FROM (
|
||||
SELECT 操作人, 工作日期, TaskAID, 开始时间, MAX(报工数量) AS 报工数量
|
||||
FROM 报工明细
|
||||
WHERE TaskAID IS NOT NULL AND 开始时间 IS NOT NULL AND 开始时间 != ''
|
||||
GROUP BY 操作人, 工作日期, TaskAID, 开始时间
|
||||
) x
|
||||
GROUP BY 操作人, 工作日期
|
||||
),
|
||||
操作人汇总 AS (
|
||||
SELECT
|
||||
操作人,
|
||||
COUNT(*) AS 报工次数,
|
||||
CAST(SUM(有效工时秒) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时
|
||||
FROM 筛选明细
|
||||
GROUP BY 操作人
|
||||
),
|
||||
日期汇总 AS (
|
||||
SELECT
|
||||
操作人,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
COUNT(*) AS 报工次数,
|
||||
CAST(SUM(有效工时秒) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 工时小时
|
||||
FROM 筛选明细
|
||||
GROUP BY 操作人, CONVERT(VARCHAR(10), 开始时间, 120)
|
||||
)
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
s.操作人 AS operator,
|
||||
'' AS dateLabel,
|
||||
CAST(s.报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(ISNULL(q.报工数量, 0) AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
CAST(NULL AS DECIMAL(19,6)) AS 计划数量,
|
||||
'' AS 工时类型,
|
||||
'' AS 指派对象,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
'' AS 异常说明,
|
||||
'' AS 工序说明,
|
||||
'' AS 操作类别,
|
||||
CAST(s.总工时小时 AS VARCHAR(20)) AS workHours,
|
||||
'' AS TaskAID
|
||||
FROM 操作人汇总 s
|
||||
LEFT JOIN 操作人报工数量 q ON q.操作人 = s.操作人
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
s.操作人 AS operator,
|
||||
s.工作日期 AS dateLabel,
|
||||
CAST(s.报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(ISNULL(q.报工数量, 0) AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
CAST(NULL AS DECIMAL(19,6)) AS 计划数量,
|
||||
'' AS 工时类型,
|
||||
'' AS 指派对象,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
'' AS 异常说明,
|
||||
'' AS 工序说明,
|
||||
'' AS 操作类别,
|
||||
CAST(s.工时小时 AS VARCHAR(20)) AS workHours,
|
||||
'' AS TaskAID
|
||||
FROM 日期汇总 s
|
||||
LEFT JOIN 日期报工数量 q ON q.操作人 = s.操作人 AND q.工作日期 = s.工作日期
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
3 AS [Level],
|
||||
操作人 AS operator,
|
||||
工作日期 AS dateLabel,
|
||||
'' AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
ISNULL(合同号, '') AS contractNo,
|
||||
ISNULL(订单号, '') AS orderNo,
|
||||
ISNULL(产品编码, '') AS productCode,
|
||||
ISNULL(产品名称, '') AS productName,
|
||||
ISNULL(工序名称, '') AS processName,
|
||||
计划数量 AS 计划数量,
|
||||
ISNULL(工时类型, '') AS 工时类型,
|
||||
ISNULL(指派对象, '') AS 指派对象,
|
||||
ISNULL(开始时间, '') AS startTime,
|
||||
ISNULL(结束时间, '') AS endTime,
|
||||
ISNULL(异常说明, '') AS 异常说明,
|
||||
ISNULL(工序说明, '') AS 工序说明,
|
||||
ISNULL(操作类别, '') AS 操作类别,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours,
|
||||
CAST(TaskAID AS VARCHAR(50)) AS TaskAID
|
||||
FROM 报工明细
|
||||
|
||||
ORDER BY operator, dateLabel, [Level], startTime
|
||||
END
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
|
||||
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*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)'
|
||||
|
||||
;WITH 筛选明细 AS (
|
||||
SELECT *
|
||||
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
|
||||
),
|
||||
TaskStart报工数量 AS (
|
||||
SELECT
|
||||
TaskAID,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
MAX(CASE
|
||||
WHEN 操作类别 NOT IN ('异常') THEN ISNULL(操作数值, 0)
|
||||
WHEN 操作类别 = '异常' THEN -ISNULL(操作数值, 0)
|
||||
ELSE 0
|
||||
END) AS 报工数量
|
||||
FROM [dbo].[View_生产工时视图全部]
|
||||
WHERE 操作类别编号 = 6
|
||||
GROUP BY TaskAID, CONVERT(VARCHAR(19), 开始时间, 120)
|
||||
)
|
||||
SELECT
|
||||
b.操作人,
|
||||
CONVERT(VARCHAR(10), b.开始时间, 120) AS 工作日期,
|
||||
ISNULL(b.订单合同号, '') AS 合同号,
|
||||
ISNULL(b.订单号, '') AS 订单号,
|
||||
ISNULL(b.产品编码, '') AS 产品编码,
|
||||
ISNULL(b.产品名称, '') AS 产品名称,
|
||||
ISNULL(b.工序名称, '') AS 工序名称,
|
||||
ISNULL(b.工位名称, '') AS 指派对象,
|
||||
CAST(ISNULL(q.报工数量, CASE
|
||||
WHEN b.操作类别 NOT IN ('异常') THEN ISNULL(b.操作数值, 0)
|
||||
WHEN b.操作类别 = '异常' THEN -ISNULL(b.操作数值, 0)
|
||||
ELSE 0
|
||||
END) AS VARCHAR(20)) AS 报工数量,
|
||||
CONVERT(VARCHAR(19), b.开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), b.结束时间, 120) AS 结束时间,
|
||||
CAST(CAST(b.总时长 / 60.0 / 60.0 AS DECIMAL(10,2)) AS VARCHAR(20)) AS '工时(h)'
|
||||
FROM 筛选明细 b
|
||||
LEFT JOIN TaskStart报工数量 q
|
||||
ON q.TaskAID = b.TaskAID
|
||||
AND q.开始时间 = CONVERT(VARCHAR(19), b.开始时间, 120)
|
||||
ORDER BY b.操作人, b.开始时间
|
||||
END
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
|
||||
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*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
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
|
||||
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*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)'
|
||||
|
||||
;WITH 筛选明细 AS (
|
||||
SELECT *
|
||||
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
|
||||
),
|
||||
TaskStart报工数量 AS (
|
||||
SELECT
|
||||
TaskAID,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
MAX(CASE
|
||||
WHEN 操作类别 NOT IN ('异常') THEN ISNULL(操作数值, 0)
|
||||
WHEN 操作类别 = '异常' THEN -ISNULL(操作数值, 0)
|
||||
ELSE 0
|
||||
END) AS 报工数量
|
||||
FROM [dbo].[View_生产工时视图全部]
|
||||
GROUP BY TaskAID, CONVERT(VARCHAR(19), 开始时间, 120)
|
||||
)
|
||||
SELECT
|
||||
b.操作人,
|
||||
CONVERT(VARCHAR(10), b.开始时间, 120) AS 工作日期,
|
||||
ISNULL(b.订单合同号, '') AS 合同号,
|
||||
ISNULL(b.订单号, '') AS 订单号,
|
||||
ISNULL(b.产品编码, '') AS 产品编码,
|
||||
ISNULL(b.产品名称, '') AS 产品名称,
|
||||
ISNULL(b.工序名称, '') AS 工序名称,
|
||||
ISNULL(b.工位名称, '') AS 指派对象,
|
||||
CAST(ISNULL(q.报工数量, CASE
|
||||
WHEN b.操作类别 NOT IN ('异常') THEN ISNULL(b.操作数值, 0)
|
||||
WHEN b.操作类别 = '异常' THEN -ISNULL(b.操作数值, 0)
|
||||
ELSE 0
|
||||
END) AS VARCHAR(20)) AS 报工数量,
|
||||
CONVERT(VARCHAR(19), b.开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), b.结束时间, 120) AS 结束时间,
|
||||
CAST(CAST(b.总时长 / 60.0 / 60.0 AS DECIMAL(10,2)) AS VARCHAR(20)) AS '工时(h)'
|
||||
FROM 筛选明细 b
|
||||
LEFT JOIN TaskStart报工数量 q
|
||||
ON q.TaskAID = b.TaskAID
|
||||
AND q.开始时间 = CONVERT(VARCHAR(19), b.开始时间, 120)
|
||||
ORDER BY b.操作人, b.开始时间
|
||||
END
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
|
||||
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*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)'
|
||||
|
||||
;WITH 筛选明细 AS (
|
||||
SELECT *
|
||||
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
|
||||
),
|
||||
TaskStart报工数量 AS (
|
||||
SELECT
|
||||
TaskAID,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
MAX(CASE
|
||||
WHEN 操作类别 NOT IN ('异常') THEN ISNULL(操作数值, 0)
|
||||
WHEN 操作类别 = '异常' THEN -ISNULL(操作数值, 0)
|
||||
ELSE 0
|
||||
END) AS 报工数量
|
||||
FROM 筛选明细
|
||||
WHERE TaskAID IS NOT NULL
|
||||
AND 开始时间 IS NOT NULL
|
||||
GROUP BY TaskAID, CONVERT(VARCHAR(19), 开始时间, 120)
|
||||
)
|
||||
SELECT
|
||||
b.操作人,
|
||||
CONVERT(VARCHAR(10), b.开始时间, 120) AS 工作日期,
|
||||
ISNULL(b.订单合同号, '') AS 合同号,
|
||||
ISNULL(b.订单号, '') AS 订单号,
|
||||
ISNULL(b.产品编码, '') AS 产品编码,
|
||||
ISNULL(b.产品名称, '') AS 产品名称,
|
||||
ISNULL(b.工序名称, '') AS 工序名称,
|
||||
ISNULL(b.工位名称, '') AS 指派对象,
|
||||
CAST(ISNULL(q.报工数量, CASE
|
||||
WHEN b.操作类别 NOT IN ('异常') THEN ISNULL(b.操作数值, 0)
|
||||
WHEN b.操作类别 = '异常' THEN -ISNULL(b.操作数值, 0)
|
||||
ELSE 0
|
||||
END) AS VARCHAR(20)) AS 报工数量,
|
||||
CONVERT(VARCHAR(19), b.开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), b.结束时间, 120) AS 结束时间,
|
||||
CAST(CAST(b.总时长 / 60.0 / 60.0 AS DECIMAL(10,2)) AS VARCHAR(20)) AS '工时(h)'
|
||||
FROM 筛选明细 b
|
||||
LEFT JOIN TaskStart报工数量 q
|
||||
ON q.TaskAID = b.TaskAID
|
||||
AND q.开始时间 = CONVERT(VARCHAR(19), b.开始时间, 120)
|
||||
ORDER BY b.操作人, b.开始时间
|
||||
END
|
||||
|
||||
@@ -0,0 +1,298 @@
|
||||
/*
|
||||
过程异常管控并行审批调整
|
||||
目标:
|
||||
1. sp_创建流程_简化版 支持前端传入多个审批人,审批人ID/审批人姓名使用英文逗号分隔。
|
||||
2. 多个审批人写入同一个步骤序号的多个 processing 节点,所有审批人可同时看到待办。
|
||||
3. sp_获取待处理任务 兼容同一步骤多行节点,也兼容旧过程已写入的逗号分隔审批人ID。
|
||||
4. sp_处理审批 中任意一个审批人同意后,当前流程直接完成,并关闭同一步骤其他待处理节点。
|
||||
说明:本脚本仅定义存储过程,不插入业务数据。
|
||||
*/
|
||||
|
||||
CREATE OR ALTER PROCEDURE [dbo].[sp_创建流程_简化版]
|
||||
@流程标题 NVARCHAR(200),
|
||||
@流程描述 NVARCHAR(MAX),
|
||||
@优先级 NVARCHAR(20) = N'normal',
|
||||
@发起人ID NVARCHAR(100),
|
||||
@发起人姓名 NVARCHAR(100),
|
||||
@审批人ID NVARCHAR(MAX),
|
||||
@审批人姓名 NVARCHAR(MAX),
|
||||
@新流程ID INT = 0,
|
||||
@已关联计划号 NVARCHAR(100) = N'',
|
||||
@零件名称 NVARCHAR(100) = N'',
|
||||
@零件编号 NVARCHAR(100) = N'',
|
||||
@工序名称 NVARCHAR(100) = N''
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @结果 INT = 0;
|
||||
DECLARE @消息 NVARCHAR(500) = N'';
|
||||
|
||||
BEGIN TRY
|
||||
BEGIN TRANSACTION;
|
||||
|
||||
DECLARE @审批人IDXml XML;
|
||||
DECLARE @审批人姓名Xml XML;
|
||||
|
||||
SET @审批人IDXml = CAST(
|
||||
N'<i>' +
|
||||
REPLACE(REPLACE(REPLACE(REPLACE(ISNULL(@审批人ID, N''), N'&', N'&'), N'<', N'<'), N'>', N'>'), N',', N'</i><i>') +
|
||||
N'</i>' AS XML
|
||||
);
|
||||
|
||||
SET @审批人姓名Xml = CAST(
|
||||
N'<i>' +
|
||||
REPLACE(REPLACE(REPLACE(REPLACE(ISNULL(@审批人姓名, N''), N'&', N'&'), N'<', N'<'), N'>', N'>'), N',', N'</i><i>') +
|
||||
N'</i>' AS XML
|
||||
);
|
||||
|
||||
DECLARE @审批人表 TABLE (
|
||||
序号 INT IDENTITY(1, 1) PRIMARY KEY,
|
||||
审批人ID NVARCHAR(100),
|
||||
审批人姓名 NVARCHAR(100)
|
||||
);
|
||||
|
||||
DECLARE @审批人ID表 TABLE (
|
||||
序号 INT IDENTITY(1, 1) PRIMARY KEY,
|
||||
审批人ID NVARCHAR(100)
|
||||
);
|
||||
|
||||
DECLARE @审批人姓名表 TABLE (
|
||||
序号 INT IDENTITY(1, 1) PRIMARY KEY,
|
||||
审批人姓名 NVARCHAR(100)
|
||||
);
|
||||
|
||||
INSERT INTO @审批人ID表 (审批人ID)
|
||||
SELECT NULLIF(LTRIM(RTRIM(T.C.value(N'.', N'NVARCHAR(100)'))), N'')
|
||||
FROM @审批人IDXml.nodes(N'/i') AS T(C);
|
||||
|
||||
INSERT INTO @审批人姓名表 (审批人姓名)
|
||||
SELECT NULLIF(LTRIM(RTRIM(T.C.value(N'.', N'NVARCHAR(100)'))), N'')
|
||||
FROM @审批人姓名Xml.nodes(N'/i') AS T(C);
|
||||
|
||||
INSERT INTO @审批人表 (审批人ID, 审批人姓名)
|
||||
SELECT I.审批人ID, ISNULL(N.审批人姓名, I.审批人ID)
|
||||
FROM @审批人ID表 I
|
||||
LEFT JOIN @审批人姓名表 N ON N.序号 = I.序号
|
||||
WHERE I.审批人ID IS NOT NULL;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM @审批人表)
|
||||
BEGIN
|
||||
INSERT INTO @审批人表 (审批人ID, 审批人姓名)
|
||||
VALUES (@发起人ID, @发起人姓名);
|
||||
END;
|
||||
|
||||
INSERT INTO [dbo].[流程表] (
|
||||
流程标题,
|
||||
流程描述,
|
||||
优先级,
|
||||
状态,
|
||||
发起人ID,
|
||||
发起人姓名,
|
||||
当前节点,
|
||||
当前步骤,
|
||||
总步骤数,
|
||||
已关联计划号,
|
||||
零件名称,
|
||||
零件编号,
|
||||
工序名称,
|
||||
创建时间,
|
||||
更新时间
|
||||
)
|
||||
VALUES (
|
||||
@流程标题,
|
||||
@流程描述,
|
||||
ISNULL(NULLIF(@优先级, N''), N'normal'),
|
||||
N'processing',
|
||||
@发起人ID,
|
||||
@发起人姓名,
|
||||
N'异常审批',
|
||||
1,
|
||||
1,
|
||||
ISNULL(@已关联计划号, N''),
|
||||
ISNULL(@零件名称, N''),
|
||||
ISNULL(@零件编号, N''),
|
||||
ISNULL(@工序名称, N''),
|
||||
GETDATE(),
|
||||
GETDATE()
|
||||
);
|
||||
|
||||
SET @新流程ID = SCOPE_IDENTITY();
|
||||
|
||||
INSERT INTO [dbo].[流程节点表] (
|
||||
流程ID,
|
||||
节点名称,
|
||||
审批人ID,
|
||||
审批人姓名,
|
||||
步骤序号,
|
||||
状态,
|
||||
是否转办
|
||||
)
|
||||
SELECT
|
||||
@新流程ID,
|
||||
N'异常审批',
|
||||
审批人ID,
|
||||
审批人姓名,
|
||||
1,
|
||||
N'processing',
|
||||
0
|
||||
FROM @审批人表;
|
||||
|
||||
SET @结果 = 1;
|
||||
SET @消息 = N'流程创建成功,流程ID: ' + CAST(@新流程ID AS NVARCHAR(20));
|
||||
|
||||
COMMIT TRANSACTION;
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION;
|
||||
SET @结果 = 0;
|
||||
SET @消息 = N'错误: ' + ERROR_MESSAGE();
|
||||
END CATCH;
|
||||
|
||||
SELECT @结果 AS 结果, @消息 AS 消息, @新流程ID AS 新流程ID;
|
||||
END;
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE [dbo].[sp_获取待处理任务]
|
||||
@审批人ID NVARCHAR(100)
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
SELECT
|
||||
p.流程ID,
|
||||
p.流程标题,
|
||||
p.流程描述,
|
||||
p.优先级,
|
||||
p.状态,
|
||||
p.发起人姓名 AS 申请人,
|
||||
p.创建时间 AS 申请时间,
|
||||
p.已关联计划号,
|
||||
p.零件名称,
|
||||
p.零件编号,
|
||||
p.工序名称,
|
||||
pn.节点ID,
|
||||
pn.节点名称 AS 当前节点,
|
||||
pn.是否转办
|
||||
FROM [dbo].[流程节点表] pn
|
||||
INNER JOIN [dbo].[流程表] p ON p.流程ID = pn.流程ID
|
||||
WHERE pn.状态 = N'processing'
|
||||
AND p.状态 = N'processing'
|
||||
AND (
|
||||
pn.审批人ID = @审批人ID
|
||||
OR CHARINDEX(N',' + @审批人ID + N',', N',' + REPLACE(ISNULL(pn.审批人ID, N''), N',', N',') + N',') > 0
|
||||
)
|
||||
ORDER BY p.更新时间 DESC, p.创建时间 DESC;
|
||||
END;
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE [dbo].[sp_处理审批]
|
||||
@流程ID INT,
|
||||
@节点ID INT,
|
||||
@审批人ID NVARCHAR(100),
|
||||
@审批人姓名 NVARCHAR(100),
|
||||
@处理结果 NVARCHAR(20),
|
||||
@审批意见 NVARCHAR(MAX) = N'',
|
||||
@成功 BIT = 0
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
SET @成功 = 0;
|
||||
|
||||
BEGIN TRY
|
||||
BEGIN TRANSACTION;
|
||||
|
||||
DECLARE @当前步骤 INT;
|
||||
|
||||
SELECT @当前步骤 = 步骤序号
|
||||
FROM [dbo].[流程节点表]
|
||||
WHERE 节点ID = @节点ID
|
||||
AND 流程ID = @流程ID
|
||||
AND 状态 = N'processing';
|
||||
|
||||
IF @当前步骤 IS NULL
|
||||
BEGIN
|
||||
RAISERROR(N'待处理节点不存在或已处理。', 16, 1);
|
||||
END;
|
||||
|
||||
INSERT INTO [dbo].[审批记录表] (
|
||||
流程ID,
|
||||
节点ID,
|
||||
审批人ID,
|
||||
审批人姓名,
|
||||
处理结果,
|
||||
审批意见
|
||||
)
|
||||
VALUES (
|
||||
@流程ID,
|
||||
@节点ID,
|
||||
@审批人ID,
|
||||
@审批人姓名,
|
||||
@处理结果,
|
||||
ISNULL(@审批意见, N'')
|
||||
);
|
||||
|
||||
IF @处理结果 = N'approved'
|
||||
BEGIN
|
||||
UPDATE [dbo].[流程节点表]
|
||||
SET 状态 = N'approved'
|
||||
WHERE 流程ID = @流程ID
|
||||
AND 步骤序号 = @当前步骤
|
||||
AND 状态 = N'processing';
|
||||
|
||||
UPDATE [dbo].[流程表]
|
||||
SET 状态 = N'completed',
|
||||
当前节点 = N'已完成',
|
||||
更新时间 = GETDATE()
|
||||
WHERE 流程ID = @流程ID;
|
||||
|
||||
IF COL_LENGTH(N'dbo.流程表', N'完成人') IS NOT NULL
|
||||
BEGIN
|
||||
EXEC sp_executesql
|
||||
N'UPDATE [dbo].[流程表] SET 完成人 = @p审批人姓名 WHERE 流程ID = @p流程ID',
|
||||
N'@p审批人姓名 NVARCHAR(100), @p流程ID INT',
|
||||
@p审批人姓名 = @审批人姓名,
|
||||
@p流程ID = @流程ID;
|
||||
END;
|
||||
|
||||
IF COL_LENGTH(N'dbo.流程表', N'完成时间') IS NOT NULL
|
||||
BEGIN
|
||||
EXEC sp_executesql
|
||||
N'UPDATE [dbo].[流程表] SET 完成时间 = GETDATE() WHERE 流程ID = @p流程ID',
|
||||
N'@p流程ID INT',
|
||||
@p流程ID = @流程ID;
|
||||
END;
|
||||
END
|
||||
ELSE IF @处理结果 = N'rejected'
|
||||
BEGIN
|
||||
UPDATE [dbo].[流程节点表]
|
||||
SET 状态 = N'rejected'
|
||||
WHERE 流程ID = @流程ID
|
||||
AND 步骤序号 = @当前步骤
|
||||
AND 状态 = N'processing';
|
||||
|
||||
UPDATE [dbo].[流程表]
|
||||
SET 状态 = N'rejected',
|
||||
当前节点 = N'已拒绝',
|
||||
更新时间 = GETDATE()
|
||||
WHERE 流程ID = @流程ID;
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
UPDATE [dbo].[流程节点表]
|
||||
SET 状态 = @处理结果
|
||||
WHERE 节点ID = @节点ID;
|
||||
END;
|
||||
|
||||
SET @成功 = 1;
|
||||
COMMIT TRANSACTION;
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION;
|
||||
SET @成功 = 0;
|
||||
THROW;
|
||||
END CATCH;
|
||||
|
||||
SELECT @成功 AS 成功;
|
||||
END;
|
||||
GO
|
||||
76
db_backups/update_delivery_notice_list_proc_20260626.sql
Normal file
76
db_backups/update_delivery_notice_list_proc_20260626.sql
Normal file
@@ -0,0 +1,76 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[装配中心任务看板_发货状态查询]
|
||||
@生产订单 nvarchar(4000) = N'0',
|
||||
@销售订单 nvarchar(4000) = N'0',
|
||||
@物料名称 nvarchar(4000) = N'0',
|
||||
@物料编码 nvarchar(4000) = N'0',
|
||||
@要求发货日期 datetime = NULL,
|
||||
@齐套 nvarchar(20) = N'',
|
||||
@发料状态 nvarchar(20) = N''
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
SELECT
|
||||
a.TaskAID,
|
||||
a.[订单编号],
|
||||
a.[合同号],
|
||||
a.[订单类型],
|
||||
a.[订单状态],
|
||||
a.[物料编号],
|
||||
a.[物料描述],
|
||||
a.[计划数量],
|
||||
a.[计量单位],
|
||||
a.[下达日期],
|
||||
a.[计划开始],
|
||||
a.[计划完成],
|
||||
a.[项目代码],
|
||||
a.[重量],
|
||||
a.[占用情况],
|
||||
a.[加急状态],
|
||||
a.[排产状态],
|
||||
a.[同步时间],
|
||||
a.[任务状态],
|
||||
a.[标准工艺],
|
||||
a.[生产工艺],
|
||||
a.[齐套],
|
||||
a.[自制件属性],
|
||||
a.[周转单打印次数],
|
||||
a.[单据状态],
|
||||
a.[发料状态],
|
||||
a.[拣配状态],
|
||||
a.[计划号],
|
||||
a.[加急数量],
|
||||
a.[发货状态],
|
||||
a.[要求发货日期],
|
||||
a.[加急总数],
|
||||
a.[入库数量],
|
||||
b.操作人,
|
||||
c.交货数量
|
||||
FROM [YL_MESDB].[dbo].[View_生产订单_MES] a
|
||||
LEFT JOIN [dbo].[YL_加工中心_操作记录表] b ON a.TaskAID = b.TaskAID
|
||||
LEFT JOIN SAP.SBO_YL.dbo.UBT_ODRF_ODLNMES c ON a.订单编号 = c.生产单号
|
||||
WHERE ISNULL(a.发货状态, N'') = N'1'
|
||||
AND ISNULL(a.任务状态, 0) < 4
|
||||
AND a.自制件属性 LIKE N'%装配%'
|
||||
AND (@生产订单 = N'0' OR CONVERT(nvarchar(100), a.订单编号) LIKE N'%' + @生产订单 + N'%')
|
||||
AND (@销售订单 = N'0' OR ISNULL(a.合同号, N'') LIKE N'%' + @销售订单 + N'%')
|
||||
AND (@物料名称 = N'0' OR ISNULL(a.物料描述, N'') LIKE N'%' + @物料名称 + N'%')
|
||||
AND (@物料编码 = N'0' OR ISNULL(a.物料编号, N'') LIKE N'%' + @物料编码 + N'%')
|
||||
AND (@要求发货日期 IS NULL OR CONVERT(date, a.要求发货日期) = CONVERT(date, @要求发货日期))
|
||||
AND (
|
||||
ISNULL(@齐套, N'') = N''
|
||||
OR (@齐套 = N'是' AND ISNULL(a.齐套, 0) = 1)
|
||||
OR (@齐套 = N'否' AND ISNULL(a.齐套, 0) <> 1)
|
||||
)
|
||||
AND (
|
||||
ISNULL(@发料状态, N'') = N''
|
||||
OR (@发料状态 = N'发料齐套' AND (a.发料状态 = N'发料齐套' OR ISNULL(a.发料状态, N'') = N'1'))
|
||||
OR (@发料状态 = N'发料缺件' AND (a.发料状态 = N'发料缺件' OR ISNULL(a.发料状态, N'') = N'2'))
|
||||
OR (@发料状态 = N'未发料' AND ISNULL(a.发料状态, N'') NOT IN (N'1', N'2', N'发料齐套', N'发料缺件'))
|
||||
)
|
||||
ORDER BY a.要求发货日期;
|
||||
END
|
||||
GO
|
||||
267
db_backups/update_design_report_multi_person_work_20260709.sql
Normal file
267
db_backups/update_design_report_multi_person_work_20260709.sql
Normal file
@@ -0,0 +1,267 @@
|
||||
USE [YL_MESDB];
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE [dbo].[设计报工_任务_查询]
|
||||
@DID int = NULL,
|
||||
@项目号 nvarchar(100) = N'',
|
||||
@物料编码 nvarchar(100) = N'',
|
||||
@图号 nvarchar(100) = N'',
|
||||
@关联父件物料编码 nvarchar(100) = N'',
|
||||
@预计开始时间_Start nvarchar(30) = N'',
|
||||
@预计开始时间_End nvarchar(30) = N'',
|
||||
@预计结束时间_Start nvarchar(30) = N'',
|
||||
@预计结束时间_End nvarchar(30) = N'',
|
||||
@单据状态 nvarchar(50) = N'',
|
||||
@当前操作人ID nvarchar(100) = N'',
|
||||
@当前操作人 nvarchar(100) = N''
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @预计开始日期1 datetime = TRY_CONVERT(datetime, NULLIF(@预计开始时间_Start, N''));
|
||||
DECLARE @预计开始日期2 datetime = TRY_CONVERT(datetime, NULLIF(@预计开始时间_End, N''));
|
||||
DECLARE @预计结束日期1 datetime = TRY_CONVERT(datetime, NULLIF(@预计结束时间_Start, N''));
|
||||
DECLARE @预计结束日期2 datetime = TRY_CONVERT(datetime, NULLIF(@预计结束时间_End, N''));
|
||||
|
||||
SELECT TOP 1000
|
||||
t.[DID],
|
||||
t.[项目号],
|
||||
t.[物料编码],
|
||||
t.[物料名称],
|
||||
t.[图号],
|
||||
t.[任务描述],
|
||||
t.[关联父件物料编码],
|
||||
t.[关联父件物料名称],
|
||||
t.[设计要求],
|
||||
t.[研发立项号],
|
||||
t.[研发目的],
|
||||
t.[指派对象ID],
|
||||
t.[指派对象],
|
||||
CONVERT(varchar(19), t.[预计开始时间], 120) AS [预计开始时间],
|
||||
CONVERT(varchar(19), t.[预计结束时间], 120) AS [预计结束时间],
|
||||
t.[单据状态],
|
||||
CONVERT(varchar(19), t.[创建日期], 120) AS [创建日期],
|
||||
t.[创建人],
|
||||
t.[最后编辑人],
|
||||
CONVERT(varchar(19), t.[最后编辑时间], 120) AS [最后编辑时间],
|
||||
t.[备注],
|
||||
ISNULL(r.[报工次数], 0) AS [报工次数],
|
||||
ISNULL(r.[未结束报工数], 0) AS [未结束报工数],
|
||||
ISNULL(r.[当前用户未结束报工数], 0) AS [当前用户未结束报工数],
|
||||
ISNULL(p.[未结束报工人员], N'') AS [未结束报工人员],
|
||||
CONVERT(varchar(19), r.[最后开始时间], 120) AS [最后开始时间],
|
||||
CONVERT(varchar(19), r.[最后结束时间], 120) AS [最后结束时间]
|
||||
FROM [dbo].[MES_设计报工_任务] AS t
|
||||
OUTER APPLY
|
||||
(
|
||||
SELECT
|
||||
COUNT(1) AS [报工次数],
|
||||
SUM(CASE WHEN rr.[结束时间] IS NULL THEN 1 ELSE 0 END) AS [未结束报工数],
|
||||
SUM(CASE
|
||||
WHEN rr.[结束时间] IS NULL
|
||||
AND (
|
||||
(NULLIF(@当前操作人ID, N'') IS NOT NULL AND ISNULL(rr.[操作人ID], N'') = @当前操作人ID)
|
||||
OR (NULLIF(@当前操作人ID, N'') IS NULL AND NULLIF(@当前操作人, N'') IS NOT NULL AND ISNULL(rr.[操作人], N'') = @当前操作人)
|
||||
)
|
||||
THEN 1 ELSE 0 END) AS [当前用户未结束报工数],
|
||||
MAX(rr.[开始时间]) AS [最后开始时间],
|
||||
MAX(rr.[结束时间]) AS [最后结束时间]
|
||||
FROM [dbo].[MES_设计报工_记录] AS rr
|
||||
WHERE rr.[DID] = t.[DID]
|
||||
) AS r
|
||||
OUTER APPLY
|
||||
(
|
||||
SELECT STRING_AGG(CONVERT(nvarchar(max), x.[操作人标识]), N'、') AS [未结束报工人员]
|
||||
FROM
|
||||
(
|
||||
SELECT DISTINCT COALESCE(NULLIF(rr2.[操作人], N''), NULLIF(rr2.[操作人ID], N''), N'未填写操作人') AS [操作人标识]
|
||||
FROM [dbo].[MES_设计报工_记录] AS rr2
|
||||
WHERE rr2.[DID] = t.[DID]
|
||||
AND rr2.[结束时间] IS NULL
|
||||
) AS x
|
||||
) AS p
|
||||
WHERE
|
||||
(@DID IS NULL OR @DID = 0 OR t.[DID] = @DID)
|
||||
AND (ISNULL(@项目号, N'') = N'' OR t.[项目号] LIKE N'%' + @项目号 + N'%')
|
||||
AND (ISNULL(@物料编码, N'') = N'' OR t.[物料编码] LIKE N'%' + @物料编码 + N'%')
|
||||
AND (ISNULL(@图号, N'') = N'' OR t.[图号] LIKE N'%' + @图号 + N'%')
|
||||
AND (ISNULL(@关联父件物料编码, N'') = N'' OR t.[关联父件物料编码] LIKE N'%' + @关联父件物料编码 + N'%')
|
||||
AND (ISNULL(@单据状态, N'') = N'' OR @单据状态 = N'全部' OR t.[单据状态] = @单据状态)
|
||||
AND (@预计开始日期1 IS NULL OR t.[预计开始时间] >= @预计开始日期1)
|
||||
AND (@预计开始日期2 IS NULL OR t.[预计开始时间] < DATEADD(day, 1, @预计开始日期2))
|
||||
AND (@预计结束日期1 IS NULL OR t.[预计结束时间] >= @预计结束日期1)
|
||||
AND (@预计结束日期2 IS NULL OR t.[预计结束时间] < DATEADD(day, 1, @预计结束日期2))
|
||||
ORDER BY t.[DID] DESC;
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE [dbo].[设计报工_任务_开始]
|
||||
@DID int,
|
||||
@操作人ID nvarchar(100) = N'',
|
||||
@操作人 nvarchar(100) = N''
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @当前操作人ID nvarchar(100) = NULLIF(@操作人ID, N'');
|
||||
DECLARE @当前操作人 nvarchar(100) = NULLIF(@操作人, N'');
|
||||
DECLARE @RID int;
|
||||
|
||||
IF @当前操作人ID IS NULL AND @当前操作人 IS NULL
|
||||
BEGIN
|
||||
SELECT CAST(0 AS int) AS [result], N'未获取到当前操作人,不能开始' AS [message];
|
||||
RETURN;
|
||||
END
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_任务] WHERE [DID] = @DID)
|
||||
BEGIN
|
||||
SELECT CAST(0 AS int) AS [result], N'任务不存在' AS [message];
|
||||
RETURN;
|
||||
END
|
||||
|
||||
IF EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_任务] WHERE [DID] = @DID AND [单据状态] = N'已完成')
|
||||
BEGIN
|
||||
SELECT CAST(0 AS int) AS [result], N'任务已完成,不能开始' AS [message];
|
||||
RETURN;
|
||||
END
|
||||
|
||||
IF EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM [dbo].[MES_设计报工_记录]
|
||||
WHERE [DID] = @DID
|
||||
AND [结束时间] IS NULL
|
||||
AND (
|
||||
(@当前操作人ID IS NOT NULL AND ISNULL([操作人ID], N'') = @当前操作人ID)
|
||||
OR (@当前操作人ID IS NULL AND @当前操作人 IS NOT NULL AND ISNULL([操作人], N'') = @当前操作人)
|
||||
)
|
||||
)
|
||||
BEGIN
|
||||
SELECT CAST(0 AS int) AS [result], N'当前人员已存在未结束的报工记录' AS [message];
|
||||
RETURN;
|
||||
END
|
||||
|
||||
INSERT INTO [dbo].[MES_设计报工_记录]([DID], [操作人ID], [操作人], [开始时间], [报工状态])
|
||||
VALUES(@DID, @当前操作人ID, @当前操作人, GETDATE(), N'执行中');
|
||||
|
||||
SET @RID = CONVERT(int, SCOPE_IDENTITY());
|
||||
|
||||
UPDATE [dbo].[MES_设计报工_任务]
|
||||
SET [单据状态] = N'执行中', [最后编辑人] = @当前操作人, [最后编辑时间] = GETDATE()
|
||||
WHERE [DID] = @DID;
|
||||
|
||||
SELECT CAST(1 AS int) AS [result], N'开始成功' AS [message], @RID AS [RID];
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE [dbo].[设计报工_任务_结束]
|
||||
@DID int,
|
||||
@操作人ID nvarchar(100) = N'',
|
||||
@操作人 nvarchar(100) = N''
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @当前操作人ID nvarchar(100) = NULLIF(@操作人ID, N'');
|
||||
DECLARE @当前操作人 nvarchar(100) = NULLIF(@操作人, N'');
|
||||
DECLARE @RID int;
|
||||
|
||||
IF @当前操作人ID IS NULL AND @当前操作人 IS NULL
|
||||
BEGIN
|
||||
SELECT CAST(0 AS int) AS [result], N'未获取到当前操作人,不能结束' AS [message];
|
||||
RETURN;
|
||||
END
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_任务] WHERE [DID] = @DID)
|
||||
BEGIN
|
||||
SELECT CAST(0 AS int) AS [result], N'任务不存在' AS [message];
|
||||
RETURN;
|
||||
END
|
||||
|
||||
IF EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_任务] WHERE [DID] = @DID AND [单据状态] = N'已完成')
|
||||
BEGIN
|
||||
SELECT CAST(0 AS int) AS [result], N'任务已完成,不能结束' AS [message];
|
||||
RETURN;
|
||||
END
|
||||
|
||||
SELECT TOP 1 @RID = [RID]
|
||||
FROM [dbo].[MES_设计报工_记录]
|
||||
WHERE [DID] = @DID
|
||||
AND [结束时间] IS NULL
|
||||
AND (
|
||||
(@当前操作人ID IS NOT NULL AND ISNULL([操作人ID], N'') = @当前操作人ID)
|
||||
OR (@当前操作人ID IS NULL AND @当前操作人 IS NOT NULL AND ISNULL([操作人], N'') = @当前操作人)
|
||||
)
|
||||
ORDER BY [开始时间] DESC, [RID] DESC;
|
||||
|
||||
IF @RID IS NULL
|
||||
BEGIN
|
||||
SELECT CAST(0 AS int) AS [result], N'当前人员没有未结束的报工记录' AS [message];
|
||||
RETURN;
|
||||
END
|
||||
|
||||
UPDATE [dbo].[MES_设计报工_记录]
|
||||
SET
|
||||
[结束时间] = GETDATE(),
|
||||
[工时秒数] = DATEDIFF(second, [开始时间], GETDATE()),
|
||||
[报工状态] = N'已结束'
|
||||
WHERE [RID] = @RID;
|
||||
|
||||
UPDATE [dbo].[MES_设计报工_任务]
|
||||
SET
|
||||
[单据状态] = CASE
|
||||
WHEN EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_记录] WHERE [DID] = @DID AND [结束时间] IS NULL)
|
||||
THEN N'执行中'
|
||||
ELSE N'已结束'
|
||||
END,
|
||||
[最后编辑人] = @当前操作人,
|
||||
[最后编辑时间] = GETDATE()
|
||||
WHERE [DID] = @DID AND [单据状态] <> N'已完成';
|
||||
|
||||
SELECT CAST(1 AS int) AS [result], N'结束成功' AS [message], @RID AS [RID];
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE [dbo].[设计报工_任务_完成]
|
||||
@DID int,
|
||||
@操作人 nvarchar(100) = N''
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @未结束人员 nvarchar(max);
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_任务] WHERE [DID] = @DID)
|
||||
BEGIN
|
||||
SELECT CAST(0 AS int) AS [result], N'任务不存在' AS [message];
|
||||
RETURN;
|
||||
END
|
||||
|
||||
SELECT @未结束人员 = STRING_AGG(CONVERT(nvarchar(max), x.[操作人标识]), N'、')
|
||||
FROM
|
||||
(
|
||||
SELECT DISTINCT COALESCE(NULLIF([操作人], N''), NULLIF([操作人ID], N''), N'未填写操作人') AS [操作人标识]
|
||||
FROM [dbo].[MES_设计报工_记录]
|
||||
WHERE [DID] = @DID
|
||||
AND [结束时间] IS NULL
|
||||
) AS x;
|
||||
|
||||
IF NULLIF(@未结束人员, N'') IS NOT NULL
|
||||
BEGIN
|
||||
SELECT CAST(0 AS int) AS [result], N'以下人员还未点击结束:' + @未结束人员 AS [message], @未结束人员 AS [未结束人员];
|
||||
RETURN;
|
||||
END
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM [dbo].[MES_设计报工_记录] WHERE [DID] = @DID AND [结束时间] IS NOT NULL)
|
||||
BEGIN
|
||||
SELECT CAST(0 AS int) AS [result], N'任务未产生已结束报工,不能完成' AS [message];
|
||||
RETURN;
|
||||
END
|
||||
|
||||
UPDATE [dbo].[MES_设计报工_任务]
|
||||
SET [单据状态] = N'已完成', [最后编辑人] = NULLIF(@操作人, N''), [最后编辑时间] = GETDATE()
|
||||
WHERE [DID] = @DID;
|
||||
|
||||
SELECT CAST(1 AS int) AS [result], N'完成成功' AS [message];
|
||||
END
|
||||
GO
|
||||
29
db_backups/update_design_report_project_source_20260709.sql
Normal file
29
db_backups/update_design_report_project_source_20260709.sql
Normal file
@@ -0,0 +1,29 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE [dbo].[设计报工_项目查询]
|
||||
@过滤 nvarchar(100) = N''
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
SELECT DISTINCT TOP 200
|
||||
CAST([项目代码] AS nvarchar(100)) AS [项目号],
|
||||
CAST([项目名称] AS nvarchar(200)) AS [项目名称]
|
||||
FROM [SAP].[SBO_YL].[dbo].[VIEW_OPRJ]
|
||||
WHERE
|
||||
ISNULL([项目代码], N'') <> N''
|
||||
AND
|
||||
(
|
||||
ISNULL(@过滤, N'') = N''
|
||||
OR CAST([项目代码] AS nvarchar(100)) LIKE N'%' + @过滤 + N'%'
|
||||
OR CAST(ISNULL([项目名称], N'') AS nvarchar(200)) LIKE N'%' + @过滤 + N'%'
|
||||
)
|
||||
ORDER BY [项目号];
|
||||
END
|
||||
GO
|
||||
190
db_backups/update_device_information_maintenance_20260629.sql
Normal file
190
db_backups/update_device_information_maintenance_20260629.sql
Normal file
@@ -0,0 +1,190 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
IF COL_LENGTH(N'dbo.基础数据_设备工位点检表', N'公司编码') IS NULL
|
||||
ALTER TABLE [dbo].[基础数据_设备工位点检表] ADD [公司编码] nvarchar(100) NULL
|
||||
GO
|
||||
IF COL_LENGTH(N'dbo.基础数据_设备工位点检表', N'设备信息') IS NULL
|
||||
ALTER TABLE [dbo].[基础数据_设备工位点检表] ADD [设备信息] nvarchar(500) NULL
|
||||
GO
|
||||
IF COL_LENGTH(N'dbo.基础数据_设备工位点检表', N'使用部门') IS NULL
|
||||
ALTER TABLE [dbo].[基础数据_设备工位点检表] ADD [使用部门] nvarchar(100) NULL
|
||||
GO
|
||||
IF COL_LENGTH(N'dbo.基础数据_设备工位点检表', N'入账日期') IS NULL
|
||||
ALTER TABLE [dbo].[基础数据_设备工位点检表] ADD [入账日期] date NULL
|
||||
GO
|
||||
IF COL_LENGTH(N'dbo.基础数据_设备工位点检表', N'单位') IS NULL
|
||||
ALTER TABLE [dbo].[基础数据_设备工位点检表] ADD [单位] nvarchar(50) NULL
|
||||
GO
|
||||
IF COL_LENGTH(N'dbo.基础数据_设备工位点检表', N'数量') IS NULL
|
||||
ALTER TABLE [dbo].[基础数据_设备工位点检表] ADD [数量] decimal(18, 4) NULL
|
||||
GO
|
||||
IF COL_LENGTH(N'dbo.基础数据_设备工位点检表', N'状态') IS NULL
|
||||
ALTER TABLE [dbo].[基础数据_设备工位点检表] ADD [状态] nvarchar(50) NULL
|
||||
GO
|
||||
IF COL_LENGTH(N'dbo.基础数据_设备工位点检表', N'维修记录') IS NULL
|
||||
ALTER TABLE [dbo].[基础数据_设备工位点检表] ADD [维修记录] nvarchar(1000) NULL
|
||||
GO
|
||||
IF COL_LENGTH(N'dbo.基础数据_设备工位点检表', N'维保记录') IS NULL
|
||||
ALTER TABLE [dbo].[基础数据_设备工位点检表] ADD [维保记录] nvarchar(1000) NULL
|
||||
GO
|
||||
IF COL_LENGTH(N'dbo.基础数据_设备工位点检表', N'工位绑定') IS NULL
|
||||
ALTER TABLE [dbo].[基础数据_设备工位点检表] ADD [工位绑定] nvarchar(1000) NULL
|
||||
GO
|
||||
IF COL_LENGTH(N'dbo.基础数据_设备工位点检表', N'主要设备') IS NULL
|
||||
ALTER TABLE [dbo].[基础数据_设备工位点检表] ADD [主要设备] nvarchar(10) NULL
|
||||
GO
|
||||
IF COL_LENGTH(N'dbo.基础数据_设备工位点检表', N'设备标准开机工时') IS NULL
|
||||
ALTER TABLE [dbo].[基础数据_设备工位点检表] ADD [设备标准开机工时] decimal(18, 4) NULL
|
||||
GO
|
||||
IF COL_LENGTH(N'dbo.基础数据_设备工位点检表', N'特种设备') IS NULL
|
||||
ALTER TABLE [dbo].[基础数据_设备工位点检表] ADD [特种设备] nvarchar(10) NULL
|
||||
GO
|
||||
IF COL_LENGTH(N'dbo.基础数据_设备工位点检表', N'证书有效期至') IS NULL
|
||||
ALTER TABLE [dbo].[基础数据_设备工位点检表] ADD [证书有效期至] date NULL
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[设备管理_设备信息_查询]
|
||||
@设备名称_check bit = NULL,
|
||||
@设备名称 nvarchar(50) = NULL,
|
||||
@设备类型_check bit = NULL,
|
||||
@设备类型 int = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
SELECT
|
||||
a.*,
|
||||
d.[词条名称] AS [设备类型名称]
|
||||
FROM [dbo].[基础数据_设备工位点检表] a
|
||||
LEFT JOIN [dbo].[YL_基础表_数据字典] d ON a.[设备类型] = d.[AID]
|
||||
WHERE (@设备名称_check IS NULL OR @设备名称_check = 0 OR a.[设备名称] LIKE N'%' + ISNULL(@设备名称, N'') + N'%')
|
||||
AND (@设备类型_check IS NULL OR @设备类型_check = 0 OR a.[设备类型] = CONVERT(nvarchar(50), @设备类型))
|
||||
ORDER BY
|
||||
CASE
|
||||
WHEN a.[证书有效期至] IS NOT NULL AND a.[证书有效期至] < CONVERT(date, GETDATE()) THEN 0
|
||||
WHEN a.[证书有效期至] IS NOT NULL AND a.[证书有效期至] <= DATEADD(day, 30, CONVERT(date, GETDATE())) THEN 1
|
||||
ELSE 2
|
||||
END,
|
||||
a.[证书有效期至],
|
||||
a.[设备流水号] DESC;
|
||||
END
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[设备管理_设备信息_增加]
|
||||
@公司编码 nvarchar(100) = NULL,
|
||||
@设备名称 nvarchar(50) = NULL,
|
||||
@设备型号 nvarchar(50) = NULL,
|
||||
@设备类型 nvarchar(50) = NULL,
|
||||
@设备信息 nvarchar(500) = NULL,
|
||||
@使用部门 nvarchar(100) = NULL,
|
||||
@入账日期 date = NULL,
|
||||
@单位 nvarchar(50) = NULL,
|
||||
@数量 decimal(18, 4) = NULL,
|
||||
@状态 nvarchar(50) = NULL,
|
||||
@维修记录 nvarchar(1000) = NULL,
|
||||
@维保记录 nvarchar(1000) = NULL,
|
||||
@工位绑定 nvarchar(1000) = NULL,
|
||||
@主要设备 nvarchar(10) = NULL,
|
||||
@设备标准开机工时 decimal(18, 4) = NULL,
|
||||
@特种设备 nvarchar(10) = NULL,
|
||||
@证书有效期至 date = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
IF ISNULL(@公司编码, N'') = N''
|
||||
BEGIN
|
||||
SELECT '0' AS result, N'公司编码不能为空' AS message;
|
||||
RETURN;
|
||||
END
|
||||
|
||||
INSERT INTO [dbo].[基础数据_设备工位点检表] (
|
||||
[公司编码],
|
||||
[设备名称],
|
||||
[设备型号],
|
||||
[设备类型],
|
||||
[设备信息],
|
||||
[使用部门],
|
||||
[入账日期],
|
||||
[单位],
|
||||
[数量],
|
||||
[状态],
|
||||
[维修记录],
|
||||
[维保记录],
|
||||
[工位绑定],
|
||||
[主要设备],
|
||||
[设备标准开机工时],
|
||||
[特种设备],
|
||||
[证书有效期至]
|
||||
)
|
||||
VALUES (
|
||||
@公司编码,
|
||||
@设备名称,
|
||||
@设备型号,
|
||||
@设备类型,
|
||||
@设备信息,
|
||||
@使用部门,
|
||||
@入账日期,
|
||||
@单位,
|
||||
@数量,
|
||||
@状态,
|
||||
@维修记录,
|
||||
@维保记录,
|
||||
@工位绑定,
|
||||
@主要设备,
|
||||
@设备标准开机工时,
|
||||
@特种设备,
|
||||
@证书有效期至
|
||||
);
|
||||
|
||||
SELECT '1' AS result;
|
||||
END
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[设备管理_设备信息_编辑]
|
||||
@设备流水号 int = NULL,
|
||||
@公司编码 nvarchar(100) = NULL,
|
||||
@设备名称 nvarchar(50) = NULL,
|
||||
@设备型号 nvarchar(50) = NULL,
|
||||
@设备类型 nvarchar(50) = NULL,
|
||||
@设备信息 nvarchar(500) = NULL,
|
||||
@使用部门 nvarchar(100) = NULL,
|
||||
@入账日期 date = NULL,
|
||||
@单位 nvarchar(50) = NULL,
|
||||
@数量 decimal(18, 4) = NULL,
|
||||
@状态 nvarchar(50) = NULL,
|
||||
@维修记录 nvarchar(1000) = NULL,
|
||||
@维保记录 nvarchar(1000) = NULL,
|
||||
@工位绑定 nvarchar(1000) = NULL,
|
||||
@主要设备 nvarchar(10) = NULL,
|
||||
@设备标准开机工时 decimal(18, 4) = NULL,
|
||||
@特种设备 nvarchar(10) = NULL,
|
||||
@证书有效期至 date = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
UPDATE [dbo].[基础数据_设备工位点检表]
|
||||
SET
|
||||
[设备名称] = @设备名称,
|
||||
[设备型号] = @设备型号,
|
||||
[设备类型] = @设备类型,
|
||||
[设备信息] = @设备信息,
|
||||
[使用部门] = @使用部门,
|
||||
[入账日期] = @入账日期,
|
||||
[单位] = @单位,
|
||||
[数量] = @数量,
|
||||
[状态] = @状态,
|
||||
[维修记录] = @维修记录,
|
||||
[维保记录] = @维保记录,
|
||||
[工位绑定] = @工位绑定,
|
||||
[主要设备] = @主要设备,
|
||||
[设备标准开机工时] = @设备标准开机工时,
|
||||
[特种设备] = @特种设备,
|
||||
[证书有效期至] = @证书有效期至
|
||||
WHERE [设备流水号] = @设备流水号;
|
||||
|
||||
SELECT '1' AS result;
|
||||
END
|
||||
GO
|
||||
188
db_backups/update_plan_order_close_no_work_hours_20260630.sql
Normal file
188
db_backups/update_plan_order_close_no_work_hours_20260630.sql
Normal file
@@ -0,0 +1,188 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
/*
|
||||
2026-06-30
|
||||
生产订单关闭查询:可关闭订单补充“无工时但满足其他可关闭条件”的特殊情况。
|
||||
|
||||
规则:
|
||||
1. 有工时订单:继续要求 View_生产工时视图 中所有工时记录已校验。
|
||||
2. 无工时订单:必须在 MES_接口_生产计划 中存在,且 View_生产工时视图 中没有任何工时记录。
|
||||
3. 无工时订单不做工时全部校验,但仍必须满足原有可关闭条件:
|
||||
- 单据状态为空;
|
||||
- 终检/收检/计划数量/入库数量满足原过程 HAVING 条件;
|
||||
- 入库数量等于终检合格数。
|
||||
*/
|
||||
ALTER PROCEDURE [dbo].[计划排产_生产订单关闭_查询全部订单]
|
||||
@订单号 nvarchar(100) = N'',
|
||||
@单据状态 nvarchar(100) = N'', -- 可选值:'已关闭'、'未关闭'、'可关闭'
|
||||
@属性 nvarchar(100) = N''
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
IF (@单据状态 = N'可关闭')
|
||||
BEGIN
|
||||
CREATE TABLE #工时订单
|
||||
(
|
||||
订单号 nvarchar(100) NOT NULL PRIMARY KEY
|
||||
);
|
||||
|
||||
INSERT INTO #工时订单 (订单号)
|
||||
SELECT DISTINCT CONVERT(nvarchar(100), 订单号)
|
||||
FROM dbo.View_生产工时视图
|
||||
WHERE 订单号 IS NOT NULL;
|
||||
|
||||
;WITH 收检数量 AS
|
||||
(
|
||||
SELECT
|
||||
计划号,
|
||||
SUM(ISNULL(合格数, 0)) AS 合格数合计,
|
||||
SUM(ISNULL(不合格数, 0)) AS 不合格数合计
|
||||
FROM dbo.YL_质量检验_质检记录
|
||||
WHERE 质检类型 = N'收检'
|
||||
GROUP BY 计划号
|
||||
),
|
||||
终检数量 AS
|
||||
(
|
||||
SELECT
|
||||
计划号,
|
||||
SUM(ISNULL(合格数, 0)) AS 终检合格数合计,
|
||||
SUM(ISNULL(不合格数, 0)) AS 终检不合格数合计
|
||||
FROM dbo.YL_质量检验_质检记录
|
||||
WHERE 质检类型 = N'终检'
|
||||
GROUP BY 计划号
|
||||
),
|
||||
可关闭订单 AS
|
||||
(
|
||||
SELECT
|
||||
v.订单号 AS 订单编号,
|
||||
MAX(v.产品名称) AS 产品名称,
|
||||
MAX(v.产品编码) AS 产品编码,
|
||||
MAX(v.入库数量) AS 入库数量,
|
||||
MAX(v.订单合同号) AS 合同号,
|
||||
MAX(终检数量.终检不合格数合计) AS 终检不合格数合计,
|
||||
MAX(终检数量.终检合格数合计) AS 终检合格数合计,
|
||||
MAX(v.计划数量) AS 计划数量,
|
||||
MAX(v.确认状态) AS 确认状态,
|
||||
MAX(v.单据状态) AS 单据状态,
|
||||
MAX(收检数量.不合格数合计) AS 不合格数合计,
|
||||
MIN(CASE WHEN v.Expr1 IS NULL THEN 0 ELSE 1 END) AS 是否全部校验
|
||||
FROM dbo.View_生产工时视图 AS v
|
||||
LEFT JOIN 收检数量 ON v.订单号 = 收检数量.计划号
|
||||
LEFT JOIN 终检数量 ON v.订单号 = 终检数量.计划号
|
||||
WHERE v.单据状态 IS NULL
|
||||
AND (@订单号 = N'' OR v.订单号 = @订单号)
|
||||
AND (
|
||||
@属性 NOT IN (N'机加', N'装配')
|
||||
OR (@属性 = N'机加' AND v.自制件属性 = N'机加件')
|
||||
OR (@属性 = N'装配' AND v.自制件属性 LIKE N'%装配%')
|
||||
)
|
||||
GROUP BY v.订单号
|
||||
HAVING
|
||||
MIN(CASE WHEN v.Expr1 IS NULL THEN 0 ELSE 1 END) = 1
|
||||
AND (
|
||||
MAX(终检数量.终检合格数合计) + MAX(收检数量.不合格数合计) = MAX(v.计划数量)
|
||||
OR MAX(v.计划数量) = MAX(v.入库数量)
|
||||
OR MAX(收检数量.不合格数合计) = MAX(v.计划数量)
|
||||
)
|
||||
AND MAX(ISNULL(v.入库数量, 0)) = MAX(ISNULL(终检数量.终检合格数合计, 0))
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
CONVERT(nvarchar(100), p.订单编号) AS 订单编号,
|
||||
MAX(p.物料描述) AS 产品名称,
|
||||
MAX(p.物料编号) AS 产品编码,
|
||||
MAX(p.入库数量) AS 入库数量,
|
||||
MAX(p.合同号) AS 合同号,
|
||||
MAX(终检数量.终检不合格数合计) AS 终检不合格数合计,
|
||||
MAX(终检数量.终检合格数合计) AS 终检合格数合计,
|
||||
MAX(p.计划数量) AS 计划数量,
|
||||
MAX(p.确认状态) AS 确认状态,
|
||||
MAX(p.单据状态) AS 单据状态,
|
||||
MAX(收检数量.不合格数合计) AS 不合格数合计,
|
||||
1 AS 是否全部校验
|
||||
FROM dbo.MES_接口_生产计划 AS p
|
||||
LEFT JOIN 收检数量 ON CONVERT(nvarchar(100), p.订单编号) = CONVERT(nvarchar(100), 收检数量.计划号)
|
||||
LEFT JOIN 终检数量 ON CONVERT(nvarchar(100), p.订单编号) = CONVERT(nvarchar(100), 终检数量.计划号)
|
||||
LEFT JOIN #工时订单 AS wh ON wh.订单号 = CONVERT(nvarchar(100), p.订单编号)
|
||||
WHERE p.单据状态 IS NULL
|
||||
AND wh.订单号 IS NULL
|
||||
AND (@订单号 = N'' OR CONVERT(nvarchar(100), p.订单编号) = @订单号)
|
||||
AND (
|
||||
@属性 NOT IN (N'机加', N'装配')
|
||||
OR (@属性 = N'机加' AND p.自制件属性 = N'机加件')
|
||||
OR (@属性 = N'装配' AND p.自制件属性 LIKE N'%装配%')
|
||||
)
|
||||
GROUP BY p.订单编号
|
||||
HAVING
|
||||
(
|
||||
MAX(终检数量.终检合格数合计) + MAX(收检数量.不合格数合计) = MAX(p.计划数量)
|
||||
OR MAX(p.计划数量) = MAX(p.入库数量)
|
||||
OR MAX(收检数量.不合格数合计) = MAX(p.计划数量)
|
||||
)
|
||||
AND MAX(ISNULL(p.入库数量, 0)) = MAX(ISNULL(终检数量.终检合格数合计, 0))
|
||||
)
|
||||
SELECT
|
||||
订单编号,
|
||||
产品名称,
|
||||
产品编码,
|
||||
入库数量,
|
||||
合同号,
|
||||
终检不合格数合计,
|
||||
终检合格数合计,
|
||||
计划数量,
|
||||
确认状态,
|
||||
单据状态,
|
||||
不合格数合计,
|
||||
是否全部校验
|
||||
FROM 可关闭订单
|
||||
ORDER BY 订单编号;
|
||||
|
||||
RETURN;
|
||||
END
|
||||
|
||||
SELECT TOP 100
|
||||
v.订单编号,
|
||||
MAX(v.物料描述) AS 产品名称,
|
||||
MAX(v.物料编号) AS 产品编码,
|
||||
MAX(v.入库数量) AS 入库数量,
|
||||
MAX(v.合同号) AS 合同号,
|
||||
MAX(zj_终检数量.终检不合格数合计) AS 终检不合格数合计,
|
||||
MAX(zj_终检数量.终检合格数合计) AS 终检合格数合计,
|
||||
MAX(v.计划数量) AS 计划数量,
|
||||
MAX(v.确认状态) AS 确认状态,
|
||||
MAX(v.单据状态) AS 单据状态
|
||||
FROM dbo.MES_接口_生产计划 AS v
|
||||
LEFT JOIN
|
||||
(
|
||||
SELECT
|
||||
计划号,
|
||||
SUM(ISNULL(合格数, 0)) AS 终检合格数合计,
|
||||
SUM(ISNULL(不合格数, 0)) AS 终检不合格数合计
|
||||
FROM dbo.YL_质量检验_质检记录
|
||||
WHERE 质检类型 = N'终检'
|
||||
GROUP BY 计划号
|
||||
) AS zj_终检数量 ON v.订单编号 = zj_终检数量.计划号
|
||||
WHERE 1 = 1
|
||||
AND (@订单号 = N'' OR CONVERT(nvarchar(100), v.订单编号) = @订单号)
|
||||
AND (
|
||||
@单据状态 NOT IN (N'SAP未关闭', N'已关闭', N'未关闭')
|
||||
OR (@单据状态 = N'SAP未关闭' AND v.单据状态 = N'已关闭')
|
||||
OR (@单据状态 = N'已关闭' AND (v.单据状态 = N'已关闭' OR v.单据状态 = N'已取消'))
|
||||
OR (@单据状态 = N'未关闭' AND v.单据状态 IS NULL)
|
||||
)
|
||||
AND (
|
||||
@属性 NOT IN (N'机加', N'装配')
|
||||
OR (@属性 = N'机加' AND v.自制件属性 = N'机加件')
|
||||
OR (@属性 = N'装配' AND v.自制件属性 LIKE N'%装配%')
|
||||
)
|
||||
GROUP BY v.订单编号;
|
||||
END
|
||||
GO
|
||||
173
db_backups/update_quality_details_release_qty_20260626.sql
Normal file
173
db_backups/update_quality_details_release_qty_20260626.sql
Normal file
@@ -0,0 +1,173 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
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,
|
||||
@放行 nvarchar(10) = NULL
|
||||
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 @放行 = '1'
|
||||
SET @where = @where + ' AND ISNULL(放行数量, 0) > 0 '
|
||||
ELSE IF @放行 = '0'
|
||||
SET @where = @where + ' AND ISNULL(放行数量, 0) <= 0 '
|
||||
|
||||
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
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[质量管理_质检明细_导出]
|
||||
@质检类型 nvarchar(4000) = '10',
|
||||
@开始日期 datetime = NULL,
|
||||
@结束日期 datetime = NULL,
|
||||
@订单号 nvarchar(4000) = '0',
|
||||
@合同号 nvarchar(4000) = '0',
|
||||
@零件编码 nvarchar(4000) = '0',
|
||||
@零件名称 nvarchar(4000) = '0',
|
||||
@放行 nvarchar(10) = 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*40 AS 零件编码, 256*20 AS 零件名称, 256*12 AS 内部合同号, 256*12 AS 计划号,
|
||||
256*15 AS 工序名称, 256*15 AS 检验数量, 256*10 AS 合格数, 256*25 AS 不合格数, 256*12 AS 放行数量,
|
||||
256*12 AS 检测人, 256*10 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 检测时间, 0 AS 检测说明
|
||||
|
||||
DECLARE @where nvarchar(max) = ' where '
|
||||
DECLARE @selStr nvarchar(max) =
|
||||
'SELECT
|
||||
[质检类型]
|
||||
,[零件编码]
|
||||
,[零件名称]
|
||||
,[内部合同号]
|
||||
,[计划号]
|
||||
,[工序名称]
|
||||
,[检验数量]
|
||||
,[合格数]
|
||||
,[不合格数]
|
||||
,[放行数量]
|
||||
,[检测人]
|
||||
,[工位名称]
|
||||
,[检测时间]
|
||||
,[检测说明]
|
||||
FROM [dbo].[View_质检明细]'
|
||||
|
||||
IF @质检类型 = '10'
|
||||
SET @where = @where + ' (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 @放行 = '1'
|
||||
SET @where = @where + ' AND ISNULL(放行数量, 0) > 0 '
|
||||
ELSE IF @放行 = '0'
|
||||
SET @where = @where + ' AND ISNULL(放行数量, 0) <= 0 '
|
||||
|
||||
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 @selStr = @selStr + @where + ' ORDER BY 检测时间 DESC'
|
||||
EXEC sp_executesql @selStr
|
||||
END
|
||||
GO
|
||||
@@ -0,0 +1,409 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
IF OBJECT_ID(N'dbo.生产管理_及时齐套跟踪结果_查询', N'P') IS NULL
|
||||
BEGIN
|
||||
EXEC(N'CREATE PROCEDURE [dbo].[生产管理_及时齐套跟踪结果_查询] AS BEGIN SET NOCOUNT ON; END');
|
||||
END
|
||||
GO
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[生产管理_及时齐套跟踪结果_查询]
|
||||
@订单号 int = 0,
|
||||
@物料类型 nvarchar(50) = N'',
|
||||
@合同号 nvarchar(50) = N'',
|
||||
@产品编码 nvarchar(50) = N'',
|
||||
@产品名称 nvarchar(50) = N'',
|
||||
@工序名称 nvarchar(50) = N'',
|
||||
@计划开始 nvarchar(50) = N'',
|
||||
@计划完成 nvarchar(50) = N'',
|
||||
@排产状态 nvarchar(50) = N'全部',
|
||||
@指派对象 nvarchar(50) = N'全部',
|
||||
@计划号 nvarchar(50) = N'',
|
||||
@发货状态 nvarchar(50) = N'全部',
|
||||
@齐套 nvarchar(50) = N'全部',
|
||||
@检验状态 nvarchar(50) = N'',
|
||||
@发料状态 nvarchar(50) = N'全部',
|
||||
@自制件属性 nvarchar(50) = N'全部'
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH SAP缺件源 AS (
|
||||
SELECT
|
||||
s.DocEntry,
|
||||
s.Project COLLATE DATABASE_DEFAULT AS Project,
|
||||
s.[行号],
|
||||
s.ItemCode COLLATE DATABASE_DEFAULT AS ItemCode,
|
||||
s.U_Name COLLATE DATABASE_DEFAULT AS U_Name,
|
||||
ISNULL(s.[属性] COLLATE DATABASE_DEFAULT, N'') AS 属性,
|
||||
ISNULL(s.[未发货数量], 0) AS 未发货数量,
|
||||
ISNULL(s.[库存量], 0) AS 库存数量,
|
||||
ISNULL(s.[在制采购], 0) AS 在制采购,
|
||||
s.[采购预计交货日期],
|
||||
ISNULL(s.[采购未清数量], 0) AS 采购未清数量,
|
||||
ISNULL(s.[到货草稿], 0) AS 到货草稿
|
||||
FROM [SAP].[SBO_YL].[dbo].[VIEW_Jijiankukc] AS s
|
||||
WHERE ISNULL(s.[未发货数量], 0) > 0
|
||||
),
|
||||
SAP缺件 AS (
|
||||
SELECT TOP (2000)
|
||||
src.*
|
||||
FROM (
|
||||
SELECT
|
||||
SAP缺件源.*,
|
||||
ROW_NUMBER() OVER (
|
||||
PARTITION BY
|
||||
SAP缺件源.DocEntry,
|
||||
SAP缺件源.Project,
|
||||
SAP缺件源.ItemCode,
|
||||
SAP缺件源.属性
|
||||
ORDER BY
|
||||
SAP缺件源.[未发货数量] DESC,
|
||||
SAP缺件源.[行号]
|
||||
) AS rn
|
||||
FROM SAP缺件源
|
||||
) AS src
|
||||
WHERE src.rn = 1
|
||||
),
|
||||
查询结果 AS (
|
||||
SELECT
|
||||
ISNULL(v.[计划号], N'') AS [计划号],
|
||||
ISNULL(v.[合同号], N'') AS [合同号],
|
||||
v.[订单编号] AS [订单号],
|
||||
v.[物料编号] AS [产品编码],
|
||||
v.[物料描述] AS [产品名称],
|
||||
v.[计划数量订单],
|
||||
v.[入库数量],
|
||||
v.[计划完成] AS [要求完工日期],
|
||||
v.[要求发货日期],
|
||||
CASE
|
||||
WHEN ISNULL(v.[发货状态], 0) = 1 THEN N'已发货'
|
||||
ELSE N'未发货'
|
||||
END AS [发货状态],
|
||||
CASE
|
||||
WHEN ISNULL(v.[齐套], 0) = 1 THEN N'是'
|
||||
ELSE N'否'
|
||||
END AS [齐套],
|
||||
CASE
|
||||
WHEN ISNULL(v.[拣配状态], 0) = 1 THEN N'已拣配'
|
||||
ELSE N'未拣配'
|
||||
END AS [拣配状态],
|
||||
CASE
|
||||
WHEN ISNULL(v.[发料状态], N'') = N'1' THEN N'发料齐套'
|
||||
WHEN ISNULL(v.[发料状态], N'') = N'2' THEN N'发料缺件'
|
||||
ELSE N'未发料'
|
||||
END AS [发料状态],
|
||||
CASE
|
||||
WHEN ISNULL(v.[任务状态], 0) IN (2, 4) OR v.[开工时间] > '1900-01-01' THEN N'已开工'
|
||||
ELSE N'待执行'
|
||||
END AS [装配开工],
|
||||
v.[完成数量],
|
||||
CASE
|
||||
WHEN final_check.[计划号] IS NOT NULL THEN N'是'
|
||||
ELSE N'否'
|
||||
END AS [终检],
|
||||
CASE WHEN ISNULL(v.[生产工艺], 0) = 1 THEN N'是' ELSE N'否' END AS [生产工艺],
|
||||
CASE WHEN ISNULL(v.[排产状态], 0) = 1 THEN N'已排产' ELSE N'未排产' END AS [排产状态],
|
||||
ISNULL(v.[自制件属性], N'') AS [自制件属性],
|
||||
v.[计划开始时间] AS [预计齐套时间],
|
||||
sap.ItemCode AS [缺件物料编码],
|
||||
sap.U_Name AS [缺件物料名称],
|
||||
sap.[未发货数量] AS [缺件数量],
|
||||
sap.[库存数量] AS [库存数量],
|
||||
CASE WHEN sap.[属性] = N'' THEN N'外购' ELSE sap.[属性] END AS [缺件属性],
|
||||
CASE
|
||||
WHEN sap.[属性] = N'' THEN ISNULL(CONVERT(nvarchar(50), NULLIF(sap.[到货草稿], 0)), N'')
|
||||
ELSE ISNULL(CONVERT(nvarchar(50), detail_order.[订单编号]), N'')
|
||||
END AS [缺件生产订单号],
|
||||
CASE WHEN sap.[属性] = N'' THEN N'' ELSE ISNULL(current_step.[当前序], N'') END AS [进度],
|
||||
CASE
|
||||
WHEN sap.[属性] = N'' THEN
|
||||
N'未清数量:' + CONVERT(nvarchar(30), sap.[采购未清数量]) +
|
||||
N' / 到货草稿:' + CONVERT(nvarchar(30), sap.[到货草稿]) +
|
||||
N' / 质检状态:' + ISNULL(purchase_check.[质检状态], N'未完成')
|
||||
ELSE ISNULL(route.[工艺路线], N'')
|
||||
END AS [工艺路线],
|
||||
CASE
|
||||
WHEN sap.[属性] = N'' THEN sap.[采购预计交货日期]
|
||||
ELSE route.[预计完成时间]
|
||||
END AS [预计完成时间],
|
||||
CASE WHEN sap.[属性] = N'' THEN N'' ELSE ISNULL(route.[工艺路线明细], N'[]') END AS [工艺路线明细],
|
||||
sap.[采购未清数量],
|
||||
sap.[到货草稿],
|
||||
ISNULL(purchase_check.[质检状态], CASE WHEN sap.[属性] = N'' THEN N'未完成' ELSE N'' END) AS [质检状态],
|
||||
sap.DocEntry AS [SAP单据],
|
||||
sap.[行号] AS [SAP行号]
|
||||
FROM SAP缺件 AS sap
|
||||
OUTER APPLY (
|
||||
SELECT TOP (1) m.*
|
||||
FROM [dbo].[View_生产订单_MES] AS m
|
||||
WHERE m.[物料类型] = N'pit_Resource'
|
||||
AND ISNULL(m.[排产状态], 0) = 1
|
||||
AND m.[订单编号] = sap.DocEntry
|
||||
ORDER BY m.[订单行号]
|
||||
) AS v
|
||||
OUTER APPLY (
|
||||
SELECT TOP (1) m.*
|
||||
FROM [dbo].[View_生产订单_MES] AS m
|
||||
WHERE m.[物料类型] = N'pit_Resource'
|
||||
AND ISNULL(m.[排产状态], 0) = 1
|
||||
AND m.[订单编号] <> v.[订单编号]
|
||||
AND (
|
||||
(sap.[属性] = N'机加件' AND m.[物料编号] = sap.ItemCode)
|
||||
OR (sap.[属性] LIKE N'%装配%' AND m.[物料编号] = sap.ItemCode AND ISNULL(m.[合同号], N'') = ISNULL(sap.Project, N''))
|
||||
)
|
||||
ORDER BY m.[订单编号] DESC, m.[订单行号]
|
||||
) AS detail_order
|
||||
OUTER APPLY (
|
||||
SELECT TOP (1) q.[计划号]
|
||||
FROM [dbo].[YL_质量检验_质检记录] AS q
|
||||
WHERE q.[质检类型] = N'终检'
|
||||
AND q.[计划号] = v.[订单编号]
|
||||
) AS final_check
|
||||
OUTER APPLY (
|
||||
SELECT
|
||||
MAX(p.[计划完成时间]) AS [预计完成时间],
|
||||
STUFF((
|
||||
SELECT N'、' + p2.[工序名称] +
|
||||
CASE WHEN ISNULL(p2.[指派对象], N'') = N'' THEN N'' ELSE N'(' + p2.[指派对象] + N')' END
|
||||
FROM [dbo].[View_生产订单_MES] AS p2
|
||||
WHERE p2.[订单编号] = detail_order.[订单编号]
|
||||
AND p2.[物料类型] = N'pit_Resource'
|
||||
ORDER BY p2.[订单行号]
|
||||
FOR XML PATH(N''), TYPE
|
||||
).value(N'.', N'nvarchar(max)'), 1, 1, N'') AS [工艺路线],
|
||||
(
|
||||
SELECT
|
||||
p2.[订单行号],
|
||||
p2.[工序名称],
|
||||
p2.[指派对象],
|
||||
p2.[计划开始时间],
|
||||
p2.[计划完成时间],
|
||||
ISNULL(p2.[进度], 0) AS [进度],
|
||||
ISNULL(p2.[完成数量], 0) AS [完成数量],
|
||||
ISNULL(p2.[收料数量], 0) AS [收料数量],
|
||||
ISNULL(p2.[加工状态], 0) AS [加工状态],
|
||||
p2.[开工时间],
|
||||
ISNULL(check_qty.[收检合格数], 0) AS [收检合格数],
|
||||
ISNULL(check_qty.[收检不合格数], 0) AS [收检不合格数]
|
||||
FROM [dbo].[View_生产订单_MES] AS p2
|
||||
OUTER APPLY (
|
||||
SELECT
|
||||
SUM(ISNULL(q.[合格数], 0)) AS [收检合格数],
|
||||
SUM(ISNULL(q.[不合格数], 0)) AS [收检不合格数]
|
||||
FROM [dbo].[YL_质量检验_质检记录] AS q
|
||||
WHERE q.[TaskAID] = p2.[TaskAID]
|
||||
AND q.[质检类型] = N'收检'
|
||||
) AS check_qty
|
||||
WHERE p2.[订单编号] = detail_order.[订单编号]
|
||||
AND p2.[物料类型] = N'pit_Resource'
|
||||
ORDER BY p2.[订单行号]
|
||||
FOR JSON PATH
|
||||
) AS [工艺路线明细]
|
||||
FROM [dbo].[View_生产订单_MES] AS p
|
||||
WHERE p.[订单编号] = detail_order.[订单编号]
|
||||
AND p.[物料类型] = N'pit_Resource'
|
||||
) AS route
|
||||
OUTER APPLY (
|
||||
SELECT TOP (1)
|
||||
pending.[订单行号],
|
||||
pending.[工序名称],
|
||||
pending.[加工状态],
|
||||
pending.[进度],
|
||||
pending.[完成数量],
|
||||
pending.[计划数量],
|
||||
pending.[开工时间]
|
||||
FROM [dbo].[View_生产订单_MES] AS pending
|
||||
WHERE pending.[订单编号] = detail_order.[订单编号]
|
||||
AND pending.[物料类型] = N'pit_Resource'
|
||||
AND NOT (
|
||||
ISNULL(pending.[进度], 0) >= 100
|
||||
OR (ISNULL(pending.[计划数量], 0) > 0 AND ISNULL(pending.[完成数量], 0) >= ISNULL(pending.[计划数量], 0))
|
||||
)
|
||||
ORDER BY pending.[订单行号]
|
||||
) AS pending
|
||||
OUTER APPLY (
|
||||
SELECT TOP (1) prev.[工序名称]
|
||||
FROM [dbo].[View_生产订单_MES] AS prev
|
||||
WHERE prev.[订单编号] = detail_order.[订单编号]
|
||||
AND prev.[物料类型] = N'pit_Resource'
|
||||
AND prev.[订单行号] < pending.[订单行号]
|
||||
ORDER BY prev.[订单行号] DESC
|
||||
) AS prev_step
|
||||
OUTER APPLY (
|
||||
SELECT TOP (1) last_step.[工序名称]
|
||||
FROM [dbo].[View_生产订单_MES] AS last_step
|
||||
WHERE last_step.[订单编号] = detail_order.[订单编号]
|
||||
AND last_step.[物料类型] = N'pit_Resource'
|
||||
ORDER BY last_step.[订单行号] DESC
|
||||
) AS last_step
|
||||
OUTER APPLY (
|
||||
SELECT
|
||||
CASE
|
||||
WHEN detail_order.[订单编号] IS NULL THEN N''
|
||||
WHEN pending.[订单行号] IS NULL THEN ISNULL(last_step.[工序名称], N'') + N'毕'
|
||||
WHEN ISNULL(pending.[进度], 0) > 0
|
||||
OR ISNULL(pending.[完成数量], 0) > 0
|
||||
OR ISNULL(pending.[加工状态], 0) IN (2, 3, 4, 5, 6)
|
||||
OR pending.[开工时间] > '1900-01-01'
|
||||
THEN ISNULL(pending.[工序名称], N'') + N'中'
|
||||
WHEN prev_step.[工序名称] IS NULL THEN N''
|
||||
ELSE prev_step.[工序名称] + N'毕待' + ISNULL(pending.[工序名称], N'')
|
||||
END AS [当前序]
|
||||
) AS current_step
|
||||
OUTER APPLY (
|
||||
SELECT
|
||||
CASE
|
||||
WHEN sap.[属性] <> N'' THEN N''
|
||||
WHEN EXISTS (
|
||||
SELECT 1
|
||||
FROM [dbo].[质量检验_质检任务_SAP] AS task
|
||||
OUTER APPLY (
|
||||
SELECT SUM(ISNULL(q.[检验数量], 0)) AS [已检验数量]
|
||||
FROM [dbo].[YL_质量检验_质检记录] AS q
|
||||
WHERE q.[检测类型编号] = 5
|
||||
AND q.[计划号] = task.[订单编号]
|
||||
AND q.[行号] = task.[行号]
|
||||
AND q.[订单类型] = task.[订单类型]
|
||||
) AS checked_qty
|
||||
WHERE sap.[到货草稿] > 0
|
||||
AND task.[订单类型] = N'20'
|
||||
AND task.[订单编号] = sap.[到货草稿]
|
||||
AND ISNULL(task.[入库数量], 0) > 0
|
||||
)
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM [dbo].[质量检验_质检任务_SAP] AS task
|
||||
OUTER APPLY (
|
||||
SELECT SUM(ISNULL(q.[检验数量], 0)) AS [已检验数量]
|
||||
FROM [dbo].[YL_质量检验_质检记录] AS q
|
||||
WHERE q.[检测类型编号] = 5
|
||||
AND q.[计划号] = task.[订单编号]
|
||||
AND q.[行号] = task.[行号]
|
||||
AND q.[订单类型] = task.[订单类型]
|
||||
) AS checked_qty
|
||||
WHERE sap.[到货草稿] > 0
|
||||
AND task.[订单类型] = N'20'
|
||||
AND task.[订单编号] = sap.[到货草稿]
|
||||
AND (
|
||||
ISNULL(task.[入库数量], 0) <= 0
|
||||
OR ISNULL(checked_qty.[已检验数量], 0) < ISNULL(task.[入库数量], 0)
|
||||
)
|
||||
) THEN N'已完成'
|
||||
ELSE N'未完成'
|
||||
END AS [质检状态]
|
||||
) AS purchase_check
|
||||
WHERE
|
||||
v.[订单编号] IS NOT NULL
|
||||
AND (@订单号 <= 0 OR v.[订单编号] = @订单号)
|
||||
AND (@计划号 = N'' OR ISNULL(v.[计划号], N'') = @计划号)
|
||||
AND (@合同号 = N'' OR ISNULL(v.[合同号], N'') LIKE N'%' + @合同号 + N'%')
|
||||
AND (@产品编码 = N'' OR ISNULL(v.[物料编号], N'') LIKE N'%' + @产品编码 + N'%')
|
||||
AND (@产品名称 = N'' OR ISNULL(v.[物料描述], N'') LIKE N'%' + @产品名称 + N'%')
|
||||
AND (@工序名称 = N'' OR EXISTS (
|
||||
SELECT 1
|
||||
FROM [dbo].[View_生产订单_MES] AS fp
|
||||
WHERE fp.[订单编号] = v.[订单编号]
|
||||
AND fp.[工序名称] = @工序名称
|
||||
))
|
||||
AND (@计划开始 = N'' OR v.[计划开始时间] >= TRY_CONVERT(datetime, @计划开始))
|
||||
AND (@计划完成 = N'' OR v.[计划开始时间] <= TRY_CONVERT(datetime, @计划完成))
|
||||
AND (@排产状态 = N'全部' OR @排产状态 = N'' OR
|
||||
(@排产状态 = N'已完成' AND ISNULL(v.[排产状态], 0) = 1) OR
|
||||
(@排产状态 = N'未完成' AND ISNULL(v.[排产状态], 0) = 0)
|
||||
)
|
||||
AND (@指派对象 = N'全部' OR @指派对象 = N'' OR EXISTS (
|
||||
SELECT 1
|
||||
FROM [dbo].[View_生产订单_MES] AS ap
|
||||
WHERE ap.[订单编号] = v.[订单编号]
|
||||
AND ap.[指派对象] IN (SELECT LTRIM(RTRIM(value)) FROM STRING_SPLIT(@指派对象, N','))
|
||||
))
|
||||
AND (@发货状态 = N'全部' OR @发货状态 = N'' OR
|
||||
(@发货状态 = N'已发货' AND ISNULL(v.[发货状态], N'0') = N'1') OR
|
||||
(@发货状态 = N'未发货' AND ISNULL(v.[发货状态], N'0') <> N'1')
|
||||
)
|
||||
AND (@齐套 = N'全部' OR @齐套 = N'' OR
|
||||
(@齐套 = N'是' AND ISNULL(v.[齐套], 0) = 1) OR
|
||||
(@齐套 = N'否' AND ISNULL(v.[齐套], 0) <> 1)
|
||||
)
|
||||
AND (@发料状态 = N'全部' OR @发料状态 = N'' OR
|
||||
(@发料状态 = N'发料齐套' AND ISNULL(v.[发料状态], N'0') = N'1') OR
|
||||
(@发料状态 = N'发料缺件' AND ISNULL(v.[发料状态], N'0') = N'2') OR
|
||||
(@发料状态 = N'未发料' AND ISNULL(v.[发料状态], N'0') NOT IN (N'1', N'2'))
|
||||
)
|
||||
AND (@自制件属性 = N'全部' OR @自制件属性 = N'' OR
|
||||
(@自制件属性 = N'机加' AND (sap.[属性] = N'机加件' OR v.[自制件属性] = N'机加件')) OR
|
||||
(@自制件属性 = N'装配' AND (sap.[属性] LIKE N'%装配%' OR v.[自制件属性] LIKE N'%装配%'))
|
||||
)
|
||||
AND (@检验状态 = N'' OR (sap.[属性] = N'' AND ISNULL(purchase_check.[质检状态], N'') = @检验状态))
|
||||
)
|
||||
SELECT TOP (1000)
|
||||
[计划号],
|
||||
[合同号],
|
||||
[订单号],
|
||||
[产品编码],
|
||||
[产品名称],
|
||||
[计划数量订单],
|
||||
[入库数量],
|
||||
[要求完工日期],
|
||||
[要求发货日期],
|
||||
[发货状态],
|
||||
[齐套],
|
||||
[拣配状态],
|
||||
[发料状态],
|
||||
[装配开工],
|
||||
[完成数量],
|
||||
[终检],
|
||||
[生产工艺],
|
||||
[排产状态],
|
||||
[自制件属性],
|
||||
[预计齐套时间],
|
||||
[缺件物料编码],
|
||||
[缺件物料名称],
|
||||
[缺件数量],
|
||||
[库存数量],
|
||||
[缺件属性],
|
||||
[缺件生产订单号],
|
||||
[进度],
|
||||
[工艺路线],
|
||||
[预计完成时间],
|
||||
[工艺路线明细],
|
||||
[采购未清数量],
|
||||
[到货草稿],
|
||||
[质检状态],
|
||||
[SAP单据],
|
||||
[SAP行号]
|
||||
FROM (
|
||||
SELECT
|
||||
查询结果.*,
|
||||
ROW_NUMBER() OVER (
|
||||
PARTITION BY
|
||||
[订单号],
|
||||
CASE
|
||||
WHEN ISNULL([缺件生产订单号], N'') <> N'' THEN [缺件生产订单号]
|
||||
ELSE [缺件物料编码] + N':' + CONVERT(nvarchar(30), [SAP行号])
|
||||
END
|
||||
ORDER BY [缺件数量] DESC, [SAP单据], [SAP行号]
|
||||
) AS rn
|
||||
FROM 查询结果
|
||||
) AS dedup
|
||||
WHERE rn = 1
|
||||
ORDER BY
|
||||
[预计齐套时间],
|
||||
[订单号],
|
||||
[缺件生产订单号],
|
||||
[缺件物料编码];
|
||||
END
|
||||
GO
|
||||
@@ -0,0 +1,423 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
IF OBJECT_ID(N'dbo.生产管理_及时齐套跟踪结果_查询', N'P') IS NULL
|
||||
BEGIN
|
||||
EXEC(N'CREATE PROCEDURE [dbo].[生产管理_及时齐套跟踪结果_查询] AS BEGIN SET NOCOUNT ON; END');
|
||||
END
|
||||
GO
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[生产管理_及时齐套跟踪结果_查询]
|
||||
@订单号 int = 0,
|
||||
@物料类型 nvarchar(50) = N'',
|
||||
@合同号 nvarchar(50) = N'',
|
||||
@产品编码 nvarchar(50) = N'',
|
||||
@产品名称 nvarchar(50) = N'',
|
||||
@工序名称 nvarchar(50) = N'',
|
||||
@计划开始 nvarchar(50) = N'',
|
||||
@计划完成 nvarchar(50) = N'',
|
||||
@排产状态 nvarchar(50) = N'全部',
|
||||
@指派对象 nvarchar(50) = N'全部',
|
||||
@计划号 nvarchar(50) = N'',
|
||||
@发货状态 nvarchar(50) = N'全部',
|
||||
@齐套 nvarchar(50) = N'全部',
|
||||
@检验状态 nvarchar(50) = N'',
|
||||
@发料状态 nvarchar(50) = N'全部',
|
||||
@自制件属性 nvarchar(50) = N'全部'
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH SAP缺件源 AS (
|
||||
SELECT
|
||||
s.DocEntry,
|
||||
s.Project COLLATE DATABASE_DEFAULT AS Project,
|
||||
s.[行号],
|
||||
s.ItemCode COLLATE DATABASE_DEFAULT AS ItemCode,
|
||||
s.U_Name COLLATE DATABASE_DEFAULT AS U_Name,
|
||||
ISNULL(s.[属性] COLLATE DATABASE_DEFAULT, N'') AS 属性,
|
||||
ISNULL(s.[未发货数量], 0) AS 未发货数量,
|
||||
ISNULL(s.[库存量], 0) AS 库存数量,
|
||||
ISNULL(s.[在制采购], 0) AS 在制采购,
|
||||
ISNULL(s.DocNum, 0) AS DocNum,
|
||||
s.[采购员] COLLATE DATABASE_DEFAULT AS 采购员,
|
||||
s.[采购预计交货日期],
|
||||
ISNULL(s.[采购未清数量], 0) AS 采购未清数量,
|
||||
ISNULL(s.[到货草稿], 0) AS 到货草稿
|
||||
FROM [SAP].[SBO_YL].[dbo].[VIEW_Jijiankukc] AS s
|
||||
WHERE ISNULL(s.[未发货数量], 0) > 0
|
||||
),
|
||||
SAP缺件 AS (
|
||||
SELECT TOP (2000)
|
||||
src.*
|
||||
FROM (
|
||||
SELECT
|
||||
SAP缺件源.*,
|
||||
ROW_NUMBER() OVER (
|
||||
PARTITION BY
|
||||
SAP缺件源.DocEntry,
|
||||
SAP缺件源.Project,
|
||||
SAP缺件源.ItemCode,
|
||||
SAP缺件源.属性
|
||||
ORDER BY
|
||||
SAP缺件源.[未发货数量] DESC,
|
||||
SAP缺件源.[行号]
|
||||
) AS rn
|
||||
FROM SAP缺件源
|
||||
) AS src
|
||||
WHERE src.rn = 1
|
||||
),
|
||||
查询结果 AS (
|
||||
SELECT
|
||||
ISNULL(v.[计划号], N'') AS [计划号],
|
||||
ISNULL(v.[合同号], N'') AS [合同号],
|
||||
v.[订单编号] AS [订单号],
|
||||
v.[物料编号] AS [产品编码],
|
||||
v.[物料描述] AS [产品名称],
|
||||
v.[计划数量订单],
|
||||
v.[入库数量],
|
||||
v.[计划完成] AS [要求完工日期],
|
||||
v.[要求发货日期],
|
||||
CASE
|
||||
WHEN ISNULL(v.[发货状态], 0) = 1 THEN N'已发货'
|
||||
ELSE N'未发货'
|
||||
END AS [发货状态],
|
||||
CASE
|
||||
WHEN ISNULL(v.[齐套], 0) = 1 THEN N'是'
|
||||
ELSE N'否'
|
||||
END AS [齐套],
|
||||
CASE
|
||||
WHEN ISNULL(v.[拣配状态], 0) = 1 THEN N'已拣配'
|
||||
ELSE N'未拣配'
|
||||
END AS [拣配状态],
|
||||
CASE
|
||||
WHEN ISNULL(v.[发料状态], N'') = N'1' THEN N'发料齐套'
|
||||
WHEN ISNULL(v.[发料状态], N'') = N'2' THEN N'发料缺件'
|
||||
ELSE N'未发料'
|
||||
END AS [发料状态],
|
||||
CASE
|
||||
WHEN ISNULL(v.[任务状态], 0) IN (2, 4) OR v.[开工时间] > '1900-01-01' THEN N'已开工'
|
||||
ELSE N'待执行'
|
||||
END AS [装配开工],
|
||||
v.[完成数量],
|
||||
CASE
|
||||
WHEN final_check.[计划号] IS NOT NULL THEN N'是'
|
||||
ELSE N'否'
|
||||
END AS [终检],
|
||||
CASE WHEN ISNULL(v.[生产工艺], 0) = 1 THEN N'是' ELSE N'否' END AS [生产工艺],
|
||||
CASE WHEN ISNULL(v.[排产状态], 0) = 1 THEN N'已排产' ELSE N'未排产' END AS [排产状态],
|
||||
ISNULL(v.[自制件属性], N'') AS [自制件属性],
|
||||
v.[计划开始时间] AS [预计齐套时间],
|
||||
sap.ItemCode AS [缺件物料编码],
|
||||
sap.U_Name AS [缺件物料名称],
|
||||
sap.[未发货数量] AS [缺件数量],
|
||||
sap.[库存数量] AS [库存数量],
|
||||
CASE WHEN sap.[属性] = N'' THEN N'外购' ELSE sap.[属性] END AS [缺件属性],
|
||||
CASE
|
||||
WHEN sap.[属性] = N'' THEN ISNULL(CONVERT(nvarchar(50), NULLIF(sap.[在制采购], 0)), N'')
|
||||
ELSE ISNULL(CONVERT(nvarchar(50), detail_order.[订单编号]), N'')
|
||||
END AS [缺件生产订单号],
|
||||
CASE WHEN sap.[属性] = N'' THEN N'' ELSE ISNULL(current_step.[当前序], N'') END AS [进度],
|
||||
CASE
|
||||
WHEN sap.[属性] = N'' THEN
|
||||
N'采购员:' + ISNULL(NULLIF(sap.[采购员], N''), N'-') +
|
||||
N' / 未清数量:' + CONVERT(nvarchar(30), sap.[采购未清数量]) +
|
||||
N' / 到货草稿:' + CONVERT(nvarchar(30), sap.[到货草稿]) +
|
||||
N' / 质检状态:' + ISNULL(purchase_check.[质检状态], N'未完成')
|
||||
ELSE ISNULL(route.[工艺路线], N'')
|
||||
END AS [工艺路线],
|
||||
CASE
|
||||
WHEN sap.[属性] = N'' THEN sap.[采购预计交货日期]
|
||||
ELSE route.[预计完成时间]
|
||||
END AS [预计完成时间],
|
||||
CASE WHEN sap.[属性] = N'' THEN N'' ELSE ISNULL(route.[工艺路线明细], N'[]') END AS [工艺路线明细],
|
||||
sap.[采购未清数量],
|
||||
sap.[到货草稿],
|
||||
ISNULL(purchase_check.[质检状态], CASE WHEN sap.[属性] = N'' THEN N'未完成' ELSE N'' END) AS [质检状态],
|
||||
sap.DocEntry AS [SAP单据],
|
||||
sap.[行号] AS [SAP行号]
|
||||
FROM SAP缺件 AS sap
|
||||
OUTER APPLY (
|
||||
SELECT TOP (1) m.*
|
||||
FROM [dbo].[View_生产订单_MES] AS m
|
||||
WHERE m.[物料类型] = N'pit_Resource'
|
||||
AND ISNULL(m.[排产状态], 0) = 1
|
||||
AND m.[订单编号] = sap.DocEntry
|
||||
ORDER BY m.[订单行号]
|
||||
) AS v
|
||||
OUTER APPLY (
|
||||
SELECT m.*
|
||||
FROM (
|
||||
SELECT
|
||||
m.*,
|
||||
ROW_NUMBER() OVER (
|
||||
PARTITION BY m.[订单编号]
|
||||
ORDER BY m.[订单行号]
|
||||
) AS rn
|
||||
FROM [dbo].[View_生产订单_MES] AS m
|
||||
WHERE m.[物料类型] = N'pit_Resource'
|
||||
AND ISNULL(m.[排产状态], 0) = 1
|
||||
AND m.[订单编号] <> v.[订单编号]
|
||||
AND (
|
||||
(sap.[属性] = N'机加件' AND (
|
||||
m.[物料编号] = sap.ItemCode
|
||||
OR (sap.DocNum > 0 AND m.[订单编号] = sap.DocNum)
|
||||
))
|
||||
OR (sap.[属性] LIKE N'%装配%' AND m.[物料编号] = sap.ItemCode AND ISNULL(m.[合同号], N'') = ISNULL(sap.Project, N''))
|
||||
)
|
||||
) AS m
|
||||
WHERE m.rn = 1
|
||||
) AS detail_order
|
||||
OUTER APPLY (
|
||||
SELECT TOP (1) q.[计划号]
|
||||
FROM [dbo].[YL_质量检验_质检记录] AS q
|
||||
WHERE q.[质检类型] = N'终检'
|
||||
AND q.[计划号] = v.[订单编号]
|
||||
) AS final_check
|
||||
OUTER APPLY (
|
||||
SELECT
|
||||
MAX(p.[计划完成时间]) AS [预计完成时间],
|
||||
STUFF((
|
||||
SELECT N'、' + p2.[工序名称] +
|
||||
CASE WHEN ISNULL(p2.[指派对象], N'') = N'' THEN N'' ELSE N'(' + p2.[指派对象] + N')' END
|
||||
FROM [dbo].[View_生产订单_MES] AS p2
|
||||
WHERE p2.[订单编号] = detail_order.[订单编号]
|
||||
AND p2.[物料类型] = N'pit_Resource'
|
||||
ORDER BY p2.[订单行号]
|
||||
FOR XML PATH(N''), TYPE
|
||||
).value(N'.', N'nvarchar(max)'), 1, 1, N'') AS [工艺路线],
|
||||
(
|
||||
SELECT
|
||||
p2.[订单行号],
|
||||
p2.[工序名称],
|
||||
p2.[指派对象],
|
||||
p2.[计划开始时间],
|
||||
p2.[计划完成时间],
|
||||
ISNULL(p2.[进度], 0) AS [进度],
|
||||
ISNULL(p2.[完成数量], 0) AS [完成数量],
|
||||
ISNULL(p2.[收料数量], 0) AS [收料数量],
|
||||
ISNULL(p2.[加工状态], 0) AS [加工状态],
|
||||
p2.[开工时间],
|
||||
ISNULL(check_qty.[收检合格数], 0) AS [收检合格数],
|
||||
ISNULL(check_qty.[收检不合格数], 0) AS [收检不合格数]
|
||||
FROM [dbo].[View_生产订单_MES] AS p2
|
||||
OUTER APPLY (
|
||||
SELECT
|
||||
SUM(ISNULL(q.[合格数], 0)) AS [收检合格数],
|
||||
SUM(ISNULL(q.[不合格数], 0)) AS [收检不合格数]
|
||||
FROM [dbo].[YL_质量检验_质检记录] AS q
|
||||
WHERE q.[TaskAID] = p2.[TaskAID]
|
||||
AND q.[质检类型] = N'收检'
|
||||
) AS check_qty
|
||||
WHERE p2.[订单编号] = detail_order.[订单编号]
|
||||
AND p2.[物料类型] = N'pit_Resource'
|
||||
ORDER BY p2.[订单行号]
|
||||
FOR JSON PATH
|
||||
) AS [工艺路线明细]
|
||||
FROM [dbo].[View_生产订单_MES] AS p
|
||||
WHERE p.[订单编号] = detail_order.[订单编号]
|
||||
AND p.[物料类型] = N'pit_Resource'
|
||||
) AS route
|
||||
OUTER APPLY (
|
||||
SELECT TOP (1)
|
||||
pending.[订单行号],
|
||||
pending.[工序名称],
|
||||
pending.[加工状态],
|
||||
pending.[进度],
|
||||
pending.[完成数量],
|
||||
pending.[计划数量],
|
||||
pending.[开工时间]
|
||||
FROM [dbo].[View_生产订单_MES] AS pending
|
||||
WHERE pending.[订单编号] = detail_order.[订单编号]
|
||||
AND pending.[物料类型] = N'pit_Resource'
|
||||
AND NOT (
|
||||
ISNULL(pending.[进度], 0) >= 100
|
||||
OR (ISNULL(pending.[计划数量], 0) > 0 AND ISNULL(pending.[完成数量], 0) >= ISNULL(pending.[计划数量], 0))
|
||||
)
|
||||
ORDER BY pending.[订单行号]
|
||||
) AS pending
|
||||
OUTER APPLY (
|
||||
SELECT TOP (1) prev.[工序名称]
|
||||
FROM [dbo].[View_生产订单_MES] AS prev
|
||||
WHERE prev.[订单编号] = detail_order.[订单编号]
|
||||
AND prev.[物料类型] = N'pit_Resource'
|
||||
AND prev.[订单行号] < pending.[订单行号]
|
||||
ORDER BY prev.[订单行号] DESC
|
||||
) AS prev_step
|
||||
OUTER APPLY (
|
||||
SELECT TOP (1) last_step.[工序名称]
|
||||
FROM [dbo].[View_生产订单_MES] AS last_step
|
||||
WHERE last_step.[订单编号] = detail_order.[订单编号]
|
||||
AND last_step.[物料类型] = N'pit_Resource'
|
||||
ORDER BY last_step.[订单行号] DESC
|
||||
) AS last_step
|
||||
OUTER APPLY (
|
||||
SELECT
|
||||
CASE
|
||||
WHEN detail_order.[订单编号] IS NULL THEN N''
|
||||
WHEN pending.[订单行号] IS NULL THEN ISNULL(last_step.[工序名称], N'') + N'毕'
|
||||
WHEN ISNULL(pending.[进度], 0) > 0
|
||||
OR ISNULL(pending.[完成数量], 0) > 0
|
||||
OR ISNULL(pending.[加工状态], 0) IN (2, 3, 4, 5, 6)
|
||||
OR pending.[开工时间] > '1900-01-01'
|
||||
THEN ISNULL(pending.[工序名称], N'') + N'中'
|
||||
WHEN prev_step.[工序名称] IS NULL THEN N''
|
||||
ELSE prev_step.[工序名称] + N'毕待' + ISNULL(pending.[工序名称], N'')
|
||||
END AS [当前序]
|
||||
) AS current_step
|
||||
OUTER APPLY (
|
||||
SELECT
|
||||
CASE
|
||||
WHEN sap.[属性] <> N'' THEN N''
|
||||
WHEN EXISTS (
|
||||
SELECT 1
|
||||
FROM [dbo].[质量检验_质检任务_SAP] AS task
|
||||
OUTER APPLY (
|
||||
SELECT SUM(ISNULL(q.[检验数量], 0)) AS [已检验数量]
|
||||
FROM [dbo].[YL_质量检验_质检记录] AS q
|
||||
WHERE q.[检测类型编号] = 5
|
||||
AND q.[计划号] = task.[订单编号]
|
||||
AND q.[行号] = task.[行号]
|
||||
AND q.[订单类型] = task.[订单类型]
|
||||
) AS checked_qty
|
||||
WHERE sap.[到货草稿] > 0
|
||||
AND task.[订单类型] = N'20'
|
||||
AND task.[订单编号] = sap.[到货草稿]
|
||||
AND ISNULL(task.[入库数量], 0) > 0
|
||||
)
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM [dbo].[质量检验_质检任务_SAP] AS task
|
||||
OUTER APPLY (
|
||||
SELECT SUM(ISNULL(q.[检验数量], 0)) AS [已检验数量]
|
||||
FROM [dbo].[YL_质量检验_质检记录] AS q
|
||||
WHERE q.[检测类型编号] = 5
|
||||
AND q.[计划号] = task.[订单编号]
|
||||
AND q.[行号] = task.[行号]
|
||||
AND q.[订单类型] = task.[订单类型]
|
||||
) AS checked_qty
|
||||
WHERE sap.[到货草稿] > 0
|
||||
AND task.[订单类型] = N'20'
|
||||
AND task.[订单编号] = sap.[到货草稿]
|
||||
AND (
|
||||
ISNULL(task.[入库数量], 0) <= 0
|
||||
OR ISNULL(checked_qty.[已检验数量], 0) < ISNULL(task.[入库数量], 0)
|
||||
)
|
||||
) THEN N'已完成'
|
||||
ELSE N'未完成'
|
||||
END AS [质检状态]
|
||||
) AS purchase_check
|
||||
WHERE
|
||||
v.[订单编号] IS NOT NULL
|
||||
AND (@订单号 <= 0 OR v.[订单编号] = @订单号)
|
||||
AND (@计划号 = N'' OR ISNULL(v.[计划号], N'') = @计划号)
|
||||
AND (@合同号 = N'' OR ISNULL(v.[合同号], N'') LIKE N'%' + @合同号 + N'%')
|
||||
AND (@产品编码 = N'' OR ISNULL(v.[物料编号], N'') LIKE N'%' + @产品编码 + N'%')
|
||||
AND (@产品名称 = N'' OR ISNULL(v.[物料描述], N'') LIKE N'%' + @产品名称 + N'%')
|
||||
AND (@工序名称 = N'' OR EXISTS (
|
||||
SELECT 1
|
||||
FROM [dbo].[View_生产订单_MES] AS fp
|
||||
WHERE fp.[订单编号] = v.[订单编号]
|
||||
AND fp.[工序名称] = @工序名称
|
||||
))
|
||||
AND (@计划开始 = N'' OR v.[计划开始时间] >= TRY_CONVERT(datetime, @计划开始))
|
||||
AND (@计划完成 = N'' OR v.[计划开始时间] <= TRY_CONVERT(datetime, @计划完成))
|
||||
AND (@排产状态 = N'全部' OR @排产状态 = N'' OR
|
||||
(@排产状态 = N'已完成' AND ISNULL(v.[排产状态], 0) = 1) OR
|
||||
(@排产状态 = N'未完成' AND ISNULL(v.[排产状态], 0) = 0)
|
||||
)
|
||||
AND (@指派对象 = N'全部' OR @指派对象 = N'' OR EXISTS (
|
||||
SELECT 1
|
||||
FROM [dbo].[View_生产订单_MES] AS ap
|
||||
WHERE ap.[订单编号] = v.[订单编号]
|
||||
AND ap.[指派对象] IN (SELECT LTRIM(RTRIM(value)) FROM STRING_SPLIT(@指派对象, N','))
|
||||
))
|
||||
AND (@发货状态 = N'全部' OR @发货状态 = N'' OR
|
||||
(@发货状态 = N'已发货' AND ISNULL(v.[发货状态], N'0') = N'1') OR
|
||||
(@发货状态 = N'未发货' AND ISNULL(v.[发货状态], N'0') <> N'1')
|
||||
)
|
||||
AND (@齐套 = N'全部' OR @齐套 = N'' OR
|
||||
(@齐套 = N'是' AND ISNULL(v.[齐套], 0) = 1) OR
|
||||
(@齐套 = N'否' AND ISNULL(v.[齐套], 0) <> 1)
|
||||
)
|
||||
AND (@发料状态 = N'全部' OR @发料状态 = N'' OR
|
||||
(@发料状态 = N'发料齐套' AND ISNULL(v.[发料状态], N'0') = N'1') OR
|
||||
(@发料状态 = N'发料缺件' AND ISNULL(v.[发料状态], N'0') = N'2') OR
|
||||
(@发料状态 = N'未发料' AND ISNULL(v.[发料状态], N'0') NOT IN (N'1', N'2'))
|
||||
)
|
||||
AND (@自制件属性 = N'全部' OR @自制件属性 = N'' OR
|
||||
(@自制件属性 = N'机加' AND (sap.[属性] = N'机加件' OR v.[自制件属性] = N'机加件')) OR
|
||||
(@自制件属性 = N'装配' AND (sap.[属性] LIKE N'%装配%' OR v.[自制件属性] LIKE N'%装配%'))
|
||||
)
|
||||
AND (@检验状态 = N'' OR (sap.[属性] = N'' AND ISNULL(purchase_check.[质检状态], N'') = @检验状态))
|
||||
)
|
||||
SELECT TOP (1000)
|
||||
[计划号],
|
||||
[合同号],
|
||||
[订单号],
|
||||
[产品编码],
|
||||
[产品名称],
|
||||
[计划数量订单],
|
||||
[入库数量],
|
||||
[要求完工日期],
|
||||
[要求发货日期],
|
||||
[发货状态],
|
||||
[齐套],
|
||||
[拣配状态],
|
||||
[发料状态],
|
||||
[装配开工],
|
||||
[完成数量],
|
||||
[终检],
|
||||
[生产工艺],
|
||||
[排产状态],
|
||||
[自制件属性],
|
||||
[预计齐套时间],
|
||||
[缺件物料编码],
|
||||
[缺件物料名称],
|
||||
[缺件数量],
|
||||
[库存数量],
|
||||
[缺件属性],
|
||||
[缺件生产订单号],
|
||||
[进度],
|
||||
[工艺路线],
|
||||
[预计完成时间],
|
||||
[工艺路线明细],
|
||||
[采购未清数量],
|
||||
[到货草稿],
|
||||
[质检状态],
|
||||
[SAP单据],
|
||||
[SAP行号]
|
||||
FROM (
|
||||
SELECT
|
||||
查询结果.*,
|
||||
ROW_NUMBER() OVER (
|
||||
PARTITION BY
|
||||
[订单号],
|
||||
CASE
|
||||
WHEN ISNULL([缺件生产订单号], N'') <> N'' THEN [缺件生产订单号]
|
||||
ELSE [缺件物料编码] + N':' + CONVERT(nvarchar(30), [SAP行号])
|
||||
END
|
||||
ORDER BY [缺件数量] DESC, [SAP单据], [SAP行号]
|
||||
) AS rn
|
||||
FROM 查询结果
|
||||
) AS dedup
|
||||
WHERE rn = 1
|
||||
ORDER BY
|
||||
[预计齐套时间],
|
||||
[订单号],
|
||||
[缺件生产订单号],
|
||||
[缺件物料编码];
|
||||
END
|
||||
GO
|
||||
@@ -0,0 +1,418 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
IF OBJECT_ID(N'dbo.生产管理_及时齐套跟踪结果_查询', N'P') IS NULL
|
||||
BEGIN
|
||||
EXEC(N'CREATE PROCEDURE [dbo].[生产管理_及时齐套跟踪结果_查询] AS BEGIN SET NOCOUNT ON; END');
|
||||
END
|
||||
GO
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[生产管理_及时齐套跟踪结果_查询]
|
||||
@订单号 int = 0,
|
||||
@物料类型 nvarchar(50) = N'',
|
||||
@合同号 nvarchar(50) = N'',
|
||||
@产品编码 nvarchar(50) = N'',
|
||||
@产品名称 nvarchar(50) = N'',
|
||||
@工序名称 nvarchar(50) = N'',
|
||||
@计划开始 nvarchar(50) = N'',
|
||||
@计划完成 nvarchar(50) = N'',
|
||||
@排产状态 nvarchar(50) = N'全部',
|
||||
@指派对象 nvarchar(50) = N'全部',
|
||||
@计划号 nvarchar(50) = N'',
|
||||
@发货状态 nvarchar(50) = N'全部',
|
||||
@齐套 nvarchar(50) = N'全部',
|
||||
@检验状态 nvarchar(50) = N'',
|
||||
@发料状态 nvarchar(50) = N'全部',
|
||||
@自制件属性 nvarchar(50) = N'全部'
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH SAP缺件源 AS (
|
||||
SELECT
|
||||
s.DocEntry,
|
||||
s.Project COLLATE DATABASE_DEFAULT AS Project,
|
||||
s.[行号],
|
||||
s.ItemCode COLLATE DATABASE_DEFAULT AS ItemCode,
|
||||
s.U_Name COLLATE DATABASE_DEFAULT AS U_Name,
|
||||
ISNULL(s.[属性] COLLATE DATABASE_DEFAULT, N'') AS 属性,
|
||||
ISNULL(s.[未发货数量], 0) AS 未发货数量,
|
||||
ISNULL(s.[库存量], 0) AS 库存数量,
|
||||
ISNULL(s.[在制采购], 0) AS 在制采购,
|
||||
ISNULL(s.DocNum, 0) AS DocNum,
|
||||
s.[采购员] COLLATE DATABASE_DEFAULT AS 采购员,
|
||||
s.[采购预计交货日期],
|
||||
ISNULL(s.[采购未清数量], 0) AS 采购未清数量,
|
||||
ISNULL(s.[到货草稿], 0) AS 到货草稿
|
||||
FROM [SAP].[SBO_YL].[dbo].[VIEW_Jijiankukc] AS s
|
||||
WHERE ISNULL(s.[未发货数量], 0) > 0
|
||||
),
|
||||
SAP缺件 AS (
|
||||
SELECT TOP (2000)
|
||||
src.*
|
||||
FROM (
|
||||
SELECT
|
||||
SAP缺件源.*,
|
||||
ROW_NUMBER() OVER (
|
||||
PARTITION BY
|
||||
SAP缺件源.DocEntry,
|
||||
SAP缺件源.Project,
|
||||
SAP缺件源.ItemCode,
|
||||
SAP缺件源.属性
|
||||
ORDER BY
|
||||
SAP缺件源.[未发货数量] DESC,
|
||||
SAP缺件源.[行号]
|
||||
) AS rn
|
||||
FROM SAP缺件源
|
||||
) AS src
|
||||
WHERE src.rn = 1
|
||||
),
|
||||
查询结果 AS (
|
||||
SELECT
|
||||
ISNULL(v.[计划号], N'') AS [计划号],
|
||||
ISNULL(v.[合同号], N'') AS [合同号],
|
||||
v.[订单编号] AS [订单号],
|
||||
v.[物料编号] AS [产品编码],
|
||||
v.[物料描述] AS [产品名称],
|
||||
v.[计划数量订单],
|
||||
v.[入库数量],
|
||||
v.[计划完成] AS [要求完工日期],
|
||||
v.[要求发货日期],
|
||||
CASE
|
||||
WHEN ISNULL(v.[发货状态], 0) = 1 THEN N'已发货'
|
||||
ELSE N'未发货'
|
||||
END AS [发货状态],
|
||||
CASE
|
||||
WHEN ISNULL(v.[齐套], 0) = 1 THEN N'是'
|
||||
ELSE N'否'
|
||||
END AS [齐套],
|
||||
CASE
|
||||
WHEN ISNULL(v.[拣配状态], 0) = 1 THEN N'已拣配'
|
||||
ELSE N'未拣配'
|
||||
END AS [拣配状态],
|
||||
CASE
|
||||
WHEN ISNULL(v.[发料状态], N'') = N'1' THEN N'发料齐套'
|
||||
WHEN ISNULL(v.[发料状态], N'') = N'2' THEN N'发料缺件'
|
||||
ELSE N'未发料'
|
||||
END AS [发料状态],
|
||||
CASE
|
||||
WHEN ISNULL(v.[任务状态], 0) IN (2, 4) OR v.[开工时间] > '1900-01-01' THEN N'已开工'
|
||||
ELSE N'待执行'
|
||||
END AS [装配开工],
|
||||
v.[完成数量],
|
||||
CASE
|
||||
WHEN final_check.[计划号] IS NOT NULL THEN N'是'
|
||||
ELSE N'否'
|
||||
END AS [终检],
|
||||
CASE WHEN ISNULL(v.[生产工艺], 0) = 1 THEN N'是' ELSE N'否' END AS [生产工艺],
|
||||
CASE WHEN ISNULL(v.[排产状态], 0) = 1 THEN N'已排产' ELSE N'未排产' END AS [排产状态],
|
||||
ISNULL(v.[自制件属性], N'') AS [自制件属性],
|
||||
v.[计划开始时间] AS [预计齐套时间],
|
||||
sap.ItemCode AS [缺件物料编码],
|
||||
sap.U_Name AS [缺件物料名称],
|
||||
sap.[未发货数量] AS [缺件数量],
|
||||
sap.[库存数量] AS [库存数量],
|
||||
CASE WHEN sap.[属性] = N'' THEN N'外购' ELSE sap.[属性] END AS [缺件属性],
|
||||
CASE
|
||||
WHEN sap.[属性] = N'' THEN ISNULL(CONVERT(nvarchar(50), NULLIF(sap.[在制采购], 0)), N'')
|
||||
ELSE ISNULL(CONVERT(nvarchar(50), detail_order.[订单编号]), N'')
|
||||
END AS [缺件生产订单号],
|
||||
CASE WHEN sap.[属性] = N'' THEN N'' ELSE ISNULL(current_step.[当前序], N'') END AS [进度],
|
||||
CASE
|
||||
WHEN sap.[属性] = N'' THEN
|
||||
N'采购员:' + ISNULL(NULLIF(sap.[采购员], N''), N'-') +
|
||||
N' / 未清数量:' + CONVERT(nvarchar(30), sap.[采购未清数量]) +
|
||||
N' / 到货草稿:' + CONVERT(nvarchar(30), sap.[到货草稿]) +
|
||||
N' / 质检状态:' + ISNULL(purchase_check.[质检状态], N'未完成')
|
||||
ELSE ISNULL(route.[工艺路线], N'')
|
||||
END AS [工艺路线],
|
||||
CASE
|
||||
WHEN sap.[属性] = N'' THEN sap.[采购预计交货日期]
|
||||
ELSE route.[预计完成时间]
|
||||
END AS [预计完成时间],
|
||||
CASE WHEN sap.[属性] = N'' THEN N'' ELSE ISNULL(route.[工艺路线明细], N'[]') END AS [工艺路线明细],
|
||||
sap.[采购未清数量],
|
||||
sap.[到货草稿],
|
||||
ISNULL(purchase_check.[质检状态], CASE WHEN sap.[属性] = N'' THEN N'未完成' ELSE N'' END) AS [质检状态],
|
||||
sap.DocEntry AS [SAP单据],
|
||||
sap.[行号] AS [SAP行号]
|
||||
FROM SAP缺件 AS sap
|
||||
OUTER APPLY (
|
||||
SELECT TOP (1) m.*
|
||||
FROM [dbo].[View_生产订单_MES] AS m
|
||||
WHERE m.[物料类型] = N'pit_Resource'
|
||||
AND ISNULL(m.[排产状态], 0) = 1
|
||||
AND m.[订单编号] = sap.DocEntry
|
||||
ORDER BY m.[订单行号]
|
||||
) AS v
|
||||
OUTER APPLY (
|
||||
SELECT TOP (1) m.*
|
||||
FROM [dbo].[View_生产订单_MES] AS m
|
||||
WHERE m.[物料类型] = N'pit_Resource'
|
||||
AND ISNULL(m.[排产状态], 0) = 1
|
||||
AND m.[订单编号] <> v.[订单编号]
|
||||
AND (
|
||||
(sap.[属性] = N'机加件' AND (
|
||||
(sap.DocNum > 0 AND m.[订单编号] = sap.DocNum)
|
||||
OR (sap.DocNum <= 0 AND m.[物料编号] = sap.ItemCode)
|
||||
))
|
||||
OR (sap.[属性] LIKE N'%装配%' AND m.[物料编号] = sap.ItemCode AND ISNULL(m.[合同号], N'') = ISNULL(sap.Project, N''))
|
||||
)
|
||||
ORDER BY
|
||||
CASE WHEN sap.DocNum > 0 AND m.[订单编号] = sap.DocNum THEN 0 ELSE 1 END,
|
||||
m.[订单编号] DESC,
|
||||
m.[订单行号]
|
||||
) AS detail_order
|
||||
OUTER APPLY (
|
||||
SELECT TOP (1) q.[计划号]
|
||||
FROM [dbo].[YL_质量检验_质检记录] AS q
|
||||
WHERE q.[质检类型] = N'终检'
|
||||
AND q.[计划号] = v.[订单编号]
|
||||
) AS final_check
|
||||
OUTER APPLY (
|
||||
SELECT
|
||||
MAX(p.[计划完成时间]) AS [预计完成时间],
|
||||
STUFF((
|
||||
SELECT N'、' + p2.[工序名称] +
|
||||
CASE WHEN ISNULL(p2.[指派对象], N'') = N'' THEN N'' ELSE N'(' + p2.[指派对象] + N')' END
|
||||
FROM [dbo].[View_生产订单_MES] AS p2
|
||||
WHERE p2.[订单编号] = detail_order.[订单编号]
|
||||
AND p2.[物料类型] = N'pit_Resource'
|
||||
ORDER BY p2.[订单行号]
|
||||
FOR XML PATH(N''), TYPE
|
||||
).value(N'.', N'nvarchar(max)'), 1, 1, N'') AS [工艺路线],
|
||||
(
|
||||
SELECT
|
||||
p2.[订单行号],
|
||||
p2.[工序名称],
|
||||
p2.[指派对象],
|
||||
p2.[计划开始时间],
|
||||
p2.[计划完成时间],
|
||||
ISNULL(p2.[进度], 0) AS [进度],
|
||||
ISNULL(p2.[完成数量], 0) AS [完成数量],
|
||||
ISNULL(p2.[收料数量], 0) AS [收料数量],
|
||||
ISNULL(p2.[加工状态], 0) AS [加工状态],
|
||||
p2.[开工时间],
|
||||
ISNULL(check_qty.[收检合格数], 0) AS [收检合格数],
|
||||
ISNULL(check_qty.[收检不合格数], 0) AS [收检不合格数]
|
||||
FROM [dbo].[View_生产订单_MES] AS p2
|
||||
OUTER APPLY (
|
||||
SELECT
|
||||
SUM(ISNULL(q.[合格数], 0)) AS [收检合格数],
|
||||
SUM(ISNULL(q.[不合格数], 0)) AS [收检不合格数]
|
||||
FROM [dbo].[YL_质量检验_质检记录] AS q
|
||||
WHERE q.[TaskAID] = p2.[TaskAID]
|
||||
AND q.[质检类型] = N'收检'
|
||||
) AS check_qty
|
||||
WHERE p2.[订单编号] = detail_order.[订单编号]
|
||||
AND p2.[物料类型] = N'pit_Resource'
|
||||
ORDER BY p2.[订单行号]
|
||||
FOR JSON PATH
|
||||
) AS [工艺路线明细]
|
||||
FROM [dbo].[View_生产订单_MES] AS p
|
||||
WHERE p.[订单编号] = detail_order.[订单编号]
|
||||
AND p.[物料类型] = N'pit_Resource'
|
||||
) AS route
|
||||
OUTER APPLY (
|
||||
SELECT TOP (1)
|
||||
pending.[订单行号],
|
||||
pending.[工序名称],
|
||||
pending.[加工状态],
|
||||
pending.[进度],
|
||||
pending.[完成数量],
|
||||
pending.[计划数量],
|
||||
pending.[开工时间]
|
||||
FROM [dbo].[View_生产订单_MES] AS pending
|
||||
WHERE pending.[订单编号] = detail_order.[订单编号]
|
||||
AND pending.[物料类型] = N'pit_Resource'
|
||||
AND NOT (
|
||||
ISNULL(pending.[进度], 0) >= 100
|
||||
OR (ISNULL(pending.[计划数量], 0) > 0 AND ISNULL(pending.[完成数量], 0) >= ISNULL(pending.[计划数量], 0))
|
||||
)
|
||||
ORDER BY pending.[订单行号]
|
||||
) AS pending
|
||||
OUTER APPLY (
|
||||
SELECT TOP (1) prev.[工序名称]
|
||||
FROM [dbo].[View_生产订单_MES] AS prev
|
||||
WHERE prev.[订单编号] = detail_order.[订单编号]
|
||||
AND prev.[物料类型] = N'pit_Resource'
|
||||
AND prev.[订单行号] < pending.[订单行号]
|
||||
ORDER BY prev.[订单行号] DESC
|
||||
) AS prev_step
|
||||
OUTER APPLY (
|
||||
SELECT TOP (1) last_step.[工序名称]
|
||||
FROM [dbo].[View_生产订单_MES] AS last_step
|
||||
WHERE last_step.[订单编号] = detail_order.[订单编号]
|
||||
AND last_step.[物料类型] = N'pit_Resource'
|
||||
ORDER BY last_step.[订单行号] DESC
|
||||
) AS last_step
|
||||
OUTER APPLY (
|
||||
SELECT
|
||||
CASE
|
||||
WHEN detail_order.[订单编号] IS NULL THEN N''
|
||||
WHEN pending.[订单行号] IS NULL THEN ISNULL(last_step.[工序名称], N'') + N'毕'
|
||||
WHEN ISNULL(pending.[进度], 0) > 0
|
||||
OR ISNULL(pending.[完成数量], 0) > 0
|
||||
OR ISNULL(pending.[加工状态], 0) IN (2, 3, 4, 5, 6)
|
||||
OR pending.[开工时间] > '1900-01-01'
|
||||
THEN ISNULL(pending.[工序名称], N'') + N'中'
|
||||
WHEN prev_step.[工序名称] IS NULL THEN N''
|
||||
ELSE prev_step.[工序名称] + N'毕待' + ISNULL(pending.[工序名称], N'')
|
||||
END AS [当前序]
|
||||
) AS current_step
|
||||
OUTER APPLY (
|
||||
SELECT
|
||||
CASE
|
||||
WHEN sap.[属性] <> N'' THEN N''
|
||||
WHEN EXISTS (
|
||||
SELECT 1
|
||||
FROM [dbo].[质量检验_质检任务_SAP] AS task
|
||||
OUTER APPLY (
|
||||
SELECT SUM(ISNULL(q.[检验数量], 0)) AS [已检验数量]
|
||||
FROM [dbo].[YL_质量检验_质检记录] AS q
|
||||
WHERE q.[检测类型编号] = 5
|
||||
AND q.[计划号] = task.[订单编号]
|
||||
AND q.[行号] = task.[行号]
|
||||
AND q.[订单类型] = task.[订单类型]
|
||||
) AS checked_qty
|
||||
WHERE sap.[到货草稿] > 0
|
||||
AND task.[订单类型] = N'20'
|
||||
AND task.[订单编号] = sap.[到货草稿]
|
||||
AND ISNULL(task.[入库数量], 0) > 0
|
||||
)
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM [dbo].[质量检验_质检任务_SAP] AS task
|
||||
OUTER APPLY (
|
||||
SELECT SUM(ISNULL(q.[检验数量], 0)) AS [已检验数量]
|
||||
FROM [dbo].[YL_质量检验_质检记录] AS q
|
||||
WHERE q.[检测类型编号] = 5
|
||||
AND q.[计划号] = task.[订单编号]
|
||||
AND q.[行号] = task.[行号]
|
||||
AND q.[订单类型] = task.[订单类型]
|
||||
) AS checked_qty
|
||||
WHERE sap.[到货草稿] > 0
|
||||
AND task.[订单类型] = N'20'
|
||||
AND task.[订单编号] = sap.[到货草稿]
|
||||
AND (
|
||||
ISNULL(task.[入库数量], 0) <= 0
|
||||
OR ISNULL(checked_qty.[已检验数量], 0) < ISNULL(task.[入库数量], 0)
|
||||
)
|
||||
) THEN N'已完成'
|
||||
ELSE N'未完成'
|
||||
END AS [质检状态]
|
||||
) AS purchase_check
|
||||
WHERE
|
||||
v.[订单编号] IS NOT NULL
|
||||
AND (@订单号 <= 0 OR v.[订单编号] = @订单号)
|
||||
AND (@计划号 = N'' OR ISNULL(v.[计划号], N'') = @计划号)
|
||||
AND (@合同号 = N'' OR ISNULL(v.[合同号], N'') LIKE N'%' + @合同号 + N'%')
|
||||
AND (@产品编码 = N'' OR ISNULL(v.[物料编号], N'') LIKE N'%' + @产品编码 + N'%')
|
||||
AND (@产品名称 = N'' OR ISNULL(v.[物料描述], N'') LIKE N'%' + @产品名称 + N'%')
|
||||
AND (@工序名称 = N'' OR EXISTS (
|
||||
SELECT 1
|
||||
FROM [dbo].[View_生产订单_MES] AS fp
|
||||
WHERE fp.[订单编号] = v.[订单编号]
|
||||
AND fp.[工序名称] = @工序名称
|
||||
))
|
||||
AND (@计划开始 = N'' OR v.[计划开始时间] >= TRY_CONVERT(datetime, @计划开始))
|
||||
AND (@计划完成 = N'' OR v.[计划开始时间] <= TRY_CONVERT(datetime, @计划完成))
|
||||
AND (@排产状态 = N'全部' OR @排产状态 = N'' OR
|
||||
(@排产状态 = N'已完成' AND ISNULL(v.[排产状态], 0) = 1) OR
|
||||
(@排产状态 = N'未完成' AND ISNULL(v.[排产状态], 0) = 0)
|
||||
)
|
||||
AND (@指派对象 = N'全部' OR @指派对象 = N'' OR EXISTS (
|
||||
SELECT 1
|
||||
FROM [dbo].[View_生产订单_MES] AS ap
|
||||
WHERE ap.[订单编号] = v.[订单编号]
|
||||
AND ap.[指派对象] IN (SELECT LTRIM(RTRIM(value)) FROM STRING_SPLIT(@指派对象, N','))
|
||||
))
|
||||
AND (@发货状态 = N'全部' OR @发货状态 = N'' OR
|
||||
(@发货状态 = N'已发货' AND ISNULL(v.[发货状态], N'0') = N'1') OR
|
||||
(@发货状态 = N'未发货' AND ISNULL(v.[发货状态], N'0') <> N'1')
|
||||
)
|
||||
AND (@齐套 = N'全部' OR @齐套 = N'' OR
|
||||
(@齐套 = N'是' AND ISNULL(v.[齐套], 0) = 1) OR
|
||||
(@齐套 = N'否' AND ISNULL(v.[齐套], 0) <> 1)
|
||||
)
|
||||
AND (@发料状态 = N'全部' OR @发料状态 = N'' OR
|
||||
(@发料状态 = N'发料齐套' AND ISNULL(v.[发料状态], N'0') = N'1') OR
|
||||
(@发料状态 = N'发料缺件' AND ISNULL(v.[发料状态], N'0') = N'2') OR
|
||||
(@发料状态 = N'未发料' AND ISNULL(v.[发料状态], N'0') NOT IN (N'1', N'2'))
|
||||
)
|
||||
AND (@自制件属性 = N'全部' OR @自制件属性 = N'' OR
|
||||
(@自制件属性 = N'机加' AND (sap.[属性] = N'机加件' OR v.[自制件属性] = N'机加件')) OR
|
||||
(@自制件属性 = N'装配' AND (sap.[属性] LIKE N'%装配%' OR v.[自制件属性] LIKE N'%装配%'))
|
||||
)
|
||||
AND (@检验状态 = N'' OR (sap.[属性] = N'' AND ISNULL(purchase_check.[质检状态], N'') = @检验状态))
|
||||
)
|
||||
SELECT TOP (1000)
|
||||
[计划号],
|
||||
[合同号],
|
||||
[订单号],
|
||||
[产品编码],
|
||||
[产品名称],
|
||||
[计划数量订单],
|
||||
[入库数量],
|
||||
[要求完工日期],
|
||||
[要求发货日期],
|
||||
[发货状态],
|
||||
[齐套],
|
||||
[拣配状态],
|
||||
[发料状态],
|
||||
[装配开工],
|
||||
[完成数量],
|
||||
[终检],
|
||||
[生产工艺],
|
||||
[排产状态],
|
||||
[自制件属性],
|
||||
[预计齐套时间],
|
||||
[缺件物料编码],
|
||||
[缺件物料名称],
|
||||
[缺件数量],
|
||||
[库存数量],
|
||||
[缺件属性],
|
||||
[缺件生产订单号],
|
||||
[进度],
|
||||
[工艺路线],
|
||||
[预计完成时间],
|
||||
[工艺路线明细],
|
||||
[采购未清数量],
|
||||
[到货草稿],
|
||||
[质检状态],
|
||||
[SAP单据],
|
||||
[SAP行号]
|
||||
FROM (
|
||||
SELECT
|
||||
查询结果.*,
|
||||
ROW_NUMBER() OVER (
|
||||
PARTITION BY
|
||||
[订单号],
|
||||
CASE
|
||||
WHEN ISNULL([缺件生产订单号], N'') <> N'' THEN [缺件生产订单号]
|
||||
ELSE [缺件物料编码] + N':' + CONVERT(nvarchar(30), [SAP行号])
|
||||
END
|
||||
ORDER BY [缺件数量] DESC, [SAP单据], [SAP行号]
|
||||
) AS rn
|
||||
FROM 查询结果
|
||||
) AS dedup
|
||||
WHERE rn = 1
|
||||
ORDER BY
|
||||
[预计齐套时间],
|
||||
[订单号],
|
||||
[缺件生产订单号],
|
||||
[缺件物料编码];
|
||||
END
|
||||
GO
|
||||
@@ -0,0 +1,290 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER OFF
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[工时统计_作业者工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@工时类型 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH 人员班组 AS (
|
||||
SELECT
|
||||
LTRIM(RTRIM(Personnel_Name)) AS Personnel_Name,
|
||||
MAX(NULLIF(LTRIM(RTRIM(班组)), '')) AS 班组
|
||||
FROM [YL_MESDB].[dbo].[登录基础数据_人员信息]
|
||||
WHERE Personnel_Name IS NOT NULL
|
||||
GROUP BY LTRIM(RTRIM(Personnel_Name))
|
||||
),
|
||||
工时基础 AS (
|
||||
SELECT
|
||||
v.*,
|
||||
ISNULL(p.班组, '未分类') AS 工时类型,
|
||||
CASE
|
||||
WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.加工工时, 0) > 0 THEN ISNULL(v.加工工时, 0)
|
||||
WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.总时长, 0) > 0 AND ISNULL(v.加工工时, 0) = 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 LIKE '%加班%' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 = '开始加工' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 = '异常' THEN -ISNULL(v.总时长, 0)
|
||||
ELSE 0
|
||||
END AS 有效工时秒
|
||||
FROM [dbo].[View_生产工时视图全部] v
|
||||
LEFT JOIN 人员班组 p ON LTRIM(RTRIM(v.操作人)) = p.Personnel_Name
|
||||
),
|
||||
筛选明细 AS (
|
||||
SELECT *
|
||||
FROM 工时基础
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 开始时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 结束时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND (@工时类型 IS NULL OR @工时类型 = '' OR 工时类型 = @工时类型)
|
||||
AND ISNULL(阶段标识, 0) != -1
|
||||
),
|
||||
TaskStart报工数量 AS (
|
||||
SELECT
|
||||
TaskAID,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
MAX(CASE
|
||||
WHEN 操作类别 NOT IN ('异常') THEN ISNULL(操作数值, 0)
|
||||
WHEN 操作类别 = '异常' THEN -ISNULL(操作数值, 0)
|
||||
ELSE 0
|
||||
END) AS 报工数量
|
||||
FROM [dbo].[View_生产工时视图全部]
|
||||
GROUP BY TaskAID, CONVERT(VARCHAR(19), 开始时间, 120)
|
||||
),
|
||||
报工明细 AS (
|
||||
SELECT
|
||||
b.操作人,
|
||||
CONVERT(VARCHAR(10), b.开始时间, 120) AS 工作日期,
|
||||
b.TaskAID,
|
||||
b.订单合同号 AS 合同号,
|
||||
b.订单号,
|
||||
b.产品编码,
|
||||
b.产品名称,
|
||||
b.工序名称,
|
||||
b.工时类型,
|
||||
b.计划数量,
|
||||
b.工位名称 AS 指派对象,
|
||||
CASE
|
||||
WHEN ISNULL(b.工位名称, '') LIKE '%装配%' THEN 0
|
||||
ELSE ISNULL(q.报工数量, CASE
|
||||
WHEN b.操作类别 NOT IN ('异常') THEN ISNULL(b.操作数值, 0)
|
||||
WHEN b.操作类别 = '异常' THEN -ISNULL(b.操作数值, 0)
|
||||
ELSE 0
|
||||
END)
|
||||
END AS 报工数量,
|
||||
CONVERT(VARCHAR(19), b.开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), b.结束时间, 120) AS 结束时间,
|
||||
CAST(b.有效工时秒 / 60.0 / 60.0 AS DECIMAL(10,2)) AS 工时小时,
|
||||
b.异常说明,
|
||||
b.工序说明,
|
||||
b.操作类别
|
||||
FROM 筛选明细 b
|
||||
LEFT JOIN TaskStart报工数量 q
|
||||
ON q.TaskAID = b.TaskAID
|
||||
AND q.开始时间 = CONVERT(VARCHAR(19), b.开始时间, 120)
|
||||
),
|
||||
操作人报工数量 AS (
|
||||
SELECT 操作人, SUM(报工数量) AS 报工数量
|
||||
FROM (
|
||||
SELECT 操作人, TaskAID, 开始时间, MAX(报工数量) AS 报工数量
|
||||
FROM 报工明细
|
||||
WHERE TaskAID IS NOT NULL AND 开始时间 IS NOT NULL AND 开始时间 != ''
|
||||
GROUP BY 操作人, TaskAID, 开始时间
|
||||
) x
|
||||
GROUP BY 操作人
|
||||
),
|
||||
日期报工数量 AS (
|
||||
SELECT 操作人, 工作日期, SUM(报工数量) AS 报工数量
|
||||
FROM (
|
||||
SELECT 操作人, 工作日期, TaskAID, 开始时间, MAX(报工数量) AS 报工数量
|
||||
FROM 报工明细
|
||||
WHERE TaskAID IS NOT NULL AND 开始时间 IS NOT NULL AND 开始时间 != ''
|
||||
GROUP BY 操作人, 工作日期, TaskAID, 开始时间
|
||||
) x
|
||||
GROUP BY 操作人, 工作日期
|
||||
),
|
||||
操作人汇总 AS (
|
||||
SELECT
|
||||
操作人,
|
||||
COUNT(*) AS 报工次数,
|
||||
CAST(SUM(有效工时秒) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时
|
||||
FROM 筛选明细
|
||||
GROUP BY 操作人
|
||||
),
|
||||
日期汇总 AS (
|
||||
SELECT
|
||||
操作人,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
COUNT(*) AS 报工次数,
|
||||
CAST(SUM(有效工时秒) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 工时小时
|
||||
FROM 筛选明细
|
||||
GROUP BY 操作人, CONVERT(VARCHAR(10), 开始时间, 120)
|
||||
)
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
s.操作人 AS operator,
|
||||
'' AS dateLabel,
|
||||
CAST(s.报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(ISNULL(q.报工数量, 0) AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
CAST(NULL AS DECIMAL(19,6)) AS 计划数量,
|
||||
'' AS 工时类型,
|
||||
'' AS 指派对象,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
'' AS 异常说明,
|
||||
'' AS 工序说明,
|
||||
'' AS 操作类别,
|
||||
CAST(s.总工时小时 AS VARCHAR(20)) AS workHours,
|
||||
'' AS TaskAID
|
||||
FROM 操作人汇总 s
|
||||
LEFT JOIN 操作人报工数量 q ON q.操作人 = s.操作人
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
s.操作人 AS operator,
|
||||
s.工作日期 AS dateLabel,
|
||||
CAST(s.报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(ISNULL(q.报工数量, 0) AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
CAST(NULL AS DECIMAL(19,6)) AS 计划数量,
|
||||
'' AS 工时类型,
|
||||
'' AS 指派对象,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
'' AS 异常说明,
|
||||
'' AS 工序说明,
|
||||
'' AS 操作类别,
|
||||
CAST(s.工时小时 AS VARCHAR(20)) AS workHours,
|
||||
'' AS TaskAID
|
||||
FROM 日期汇总 s
|
||||
LEFT JOIN 日期报工数量 q ON q.操作人 = s.操作人 AND q.工作日期 = s.工作日期
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
3 AS [Level],
|
||||
操作人 AS operator,
|
||||
工作日期 AS dateLabel,
|
||||
'' AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
ISNULL(合同号, '') AS contractNo,
|
||||
ISNULL(订单号, '') AS orderNo,
|
||||
ISNULL(产品编码, '') AS productCode,
|
||||
ISNULL(产品名称, '') AS productName,
|
||||
ISNULL(工序名称, '') AS processName,
|
||||
计划数量 AS 计划数量,
|
||||
ISNULL(工时类型, '') AS 工时类型,
|
||||
ISNULL(指派对象, '') AS 指派对象,
|
||||
ISNULL(开始时间, '') AS startTime,
|
||||
ISNULL(结束时间, '') AS endTime,
|
||||
ISNULL(异常说明, '') AS 异常说明,
|
||||
ISNULL(工序说明, '') AS 工序说明,
|
||||
ISNULL(操作类别, '') AS 操作类别,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours,
|
||||
CAST(TaskAID AS VARCHAR(50)) AS TaskAID
|
||||
FROM 报工明细
|
||||
|
||||
ORDER BY operator, dateLabel, [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;
|
||||
|
||||
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)'
|
||||
|
||||
;WITH 筛选明细 AS (
|
||||
SELECT *
|
||||
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
|
||||
),
|
||||
TaskStart报工数量 AS (
|
||||
SELECT
|
||||
TaskAID,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
MAX(CASE
|
||||
WHEN 操作类别 NOT IN ('异常') THEN ISNULL(操作数值, 0)
|
||||
WHEN 操作类别 = '异常' THEN -ISNULL(操作数值, 0)
|
||||
ELSE 0
|
||||
END) AS 报工数量
|
||||
FROM [dbo].[View_生产工时视图全部]
|
||||
GROUP BY TaskAID, CONVERT(VARCHAR(19), 开始时间, 120)
|
||||
)
|
||||
SELECT
|
||||
b.操作人,
|
||||
CONVERT(VARCHAR(10), b.开始时间, 120) AS 工作日期,
|
||||
ISNULL(b.订单合同号, '') AS 合同号,
|
||||
ISNULL(b.订单号, '') AS 订单号,
|
||||
ISNULL(b.产品编码, '') AS 产品编码,
|
||||
ISNULL(b.产品名称, '') AS 产品名称,
|
||||
ISNULL(b.工序名称, '') AS 工序名称,
|
||||
ISNULL(b.工位名称, '') AS 指派对象,
|
||||
CAST(CASE
|
||||
WHEN ISNULL(b.工位名称, '') LIKE '%装配%' THEN 0
|
||||
ELSE ISNULL(q.报工数量, CASE
|
||||
WHEN b.操作类别 NOT IN ('异常') THEN ISNULL(b.操作数值, 0)
|
||||
WHEN b.操作类别 = '异常' THEN -ISNULL(b.操作数值, 0)
|
||||
ELSE 0
|
||||
END)
|
||||
END AS VARCHAR(20)) AS 报工数量,
|
||||
CONVERT(VARCHAR(19), b.开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), b.结束时间, 120) AS 结束时间,
|
||||
CAST(CAST(b.总时长 / 60.0 / 60.0 AS DECIMAL(10,2)) AS VARCHAR(20)) AS '工时(h)'
|
||||
FROM 筛选明细 b
|
||||
LEFT JOIN TaskStart报工数量 q
|
||||
ON q.TaskAID = b.TaskAID
|
||||
AND q.开始时间 = CONVERT(VARCHAR(19), b.开始时间, 120)
|
||||
ORDER BY b.操作人, b.开始时间
|
||||
END
|
||||
GO
|
||||
253
db_backups/update_workhours_query_detail_20260627.sql
Normal file
253
db_backups/update_workhours_query_detail_20260627.sql
Normal file
@@ -0,0 +1,253 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[生产管理_工时查询_工序工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL,
|
||||
@数据条数 INT = 100
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH 基础数据 AS (
|
||||
SELECT TOP (CASE WHEN ISNULL(@数据条数, 0) <= 0 THEN 100 ELSE @数据条数 END)
|
||||
v.开始时间,
|
||||
v.结束时间,
|
||||
v.操作内容,
|
||||
v.操作类别,
|
||||
v.操作描述,
|
||||
v.加工工时,
|
||||
v.操作数值,
|
||||
v.订单号,
|
||||
v.订单行号,
|
||||
v.订单合同号,
|
||||
v.产品编码,
|
||||
v.产品名称,
|
||||
v.工序名称,
|
||||
v.TaskAID,
|
||||
v.工位名称,
|
||||
CASE
|
||||
WHEN ISNULL(v.操作内容, '') LIKE '%辅助%' OR ISNULL(v.操作类别, '') LIKE '%辅助%' THEN '调机'
|
||||
WHEN ISNULL(v.操作内容, '') LIKE '%报工%' OR ISNULL(v.操作类别, '') LIKE '%报工%' THEN '正常'
|
||||
ELSE ISNULL(NULLIF(v.操作内容, ''), v.操作类别)
|
||||
END AS 报工类型,
|
||||
p.标准工时 AS 工艺工时
|
||||
FROM [dbo].[View_生产工时视图] v
|
||||
LEFT JOIN [dbo].[车间生产管理工艺_零件生产工艺_工艺库] p
|
||||
ON v.订单号 = p.订单编号
|
||||
AND v.订单行号 = p.工艺顺序
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR v.开始时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR v.开始时间 < DATEADD(DAY, 1, @结束日期))
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR v.订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR v.产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR v.订单号 = @订单号)
|
||||
AND (ISNULL(v.操作内容, '') IN ('报工', '辅助结束') OR ISNULL(v.操作类别, '') IN ('报工', '辅助结束'))
|
||||
AND ISNULL(v.加工工时, 0) > 0
|
||||
ORDER BY v.开始时间 DESC
|
||||
),
|
||||
明细键 AS (
|
||||
SELECT DISTINCT
|
||||
TaskAID,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间
|
||||
FROM 基础数据
|
||||
),
|
||||
TaskStart报工数量 AS (
|
||||
SELECT
|
||||
TaskAID,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
MAX(CASE
|
||||
WHEN 操作类别 = '异常' THEN -ISNULL(操作数值, 0)
|
||||
ELSE ISNULL(操作数值, 0)
|
||||
END) AS 报工数量
|
||||
FROM [dbo].[View_生产工时视图全部]
|
||||
GROUP BY TaskAID, CONVERT(VARCHAR(19), 开始时间, 120)
|
||||
),
|
||||
TaskStart扩展 AS (
|
||||
SELECT
|
||||
k.TaskAID,
|
||||
k.开始时间,
|
||||
CASE
|
||||
WHEN EXISTS (
|
||||
SELECT 1
|
||||
FROM [dbo].[View_生产工时视图全部] v
|
||||
WHERE v.TaskAID = k.TaskAID
|
||||
AND CONVERT(VARCHAR(19), v.开始时间, 120) = k.开始时间
|
||||
AND ISNULL(v.操作描述, '') LIKE '%白班%'
|
||||
) THEN '白班'
|
||||
WHEN EXISTS (
|
||||
SELECT 1
|
||||
FROM [dbo].[View_生产工时视图全部] v
|
||||
WHERE v.TaskAID = k.TaskAID
|
||||
AND CONVERT(VARCHAR(19), v.开始时间, 120) = k.开始时间
|
||||
AND ISNULL(v.操作描述, '') LIKE '%夜班%'
|
||||
) THEN '夜班'
|
||||
ELSE ''
|
||||
END AS 班次,
|
||||
(
|
||||
SELECT STRING_AGG(x.操作人, ',')
|
||||
FROM (
|
||||
SELECT DISTINCT LTRIM(RTRIM(v2.操作人)) AS 操作人
|
||||
FROM [dbo].[View_生产工时视图全部] v2
|
||||
WHERE v2.TaskAID = k.TaskAID
|
||||
AND CONVERT(VARCHAR(19), v2.开始时间, 120) = k.开始时间
|
||||
AND ISNULL(v2.加工工时, 0) <= 0
|
||||
AND NULLIF(LTRIM(RTRIM(ISNULL(v2.操作人, ''))), '') IS NOT NULL
|
||||
) x
|
||||
) AS 操作人
|
||||
FROM 明细键 k
|
||||
),
|
||||
明细数据 AS (
|
||||
SELECT
|
||||
b.TaskAID,
|
||||
ISNULL(b.产品名称, '') + ' ' + ISNULL(b.产品编码, '') + ' ' + ISNULL(b.工序名称, '') + ' 序' + CAST(ISNULL(b.订单行号, 0) AS VARCHAR(50)) AS 任务描述,
|
||||
CONVERT(VARCHAR(10), b.开始时间, 120) AS 工作日期,
|
||||
e.班次,
|
||||
e.操作人,
|
||||
b.订单号 AS 生产订单号,
|
||||
b.报工类型,
|
||||
qv.报工数量,
|
||||
b.工位名称 AS 工位名称,
|
||||
CAST(ISNULL(b.加工工时, 0) / 60.0 / 60.0 AS DECIMAL(10, 2)) AS 工时小时,
|
||||
CAST(ISNULL(b.加工工时, 0) / 60.0 AS DECIMAL(10, 2)) AS 工时分钟,
|
||||
'' AS 程序时间,
|
||||
CASE
|
||||
WHEN qv.报工数量 > 0 THEN CAST((ISNULL(b.加工工时, 0) / 60.0) / qv.报工数量 AS DECIMAL(10, 2))
|
||||
ELSE CAST(ISNULL(b.工艺工时, 0) AS DECIMAL(10, 2))
|
||||
END AS 单件工时,
|
||||
b.工艺工时,
|
||||
CONVERT(VARCHAR(19), b.开始时间, 120) AS 开始时间
|
||||
FROM 基础数据 b
|
||||
LEFT JOIN TaskStart报工数量 q
|
||||
ON q.TaskAID = b.TaskAID
|
||||
AND q.开始时间 = CONVERT(VARCHAR(19), b.开始时间, 120)
|
||||
LEFT JOIN TaskStart扩展 e
|
||||
ON e.TaskAID = b.TaskAID
|
||||
AND e.开始时间 = CONVERT(VARCHAR(19), b.开始时间, 120)
|
||||
CROSS APPLY (
|
||||
SELECT CASE
|
||||
WHEN ISNULL(b.工位名称, '') LIKE '%装配%' THEN 0
|
||||
ELSE ISNULL(q.报工数量, ISNULL(b.操作数值, 0))
|
||||
END AS 报工数量
|
||||
) qv
|
||||
),
|
||||
去重数量 AS (
|
||||
SELECT
|
||||
TaskAID,
|
||||
工作日期,
|
||||
开始时间,
|
||||
MAX(报工数量) AS 报工数量
|
||||
FROM 明细数据
|
||||
GROUP BY TaskAID, 工作日期, 开始时间
|
||||
),
|
||||
Task数量汇总 AS (
|
||||
SELECT TaskAID, SUM(报工数量) AS 报工数量
|
||||
FROM 去重数量
|
||||
GROUP BY TaskAID
|
||||
),
|
||||
日期数量汇总 AS (
|
||||
SELECT TaskAID, 工作日期, SUM(报工数量) AS 报工数量
|
||||
FROM 去重数量
|
||||
GROUP BY TaskAID, 工作日期
|
||||
),
|
||||
Task汇总 AS (
|
||||
SELECT
|
||||
m.TaskAID,
|
||||
MAX(m.任务描述) AS 任务描述,
|
||||
COUNT(*) AS 报工次数,
|
||||
ISNULL(q.报工数量, 0) AS 报工数量,
|
||||
SUM(m.工时小时) AS 工时小时,
|
||||
SUM(m.工时分钟) AS 工时分钟,
|
||||
MAX(m.工艺工时) AS 工艺工时
|
||||
FROM 明细数据 m
|
||||
LEFT JOIN Task数量汇总 q ON q.TaskAID = m.TaskAID
|
||||
GROUP BY m.TaskAID, q.报工数量
|
||||
),
|
||||
日期汇总 AS (
|
||||
SELECT
|
||||
m.TaskAID,
|
||||
MAX(m.任务描述) AS 任务描述,
|
||||
m.工作日期,
|
||||
COUNT(*) AS 报工次数,
|
||||
ISNULL(q.报工数量, 0) AS 报工数量,
|
||||
SUM(m.工时小时) AS 工时小时,
|
||||
SUM(m.工时分钟) AS 工时分钟,
|
||||
MAX(m.工艺工时) AS 工艺工时
|
||||
FROM 明细数据 m
|
||||
LEFT JOIN 日期数量汇总 q ON q.TaskAID = m.TaskAID AND q.工作日期 = m.工作日期
|
||||
GROUP BY m.TaskAID, m.工作日期, q.报工数量
|
||||
)
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
TaskAID,
|
||||
任务描述 AS taskDescription,
|
||||
'' AS dateLabel,
|
||||
'' AS shift,
|
||||
'' AS operatorNames,
|
||||
'' AS productionOrderNo,
|
||||
'' AS reportType,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
'' AS station,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS actualWorkHours,
|
||||
'' AS programTime,
|
||||
CAST(CASE WHEN 报工数量 > 0 THEN 工时分钟 / 报工数量 ELSE ISNULL(工艺工时, 0) END AS VARCHAR(20)) AS pieceWorkHours,
|
||||
CAST(ISNULL(工艺工时, 0) AS VARCHAR(20)) AS processWorkHours,
|
||||
'' AS startTime,
|
||||
CAST(报工次数 AS VARCHAR(20)) AS reportCount
|
||||
FROM Task汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
TaskAID,
|
||||
任务描述 AS taskDescription,
|
||||
工作日期 AS dateLabel,
|
||||
'' AS shift,
|
||||
'' AS operatorNames,
|
||||
'' AS productionOrderNo,
|
||||
'' AS reportType,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
'' AS station,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS actualWorkHours,
|
||||
'' AS programTime,
|
||||
CAST(CASE WHEN 报工数量 > 0 THEN 工时分钟 / 报工数量 ELSE ISNULL(工艺工时, 0) END AS VARCHAR(20)) AS pieceWorkHours,
|
||||
CAST(ISNULL(工艺工时, 0) AS VARCHAR(20)) AS processWorkHours,
|
||||
'' AS startTime,
|
||||
CAST(报工次数 AS VARCHAR(20)) AS reportCount
|
||||
FROM 日期汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
3 AS [Level],
|
||||
TaskAID,
|
||||
任务描述 AS taskDescription,
|
||||
工作日期 AS dateLabel,
|
||||
班次 AS shift,
|
||||
ISNULL(操作人, '') AS operatorNames,
|
||||
ISNULL(生产订单号, '') AS productionOrderNo,
|
||||
ISNULL(报工类型, '') AS reportType,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
ISNULL(工位名称, '') AS station,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS actualWorkHours,
|
||||
程序时间 AS programTime,
|
||||
CAST(单件工时 AS VARCHAR(20)) AS pieceWorkHours,
|
||||
CAST(ISNULL(工艺工时, 0) AS VARCHAR(20)) AS processWorkHours,
|
||||
开始时间 AS startTime,
|
||||
'' AS reportCount
|
||||
FROM 明细数据
|
||||
|
||||
ORDER BY TaskAID, dateLabel, [Level], startTime
|
||||
END
|
||||
GO
|
||||
@@ -0,0 +1,238 @@
|
||||
|
||||
CREATE PROCEDURE [dbo].[生产管理_工时查询_工序工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL,
|
||||
@数据条数 int = 100
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
-- 获取班次信息
|
||||
DECLARE @白班开始时间 TIME = '07:45:00'
|
||||
DECLARE @白班结束时间 TIME = '16:30:00'
|
||||
DECLARE @夜班开始时间 TIME = '16:30:00'
|
||||
DECLARE @夜班结束时间 TIME = '00:40:00'
|
||||
|
||||
;WITH 基础数据 AS (
|
||||
SELECT top (@数据条数)
|
||||
v.开始时间,
|
||||
v.结束时间,
|
||||
v.操作内容,
|
||||
v.加工工时,
|
||||
v.操作数值,
|
||||
v.订单号,
|
||||
v.订单行号,
|
||||
v.订单合同号,
|
||||
v.产品编码,
|
||||
v.产品名称,
|
||||
v.工序名称,
|
||||
v.TaskAID,
|
||||
v.工位名称,
|
||||
-- 根据时间判断班次
|
||||
CASE
|
||||
WHEN CAST(v.开始时间 AS TIME) >= @白班开始时间
|
||||
AND CAST(v.开始时间 AS TIME) < @白班结束时间 THEN '白班'
|
||||
WHEN CAST(v.开始时间 AS TIME) >= @夜班开始时间
|
||||
OR CAST(v.开始时间 AS TIME) < @夜班结束时间 THEN '夜班'
|
||||
ELSE '其他'
|
||||
END AS 计算班次,
|
||||
-- 标记实际工时和辅助工时
|
||||
CASE WHEN v.操作内容 = '报工' THEN v.加工工时 ELSE 0 END AS 实际加工工时,
|
||||
CASE WHEN v.操作内容 = '辅助结束' THEN v.加工工时 ELSE 0 END AS 辅助加工工时,
|
||||
-- 标记报工数量和辅助数量
|
||||
CASE WHEN v.操作内容 = '报工' THEN v.操作数值 ELSE 0 END AS 实际报工数量,
|
||||
CASE WHEN v.操作内容 = '辅助结束' THEN v.操作数值 ELSE 0 END AS 辅助报工数量,
|
||||
-- 关联工艺库获取标准工时(工艺工时)
|
||||
p.标准工时 AS 工艺工时
|
||||
FROM View_生产工时视图 v
|
||||
LEFT JOIN 车间生产管理工艺_零件生产工艺_工艺库 p
|
||||
ON v.订单号 = p.订单编号
|
||||
AND v.订单行号 = p.工艺顺序
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR v.开始时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR v.结束时间 >= @结束日期)
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR v.订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR v.产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR v.订单号 = @订单号)
|
||||
-- 去掉报工时间为0的数据(实际加工工时或辅助加工工时不为0)
|
||||
AND (CASE WHEN v.操作内容 = '报工' THEN v.加工工时 ELSE 0 END > 0
|
||||
OR CASE WHEN v.操作内容 = '辅助结束' THEN v.加工工时 ELSE 0 END > 0)
|
||||
),
|
||||
-- 获取每个TaskAID对应的任务描述(取第一条记录)
|
||||
Task描述 AS (
|
||||
SELECT DISTINCT
|
||||
TaskAID,
|
||||
-- 任务描述:产品名称 + 产品编码 + 工序名称
|
||||
ISNULL(产品名称, '') + ' ' + ISNULL(产品编码, '') + ' ' + ISNULL(工序名称, '') + ' 序'+ CAST(订单行号 AS VARCHAR(50)) AS 任务描述
|
||||
FROM 基础数据
|
||||
),
|
||||
-- 第一层:按TaskAID汇总
|
||||
TaskAID汇总 AS (
|
||||
SELECT
|
||||
b.TaskAID,
|
||||
t.任务描述,
|
||||
'' AS 工作日期,
|
||||
'' AS 班次,
|
||||
COUNT(*) AS 报工次数,
|
||||
SUM(实际报工数量) AS 实际报工数量,
|
||||
SUM(辅助报工数量) AS 辅助报工数量,
|
||||
CAST(SUM(实际加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 实际工时小时,
|
||||
CAST(SUM(辅助加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 辅助工时小时,
|
||||
-- 计算平均实际工时(实际加工工时/实际报工数量)
|
||||
CASE
|
||||
WHEN SUM(实际报工数量) > 0
|
||||
THEN CAST((SUM(实际加工工时) / 60.0 / 60.0) / SUM(实际报工数量) AS DECIMAL(10,2))
|
||||
ELSE 0
|
||||
END AS 平均实际工时,
|
||||
-- 计算平均辅助工时(辅助加工工时/辅助报工数量)
|
||||
CASE
|
||||
WHEN SUM(辅助报工数量) > 0
|
||||
THEN CAST((SUM(辅助加工工时) / 60.0 / 60.0) / SUM(辅助报工数量) AS DECIMAL(10,2))
|
||||
ELSE 0
|
||||
END AS 平均辅助工时,
|
||||
-- 工艺工时(取第一条记录的工艺工时)
|
||||
MAX(b.工艺工时) AS 工艺工时
|
||||
FROM 基础数据 b
|
||||
LEFT JOIN Task描述 t ON b.TaskAID = t.TaskAID
|
||||
GROUP BY b.TaskAID, t.任务描述
|
||||
),
|
||||
-- 第二层:按TaskAID和日期汇总
|
||||
日期汇总 AS (
|
||||
SELECT
|
||||
b.TaskAID,
|
||||
t.任务描述,
|
||||
CONVERT(VARCHAR(10), b.开始时间, 120) AS 工作日期,
|
||||
'' AS 班次,
|
||||
COUNT(*) AS 报工次数,
|
||||
SUM(实际报工数量) AS 实际报工数量,
|
||||
SUM(辅助报工数量) AS 辅助报工数量,
|
||||
CAST(SUM(实际加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 实际工时小时,
|
||||
CAST(SUM(辅助加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 辅助工时小时,
|
||||
-- 计算平均实际工时(实际加工工时/实际报工数量)
|
||||
CASE
|
||||
WHEN SUM(实际报工数量) > 0
|
||||
THEN CAST((SUM(实际加工工时) / 60.0 / 60.0) / SUM(实际报工数量) AS DECIMAL(10,2))
|
||||
ELSE 0
|
||||
END AS 平均实际工时,
|
||||
-- 计算平均辅助工时(辅助加工工时/辅助报工数量)
|
||||
CASE
|
||||
WHEN SUM(辅助报工数量) > 0
|
||||
THEN CAST((SUM(辅助加工工时) / 60.0 / 60.0) / SUM(辅助报工数量) AS DECIMAL(10,2))
|
||||
ELSE 0
|
||||
END AS 平均辅助工时,
|
||||
-- 工艺工时(取该日期第一条记录的工艺工时)
|
||||
MAX(b.工艺工时) AS 工艺工时
|
||||
FROM 基础数据 b
|
||||
LEFT JOIN Task描述 t ON b.TaskAID = t.TaskAID
|
||||
GROUP BY b.TaskAID, t.任务描述, CONVERT(VARCHAR(10), b.开始时间, 120)
|
||||
),
|
||||
-- 第三层:按TaskAID、日期和班次汇总
|
||||
班次汇总 AS (
|
||||
SELECT
|
||||
b.TaskAID,
|
||||
t.任务描述,
|
||||
CONVERT(VARCHAR(10), b.开始时间, 120) AS 工作日期,
|
||||
b.计算班次,
|
||||
b.工位名称,
|
||||
COUNT(*) AS 报工次数,
|
||||
SUM(实际报工数量) AS 实际报工数量,
|
||||
SUM(辅助报工数量) AS 辅助报工数量,
|
||||
CAST(SUM(实际加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 实际工时小时,
|
||||
CAST(SUM(辅助加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 辅助工时小时,
|
||||
-- 计算平均实际工时(实际加工工时/实际报工数量)
|
||||
CASE
|
||||
WHEN SUM(实际报工数量) > 0
|
||||
THEN CAST((SUM(实际加工工时) / 60.0 / 60.0) / SUM(实际报工数量) AS DECIMAL(10,2))
|
||||
ELSE 0
|
||||
END AS 平均实际工时,
|
||||
-- 计算平均辅助工时(辅助加工工时/辅助报工数量)
|
||||
CASE
|
||||
WHEN SUM(辅助报工数量) > 0
|
||||
THEN CAST((SUM(辅助加工工时) / 60.0 / 60.0) / SUM(辅助报工数量) AS DECIMAL(10,2))
|
||||
ELSE 0
|
||||
END AS 平均辅助工时,
|
||||
-- 工艺工时(取该班次第一条记录的工艺工时)
|
||||
MAX(b.工艺工时) AS 工艺工时
|
||||
FROM 基础数据 b
|
||||
LEFT JOIN Task描述 t ON b.TaskAID = t.TaskAID
|
||||
GROUP BY b.TaskAID, t.任务描述, CONVERT(VARCHAR(10), b.开始时间, 120), b.计算班次, b.工位名称
|
||||
)
|
||||
|
||||
-- 第一层:TaskAID汇总
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
TaskAID,
|
||||
任务描述 AS taskDescription,
|
||||
'' AS dateLabel,
|
||||
'' AS shift,
|
||||
'' AS 工位名称,
|
||||
CAST(实际报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
CAST(实际工时小时 AS VARCHAR(20)) AS actualWorkHours,
|
||||
CAST(辅助工时小时 AS VARCHAR(20)) AS auxiliaryWorkHours,
|
||||
CAST(平均实际工时 AS VARCHAR(20)) AS avgActualWorkHours,
|
||||
CAST(平均辅助工时 AS VARCHAR(20)) AS avgAuxiliaryWorkHours,
|
||||
CAST(ISNULL(工艺工时, 0) AS VARCHAR(20)) AS processWorkHours, -- 工艺工时
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
CAST(报工次数 AS VARCHAR(20)) AS reportCount
|
||||
FROM TaskAID汇总
|
||||
WHERE 实际工时小时 > 0 OR 辅助工时小时 > 0
|
||||
|
||||
UNION ALL
|
||||
|
||||
-- 第二层:日期汇总
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
TaskAID,
|
||||
任务描述 AS taskDescription,
|
||||
工作日期 AS dateLabel,
|
||||
'' AS shift,
|
||||
'' AS 工位名称,
|
||||
CAST(实际报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
CAST(实际工时小时 AS VARCHAR(20)) AS actualWorkHours,
|
||||
CAST(辅助工时小时 AS VARCHAR(20)) AS auxiliaryWorkHours,
|
||||
CAST(平均实际工时 AS VARCHAR(20)) AS avgActualWorkHours,
|
||||
CAST(平均辅助工时 AS VARCHAR(20)) AS avgAuxiliaryWorkHours,
|
||||
CAST(ISNULL(工艺工时, 0) AS VARCHAR(20)) AS processWorkHours, -- 工艺工时
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
CAST(报工次数 AS VARCHAR(20)) AS reportCount
|
||||
FROM 日期汇总
|
||||
WHERE 实际工时小时 > 0 OR 辅助工时小时 > 0
|
||||
|
||||
UNION ALL
|
||||
|
||||
-- 第三层:班次汇总
|
||||
SELECT
|
||||
3 AS [Level],
|
||||
TaskAID,
|
||||
任务描述 AS taskDescription,
|
||||
工作日期 AS dateLabel,
|
||||
计算班次 AS shift,
|
||||
工位名称 AS 工位名称,
|
||||
CAST(实际报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
CAST(实际工时小时 AS VARCHAR(20)) AS actualWorkHours,
|
||||
CAST(辅助工时小时 AS VARCHAR(20)) AS auxiliaryWorkHours,
|
||||
CAST(平均实际工时 AS VARCHAR(20)) AS avgActualWorkHours,
|
||||
CAST(平均辅助工时 AS VARCHAR(20)) AS avgAuxiliaryWorkHours,
|
||||
CAST(ISNULL(工艺工时, 0) AS VARCHAR(20)) AS processWorkHours, -- 工艺工时
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
CAST(报工次数 AS VARCHAR(20)) AS reportCount
|
||||
FROM 班次汇总
|
||||
WHERE 实际工时小时 > 0 OR 辅助工时小时 > 0
|
||||
|
||||
ORDER BY TaskAID, dateLabel, shift, [Level]
|
||||
END
|
||||
|
||||
@@ -0,0 +1,94 @@
|
||||
|
||||
CREATE PROCEDURE [dbo].[工时统计_任务工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH 任务汇总 AS (
|
||||
SELECT
|
||||
订单合同号 AS 合同号,
|
||||
订单号,
|
||||
产品编码,
|
||||
产品名称,
|
||||
工序名称,
|
||||
操作类别,
|
||||
MAX(计划数量) AS 计划数量,
|
||||
MAX(完成数量) AS 完成数量,
|
||||
SUM(CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN 操作数值 ELSE 0 END) AS 报工数量,
|
||||
CAST(SUM(总时长) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时
|
||||
FROM View_生产工时视图
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
GROUP BY 订单合同号, 订单号, 产品编码, 产品名称, 工序名称,操作类别
|
||||
),
|
||||
报工明细 AS (
|
||||
SELECT
|
||||
订单合同号 AS 合同号,
|
||||
订单号,
|
||||
产品编码,
|
||||
工序名称,
|
||||
操作人,
|
||||
操作类别,
|
||||
CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN 操作数值 ELSE 0 END AS 报工数量,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间,
|
||||
CAST(总时长 / 60.0 / 60.0 AS DECIMAL(10,2)) AS 工时小时
|
||||
FROM View_生产工时视图
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
)
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
ISNULL(合同号, '') AS contractNo,
|
||||
ISNULL(订单号, '') AS orderNo,
|
||||
ISNULL(产品编码, '') AS productCode,
|
||||
ISNULL(产品名称, '') AS productName,
|
||||
ISNULL(工序名称, '') AS processName,
|
||||
'' AS operator,
|
||||
CASE WHEN 计划数量 IS NULL THEN '0' WHEN 计划数量 = FLOOR(计划数量) THEN CAST(CAST(计划数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(计划数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END + '/' +
|
||||
CASE WHEN 完成数量 IS NULL THEN '0' WHEN 完成数量 = FLOOR(完成数量) THEN CAST(CAST(完成数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(完成数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS qty,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
CAST(总工时小时 AS VARCHAR(20)) AS workHours,
|
||||
操作类别
|
||||
FROM 任务汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
ISNULL(合同号, '') AS contractNo,
|
||||
ISNULL(订单号, '') AS orderNo,
|
||||
ISNULL(产品编码, '') AS productCode,
|
||||
'' AS productName,
|
||||
ISNULL(工序名称, '') AS processName,
|
||||
ISNULL(操作人, '') AS operator,
|
||||
'' AS qty,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
ISNULL(开始时间, '') AS startTime,
|
||||
ISNULL(结束时间, '') AS endTime,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours,
|
||||
操作类别
|
||||
FROM 报工明细
|
||||
|
||||
ORDER BY contractNo, orderNo, productCode, processName, [Level], startTime
|
||||
END
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
|
||||
CREATE PROCEDURE [dbo].[工时统计_任务工时_查询_导出]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
-- 导出文件名和类型
|
||||
SELECT '任务工时统计_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype
|
||||
|
||||
-- 字段宽度
|
||||
SELECT 256*20 AS 合同号, 256*12 AS 订单号, 256*40 AS 产品编码, 256*25 AS 产品名称, 256*15 AS 工序名称,
|
||||
256*12 AS 操作人, 256*12 AS 计划数量, 256*12 AS 完成数量, 256*10 AS 报工数量, 256*20 AS 开始时间, 256*20 AS 结束时间, 256*12 AS '工时(h)'
|
||||
|
||||
-- 是否计算列
|
||||
SELECT 0 AS 合同号, 0 AS 订单号, 0 AS 产品编码, 0 AS 产品名称, 0 AS 工序名称,
|
||||
0 AS 操作人, 0 AS 计划数量, 0 AS 完成数量, 0 AS 报工数量, 0 AS 开始时间, 0 AS 结束时间, 0 AS '工时(h)'
|
||||
|
||||
-- 导出数据:每行都填满完整信息
|
||||
SELECT
|
||||
ISNULL(订单合同号, '') AS 合同号,
|
||||
ISNULL(订单号, '') AS 订单号,
|
||||
ISNULL(产品编码, '') AS 产品编码,
|
||||
ISNULL(产品名称, '') AS 产品名称,
|
||||
ISNULL(工序名称, '') AS 工序名称,
|
||||
ISNULL(操作人, '') AS 操作人,
|
||||
CASE WHEN 计划数量 IS NULL THEN '' WHEN 计划数量 = FLOOR(计划数量) THEN CAST(CAST(计划数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(计划数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS 计划数量,
|
||||
CASE WHEN 完成数量 IS NULL THEN '' WHEN 完成数量 = FLOOR(完成数量) THEN CAST(CAST(完成数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(完成数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS 完成数量,
|
||||
CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN CAST(操作数值 AS VARCHAR(20)) ELSE '0' END AS 报工数量,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间,
|
||||
CAST(CAST(加工工时 / 60.0 / 60.0 AS DECIMAL(10,2)) AS VARCHAR(20)) AS '工时(h)'
|
||||
FROM View_生产工时视图
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
ORDER BY 订单合同号, 订单号, 产品编码, 工序名称, 开始时间
|
||||
END
|
||||
|
||||
164
db_backups/工时统计_作业者工时_查询_before_add_assignee_20260622_172419.sql
Normal file
164
db_backups/工时统计_作业者工时_查询_before_add_assignee_20260622_172419.sql
Normal file
@@ -0,0 +1,164 @@
|
||||
|
||||
CREATE PROCEDURE [dbo].[工时统计_作业者工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH 操作人汇总 AS (
|
||||
SELECT
|
||||
操作人,
|
||||
COUNT(*) AS 报工次数,
|
||||
SUM(CASE
|
||||
--WHEN 操作类别 IN ('报工', '辅助结束', '加班', '开始加工') THEN 操作数值
|
||||
WHEN 操作类别 NOT IN ('异常') THEN 操作数值
|
||||
WHEN 操作类别 = '异常' THEN -操作数值 -- 异常工时记为负数
|
||||
ELSE 0
|
||||
END) AS 报工数量,
|
||||
CAST(SUM(CASE
|
||||
WHEN 操作类别 = '异常' THEN -总时长 -- 异常时长记为负数
|
||||
ELSE 总时长
|
||||
END) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时
|
||||
FROM [dbo].[View_生产工时视图]
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 开始时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 结束时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
and isNull(阶段标识,0) != -1
|
||||
GROUP BY 操作人
|
||||
),
|
||||
日期汇总 AS (
|
||||
SELECT
|
||||
操作人,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
COUNT(*) AS 报工次数,
|
||||
SUM(CASE
|
||||
--WHEN 操作类别 IN ('报工', '辅助结束', '加班', '开始加工') THEN 操作数值
|
||||
WHEN 操作类别 NOT IN ('异常') THEN 操作数值
|
||||
WHEN 操作类别 = '异常' THEN -操作数值 -- 异常工时记为负数
|
||||
ELSE 0
|
||||
END) AS 报工数量,
|
||||
CAST(SUM(CASE
|
||||
WHEN 操作类别 = '异常' THEN -总时长 -- 异常时长记为负数
|
||||
ELSE 总时长
|
||||
END) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 工时小时
|
||||
FROM [dbo].[View_生产工时视图]
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 开始时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 结束时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
and isNull(阶段标识,0) != -1
|
||||
GROUP BY 操作人, CONVERT(VARCHAR(10), 开始时间, 120)
|
||||
),
|
||||
报工明细 AS (
|
||||
SELECT
|
||||
操作人,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
订单合同号 AS 合同号,
|
||||
订单号,
|
||||
产品编码,
|
||||
产品名称,
|
||||
工序名称,
|
||||
CASE
|
||||
--WHEN 操作类别 IN ('报工', '辅助结束', '加班', '开始加工') THEN 操作数值
|
||||
WHEN 操作类别 NOT IN ('异常') THEN 操作数值
|
||||
WHEN 操作类别 = '异常' THEN -操作数值 -- 异常数量记为负数
|
||||
ELSE 0
|
||||
END AS 报工数量,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间,
|
||||
CAST(CASE
|
||||
WHEN 操作类别 = '异常' THEN -总时长 -- 异常时长记为负数
|
||||
ELSE 总时长
|
||||
END / 60.0 / 60.0 AS DECIMAL(10,2)) AS 工时小时,
|
||||
异常说明,
|
||||
工序说明,
|
||||
操作类别
|
||||
FROM [dbo].[View_生产工时视图]
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 开始时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 结束时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
and isNull(阶段标识,0) != -1
|
||||
)
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
操作人 AS operator,
|
||||
'' AS dateLabel,
|
||||
CAST(报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
'' AS 异常说明,
|
||||
'' AS 工序说明,
|
||||
'' AS 操作类别,
|
||||
CAST(总工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 操作人汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
操作人 AS operator,
|
||||
工作日期 AS dateLabel,
|
||||
CAST(报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
'' AS 异常说明,
|
||||
'' AS 工序说明,
|
||||
'' AS 操作类别,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 日期汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
3 AS [Level],
|
||||
操作人 AS operator,
|
||||
工作日期 AS dateLabel,
|
||||
'' AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
ISNULL(合同号, '') AS contractNo,
|
||||
ISNULL(订单号, '') AS orderNo,
|
||||
ISNULL(产品编码, '') AS productCode,
|
||||
ISNULL(产品名称, '') AS productName,
|
||||
ISNULL(工序名称, '') AS processName,
|
||||
ISNULL(开始时间, '') AS startTime,
|
||||
ISNULL(结束时间, '') AS endTime,
|
||||
ISNULL(异常说明, '') AS 异常说明,
|
||||
ISNULL(工序说明, '') AS 工序说明,
|
||||
ISNULL(操作类别, '') AS 操作类别,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 报工明细
|
||||
|
||||
ORDER BY operator, dateLabel, [Level]
|
||||
END
|
||||
@@ -0,0 +1,50 @@
|
||||
|
||||
CREATE PROCEDURE [dbo].[工时统计_作业者工时_查询_导出]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
-- 导出文件名和类型
|
||||
SELECT '作业者工时统计_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype
|
||||
|
||||
-- 字段宽度
|
||||
SELECT 256*12 AS 操作人, 256*15 AS 工作日期, 256*20 AS 合同号, 256*12 AS 订单号, 256*40 AS 产品编码,
|
||||
256*25 AS 产品名称, 256*15 AS 工序名称, 256*10 AS 报工数量, 256*20 AS 开始时间, 256*20 AS 结束时间, 256*12 AS '工时(h)'
|
||||
|
||||
-- 是否计算列
|
||||
SELECT 0 AS 操作人, 0 AS 工作日期, 0 AS 合同号, 0 AS 订单号, 0 AS 产品编码,
|
||||
0 AS 产品名称, 0 AS 工序名称, 0 AS 报工数量, 0 AS 开始时间, 0 AS 结束时间, 0 AS '工时(h)'
|
||||
|
||||
-- 导出数据:每行都填满完整信息
|
||||
SELECT
|
||||
操作人,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
ISNULL(订单合同号, '') AS 合同号,
|
||||
ISNULL(订单号, '') AS 订单号,
|
||||
ISNULL(产品编码, '') AS 产品编码,
|
||||
ISNULL(产品名称, '') AS 产品名称,
|
||||
ISNULL(工序名称, '') AS 工序名称,
|
||||
CASE WHEN 操作类别 IN ('报工', '辅助结束','加班','异常','开始加工') THEN CAST(操作数值 AS VARCHAR(20)) ELSE '0' END AS 报工数量,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间,
|
||||
CAST(CAST(总时长 / 60.0 / 60.0 AS DECIMAL(10,2)) AS VARCHAR(20)) AS '工时(h)'
|
||||
FROM [dbo].[View_生产工时视图]
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
and isNull(阶段标识,0) != -1
|
||||
ORDER BY 操作人, 开始时间
|
||||
END
|
||||
|
||||
129
db_backups/工时统计_设备工时_查询_before_add_assignee_20260622_172419.sql
Normal file
129
db_backups/工时统计_设备工时_查询_before_add_assignee_20260622_172419.sql
Normal file
@@ -0,0 +1,129 @@
|
||||
|
||||
CREATE PROCEDURE [dbo].[工时统计_设备工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH 操作人汇总 AS (
|
||||
SELECT
|
||||
工位名称,
|
||||
COUNT(*) AS 报工次数,
|
||||
SUM(CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN 操作数值 ELSE 0 END) AS 报工数量,
|
||||
CAST(SUM(加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时
|
||||
FROM View_生产工时视图
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 工位名称 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
and isNull(阶段标识,0) = -1
|
||||
GROUP BY 工位名称
|
||||
),
|
||||
日期汇总 AS (
|
||||
SELECT
|
||||
工位名称,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
COUNT(*) AS 报工次数,
|
||||
SUM(CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN 操作数值 ELSE 0 END) AS 报工数量,
|
||||
CAST(SUM(加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 工时小时
|
||||
FROM View_生产工时视图
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND 工位名称 IS NOT NULL AND 工位名称 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 工位名称 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
and isNull(阶段标识,0) = -1
|
||||
GROUP BY 工位名称, CONVERT(VARCHAR(10), 开始时间, 120)
|
||||
),
|
||||
报工明细 AS (
|
||||
SELECT
|
||||
工位名称,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
订单合同号 AS 合同号,
|
||||
订单号,
|
||||
产品编码,
|
||||
产品名称,
|
||||
工序名称,
|
||||
CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN 操作数值 ELSE 0 END AS 报工数量,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间,
|
||||
CAST(加工工时 / 60.0 / 60.0 AS DECIMAL(10,2)) AS 工时小时
|
||||
FROM View_生产工时视图
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 工位名称 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
and isNull(阶段标识,0) = -1
|
||||
)
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
工位名称 AS operator,
|
||||
'' AS dateLabel,
|
||||
CAST(报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
CAST(总工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 操作人汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
工位名称 AS operator,
|
||||
工作日期 AS dateLabel,
|
||||
CAST(报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 日期汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
3 AS [Level],
|
||||
工位名称 AS operator,
|
||||
工作日期 AS dateLabel,
|
||||
'' AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
ISNULL(合同号, '') AS contractNo,
|
||||
ISNULL(订单号, '') AS orderNo,
|
||||
ISNULL(产品编码, '') AS productCode,
|
||||
ISNULL(产品名称, '') AS productName,
|
||||
ISNULL(工序名称, '') AS processName,
|
||||
ISNULL(开始时间, '') AS startTime,
|
||||
ISNULL(结束时间, '') AS endTime,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 报工明细
|
||||
|
||||
ORDER BY operator, dateLabel, [Level]
|
||||
END
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
|
||||
CREATE PROCEDURE [dbo].[工时统计_设备工时_查询_导出]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
-- 导出文件名和类型
|
||||
SELECT '设备工时统计_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype
|
||||
|
||||
-- 字段宽度
|
||||
SELECT 256*12 AS 操作人, 256*15 AS 工作日期, 256*20 AS 合同号, 256*12 AS 订单号, 256*40 AS 产品编码,
|
||||
256*25 AS 产品名称, 256*15 AS 工序名称, 256*10 AS 报工数量, 256*20 AS 开始时间, 256*20 AS 结束时间, 256*12 AS '工时(h)'
|
||||
|
||||
-- 是否计算列
|
||||
SELECT 0 AS 操作人, 0 AS 工作日期, 0 AS 合同号, 0 AS 订单号, 0 AS 产品编码,
|
||||
0 AS 产品名称, 0 AS 工序名称, 0 AS 报工数量, 0 AS 开始时间, 0 AS 结束时间, 0 AS '工时(h)'
|
||||
|
||||
-- 导出数据:每行都填满完整信息
|
||||
SELECT
|
||||
工位名称,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
ISNULL(订单合同号, '') AS 合同号,
|
||||
ISNULL(订单号, '') AS 订单号,
|
||||
ISNULL(产品编码, '') AS 产品编码,
|
||||
ISNULL(产品名称, '') AS 产品名称,
|
||||
ISNULL(工序名称, '') AS 工序名称,
|
||||
CASE WHEN 操作类别 IN ('报工', '辅助结束') THEN CAST(操作数值 AS VARCHAR(20)) ELSE '0' END AS 报工数量,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间,
|
||||
CAST(CAST(加工工时 / 60.0 / 60.0 AS DECIMAL(10,2)) AS VARCHAR(20)) AS '工时(h)'
|
||||
FROM View_生产工时视图
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 报工日期 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 报工日期 <= @结束日期)
|
||||
AND 工位名称 IS NOT NULL AND 工位名称 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 工位名称 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
and isNull(阶段标识,0) = -1
|
||||
ORDER BY 工位名称, 开始时间
|
||||
END
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
CREATE PROCEDURE [dbo].[工时统计_项目工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH 订单工时汇总 AS (
|
||||
SELECT
|
||||
v.订单合同号 AS 合同号,
|
||||
v.产品编码,
|
||||
v.产品名称,
|
||||
MAX(v.计划数量) AS 计划数量,
|
||||
MAX(v.完成数量) AS 完成数量,
|
||||
SUM(CASE WHEN v.操作类别 IN ('报工', '辅助结束') THEN v.操作数值 ELSE 0 END) AS 报工数量,
|
||||
MIN(CONVERT(VARCHAR(10), v.报工日期, 120)) AS 计划开始,
|
||||
MAX(CONVERT(VARCHAR(10), v.报工日期, 120)) AS 计划完成,
|
||||
CAST(SUM(v.加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时
|
||||
FROM View_生产工时视图 v
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR v.订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR v.操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR v.产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR v.工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR v.订单号 LIKE '%' + @订单号 + '%')
|
||||
GROUP BY v.订单合同号, v.产品编码, v.产品名称
|
||||
),
|
||||
工序工时明细 AS (
|
||||
SELECT
|
||||
v.订单合同号 AS 合同号,
|
||||
v.产品编码,
|
||||
v.工序名称,
|
||||
v.操作人,
|
||||
v.订单号,
|
||||
SUM(CASE WHEN v.操作类别 IN ('报工', '辅助结束') THEN v.操作数值 ELSE 0 END) AS 报工数量,
|
||||
CAST(SUM(v.加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 工时小时,
|
||||
MIN(CONVERT(VARCHAR(10), v.报工日期, 120)) AS 计划开始,
|
||||
MAX(CONVERT(VARCHAR(10), v.报工日期, 120)) AS 计划完成
|
||||
FROM View_生产工时视图 v
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR v.订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR v.操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR v.产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR v.工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR v.订单号 LIKE '%' + @订单号 + '%')
|
||||
GROUP BY v.订单合同号, v.产品编码, v.工序名称, v.操作人,v.订单号
|
||||
)
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
合同号 AS contractNo,
|
||||
产品名称 AS materialDesc,
|
||||
产品编码 AS materialCode,
|
||||
'' AS processName,
|
||||
'' AS operator,
|
||||
CASE WHEN 计划数量 = FLOOR(计划数量) THEN CAST(CAST(计划数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(计划数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END + '/' +
|
||||
CASE WHEN 完成数量 = FLOOR(完成数量) THEN CAST(CAST(完成数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(完成数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS qty,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
ISNULL(计划开始, '') AS planStart,
|
||||
ISNULL(计划完成, '') AS planEnd,
|
||||
CAST(总工时小时 AS VARCHAR(20)) AS workHours,
|
||||
'' AS 订单号
|
||||
FROM 订单工时汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
d.合同号 AS contractNo,
|
||||
'' AS materialDesc,
|
||||
d.产品编码 AS materialCode,
|
||||
d.工序名称 AS processName,
|
||||
d.操作人 AS operator,
|
||||
'' AS qty,
|
||||
CAST(d.报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
d.计划开始 AS planStart,
|
||||
d.计划完成 AS planEnd,
|
||||
CAST(d.工时小时 AS VARCHAR(20)) AS workHours,
|
||||
d.订单号 AS 订单号
|
||||
FROM 工序工时明细 d
|
||||
|
||||
ORDER BY contractNo, materialCode, [Level], processName
|
||||
END
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
CREATE PROCEDURE [dbo].[工时统计_项目工时_查询_导出]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
-- 导出文件名和类型
|
||||
SELECT '项目工时统计_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype
|
||||
|
||||
-- 字段宽度
|
||||
SELECT 256*20 AS 合同号, 256*20 AS 订单号,256*30 AS 产品名称, 256*40 AS 产品编码, 256*15 AS 工序名称, 256*12 AS 操作人,
|
||||
256*12 AS 计划数量, 256*12 AS 完成数量, 256*10 AS 报工数量, 256*15 AS 计划开始, 256*15 AS 计划完成, 256*12 AS '工时(h)'
|
||||
|
||||
-- 是否计算列
|
||||
SELECT 0 AS 合同号, 0 AS 订单号,0 AS 产品名称, 0 AS 产品编码, 0 AS 工序名称, 0 AS 操作人,
|
||||
0 AS 计划数量, 0 AS 完成数量, 0 AS 报工数量, 0 AS 计划开始, 0 AS 计划完成, 0 AS '工时(h)'
|
||||
|
||||
-- 导出数据:每行都填满完整信息
|
||||
SELECT
|
||||
v.订单合同号 AS 合同号,
|
||||
v.订单号,
|
||||
v.产品名称,
|
||||
v.产品编码,
|
||||
v.工序名称,
|
||||
v.操作人,
|
||||
CASE WHEN v.计划数量 IS NULL THEN '' WHEN v.计划数量 = FLOOR(v.计划数量) THEN CAST(CAST(v.计划数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(v.计划数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS 计划数量,
|
||||
CASE WHEN v.完成数量 IS NULL THEN '' WHEN v.完成数量 = FLOOR(v.完成数量) THEN CAST(CAST(v.完成数量 AS INT) AS VARCHAR(20)) ELSE CAST(CAST(v.完成数量 AS DECIMAL(10,1)) AS VARCHAR(20)) END AS 完成数量,
|
||||
CASE WHEN v.操作类别 IN ('报工', '辅助结束') THEN CAST(v.操作数值 AS VARCHAR(20)) ELSE '0' END AS 报工数量,
|
||||
CONVERT(VARCHAR(10), v.报工日期, 120) AS 计划开始,
|
||||
CONVERT(VARCHAR(10), v.报工日期, 120) AS 计划完成,
|
||||
CAST(CAST(v.加工工时 / 60.0 / 60.0 AS DECIMAL(10,2)) AS VARCHAR(20)) AS '工时(h)'
|
||||
FROM View_生产工时视图 v
|
||||
WHERE(@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR v.订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR v.操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR v.产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR v.工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR v.订单号 LIKE '%' + @订单号 + '%')
|
||||
ORDER BY v.订单合同号, v.产品编码, v.工序名称, v.操作人,v.订单号
|
||||
END
|
||||
|
||||
@@ -0,0 +1,196 @@
|
||||
|
||||
CREATE PROCEDURE [dbo].[生产管理_生产计划跟踪]
|
||||
@订单号 int = 0,
|
||||
@物料类型 nvarchar(50) = '', --自制件、装配件
|
||||
@合同号 nvarchar(50) = '',
|
||||
@产品编码 nvarchar(50) = '',
|
||||
@产品名称 nvarchar(50) = '',
|
||||
@工序名称 nvarchar(50) = '',
|
||||
@要求完工日期1 nvarchar(50) = '',
|
||||
@要求完工日期2 nvarchar(50) = '',
|
||||
@计划开始1 nvarchar(50) = '',
|
||||
@计划开始2 nvarchar(50) = '',
|
||||
@计划完成1 nvarchar(50) = '',
|
||||
@计划完成2 nvarchar(50) = '',
|
||||
@排产状态 nvarchar(50) = '全部', --全部,已完成、未完成
|
||||
@指派对象 nvarchar(50) = '全部',
|
||||
@自制件属性 nvarchar(50) = '全部',
|
||||
@计划号 nvarchar(50) = '',
|
||||
@加急状态 nvarchar(50) = '',
|
||||
@单据状态 nvarchar(50) = ''
|
||||
AS
|
||||
BEGIN
|
||||
DECLARE @selectStr NVARCHAR(MAX)
|
||||
DECLARE @selectStrWhere NVARCHAR(4000) = ' WHERE [物料类型] = ''pit_Resource'' '
|
||||
|
||||
SET @selectStr = N'
|
||||
SELECT top 500
|
||||
v.计划号,
|
||||
加急总数,
|
||||
拣配状态,
|
||||
自制件属性,
|
||||
入库数量,
|
||||
外协分组,
|
||||
case
|
||||
when isnull(任务状态,0)=4 then ''已完成''
|
||||
when isnull(任务状态,0)=2 then ''已开工''
|
||||
when isnull(任务状态,0)=0 then ''待执行''
|
||||
when isnull(任务状态,0)=1 then ''可执行''
|
||||
else ''''
|
||||
end as [任务状态],
|
||||
case
|
||||
when isnull(加工状态,0)=2 then ''辅助开始''
|
||||
when isnull(加工状态,0)=3 then ''辅助结束''
|
||||
when isnull(加工状态,0)=4 then ''开始加工''
|
||||
when isnull(加工状态,0)=5 then ''暂停''
|
||||
when isnull(加工状态,0)=6 then ''报工''
|
||||
else ''''
|
||||
end as [加工状态],
|
||||
[计划数量订单],
|
||||
ISNULL(开工时间, 0) AS 开工时间,
|
||||
ISNULL(进度, 0) AS 进度,
|
||||
v.[TaskAID],
|
||||
[合同号],
|
||||
v.[订单编号] AS 订单号,
|
||||
[订单行号],
|
||||
[订单拆分内码] AS 拆分内码,
|
||||
[物料编号] AS 产品编码,
|
||||
[物料描述] AS 产品名称,
|
||||
TRIM(''.'' FROM TRIM(''0'' FROM CAST([计划数量] AS VARCHAR(30)))) AS 计划数量,
|
||||
[计划完成] AS 要求完工日期,
|
||||
[工序名称],
|
||||
完成数量,
|
||||
收料数量,
|
||||
CASE
|
||||
WHEN [加急状态] = 1 THEN ''加急''
|
||||
ELSE ''''
|
||||
END AS 加急状态,
|
||||
加急数量,
|
||||
性质,
|
||||
ISNULL(总工时, 0) AS 总工时,
|
||||
[占用情况],
|
||||
[排产状态],
|
||||
[工序计划数量],
|
||||
指派对象编号,
|
||||
指派对象,
|
||||
TRIM(''.'' FROM TRIM(''0'' FROM CAST([指派数量] AS VARCHAR(30)))) AS 指派数量,
|
||||
计划开始时间,
|
||||
计划完成时间,
|
||||
最晚开始时间,
|
||||
[派工状态],
|
||||
[外协通知],
|
||||
[优先级],
|
||||
[未完成说明],
|
||||
[派工特殊说明],
|
||||
[最后编辑人],
|
||||
[最后编辑时间],
|
||||
[二次派工],
|
||||
CASE
|
||||
WHEN zj_终检.计划号 IS NOT NULL THEN ''是''
|
||||
ELSE ''否''
|
||||
END AS 终检,
|
||||
-- 新增收检相关字段
|
||||
ISNULL(zj_收检.合格数合计, 0) AS 收检合格数,
|
||||
ISNULL(zj_收检.不合格数合计, 0) AS 收检不合格数,
|
||||
ISNULL(zj_收检.合格数合计, 0) + ISNULL(zj_收检.不合格数合计, 0) AS 收检总数,
|
||||
ISNULL(jl.开始时间, 0) AS 开始时间,
|
||||
ISNULL(jl.结束时间, 0) AS 结束时间,
|
||||
ISNULL(jl.外协结束时间, 0) AS 外协结束时间,
|
||||
STUFF((
|
||||
SELECT '','' + d2.工序名称
|
||||
FROM [dbo].[View_生产订单_MES] d2
|
||||
WHERE d2.订单编号 = v.订单编号 order by d2.订单行号
|
||||
FOR XML PATH('''')
|
||||
), 1, 1, '''') AS 工艺路线
|
||||
FROM [dbo].[View_生产订单全部(包括已关闭)] v
|
||||
-- 终检判断
|
||||
LEFT JOIN (
|
||||
SELECT DISTINCT 计划号
|
||||
FROM dbo.YL_质量检验_质检记录
|
||||
WHERE 质检类型 = ''终检''
|
||||
) zj_终检 ON v.[订单编号] = zj_终检.计划号
|
||||
-- 收检数量统计
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
TaskAID,
|
||||
SUM(ISNULL(合格数, 0)) AS 合格数合计,
|
||||
SUM(ISNULL(不合格数, 0)) AS 不合格数合计
|
||||
FROM dbo.YL_质量检验_质检记录
|
||||
WHERE 质检类型 = ''收检''
|
||||
GROUP BY TaskAID
|
||||
) zj_收检 ON v.[TaskAID] = zj_收检.TaskAID
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
TaskAID,
|
||||
min(ISNULL(开始时间, 0)) AS 开始时间,
|
||||
MAX(CASE WHEN 操作类别 = ''报工'' THEN ISNULL(开始时间, 0) ELSE NULL END) AS 外协结束时间,
|
||||
MAX(CASE WHEN 操作类别 = ''报工'' THEN ISNULL(结束时间, 0) ELSE NULL END) AS 结束时间
|
||||
FROM [dbo].[YL_加工中心_操作记录表]
|
||||
GROUP BY TaskAID
|
||||
) jl ON v.[TaskAID] = jl.TaskAID'
|
||||
|
||||
-- 添加筛选条件
|
||||
IF (@订单号 > 0)
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [订单编号] = ' + CONVERT(VARCHAR(10), @订单号)
|
||||
IF (@计划号 > 0)
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND v.[计划号] = '''+@计划号+''''
|
||||
IF (@合同号 <> '')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [合同号] LIKE ''%' + @合同号 + '%'''
|
||||
|
||||
IF (@产品编码 <> '')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [物料编号] LIKE ''%' + @产品编码 + '%'''
|
||||
|
||||
IF (@产品名称 <> '')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [物料描述] LIKE ''%' + @产品名称 + '%'''
|
||||
|
||||
IF (@工序名称 <> '')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [工序名称] = ''' + @工序名称 + ''''
|
||||
|
||||
IF (@要求完工日期1 <> '')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [计划完成] >= ''' + @要求完工日期1 + ''''
|
||||
|
||||
IF (@要求完工日期2 <> '')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [计划完成] <= ''' + @要求完工日期2 + ''''
|
||||
|
||||
IF (@计划开始1 <> '')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [计划开始时间] >= ''' + @计划开始1 + ''''
|
||||
|
||||
IF (@计划开始2 <> '')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [计划开始时间] <= ''' + @计划开始2 + ''''
|
||||
|
||||
IF (@计划完成1 <> '')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [计划完成时间] >= ''' + @计划完成1 + ''''
|
||||
|
||||
IF (@计划完成2 <> '')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [计划完成时间] <= ''' + @计划完成2 + ''''
|
||||
|
||||
IF (@排产状态 = '未完成')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND ISNULL([排产状态], 0) = 0'
|
||||
ELSE IF (@排产状态 = '已完成')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [排产状态] = 1'
|
||||
IF (@自制件属性 = '机加')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [自制件属性] = ''机加件'''
|
||||
ELSE IF (@自制件属性 = '装配')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [自制件属性] LIKE ''%装配'''
|
||||
|
||||
IF (@加急状态 = '加急')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [加急状态] = 1'
|
||||
IF (@单据状态 = '正常')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [单据状态] is null'
|
||||
ELSE IF (@单据状态 = '关闭')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [单据状态] is not null'
|
||||
IF (@指派对象 <> '全部')
|
||||
SET @selectStrWhere = @selectStrWhere + ' AND [指派对象] IN (SELECT value FROM STRING_SPLIT(''' + @指派对象 + ''', '',''))'
|
||||
|
||||
-- 添加排序
|
||||
SET @selectStrWhere = @selectStrWhere + ' ORDER BY [计划完成] ASC, [订单编号] ASC'
|
||||
|
||||
-- 合并SQL
|
||||
SET @selectStr = @selectStr + @selectStrWhere
|
||||
|
||||
-- 打印SQL(调试用)
|
||||
PRINT @selectStr
|
||||
|
||||
-- 执行查询
|
||||
EXEC sp_executesql @selectStr
|
||||
END
|
||||
94
db_backups/质量管理_质检明细_查询_before_fieldkey_20260625.sql
Normal file
94
db_backups/质量管理_质检明细_查询_before_fieldkey_20260625.sql
Normal file
@@ -0,0 +1,94 @@
|
||||
|
||||
-- 质量管理_质检明细_查询
|
||||
CREATE PROCEDURE [dbo].[质量管理_质检明细_查询]
|
||||
@质检类型 nvarchar(4000) = '10', -- 修改为字符串类型,因为传入的是字符串
|
||||
@开始日期 datetime = NULL,
|
||||
@结束日期 datetime = NULL,
|
||||
@订单号 nvarchar(4000) = '0', -- 修改为字符串类型,避免类型转换问题
|
||||
@合同号 nvarchar(4000) = '0',
|
||||
@零件编码 nvarchar(4000) = '0',
|
||||
@零件名称 nvarchar(4000) = '0',
|
||||
@PageCurrent int = 1, -- 要显示的页码
|
||||
@PageSize int = 20, -- 每页的大小(记录数)
|
||||
@PageCount int OUTPUT, -- 总页数
|
||||
@ItemCount int OUTPUT -- 数据总数
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @tbname sysname = ' [dbo].[View_质检明细] ' -- 要分页显示的表名
|
||||
DECLARE @fieldkey sysname = ' ' -- 用于定位记录的主键(惟一键)字段
|
||||
DECLARE @where nvarchar(4000) -- 查询条件
|
||||
DECLARE @fieldshow nvarchar(1000) -- 要显示的字段列表
|
||||
DECLARE @fieldOrder nvarchar(1000) = ' 检测时间 DESC ' -- 排序字段
|
||||
|
||||
-- 构建查询条件(使用参数化方式,避免SQL注入)
|
||||
SET @where = ' (1=1) '
|
||||
|
||||
-- 质检类型过滤
|
||||
IF @质检类型 = '10' -- 全部
|
||||
SET @where = @where + ' AND (1=1) '
|
||||
ELSE IF @质检类型 = '0'
|
||||
SET @where = @where + ' AND 质检类型 = ''收检'' '
|
||||
ELSE IF @质检类型 = '1'
|
||||
SET @where = @where + ' AND 质检类型 = ''终检'' '
|
||||
ELSE IF @质检类型 = '2'
|
||||
SET @where = @where + ' AND 质检类型 = ''来料检验'' '
|
||||
ELSE IF @质检类型 = '3'
|
||||
SET @where = @where + ' AND 质检类型 = ''退库检验'' '
|
||||
|
||||
-- 订单号过滤条件(修正:使用LIKE时加引号)
|
||||
IF @订单号 <> '0'
|
||||
SET @where = @where + ' AND 计划号 LIKE ''%' + @订单号 + '%'' '
|
||||
|
||||
-- 合同号过滤条件
|
||||
--IF @合同号 <> '0'
|
||||
-- SET @where = @where + ' AND 内部合同号 LIKE ''%' + @合同号 + '%'' '
|
||||
|
||||
-- 零件编码过滤条件
|
||||
IF @零件编码 <> '0'
|
||||
SET @where = @where + ' AND 零件编码 LIKE ''%' + @零件编码 + '%'' '
|
||||
|
||||
-- 零件名称过滤条件
|
||||
IF @零件名称 <> '0'
|
||||
SET @where = @where + ' AND 零件名称 LIKE ''%' + @零件名称 + '%'' '
|
||||
|
||||
-- 日期范围过滤(如果提供了日期参数)
|
||||
IF @开始日期 IS NOT NULL
|
||||
SET @where = @where + ' AND 检测时间 >= ''' + CONVERT(nvarchar(30), @开始日期, 120) + ''' '
|
||||
|
||||
IF @结束日期 IS NOT NULL
|
||||
SET @where = @where + ' AND 检测时间 <= ''' + CONVERT(nvarchar(30), @结束日期, 120) + ''' '
|
||||
|
||||
SET @fieldshow = '
|
||||
[QT_AID]
|
||||
,[质检类型]
|
||||
,[零件编码]
|
||||
,[零件名称]
|
||||
,[内部合同号]
|
||||
,[计划号]
|
||||
,[工序名称]
|
||||
,[检验数量]
|
||||
,[合格数]
|
||||
,[不合格数]
|
||||
,[检测人]
|
||||
,[检测时间]
|
||||
,[检测说明]
|
||||
,[工位名称]
|
||||
,[订单类型]'
|
||||
|
||||
-- 调试用(可以注释掉)
|
||||
PRINT @where
|
||||
|
||||
-- 执行分页存储过程
|
||||
EXEC [dbo].[sp_xt_pagesplit]
|
||||
@tbname,
|
||||
@fieldkey,
|
||||
@where,
|
||||
@fieldshow,
|
||||
@fieldOrder,
|
||||
@PageCurrent,
|
||||
@PageSize,
|
||||
@PageCount OUTPUT,
|
||||
@ItemCount OUTPUT
|
||||
END
|
||||
BIN
doc/修改工时报表.docx
Normal file
BIN
doc/修改工时报表.docx
Normal file
Binary file not shown.
BIN
doc/修改设备信息维护.docx
Normal file
BIN
doc/修改设备信息维护.docx
Normal file
Binary file not shown.
BIN
doc/修改过程异常管控.docx
Normal file
BIN
doc/修改过程异常管控.docx
Normal file
Binary file not shown.
BIN
doc/工时查询界面.docx
Normal file
BIN
doc/工时查询界面.docx
Normal file
Binary file not shown.
BIN
doc/新增产品合格率.docx
Normal file
BIN
doc/新增产品合格率.docx
Normal file
Binary file not shown.
BIN
doc/新增及时齐套跟踪结果.docx
Normal file
BIN
doc/新增及时齐套跟踪结果.docx
Normal file
Binary file not shown.
BIN
doc/新增结算工时页面.docx
Normal file
BIN
doc/新增结算工时页面.docx
Normal file
Binary file not shown.
BIN
doc/设备信息.xlsx
Normal file
BIN
doc/设备信息.xlsx
Normal file
Binary file not shown.
BIN
doc/设计报工任务模块.docx
Normal file
BIN
doc/设计报工任务模块.docx
Normal file
Binary file not shown.
7
doc_old/MacroinfManage_MES.code-workspace
Normal file
7
doc_old/MacroinfManage_MES.code-workspace
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"folders": [
|
||||
{
|
||||
"path": ".."
|
||||
}
|
||||
]
|
||||
}
|
||||
69
doc_old/fix_机加设备生产运营看板_加急任务查询.sql
Normal file
69
doc_old/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
|
||||
16
doc_old/index.html
Normal file
16
doc_old/index.html
Normal file
@@ -0,0 +1,16 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||
<title><%= htmlWebpackPlugin.options.title %></title>
|
||||
<link rel="icon" href="favicon.ico">
|
||||
</head>
|
||||
<body style="background-color: #eeeeee">
|
||||
<script src="./static/config.js"></script>
|
||||
<script src="./static/jsQR.js"></script>
|
||||
<div id="app"></div>
|
||||
<script></script>
|
||||
<!-- built files will be auto injected -->
|
||||
</body>
|
||||
</html>
|
||||
81
doc_old/sql_异常提醒_装配及时送检_查询.sql
Normal file
81
doc_old/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
|
||||
BIN
doc_old/~$开发计划与新增需求分析记录_2026-05-27.docx
Normal file
BIN
doc_old/~$开发计划与新增需求分析记录_2026-05-27.docx
Normal file
Binary file not shown.
77
doc_old/今后开发计划_2026-05-27.md
Normal file
77
doc_old/今后开发计划_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
doc_old/今后开发计划与新增需求分析记录_2026-05-27.docx
Normal file
BIN
doc_old/今后开发计划与新增需求分析记录_2026-05-27.docx
Normal file
Binary file not shown.
137
doc_old/今日工作汇报_2026-05-23.txt
Normal file
137
doc_old/今日工作汇报_2026-05-23.txt
Normal file
@@ -0,0 +1,137 @@
|
||||
今日工作汇报
|
||||
|
||||
日期:2026年5月23日
|
||||
|
||||
一、今日已处理问题
|
||||
|
||||
1. 修复采购收货检备注问题
|
||||
已处理采购收货检验相关备注字段异常,保证备注信息能够正常记录、查询和展示。
|
||||
|
||||
2. 查询序检因已入库导致质检失败的原因
|
||||
已排查序检过程中因生产订单或物料已入库导致质检失败的问题,明确该类失败与当前入库状态校验逻辑有关,后续如需优化,需要结合入库状态、质检状态和业务允许范围进一步确认处理规则。
|
||||
|
||||
3. 修改生产任务看板未按期齐套任务数据
|
||||
已调整生产任务看板中“未按期齐套任务”相关数据逻辑,修正看板展示数据与实际业务状态不一致的问题。
|
||||
|
||||
二、今日需求分析记录
|
||||
|
||||
1. 工艺内容修改
|
||||
已分析该需求。由于涉及已开工任务,当前结论是不允许直接修改。后续如要支持,需要设计工艺版本、任务快照和已开工任务处理规则,目前暂不开发。
|
||||
|
||||
2. 机加件排产-表单
|
||||
已分析计划开始时间、计划完成时间筛选逻辑,后续改为按单日期查询。
|
||||
同时分析新增历史工时查询:在机加件已排产页面增加总工时字段,点击后弹窗查看明细,按设备、日期分组显示生产任务和工时合计,查询方式参考工时查询页面。
|
||||
|
||||
3. 工序流转卡
|
||||
已确认打印内容需要增加原料编码,开发周期约0.2天。
|
||||
|
||||
4. 生产计划跟踪
|
||||
已分析当前序展示逻辑。后续需要在当前序中显示完整工艺路线,并根据任务状态判断哪道序正在加工、哪些序等待加工。
|
||||
进度显示规则示例:当前工序加工中显示“打磨中”,当前工序完成后显示“打磨毕待喷漆”。
|
||||
括号内容为指派对象,外协工序括号中也显示指派对象。
|
||||
同时需要增加标准工时和订单状态字段。
|
||||
|
||||
5. 设计任务报工模块
|
||||
已分析该模块为MES自建任务,不依赖生产订单,不上传SAP。
|
||||
设计工时单独记录,后续用于报表和工时统计。
|
||||
质量、装配、机加工时分别来自各自业务模块,后续可按系统角色权限区分。
|
||||
|
||||
6. 工时报表
|
||||
已确认作业者工时新增指派对象字段,开发周期约0.1天。
|
||||
作业者工时一对多计算问题当前暂不修改,因为当前版本已不再按旧逻辑计算,需要后续重新确认规则。
|
||||
|
||||
7. 工时查询
|
||||
程序工时字段需要结合设备数据采集计算,后续可能新增设备信息。目前等待设备采集数据,不进入开发。
|
||||
|
||||
8. 生产领料(补充)-机加
|
||||
已确认领料单需要新增备注字段,开发周期约0.2天。
|
||||
|
||||
9. 生产退库-机加
|
||||
已确认按照装配退库方式增加备注字段,开发周期约0.2天。
|
||||
|
||||
10. 生产退库-装配
|
||||
已确认需要增加备注字段,开发周期约0.1天。
|
||||
|
||||
11. 机加班次产量表
|
||||
已分析为新增报表,按设备分组,设备下按日期、班次展示每天每班次干了哪些任务,支持时间和班次筛选。
|
||||
|
||||
12. 外协任务报表(采购)
|
||||
已确认增加采购到货期说明字段,开发周期约0.1天。
|
||||
|
||||
13. 外协任务检验 / 序检
|
||||
已分析需要记录指派对象、供应商、SAP采购收货单号。
|
||||
当前表中没有记录设备,只记录工序,所以后续如果要做设备合格率暂时无法实现;增加供应商后,可以支持外协供应商合格率相关统计。
|
||||
|
||||
14. 手续确认报表
|
||||
已分析为新增页面。装配、电气发料齐套时间列表合并显示,展示内容参考装配中心。
|
||||
新增“手续确认”字段,点击选择已完成后消失。
|
||||
消失条件包括:手续确认已完成、生产订单取消/关闭、整单已入库。
|
||||
|
||||
15. 及时检验报表
|
||||
已分析为新增报表。统计生产报工完成后超过2天未检验的任务。
|
||||
数据依据为[YL_加工中心_操作记录表],条件包括操作类别为报工、操作数值大于0,并以结束时间作为起算时间。
|
||||
|
||||
16. 及时齐套跟踪结果报表
|
||||
已分析为新增报表。缺件明细为实时数据,来源SAP,通过生产订单号查询加急件明细。
|
||||
缺料物料的生产订单号需要绑定主生产订单号,支持多个子订单包含关系。
|
||||
页面需要支持展开查看缺件明细,并显示当前进度、排序、预计完成时间、预计可执行时间等信息。
|
||||
|
||||
17. 及时送检报表
|
||||
已确认为新需求,基于发料齐套时间,SAP数据已到,预计开发周期约0.5天。
|
||||
|
||||
18. 生产日报-送检(机加 / 装配)
|
||||
已分析后续可能根据多个部门拆分多个报表,也可以先按部门筛选方式设计,避免重复开发。
|
||||
|
||||
19. 编程任务清单
|
||||
已分析本质为编程报工,类似装配中心的任务列表算法。
|
||||
后续需要按设备展示任务清单,并支持编程开始、结束、工时统计等功能。
|
||||
|
||||
20. 标牌打印操作
|
||||
当前需求未确定,暂不排开发周期。
|
||||
|
||||
21. 发货通知列表
|
||||
SAP已提供数据,大屏已显示,后续需要新增报表页面,预计开发周期约0.5天。
|
||||
|
||||
22. 生产订单关闭
|
||||
已分析需要新增批量更新SAP订单状态功能。
|
||||
后续开发时需要支持批量选择、调用SAP、记录成功失败结果,并防止重复关闭。
|
||||
|
||||
23. 制定标准工艺
|
||||
已确认点击保存时增加提示信息,开发周期约0.1天。
|
||||
|
||||
24. 生产工艺
|
||||
已分析编辑时如果没有生产工艺,需要自动带出标准工艺。
|
||||
带出内容作为编辑草稿,不应直接覆盖保存,避免误改生产工艺。
|
||||
|
||||
25. 异常管控
|
||||
已分析报工页面需要支持选择任务后直接报异常,不再进入异常页面后重新选择任务。
|
||||
审批人改为多选,一人处理即可,其他被选审批人也能看到任务。
|
||||
审批人来源不固定,可能来自部门、角色、组织层级或任意人员,因此都需要支持。
|
||||
|
||||
26. 及时开工报表
|
||||
已分析当前是指派对象反选查询,客户还需要正选查询页面。
|
||||
后续需要支持指派对象正选和反选两种查询方式。
|
||||
|
||||
27. 让步接收记录
|
||||
已分析为新增查询页面。数据来源为质检记录中让步接收字段不为空的数据。
|
||||
|
||||
28. 装配已排产需求
|
||||
已完成重点分析。该需求需要新增装配已排产需求界面,增加系统/非系统筛选。
|
||||
高压单元为系统,阀类为非系统,判断方式暂按物料名称关键字。
|
||||
新增装配完成时间,来源为发料齐套时间加3天,可手动修改,字段落库到生产计划表。
|
||||
还需要显示SAP派工时间、合同交货期,增加钣金预达、钣金到达、泵、当前对应人员、当前对应内容、累计工时、预计总工时、合同工时汇总、合同进度参考、预计剩余工时、生产异常等字段。
|
||||
工时按装配、质量、设计分类,装配来自装配报工,质量来自质检报工,设计来自新设计任务报工模块。
|
||||
同步需要做日计划报表,按装配完成时间分组,支持导出和打印。
|
||||
|
||||
29. 质检任务早知道
|
||||
已分析为新增页面,基于装配已排产需求中的装配完成时间,去掉已完成任务后,按装配完成时间分组展示。
|
||||
|
||||
三、今日分析结论
|
||||
|
||||
今日除已处理的三个问题外,主要完成了新增需求的逐项梳理,明确了哪些可以直接开发、哪些依赖SAP、哪些依赖设备采集、哪些需求暂不明确、哪些当前无法修改。
|
||||
|
||||
其中可直接进入开发的小项包括:工序流转卡原料编码、工时报表指派对象、领料/退库备注、外协采购到货期说明、发货通知列表、标准工艺保存提示等。
|
||||
|
||||
需要重点设计后再开发的需求包括:装配已排产需求、生产计划跟踪、及时齐套跟踪结果报表、设计任务报工、异常管控、手续确认报表。
|
||||
|
||||
依赖外部数据的需求包括:SAP派工时间、合同交货期、发料齐套时间、及时齐套缺件明细、设备数据采集工时。
|
||||
151
doc_old/今日工作汇报_2026-05-25.md
Normal file
151
doc_old/今日工作汇报_2026-05-25.md
Normal file
@@ -0,0 +1,151 @@
|
||||
# 元利 MES 项目 — 今日工作汇报
|
||||
|
||||
日期:2026-05-25
|
||||
项目:MES_Manage_View_V20
|
||||
|
||||
## 一、今日主要工作
|
||||
|
||||
### 1. 完成 `src/views` 页面与 SAP 交互分析整理
|
||||
|
||||
基于 `元利项目详细分析.md`,对主系统 `src/views` 中涉及 SAP 的页面调用进行了梳理,明确了 SAP 交互主要集中在以下业务链路:
|
||||
|
||||
| 业务链路 | 涉及页面 | SAP 交互内容 |
|
||||
|---|---|---|
|
||||
| 机加/装配排产 | `SelfMakePlan`、`SelfMakePlando`、`SelfMakePlandone`、`InstallMakePlan`、`InstallMakePlanDo` | 回写 SAP 生产订单计划日期、派工信息、优先级、未完成说明 |
|
||||
| 生产订单关闭 | `PlannOrderClose` | 更新 SAP 生产订单关闭状态 |
|
||||
| 工序基础数据 | `ProcedureManagement` | 新增、查询、修改 SAP RouteStages |
|
||||
| 工位资源维护 | `WorkstationManagement` | 新增、修改 SAP Resources |
|
||||
| 外协业务 | `OutsourceMange`、`SaleOutsourceMange`、装配排产相关页面 | 创建 SAP 采购申请 |
|
||||
| 工时校验/投料 | `WorkHoursCheck` | 查询 SAP 生产订单、更新工序资源、提交 InventoryGenExits |
|
||||
| 质检/收货 | `processReceive`、`materialReturn`、`QualityCenter` | 查询 SAP 订单、创建采购收货单、生成库存任务 |
|
||||
|
||||
分析结论:
|
||||
- 当前系统不是单点 SAP 对接,而是计划、工艺、工位、生产、外协、质检、工时多个模块共同对接 SAP。
|
||||
- SAP 写操作失败会造成 MES 与 SAP 状态不一致,需要在后续开发中保留失败原因、同步状态和重试依据。
|
||||
- 生产订单关闭、工时校验、外协采购申请、采购收货是高风险操作,需要重点检查重复提交和半成功问题。
|
||||
|
||||
### 2. 生成元利项目详细流程图
|
||||
|
||||
已根据 `元利项目详细分析.md` 生成:
|
||||
|
||||
- `元利项目详细流程图.md`
|
||||
|
||||
内容包括:
|
||||
- 系统总体架构流程
|
||||
- 登录、菜单、权限流程
|
||||
- 基础资料维护流程
|
||||
- 标准工艺/生产工艺流程
|
||||
- 机加排产与 SAP 回写流程
|
||||
- 装配排产与采购申请流程
|
||||
- 机加生产执行流程
|
||||
- 装配中心执行流程
|
||||
- 质检流程
|
||||
- 外协流程
|
||||
- 工时校验与 SAP 投料流程
|
||||
- 异常管控流程
|
||||
- 生产订单关闭与 SAP 状态同步流程
|
||||
- 看板数据汇总流程
|
||||
- 新增需求与维护入口判断流程
|
||||
|
||||
### 3. 生成新增需求界面原型设计
|
||||
|
||||
已根据 `新增需求分析与开发记录_2026-05-23.md` 生成:
|
||||
|
||||
- `新增需求界面原型设计_2026-05-25.md`
|
||||
|
||||
主要覆盖以下页面原型:
|
||||
- 设计任务报工
|
||||
- 机加班次产量表
|
||||
- 手续确认报表
|
||||
- 及时检验报表
|
||||
- 及时齐套跟踪结果报表
|
||||
- 生产日报-送检
|
||||
- 编程任务清单/编程报工
|
||||
- 让步接收记录
|
||||
- 装配已排产需求
|
||||
- 质检任务早知道
|
||||
- 及时送检报表
|
||||
- 发货通知列表
|
||||
- 工时异常报表
|
||||
|
||||
同时补充了现有页面改造说明,包括机加已排产、生产计划跟踪、序检收检、生产订单关闭、生产工艺、异常管控、及时开工报表、工时报表、领料/退库/外协小字段等。
|
||||
|
||||
### 4. 生成元利项目详细用户使用说明书
|
||||
|
||||
已根据 `元利项目详细分析.md` 生成:
|
||||
|
||||
- `元利项目详细用户使用说明书.md`
|
||||
|
||||
内容覆盖:
|
||||
- 登录与通用操作
|
||||
- 基础资料维护
|
||||
- 工艺与图纸管理
|
||||
- 计划排产管理
|
||||
- 生产执行管理
|
||||
- 外协业务
|
||||
- 质检管理
|
||||
- 工时与报表
|
||||
- 异常管控
|
||||
- 设备管理与采集
|
||||
- 看板使用
|
||||
- 销售与交付查询
|
||||
- 新增需求相关页面使用
|
||||
- 系统维护
|
||||
- 常见问题和名词解释
|
||||
|
||||
### 5. 修正新增需求分析口径
|
||||
|
||||
对前期新增需求分析进行了补充修正,重点明确不能只判断“是否新增页面”,还必须判断:
|
||||
|
||||
1. 数据来源是什么。
|
||||
2. 字段在哪里维护。
|
||||
3. 是否已有业务页面承载。
|
||||
4. 是否需要新增维护页面。
|
||||
5. 是否影响历史任务、报表和看板。
|
||||
|
||||
已补充的关键结论:
|
||||
- 缺勤人员不能从“没有报工”反推,必须有应到人员和实到人员来源。
|
||||
- 关键工序应在标准工艺和生产工艺中维护,任务下发时做快照。
|
||||
- 看板只读取缺勤、关键工序、OEE、及时率等指标,不作为主维护入口。
|
||||
|
||||
## 二、今日修改工作
|
||||
|
||||
### 1. 工时校验报工培训
|
||||
|
||||
今日进行了工时校验和报工相关培训,重点说明:
|
||||
- 报工数据与工时校验之间的关系。
|
||||
- MES 工时与 SAP 工时提交的关系。
|
||||
- 工时校验页面中 SAP 订单、工序、资源、投料的核对方式。
|
||||
- SAP 提交失败时需要查看失败原因,避免重复提交。
|
||||
|
||||
### 2. 质检历史数据修复
|
||||
|
||||
已处理质检历史数据修复工作,重点围绕历史质检记录、任务状态和相关查询口径进行校正,减少历史数据对当前质检查询和报表统计的影响。
|
||||
|
||||
### 3. 修改生产订单关闭判断条件
|
||||
|
||||
已修改生产订单关闭相关判断条件,调整关闭前校验逻辑,避免不符合条件的订单被错误关闭,同时减少已完成、已入库、已取消等状态判断不一致带来的问题。
|
||||
|
||||
### 4. 修复休息日加班和法定加班计算 Bug
|
||||
|
||||
已修复休息日加班和法定加班计算异常问题,调整加班类型对应的计算逻辑,避免休息日加班和法定加班工时统计错误。
|
||||
|
||||
## 三、今日产出文档
|
||||
|
||||
| 文档 | 说明 |
|
||||
|---|---|
|
||||
| `元利项目详细流程图.md` | 根据详细分析生成系统级和业务级流程图 |
|
||||
| `新增需求界面原型设计_2026-05-25.md` | 根据新增需求生成界面原型和页面说明 |
|
||||
| `元利项目详细用户使用说明书.md` | 根据详细分析生成面向用户的完整操作说明 |
|
||||
| `新增需求分析与开发记录_2026-05-23.md` | 补充数据来源、维护入口、是否新建页面等分析 |
|
||||
| `隐性需求综合分析_2026-05-25.md` | 补充维护入口和隐性需求判断规则 |
|
||||
| `MES_Manage_View_V20_src_views_逐页面详细分析.md` | 补充页面归属、缺勤、关键工序、看板维护边界说明 |
|
||||
|
||||
## 四、当前结论
|
||||
|
||||
1. 元利 MES 与 SAP 的交互范围较广,后续所有涉及 SAP 写操作的功能都需要补同步状态、失败原因和重试机制。
|
||||
2. 新增需求不能简单按“新增页面”评估,要同步判断维护入口、数据来源、历史数据和看板影响。
|
||||
3. 工时、质检、订单关闭、加班计算属于当前重点稳定性工作,已完成培训和部分修复。
|
||||
4. 后续开发建议优先处理低风险、小范围功能,再推进装配已排产需求、及时齐套、设计/编程报工、OEE 等跨模块功能。
|
||||
|
||||
|
||||
143
doc_old/今日工作汇报_2026-05-26.md
Normal file
143
doc_old/今日工作汇报_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 状态 |
|
||||
| 装配报工重复 | 影响工时、任务进度、质检/送检统计 | 修复后继续观察现场数据 |
|
||||
| 加急任务未突出显示 | 质检处理优先级不明确 | 原料退库检已增加加急显示,后续可扩展排序 |
|
||||
| 用户手册仍需继续细化 | 培训时可能仍有页面操作细节不足 | 后续按重点业务页面继续逐页补强 |
|
||||
@@ -137,34 +137,6 @@
|
||||
|
||||
---
|
||||
|
||||
## 五、明日工作计划(建议)
|
||||
|
||||
### 上午
|
||||
|
||||
| 优先级 | 事项 |
|
||||
|:--:|------|
|
||||
| 🔴 | 与甲方沟通 GM-01(已开工任务工艺修改方案) |
|
||||
| 🔴 | 与甲方沟通 BG-01~04(设计任务报工模块详细需求) |
|
||||
| 🟠 | 启动 RP-01(手续确认报表)存储过程开发 |
|
||||
| 🟠 | 启动 BG-08(工位任务汇总表)— 见《需求分析_自制件与工位汇总表》 |
|
||||
|
||||
### 下午
|
||||
|
||||
| 优先级 | 事项 |
|
||||
|:--:|------|
|
||||
| 🟠 | JH-01~04 生产计划跟踪(颜色/状态/字段)前端改动 |
|
||||
| 🟡 | LL-01~03 领料退库备注字段添加 |
|
||||
| 🟡 | BG-05~06 工时报表字段修改 |
|
||||
| 🟡 | WX-01 外协报表增加采购到货期说明 |
|
||||
|
||||
### 需SAP协调
|
||||
|
||||
| 事项 | 对接人 |
|
||||
|------|:--:|
|
||||
| PC-01 SAP增加字段 | SAP顾问 |
|
||||
| RP-04/05/06/07 SAP数据接口 | SAP顾问 |
|
||||
|
||||
---
|
||||
|
||||
> 📅 日期: 2026-05-22
|
||||
> 📊 需求总数: 34项 | 已修复: 9项 | 待处理: 25项
|
||||
9794
doc_old/元利项目详细分析.md
Normal file
9794
doc_old/元利项目详细分析.md
Normal file
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user