Compare commits
14 Commits
master
...
9e5819355d
| Author | SHA1 | Date | |
|---|---|---|---|
| 9e5819355d | |||
| 078474631f | |||
| 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];
|
||||
168
db_backups/add_product_pass_rate_workstation_menu_20260630.sql
Normal file
168
db_backups/add_product_pass_rate_workstation_menu_20260630.sql
Normal file
@@ -0,0 +1,168 @@
|
||||
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.[账号代码],
|
||||
qualityParent.[id] 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.[pid] = 0
|
||||
AND rp.[是否启用] = 1
|
||||
AND (rp.[title] = N'质量管理' OR rp.[path] = '/QualityManagement' OR rp.[name] = 'QualityManagement')
|
||||
ORDER BY rp.[id]
|
||||
) AS qualityParent
|
||||
WHERE src.[是否启用] = 1
|
||||
AND (@TargetRole IS NULL OR src.[账号代码] = @TargetRole)
|
||||
AND (src.[path] = @SourcePath OR src.[componet] = @SourceComponent OR src.[title] = N'生产计划跟踪')
|
||||
AND qualityParent.[id] IS NOT NULL
|
||||
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.[账号代码],
|
||||
qualityParent.[id] 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.[pid] = 0
|
||||
AND rp.[是否启用] = 1
|
||||
AND (rp.[title] = N'质量管理' OR rp.[path] = '/QualityManagement' OR rp.[name] = 'QualityManagement')
|
||||
ORDER BY rp.[id]
|
||||
) AS qualityParent
|
||||
WHERE src.[是否启用] = 1
|
||||
AND (@TargetRole IS NULL OR src.[账号代码] = @TargetRole)
|
||||
AND (src.[path] = @SourcePath OR src.[componet] = @SourceComponent OR src.[title] = N'生产计划跟踪')
|
||||
AND qualityParent.[id] IS NOT NULL
|
||||
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
|
||||
[pid] = COALESCE
|
||||
(
|
||||
(
|
||||
SELECT TOP (1) qualityParent.[id]
|
||||
FROM [dbo].[登录基础数据_二级菜单] AS qualityParent
|
||||
WHERE qualityParent.[账号代码] = [dbo].[登录基础数据_二级菜单].[账号代码]
|
||||
AND qualityParent.[pid] = 0
|
||||
AND qualityParent.[是否启用] = 1
|
||||
AND
|
||||
(
|
||||
qualityParent.[title] = N'质量管理'
|
||||
OR qualityParent.[path] = '/QualityManagement'
|
||||
OR qualityParent.[name] = 'QualityManagement'
|
||||
)
|
||||
ORDER BY qualityParent.[id]
|
||||
),
|
||||
[pid]
|
||||
),
|
||||
[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
|
||||
@@ -0,0 +1,124 @@
|
||||
USE [YL_MESDB];
|
||||
GO
|
||||
|
||||
SET NOCOUNT ON;
|
||||
SET XACT_ABORT ON;
|
||||
|
||||
DECLARE @QualityMenuId int = 4;
|
||||
|
||||
DECLARE @TargetAccounts TABLE
|
||||
(
|
||||
[账号代码] int PRIMARY KEY
|
||||
);
|
||||
|
||||
INSERT INTO @TargetAccounts ([账号代码])
|
||||
SELECT DISTINCT [账号代码]
|
||||
FROM [dbo].[登录基础数据_二级菜单]
|
||||
WHERE [path] = 'ProductPassRateWorkstation/index'
|
||||
OR [componet] = '/ProductionManagement/ProductPassRateWorkstation/index'
|
||||
OR [name] = 'ProductPassRateWorkstation'
|
||||
OR [title] IN (N'产品合格率工位', N'产品合格率(工位)');
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM @TargetAccounts)
|
||||
BEGIN
|
||||
THROW 50001, N'未找到产品合格率工位菜单,未执行迁移。', 1;
|
||||
END;
|
||||
|
||||
BEGIN TRANSACTION;
|
||||
|
||||
IF EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM @TargetAccounts AS target
|
||||
INNER JOIN [dbo].[登录基础数据_二级菜单] AS menu WITH (UPDLOCK, HOLDLOCK)
|
||||
ON menu.[账号代码] = target.[账号代码]
|
||||
AND menu.[id] = @QualityMenuId
|
||||
WHERE menu.[pid] <> 0
|
||||
OR menu.[path] <> '/QualityManagement'
|
||||
OR menu.[name] <> 'QualityManagement'
|
||||
OR menu.[title] <> N'质量管理'
|
||||
)
|
||||
BEGIN
|
||||
THROW 50002, N'目标账号的菜单 ID 4 已被其他菜单占用,未执行迁移。', 1;
|
||||
END;
|
||||
|
||||
INSERT INTO [dbo].[登录基础数据_二级菜单]
|
||||
([id], [pid], [path], [componet], [redirect], [name], [title], [icon], [账号代码], [模块代码], [操作时间], [是否启用])
|
||||
SELECT
|
||||
@QualityMenuId,
|
||||
0,
|
||||
'/QualityManagement',
|
||||
'/layout/Layout',
|
||||
NULL,
|
||||
'QualityManagement',
|
||||
N'质量管理',
|
||||
'KKIMaintenance',
|
||||
target.[账号代码],
|
||||
@QualityMenuId,
|
||||
GETDATE(),
|
||||
1
|
||||
FROM @TargetAccounts AS target
|
||||
WHERE NOT EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM [dbo].[登录基础数据_二级菜单] AS existing WITH (UPDLOCK, HOLDLOCK)
|
||||
WHERE existing.[账号代码] = target.[账号代码]
|
||||
AND existing.[id] = @QualityMenuId
|
||||
);
|
||||
|
||||
UPDATE qualityMenu
|
||||
SET
|
||||
qualityMenu.[pid] = 0,
|
||||
qualityMenu.[path] = '/QualityManagement',
|
||||
qualityMenu.[componet] = '/layout/Layout',
|
||||
qualityMenu.[redirect] = NULL,
|
||||
qualityMenu.[name] = 'QualityManagement',
|
||||
qualityMenu.[title] = N'质量管理',
|
||||
qualityMenu.[icon] = 'KKIMaintenance',
|
||||
qualityMenu.[模块代码] = @QualityMenuId,
|
||||
qualityMenu.[是否启用] = 1,
|
||||
qualityMenu.[操作时间] = GETDATE()
|
||||
FROM [dbo].[登录基础数据_二级菜单] AS qualityMenu
|
||||
INNER JOIN @TargetAccounts AS target
|
||||
ON target.[账号代码] = qualityMenu.[账号代码]
|
||||
WHERE qualityMenu.[id] = @QualityMenuId;
|
||||
|
||||
UPDATE targetMenu
|
||||
SET
|
||||
targetMenu.[pid] = @QualityMenuId,
|
||||
targetMenu.[path] = 'ProductPassRateWorkstation/index',
|
||||
targetMenu.[componet] = '/ProductionManagement/ProductPassRateWorkstation/index',
|
||||
targetMenu.[redirect] = NULL,
|
||||
targetMenu.[name] = 'ProductPassRateWorkstation',
|
||||
targetMenu.[title] = N'产品合格率(工位)',
|
||||
targetMenu.[模块代码] = targetMenu.[id],
|
||||
targetMenu.[是否启用] = 1,
|
||||
targetMenu.[操作时间] = GETDATE()
|
||||
FROM [dbo].[登录基础数据_二级菜单] AS targetMenu
|
||||
INNER JOIN @TargetAccounts AS target
|
||||
ON target.[账号代码] = targetMenu.[账号代码]
|
||||
WHERE targetMenu.[path] = 'ProductPassRateWorkstation/index'
|
||||
OR targetMenu.[componet] = '/ProductionManagement/ProductPassRateWorkstation/index'
|
||||
OR targetMenu.[name] = 'ProductPassRateWorkstation'
|
||||
OR targetMenu.[title] IN (N'产品合格率工位', N'产品合格率(工位)');
|
||||
|
||||
COMMIT TRANSACTION;
|
||||
|
||||
SELECT
|
||||
menu.[id],
|
||||
menu.[pid],
|
||||
menu.[path],
|
||||
menu.[componet],
|
||||
menu.[name],
|
||||
menu.[title],
|
||||
menu.[账号代码],
|
||||
menu.[模块代码],
|
||||
menu.[是否启用]
|
||||
FROM [dbo].[登录基础数据_二级菜单] AS menu
|
||||
INNER JOIN @TargetAccounts AS target
|
||||
ON target.[账号代码] = menu.[账号代码]
|
||||
WHERE menu.[id] = @QualityMenuId
|
||||
OR menu.[path] = 'ProductPassRateWorkstation/index'
|
||||
OR menu.[componet] = '/ProductionManagement/ProductPassRateWorkstation/index'
|
||||
ORDER BY menu.[账号代码], menu.[pid], menu.[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项
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user