14 Commits

226 changed files with 67695 additions and 1700 deletions

10
AGENTS.md Normal file
View File

@@ -0,0 +1,10 @@
# AGENTS.md
## Scope
日志记录规则
每次 GPT/Codex 执行完毕后,须将完整的执行过程日志追加至:
gptlog-process/gpdlog.md
日志包含提问和结论以及完整的执行过程,写入该文件的日志内容必须使用中文记录。

View File

@@ -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,

View 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

View 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

View 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

View 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

View 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

View 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

View 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向1100mmX向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-030AFLW-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

View 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];

View 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];

View 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];

View 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

View File

@@ -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

View 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];

View 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

View File

@@ -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

View File

@@ -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

View 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

View 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

File diff suppressed because it is too large Load Diff

View 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

View 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

View File

@@ -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

View 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

View 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

View File

@@ -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
}
]

View File

@@ -0,0 +1,14 @@
{
"VID": 1,
"RID": 2,
"DID": 2,
"校验前开始时间": "\/Date(1783563746910)\/",
"校验前结束时间": "\/Date(1783563764437)\/",
"校验后开始时间": "\/Date(1783563746000)\/",
"校验后结束时间": "\/Date(1783563808000)\/",
"校验后工时秒数": 62,
"校验人ID": "1",
"校验人": "超级管理员",
"校验时间": "\/Date(1783563815987)\/",
"校验备注": "测试"
}

View File

@@ -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
}
]

View File

@@ -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"
}
]

View File

@@ -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

View 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

View 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

View 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

View 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

View 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

View 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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View 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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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'&amp;'), N'<', N'&lt;'), N'>', N'&gt;'), N',', N'</i><i>') +
N'</i>' AS XML
);
SET @Xml = CAST(
N'<i>' +
REPLACE(REPLACE(REPLACE(REPLACE(ISNULL(@, N''), N'&', N'&amp;'), N'<', N'&lt;'), N'>', N'&gt;'), 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

View 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

View 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

View 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

View 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

View 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

View 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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View 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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View 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

View File

@@ -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

View 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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View 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

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
doc/工时查询界面.docx Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
doc/设备信息.xlsx Normal file

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,7 @@
{
"folders": [
{
"path": ".."
}
]
}

View 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, ''), '&gt;', '>') 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
View 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>

View 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

View 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 的前三项,因为它们优先级最高,且“装配已排产需求”会影响后面的质检早知道、日计划、及时送检等需求。
## 五、新增需求分析与开发记录原文

View 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派工时间、合同交货期、发料齐套时间、及时齐套缺件明细、设备数据采集工时。

View 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 等跨模块功能。

View 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 状态 |
| 装配报工重复 | 影响工时、任务进度、质检/送检统计 | 修复后继续观察现场数据 |
| 加急任务未突出显示 | 质检处理优先级不明确 | 原料退库检已增加加急显示,后续可扩展排序 |
| 用户手册仍需继续细化 | 培训时可能仍有页面操作细节不足 | 后续按重点业务页面继续逐页补强 |

View File

@@ -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