feat: update mes management reports

This commit is contained in:
2026-06-26 16:21:09 +08:00
parent f6dce5daa8
commit abf822fd2c
13 changed files with 1554 additions and 36 deletions

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