Add all dashboard projects

This commit is contained in:
meswork764
2026-05-23 14:07:11 +08:00
commit ba82fbfc14
3550 changed files with 467904 additions and 0 deletions

View File

@@ -0,0 +1,193 @@
-- ============================================================
-- 修复: [dbo].[生产管理_外协报表_查询]
-- 问题1: 供应商过滤在 HAVING 中SELECT 用 MAX(供应商名称)
-- → 搜索"大连金景义"可能显示"芯泰智能"
-- 问题2: GROUP BY 加了供应商名称后STUFF 子查询未限定供应商
-- → 两个供应商行拿到完全相同的工序列表,看似重复
-- 修复:
-- ① 供应商过滤移到 WHERE分组前过滤
-- ② GROUP BY 加入 供应商名称(每个供应商独立一行)
-- ③ STUFF 子查询加 d2.供应商名称 = d.供应商名称(各行只取自己的工序)
-- ④ ROW_NUMBER 加上 供应商名称(排序确定化)
-- 日期: 2026-05-21
-- ============================================================
USE [YL_MESDB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[_外协报表_查询]
@ int = 0,
@ nvarchar(50) = '',
@ nvarchar(50) = '',
@ nvarchar(50) = '',
@ nvarchar(50) = '',
@ nvarchar(100) = '',
@ int = 0,
@PageCurrent int = 1,
@PageSize int = 20,
@PageCount int OUTPUT,
@ItemCount int OUTPUT
AS
BEGIN
SET NOCOUNT ON
IF OBJECT_ID('tempdb..#MergedResult') IS NOT NULL DROP TABLE #MergedResult
;WITH AS (
SELECT
,
,
,
MAX() AS ,
MAX() AS ,
MAX() AS ,
MAX() AS ,
MAX() AS ,
MAX() AS ,
MAX() AS ,
MAX() AS ,
MIN() AS ,
MIN() AS ,
MAX() AS ,
MAX() AS ,
MAX() AS ,
MAX() AS ,
MAX() AS ,
MAX(CASE WHEN ISNULL(, 0) > 0 THEN 1 ELSE 0 END) AS ,
MAX() AS ,
MAX(_报工) AS _报工,
MAX(CAST( AS NVARCHAR(MAX))) AS ,
MAX() AS ,
MAX() AS ,
MAX() AS ,
MAX() AS ,
MAX(CASE WHEN = 1 OR ISNULL(, 0) > 0 THEN 1 ELSE 0 END) AS ,
-- ============ 修复点③ ============
-- STUFF 子查询加上 供应商名称 关联:每个供应商行只聚合自己的工序
STUFF((
SELECT ',' + d2.
FROM View_外协报表视图 d2
WHERE d2. = d.
AND d2. = d.
AND ISNULL(d2., '') = ISNULL(d., '')
ORDER BY d2.
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)'), 1, 1, '') AS ,
STUFF((
SELECT ',' + CAST(d2.TaskAID AS VARCHAR(10))
FROM View_外协报表视图 d2
WHERE d2. = d.
AND d2. = d.
AND ISNULL(d2., '') = ISNULL(d., '')
ORDER BY d2.
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)'), 1, 1, '') AS TaskAID列表,
-- ============ 修复点④ ============
-- ROW_NUMBER 排序加上 供应商名称,确保分页结果稳定
ROW_NUMBER() OVER (ORDER BY , ) AS RowNum
FROM View_外协报表视图 d
WHERE 1=1
-- 排除供应商为空的"脏数据"无SAP采购单关联的行
AND ISNULL(d., '') <> ''
-- ============ 修复点① ============
-- 供应商过滤放在 WHERE分组前不会出现"搜A显示B"
AND (@ = '' OR d. LIKE '%' + @ + '%')
-- ====================================
AND (@ = 0 OR d. = @)
AND (@ = '' OR d. = @)
AND (@ = '' OR d. LIKE '%' + @ + '%')
AND (@ = '' OR d. LIKE '%' + @ + '%')
AND (@ = '' OR d. LIKE '%' + @ + '%')
-- ============ 修复点② ============
-- 按 订单号 + 拆分内码 + 供应商名称 分组,每个供应商独立一行
GROUP BY , ,
-- ====================================
HAVING
-- 状态过滤依赖聚合值,保留在 HAVING
(@ = 0 OR MAX(CASE WHEN ISNULL(_报工, 0) < ISNULL(, 0) THEN 1 ELSE 0 END) = 1)
)
SELECT
,
,
,
,
,
AS ,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
_报工,
,
,
,
TaskAID列表 AS TaskAID,
,
,
CASE WHEN = 1 THEN '可执行' ELSE '不可执行' END AS ,
,
,
RowNum
INTO #MergedResult
FROM
SELECT @ItemCount = COUNT(*) FROM #MergedResult
IF @ItemCount = 0
SET @PageCount = 0
ELSE
SET @PageCount = CEILING(CAST(@ItemCount AS FLOAT) / @PageSize)
SELECT
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
_报工,
,
,
,
TaskAID,
,
,
,
,
FROM #MergedResult
WHERE RowNum BETWEEN (@PageCurrent - 1) * @PageSize + 1 AND @PageCurrent * @PageSize
ORDER BY ,
DROP TABLE #MergedResult
END
GO