feat: 完善计划发货与设计任务功能
This commit is contained in:
@@ -0,0 +1,308 @@
|
||||
USE [YL_MESDB];
|
||||
GO
|
||||
|
||||
SET ANSI_NULLS ON;
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON;
|
||||
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,
|
||||
@当前操作人 nvarchar(100) = N'',
|
||||
@角色编号 nvarchar(100) = N''
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @开始 datetime = TRY_CONVERT(datetime, NULLIF(@开始日期, N''));
|
||||
DECLARE @结束 datetime = TRY_CONVERT(datetime, NULLIF(@结束日期, N''));
|
||||
DECLARE @可查看全部 bit = CASE WHEN EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM [dbo].[登录基础数据_角色信息]
|
||||
WHERE CONVERT(nvarchar(100), [Roles_number]) = @角色编号
|
||||
AND ([Roles_Function] LIKE N'%领导%' OR [Roles_Function] LIKE N'%管理员%')
|
||||
) THEN 1 ELSE 0 END;
|
||||
|
||||
;WITH base AS
|
||||
(
|
||||
SELECT
|
||||
r.[RID],
|
||||
r.[DID],
|
||||
ISNULL(r.[操作人], N'') 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)
|
||||
AND
|
||||
(
|
||||
@可查看全部 = 1
|
||||
OR
|
||||
(
|
||||
NULLIF(LTRIM(RTRIM(@当前操作人)), N'') IS NOT NULL
|
||||
AND
|
||||
(
|
||||
ISNULL(t.[创建人], N'') = LTRIM(RTRIM(@当前操作人))
|
||||
OR ISNULL(r.[操作人], N'') = LTRIM(RTRIM(@当前操作人))
|
||||
)
|
||||
)
|
||||
)
|
||||
),
|
||||
result AS
|
||||
(
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
N't-' + CAST([DID] AS nvarchar(20)) AS [id],
|
||||
CAST(N'' AS nvarchar(120)) AS [parentId],
|
||||
CAST(N'' AS nvarchar(100)) AS [操作人],
|
||||
CAST(N'' AS nvarchar(20)) AS [工作日期],
|
||||
CAST(NULL AS int) AS [RID],
|
||||
[DID],
|
||||
ISNULL(MAX([项目号]), N'') AS [项目号],
|
||||
ISNULL(MAX([物料编码]), N'') AS [物料编码],
|
||||
ISNULL(MAX([物料名称]), N'') AS [物料名称],
|
||||
ISNULL(MAX([图号]), N'') AS [图号],
|
||||
ISNULL(MAX([类别]), N'') AS [类别],
|
||||
ISNULL(MAX([任务描述]), N'') AS [任务描述],
|
||||
CONVERT(varchar(19), MIN([开始时间]), 120) AS [开始时间],
|
||||
CONVERT(varchar(19), MAX([结束时间]), 120) AS [结束时间],
|
||||
COUNT(1) AS [报工次数],
|
||||
CAST(SUM([工时秒数]) / 3600.0 AS decimal(18, 2)) AS [工时小时],
|
||||
CASE
|
||||
WHEN SUM(CONVERT(int, [已校验])) = COUNT(1) THEN N'已校验'
|
||||
WHEN SUM(CONVERT(int, [已校验])) = 0 THEN N'未校验'
|
||||
ELSE N'部分校验'
|
||||
END AS [校验状态],
|
||||
ISNULL(STRING_AGG(
|
||||
CASE WHEN NULLIF(LTRIM(RTRIM([进度说明])), N'') IS NOT NULL
|
||||
THEN CONVERT(nvarchar(max), CONVERT(nvarchar(19), [结束时间], 120) + NCHAR(13) + NCHAR(10) + [进度说明]) END,
|
||||
NCHAR(13) + NCHAR(10) + NCHAR(13) + NCHAR(10)
|
||||
) WITHIN GROUP (ORDER BY [开始时间], [RID]), N'') AS [进度说明],
|
||||
ISNULL(STRING_AGG(
|
||||
CASE WHEN NULLIF(LTRIM(RTRIM([备注])), N'') IS NOT NULL
|
||||
THEN CONVERT(nvarchar(max), [备注]) END,
|
||||
NCHAR(13) + NCHAR(10)
|
||||
) WITHIN GROUP (ORDER BY [开始时间], [RID]), N'') AS [备注]
|
||||
FROM base
|
||||
GROUP BY [DID]
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
N't-' + CAST([DID] AS nvarchar(20)) + N'-o-' + [操作人] AS [id],
|
||||
N't-' + CAST([DID] AS nvarchar(20)) AS [parentId],
|
||||
[操作人],
|
||||
CAST(N'' AS nvarchar(20)) AS [工作日期],
|
||||
CAST(NULL AS int) AS [RID],
|
||||
[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 [任务描述],
|
||||
CONVERT(varchar(19), MIN([开始时间]), 120) AS [开始时间],
|
||||
CONVERT(varchar(19), MAX([结束时间]), 120) AS [结束时间],
|
||||
COUNT(1) AS [报工次数],
|
||||
CAST(SUM([工时秒数]) / 3600.0 AS decimal(18, 2)) AS [工时小时],
|
||||
CASE
|
||||
WHEN SUM(CONVERT(int, [已校验])) = COUNT(1) THEN N'已校验'
|
||||
WHEN SUM(CONVERT(int, [已校验])) = 0 THEN N'未校验'
|
||||
ELSE N'部分校验'
|
||||
END AS [校验状态],
|
||||
ISNULL(STRING_AGG(
|
||||
CASE WHEN NULLIF(LTRIM(RTRIM([进度说明])), N'') IS NOT NULL
|
||||
THEN CONVERT(nvarchar(max), CONVERT(nvarchar(19), [结束时间], 120) + NCHAR(13) + NCHAR(10) + [进度说明]) END,
|
||||
NCHAR(13) + NCHAR(10) + NCHAR(13) + NCHAR(10)
|
||||
) WITHIN GROUP (ORDER BY [开始时间], [RID]), N'') AS [进度说明],
|
||||
ISNULL(STRING_AGG(
|
||||
CASE WHEN NULLIF(LTRIM(RTRIM([备注])), N'') IS NOT NULL
|
||||
THEN CONVERT(nvarchar(max), [备注]) END,
|
||||
NCHAR(13) + NCHAR(10)
|
||||
) WITHIN GROUP (ORDER BY [开始时间], [RID]), N'') AS [备注]
|
||||
FROM base
|
||||
GROUP BY [DID], [操作人]
|
||||
)
|
||||
SELECT *
|
||||
FROM result
|
||||
ORDER BY [DID] DESC, [Level], [操作人];
|
||||
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,
|
||||
@当前操作人 nvarchar(100) = N'',
|
||||
@角色编号 nvarchar(100) = N''
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @开始 datetime = TRY_CONVERT(datetime, NULLIF(@开始日期, N''));
|
||||
DECLARE @结束 datetime = TRY_CONVERT(datetime, NULLIF(@结束日期, N''));
|
||||
DECLARE @可查看全部 bit = CASE WHEN EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM [dbo].[登录基础数据_角色信息]
|
||||
WHERE CONVERT(nvarchar(100), [Roles_number]) = @角色编号
|
||||
AND ([Roles_Function] LIKE N'%领导%' OR [Roles_Function] LIKE N'%管理员%')
|
||||
) THEN 1 ELSE 0 END;
|
||||
|
||||
;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)
|
||||
AND
|
||||
(
|
||||
@可查看全部 = 1
|
||||
OR
|
||||
(
|
||||
NULLIF(LTRIM(RTRIM(@当前操作人)), N'') IS NOT NULL
|
||||
AND
|
||||
(
|
||||
ISNULL(t.[创建人], N'') = LTRIM(RTRIM(@当前操作人))
|
||||
OR ISNULL(r.[操作人], N'') = LTRIM(RTRIM(@当前操作人))
|
||||
)
|
||||
)
|
||||
)
|
||||
),
|
||||
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
|
||||
@@ -0,0 +1,260 @@
|
||||
|
||||
USE [YL_MESDB];
|
||||
GO
|
||||
|
||||
SET ANSI_NULLS ON;
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON;
|
||||
GO
|
||||
|
||||
CREATE OR 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
|
||||
d.[TaskAID],
|
||||
STRING_AGG(CONVERT(nvarchar(max), d.[操作人]), N',')
|
||||
WITHIN GROUP (ORDER BY d.[操作人]) AS [操作人]
|
||||
INTO #当前加工操作人汇总
|
||||
FROM
|
||||
(
|
||||
SELECT DISTINCT
|
||||
[TaskAID],
|
||||
NULLIF(LTRIM(RTRIM([操作人])), N'') AS [操作人]
|
||||
FROM [dbo].[YL_加工中心_操作记录表]
|
||||
WHERE [操作类别] = N'开始加工'
|
||||
AND [结束时间] IS NULL
|
||||
AND [工位名称] LIKE N'%装配%'
|
||||
AND [操作数值] IS NOT NULL
|
||||
AND NULLIF(LTRIM(RTRIM([操作人])), N'') IS NOT NULL
|
||||
) AS d
|
||||
GROUP BY d.[TaskAID];
|
||||
|
||||
CREATE UNIQUE CLUSTERED INDEX [IX_当前加工操作人汇总_TaskAID]
|
||||
ON #当前加工操作人汇总 ([TaskAID]);
|
||||
|
||||
SELECT
|
||||
[TaskAID],
|
||||
SUM(CASE WHEN [质检类型] = N'终检' THEN ISNULL([合格数], 0) ELSE 0 END) AS [合格数量],
|
||||
SUM(CASE WHEN [质检类型] = N'收检' THEN ISNULL([不合格数], 0) ELSE 0 END) AS [不合格数量]
|
||||
INTO #质检汇总
|
||||
FROM [dbo].[View_质量检验_质检记录]
|
||||
WHERE [质检类型] IN (N'收检', N'终检')
|
||||
GROUP BY [TaskAID];
|
||||
|
||||
CREATE UNIQUE CLUSTERED INDEX [IX_质检汇总_TaskAID]
|
||||
ON #质检汇总 ([TaskAID]);
|
||||
|
||||
SELECT
|
||||
gs.[合同号],
|
||||
SUM(gs.[总时长]) AS [合同装配工时]
|
||||
INTO #合同装配工时汇总
|
||||
FROM [dbo].[View_生产工时视图] AS gs
|
||||
INNER JOIN [dbo].[登录基础数据_人员信息] AS ry ON gs.[操作人] = ry.[Personnel_Name]
|
||||
WHERE ry.[班组] = N'装配'
|
||||
GROUP BY gs.[合同号];
|
||||
|
||||
CREATE INDEX [IX_合同装配工时汇总_合同号]
|
||||
ON #合同装配工时汇总 ([合同号]);
|
||||
|
||||
;WITH 发货数据 AS
|
||||
(
|
||||
SELECT
|
||||
c.[DocStatus] AS [发货单状态],
|
||||
c.[项目号],
|
||||
c.[物料编号],
|
||||
CONVERT(nvarchar(4000), c.[物料名称]) AS [物料描述],
|
||||
c.[交货数量],
|
||||
c.[要求发货时间],
|
||||
c.[生产单号],
|
||||
a.[TaskAID],
|
||||
COALESCE(a.[订单编号], c.[生产单号]) AS [订单编号],
|
||||
COALESCE(
|
||||
NULLIF(CONVERT(nvarchar(200), a.[合同号]), N''),
|
||||
NULLIF(CONVERT(nvarchar(200), c.[项目号]), N'')
|
||||
) AS [合同号],
|
||||
a.[订单类型],
|
||||
a.[订单状态],
|
||||
a.[计划数量],
|
||||
a.[计量单位],
|
||||
a.[下达日期],
|
||||
a.[计划开始],
|
||||
a.[计划完成],
|
||||
a.[项目代码],
|
||||
a.[重量],
|
||||
a.[占用情况],
|
||||
a.[加急状态],
|
||||
a.[排产状态],
|
||||
a.[同步时间],
|
||||
a.[任务状态],
|
||||
a.[标准工艺],
|
||||
a.[生产工艺],
|
||||
a.[齐套],
|
||||
CONVERT(date, a.[派工时间]) AS [派发],
|
||||
a.[自制件属性],
|
||||
a.[周转单打印次数],
|
||||
a.[单据状态],
|
||||
a.[发料状态],
|
||||
a.[拣配状态],
|
||||
a.[计划号],
|
||||
a.[加急数量],
|
||||
a.[发货状态],
|
||||
c.[要求发货时间] AS [要求发货日期],
|
||||
a.[加急总数],
|
||||
a.[入库数量],
|
||||
a.[完成数量],
|
||||
b.[操作人],
|
||||
ISNULL(h.[合同装配工时], 0) AS [合同装配工时],
|
||||
ISNULL(q.[合格数量], 0) AS [合格数量]
|
||||
FROM [SAP].[SBO_YL].[dbo].[UBT_ODRF_ODLNMES] AS c
|
||||
LEFT JOIN [YL_MESDB].[dbo].[View_生产订单_MES] AS a ON c.[生产单号] = a.[订单编号]
|
||||
LEFT JOIN #当前加工操作人汇总 AS b ON a.[TaskAID] = b.[TaskAID]
|
||||
LEFT JOIN #质检汇总 AS q ON a.[TaskAID] = q.[TaskAID]
|
||||
LEFT JOIN #合同装配工时汇总 AS h ON a.[合同号] = h.[合同号]
|
||||
WHERE
|
||||
(
|
||||
a.[TaskAID] IS NULL
|
||||
OR a.[计划数量] IS NULL
|
||||
OR ISNULL(q.[合格数量], 0) + ISNULL(q.[不合格数量], 0) <> a.[计划数量]
|
||||
OR ISNULL(q.[合格数量], 0) <> ISNULL(a.[入库数量], 0)
|
||||
)
|
||||
AND (@生产订单 = N'0' OR CONVERT(nvarchar(100), c.[生产单号]) LIKE N'%' + @生产订单 + N'%')
|
||||
AND
|
||||
(
|
||||
@销售订单 = N'0'
|
||||
OR COALESCE(
|
||||
NULLIF(CONVERT(nvarchar(200), a.[合同号]), N''),
|
||||
NULLIF(CONVERT(nvarchar(200), c.[项目号]), N'')
|
||||
) LIKE N'%' + @销售订单 + N'%'
|
||||
)
|
||||
AND
|
||||
(
|
||||
@物料名称 = N'0'
|
||||
OR ISNULL(CONVERT(nvarchar(4000), c.[物料名称]), N'') LIKE N'%' + @物料名称 + N'%'
|
||||
)
|
||||
AND (@物料编码 = N'0' OR ISNULL(c.[物料编号], N'') LIKE N'%' + @物料编码 + N'%')
|
||||
AND (@要求发货日期 IS NULL OR CONVERT(date, c.[要求发货时间]) = 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'发料缺件')
|
||||
)
|
||||
)
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
CAST(NULL AS char(1)) AS [发货单状态],
|
||||
a.[项目代码] AS [项目号],
|
||||
a.[物料编号],
|
||||
CONVERT(nvarchar(4000), a.[物料描述]) AS [物料描述],
|
||||
CAST(NULL AS numeric(19, 6)) AS [交货数量],
|
||||
CAST(NULL AS datetime) AS [要求发货时间],
|
||||
CAST(NULL AS int) AS [生产单号],
|
||||
a.[TaskAID],
|
||||
a.[订单编号],
|
||||
CONVERT(nvarchar(200), a.[合同号]) AS [合同号],
|
||||
a.[订单类型],
|
||||
a.[订单状态],
|
||||
a.[计划数量],
|
||||
a.[计量单位],
|
||||
a.[下达日期],
|
||||
a.[计划开始],
|
||||
a.[计划完成],
|
||||
a.[项目代码],
|
||||
a.[重量],
|
||||
a.[占用情况],
|
||||
a.[加急状态],
|
||||
a.[排产状态],
|
||||
a.[同步时间],
|
||||
a.[任务状态],
|
||||
a.[标准工艺],
|
||||
a.[生产工艺],
|
||||
a.[齐套],
|
||||
CONVERT(date, a.[派工时间]) AS [派发],
|
||||
a.[自制件属性],
|
||||
a.[周转单打印次数],
|
||||
a.[单据状态],
|
||||
a.[发料状态],
|
||||
a.[拣配状态],
|
||||
a.[计划号],
|
||||
a.[加急数量],
|
||||
a.[发货状态],
|
||||
a.[要求发货日期],
|
||||
a.[加急总数],
|
||||
a.[入库数量],
|
||||
a.[完成数量],
|
||||
b.[操作人],
|
||||
ISNULL(h.[合同装配工时], 0) AS [合同装配工时],
|
||||
ISNULL(q.[合格数量], 0) AS [合格数量]
|
||||
FROM [YL_MESDB].[dbo].[View_生产订单_MES] AS a
|
||||
LEFT JOIN #当前加工操作人汇总 AS b ON a.[TaskAID] = b.[TaskAID]
|
||||
LEFT JOIN #质检汇总 AS q ON a.[TaskAID] = q.[TaskAID]
|
||||
LEFT JOIN #合同装配工时汇总 AS h ON a.[合同号] = h.[合同号]
|
||||
WHERE
|
||||
a.[优先级] = N'是'
|
||||
AND a.[自制件属性] LIKE N'%装配%'
|
||||
AND
|
||||
(
|
||||
a.[计划数量] IS NULL
|
||||
OR ISNULL(q.[合格数量], 0) + ISNULL(q.[不合格数量], 0) <> a.[计划数量]
|
||||
OR ISNULL(q.[合格数量], 0) <> ISNULL(a.[入库数量], 0)
|
||||
)
|
||||
AND NOT EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM [SAP].[SBO_YL].[dbo].[UBT_ODRF_ODLNMES] AS c
|
||||
WHERE c.[生产单号] = a.[订单编号]
|
||||
)
|
||||
AND (@生产订单 = N'0' OR CONVERT(nvarchar(100), a.[订单编号]) LIKE N'%' + @生产订单 + N'%')
|
||||
AND (@销售订单 = N'0' OR ISNULL(CONVERT(nvarchar(200), 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'发料缺件')
|
||||
)
|
||||
)
|
||||
)
|
||||
SELECT *
|
||||
FROM 发货数据
|
||||
ORDER BY
|
||||
CASE WHEN [要求发货日期] IS NULL THEN 1 ELSE 0 END,
|
||||
[要求发货日期],
|
||||
[派发],
|
||||
[订单编号],
|
||||
[物料编号];
|
||||
END
|
||||
GO
|
||||
209
db_backups/fix_delivery_notice_list_data_merge_20260720.sql
Normal file
209
db_backups/fix_delivery_notice_list_data_merge_20260720.sql
Normal file
@@ -0,0 +1,209 @@
|
||||
USE [YL_MESDB];
|
||||
GO
|
||||
|
||||
SET ANSI_NULLS ON;
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON;
|
||||
GO
|
||||
|
||||
CREATE OR 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;
|
||||
|
||||
;WITH 操作人去重 AS
|
||||
(
|
||||
SELECT DISTINCT
|
||||
[TaskAID],
|
||||
NULLIF(LTRIM(RTRIM([操作人])), N'') AS [操作人]
|
||||
FROM [dbo].[YL_加工中心_操作记录表]
|
||||
WHERE NULLIF(LTRIM(RTRIM([操作人])), N'') IS NOT NULL
|
||||
),
|
||||
操作人汇总 AS
|
||||
(
|
||||
SELECT
|
||||
[TaskAID],
|
||||
STRING_AGG(CONVERT(nvarchar(max), [操作人]), N',')
|
||||
WITHIN GROUP (ORDER BY [操作人]) AS [操作人]
|
||||
FROM 操作人去重
|
||||
GROUP BY [TaskAID]
|
||||
),
|
||||
质检汇总 AS
|
||||
(
|
||||
SELECT
|
||||
[TaskAID],
|
||||
SUM(ISNULL([合格数], 0)) AS [合格数量]
|
||||
FROM [dbo].[View_质量检验_质检记录]
|
||||
GROUP BY [TaskAID]
|
||||
),
|
||||
合同装配工时汇总 AS
|
||||
(
|
||||
SELECT
|
||||
gs.[合同号],
|
||||
SUM(gs.[总时长]) AS [合同装配工时]
|
||||
FROM [dbo].[View_生产工时视图] AS gs
|
||||
INNER JOIN [dbo].[登录基础数据_人员信息] AS ry ON gs.[操作人] = ry.[Personnel_Name]
|
||||
WHERE ry.[班组] = N'装配'
|
||||
GROUP BY gs.[合同号]
|
||||
)
|
||||
SELECT
|
||||
c.[DocStatus] AS [发货单状态],
|
||||
c.[项目号],
|
||||
c.[物料编号],
|
||||
CONVERT(nvarchar(4000), c.[物料名称]) AS [物料描述],
|
||||
c.[交货数量],
|
||||
c.[要求发货时间],
|
||||
c.[生产单号],
|
||||
a.[TaskAID],
|
||||
COALESCE(a.[订单编号], c.[生产单号]) AS [订单编号],
|
||||
COALESCE(
|
||||
NULLIF(CONVERT(nvarchar(200), a.[合同号]), N''),
|
||||
NULLIF(CONVERT(nvarchar(200), c.[项目号]), N'')
|
||||
) AS [合同号],
|
||||
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.[发货状态],
|
||||
c.[要求发货时间] AS [要求发货日期],
|
||||
a.[加急总数],
|
||||
a.[入库数量],
|
||||
a.[完成数量],
|
||||
b.[操作人],
|
||||
ISNULL(h.[合同装配工时], 0) AS [合同装配工时],
|
||||
ISNULL(q.[合格数量], 0) AS [合格数量]
|
||||
FROM [SAP].[SBO_YL].[dbo].[UBT_ODRF_ODLNMES] AS c
|
||||
LEFT JOIN [YL_MESDB].[dbo].[View_生产订单_MES] AS a ON c.[生产单号] = a.[订单编号]
|
||||
LEFT JOIN 操作人汇总 AS b ON a.[TaskAID] = b.[TaskAID]
|
||||
LEFT JOIN 质检汇总 AS q ON a.[TaskAID] = q.[TaskAID]
|
||||
LEFT JOIN 合同装配工时汇总 AS h ON a.[合同号] = h.[合同号]
|
||||
WHERE
|
||||
(@生产订单 = N'0' OR CONVERT(nvarchar(100), c.[生产单号]) LIKE N'%' + @生产订单 + N'%')
|
||||
AND
|
||||
(
|
||||
@销售订单 = N'0'
|
||||
OR COALESCE(
|
||||
NULLIF(CONVERT(nvarchar(200), a.[合同号]), N''),
|
||||
NULLIF(CONVERT(nvarchar(200), c.[项目号]), N'')
|
||||
) LIKE N'%' + @销售订单 + N'%'
|
||||
)
|
||||
AND
|
||||
(
|
||||
@物料名称 = N'0'
|
||||
OR ISNULL(CONVERT(nvarchar(4000), c.[物料名称]), N'') LIKE N'%' + @物料名称 + N'%'
|
||||
)
|
||||
AND (@物料编码 = N'0' OR ISNULL(c.[物料编号], N'') LIKE N'%' + @物料编码 + N'%')
|
||||
AND (@要求发货日期 IS NULL OR CONVERT(date, c.[要求发货时间]) = CONVERT(date, @要求发货日期))
|
||||
AND
|
||||
(
|
||||
ISNULL(@齐套, N'') = N''
|
||||
OR a.[TaskAID] IS NULL
|
||||
OR (@齐套 = N'是' AND ISNULL(a.[齐套], 0) = 1)
|
||||
OR (@齐套 = N'否' AND ISNULL(a.[齐套], 0) <> 1)
|
||||
)
|
||||
AND
|
||||
(
|
||||
ISNULL(@发料状态, N'') = N''
|
||||
OR a.[TaskAID] IS NULL
|
||||
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'发料缺件')
|
||||
)
|
||||
)
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
CAST(NULL AS char(1)) AS [发货单状态],
|
||||
a.[项目代码] AS [项目号],
|
||||
a.[物料编号],
|
||||
CONVERT(nvarchar(4000), a.[物料描述]) AS [物料描述],
|
||||
CAST(NULL AS numeric(19, 6)) AS [交货数量],
|
||||
CAST(NULL AS datetime) AS [要求发货时间],
|
||||
CAST(NULL AS int) AS [生产单号],
|
||||
a.[TaskAID],
|
||||
a.[订单编号],
|
||||
CONVERT(nvarchar(200), a.[合同号]) AS [合同号],
|
||||
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.[操作人],
|
||||
ISNULL(h.[合同装配工时], 0) AS [合同装配工时],
|
||||
ISNULL(q.[合格数量], 0) AS [合格数量]
|
||||
FROM [YL_MESDB].[dbo].[View_生产订单_MES] AS a
|
||||
LEFT JOIN 操作人汇总 AS b ON a.[TaskAID] = b.[TaskAID]
|
||||
LEFT JOIN 质检汇总 AS q ON a.[TaskAID] = q.[TaskAID]
|
||||
LEFT JOIN 合同装配工时汇总 AS h ON a.[合同号] = h.[合同号]
|
||||
WHERE
|
||||
a.[优先级] = N'是'
|
||||
AND a.[自制件属性] LIKE N'%装配%'
|
||||
AND NOT EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM [SAP].[SBO_YL].[dbo].[UBT_ODRF_ODLNMES] AS c
|
||||
WHERE c.[生产单号] = a.[订单编号]
|
||||
)
|
||||
AND (@生产订单 = N'0' OR CONVERT(nvarchar(100), a.[订单编号]) LIKE N'%' + @生产订单 + N'%')
|
||||
AND (@销售订单 = N'0' OR ISNULL(CONVERT(nvarchar(200), 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, @要求发货日期))
|
||||
ORDER BY [要求发货日期], [订单编号], [物料编号];
|
||||
END
|
||||
GO
|
||||
Reference in New Issue
Block a user