更新设备维修、发货、精工车间工序工价/生产审核/工时统计、仓储盘点/库存查询/库位/入库,新增车间派工移动端及SQL脚本

This commit is contained in:
Developer
2026-07-17 09:49:34 +08:00
parent 9c1f52078d
commit 2b9058c69c
20 changed files with 3326 additions and 343 deletions

View File

@@ -0,0 +1,322 @@
-- 库存查询需求量性能优化:直连基础表判断订单完成状态,减少重视图展开
-- 修改人:Ld 修改时间:2026-07-14 16:35:00;
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = N'IX_Ld_零件基本件_物料组件_20260714' AND object_id = OBJECT_ID(N'dbo.PDM_零件明细表_基本件'))
BEGIN
CREATE NONCLUSTERED INDEX IX_Ld_零件基本件_物料组件_20260714
ON dbo.PDM_零件明细表_基本件 (, )
INCLUDE (, );
END;
GO
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = N'IX_Ld_零件标准外购_物料组件_20260714' AND object_id = OBJECT_ID(N'dbo.PDM_零件明细表_标准件和外购件'))
BEGIN
CREATE NONCLUSTERED INDEX IX_Ld_零件标准外购_物料组件_20260714
ON dbo.PDM_零件明细表_标准件和外购件 (, )
INCLUDE (, );
END;
GO
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = N'IX_Ld_临时领料_物料组件_20260714' AND object_id = OBJECT_ID(N'dbo.车间装配管理_装配执行_临时领料明细'))
BEGIN
CREATE NONCLUSTERED INDEX IX_Ld_临时领料_物料组件_20260714
ON dbo._装配执行_临时领料明细 (, )
INCLUDE ();
END;
GO
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = N'IX_Ld_领料明细_基本件_20260714' AND object_id = OBJECT_ID(N'dbo.车间装配管理_领料单明细'))
BEGIN
CREATE NONCLUSTERED INDEX IX_Ld_领料明细_基本件_20260714
ON dbo._领料单明细 ()
INCLUDE ();
END;
GO
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = N'IX_Ld_领料明细_标准外购_20260714' AND object_id = OBJECT_ID(N'dbo.车间装配管理_领料单明细'))
BEGIN
CREATE NONCLUSTERED INDEX IX_Ld_领料明细_标准外购_20260714
ON dbo._领料单明细 ()
INCLUDE ();
END;
GO
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = N'IX_Ld_领料明细_物料组件_20260714' AND object_id = OBJECT_ID(N'dbo.车间装配管理_领料单明细'))
BEGIN
CREATE NONCLUSTERED INDEX IX_Ld_领料明细_物料组件_20260714
ON dbo._领料单明细 (, )
INCLUDE ();
END;
GO
ALTER VIEW dbo._需求量_视图
AS
WITH AS
(
SELECT
c.,
c.,
o.,
o.,
p.
FROM dbo.PDM_组件名称 c
INNER JOIN dbo.PDM_机床名称 m ON c. = m.
INNER JOIN dbo.PDM_项目名称 p ON m. = p.
INNER JOIN dbo._订单信息_基础表 o ON p. = o.
),
AS
(
SELECT b., SUM(ISNULL(b., 0)) AS
FROM dbo.PDM_零件明细表_基本件 b
INNER JOIN co ON b. = co.
WHERE co. = 1
AND co. <> 3
AND NOT (ISNULL(co., 0) = 6 AND ISNULL(co., 0) = 1) -- 修改人:Ld 修改时间:2026-07-14 16:35:00; 直接用基础字段排除已完成订单
GROUP BY b.
UNION ALL
SELECT s., SUM(ISNULL(s., 0)) AS
FROM dbo.PDM_零件明细表_标准件和外购件 s
INNER JOIN co ON s. = co.
WHERE co. = 1
AND co. <> 3
AND NOT (ISNULL(co., 0) = 6 AND ISNULL(co., 0) = 1) -- 修改人:Ld 修改时间:2026-07-14 16:35:00; 直接用基础字段排除已完成订单
GROUP BY s.
UNION ALL
SELECT t., SUM(ISNULL(t., 0)) AS
FROM dbo._装配执行_临时领料明细 t
LEFT JOIN co ON t. = co.
WHERE t. IS NOT NULL
AND NOT (ISNULL(co., 0) = 6 AND ISNULL(co., 0) = 1) -- 修改人:Ld 修改时间:2026-07-14 16:35:00; 临时领料同口径排除已完成订单
GROUP BY t.
),
AS
(
SELECT , SUM() AS
FROM
GROUP BY
),
AS
(
SELECT b., SUM(ISNULL(l., 0)) AS
FROM dbo._领料单明细 l
INNER JOIN dbo.PDM_零件明细表_基本件 b ON l. = b.
INNER JOIN co ON b. = co.
WHERE NOT (ISNULL(co., 0) = 6 AND ISNULL(co., 0) = 1) -- 修改人:Ld 修改时间:2026-07-14 16:35:00; 扣减已领数时同步排除已完成订单
GROUP BY b.
UNION ALL
SELECT s., SUM(ISNULL(l., 0)) AS
FROM dbo._领料单明细 l
INNER JOIN dbo.PDM_零件明细表_标准件和外购件 s ON l. = s.
INNER JOIN co ON s. = co.
WHERE NOT (ISNULL(co., 0) = 6 AND ISNULL(co., 0) = 1) -- 修改人:Ld 修改时间:2026-07-14 16:35:00; 扣减已领数时同步排除已完成订单
GROUP BY s.
UNION ALL
SELECT l., SUM(ISNULL(l., 0)) AS
FROM dbo._领料单明细 l
LEFT JOIN co ON l. = co.
WHERE l. IS NOT NULL
AND ISNULL(l., 0) <> 0
AND ISNULL(l., 0) = 0
AND ISNULL(l., 0) = 0
AND NOT (ISNULL(co., 0) = 6 AND ISNULL(co., 0) = 1) -- 修改人:Ld 修改时间:2026-07-14 16:35:00; 临时件扣减已领数时同步排除已完成订单
GROUP BY l.
),
AS
(
SELECT , SUM() AS
FROM
GROUP BY
)
SELECT
d.,
CASE WHEN d. > ISNULL(l., 0) THEN d. - ISNULL(l., 0) ELSE 0 END AS
FROM d
LEFT JOIN l ON d. = l.;
GO
ALTER PROCEDURE [dbo].[_需求量_更新]
AS
BEGIN
SET NOCOUNT ON;
DELETE FROM dbo._需求量;
INSERT INTO dbo._需求量
SELECT ,
FROM dbo._需求量_视图
WHERE > 0;
END;
GO
ALTER PROCEDURE [dbo].[_报缺补货_需求量明细_查询]
@ INT = 15448
AS
BEGIN
SET NOCOUNT ON;
;WITH AS
(
SELECT
c.,
o.,
c.,
o.,
o.,
p.,
ISNULL(k., '') AS
FROM dbo.PDM_组件名称 c
INNER JOIN dbo.PDM_机床名称 m ON c. = m.
INNER JOIN dbo.PDM_项目名称 p ON m. = p.
INNER JOIN dbo._订单信息_基础表 o ON p. = o.
LEFT JOIN dbo._客户名称 k ON p. = k.
),
AS
(
SELECT
co.,
b.,
b.,
SUM(ISNULL(b., 0)) AS ,
N'生产订单需求' AS
FROM dbo.PDM_零件明细表_基本件 b
INNER JOIN co ON b. = co.
WHERE co. = 1
AND co. <> 3
AND NOT (ISNULL(co., 0) = 6 AND ISNULL(co., 0) = 1) -- 修改人:Ld 修改时间:2026-07-14 16:35:00; 明细不显示已完成订单
AND (@ IS NULL OR b. = @)
GROUP BY co., b., b.
UNION ALL
SELECT
co.,
s.,
s.,
SUM(ISNULL(s., 0)) AS ,
N'生产订单需求' AS
FROM dbo.PDM_零件明细表_标准件和外购件 s
INNER JOIN co ON s. = co.
WHERE co. = 1
AND co. <> 3
AND NOT (ISNULL(co., 0) = 6 AND ISNULL(co., 0) = 1) -- 修改人:Ld 修改时间:2026-07-14 16:35:00; 明细不显示已完成订单
AND (@ IS NULL OR s. = @)
GROUP BY co., s., s.
UNION ALL
SELECT
co.,
t.,
t.,
SUM(ISNULL(t., 0)) AS ,
N'临时领料需求' AS
FROM dbo._装配执行_临时领料明细 t
LEFT JOIN co ON t. = co.
WHERE t. IS NOT NULL
AND NOT (ISNULL(co., 0) = 6 AND ISNULL(co., 0) = 1) -- 修改人:Ld 修改时间:2026-07-14 16:35:00; 临时领料明细不显示已完成订单
AND (@ IS NULL OR t. = @)
GROUP BY co., t., t.
),
AS
(
SELECT
co.,
b.,
b.,
SUM(ISNULL(l., 0)) AS
FROM dbo._领料单明细 l
INNER JOIN dbo.PDM_零件明细表_基本件 b ON l. = b.
INNER JOIN co ON b. = co.
WHERE NOT (ISNULL(co., 0) = 6 AND ISNULL(co., 0) = 1) -- 修改人:Ld 修改时间:2026-07-14 16:35:00; 明细扣减已领数时同步排除已完成订单
AND (@ IS NULL OR b. = @)
GROUP BY co., b., b.
UNION ALL
SELECT
co.,
s.,
s.,
SUM(ISNULL(l., 0)) AS
FROM dbo._领料单明细 l
INNER JOIN dbo.PDM_零件明细表_标准件和外购件 s ON l. = s.
INNER JOIN co ON s. = co.
WHERE NOT (ISNULL(co., 0) = 6 AND ISNULL(co., 0) = 1) -- 修改人:Ld 修改时间:2026-07-14 16:35:00; 明细扣减已领数时同步排除已完成订单
AND (@ IS NULL OR s. = @)
GROUP BY co., s., s.
UNION ALL
SELECT
co.,
l.,
l.,
SUM(ISNULL(l., 0)) AS
FROM dbo._领料单明细 l
LEFT JOIN co ON l. = co.
WHERE l. IS NOT NULL
AND ISNULL(l., 0) <> 0
AND ISNULL(l., 0) = 0
AND ISNULL(l., 0) = 0
AND NOT (ISNULL(co., 0) = 6 AND ISNULL(co., 0) = 1) -- 修改人:Ld 修改时间:2026-07-14 16:35:00; 临时件明细扣减已领数时同步排除已完成订单
AND (@ IS NULL OR l. = @)
GROUP BY co., l., l.
),
AS
(
SELECT , , , SUM() AS
FROM
GROUP BY , ,
),
AS
(
SELECT
d.,
d.,
d.,
d.,
ISNULL(l., 0) AS ,
CASE WHEN d. > ISNULL(l., 0) THEN d. - ISNULL(l., 0) ELSE 0 END AS ,
d.
FROM d
LEFT JOIN l
ON d. = l.
AND d. = l.
AND ISNULL(d., '') = ISNULL(l., '')
)
SELECT
d.,
d.,
d.,
d.,
d.,
d.,
ISNULL(co., '') AS ,
d.
FROM d
LEFT JOIN co ON d. = co.
ORDER BY d., d., d.;
;WITH AS
(
SELECT ,
FROM dbo._需求量_视图
WHERE (@ IS NULL OR = @)
)
SELECT
,
AS ,
0 AS ,
AS
FROM
ORDER BY ;
END;
GO