更新设备维修、发货、精工车间工序工价/生产审核/工时统计、仓储盘点/库存查询/库位/入库,新增车间派工移动端及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,233 @@
-- 库存查询需求量排除已完成订单
-- 修改人:Ld 修改时间:2026-07-14 16:16:14;
ALTER VIEW dbo._需求量_视图
AS
SELECT
b.,
CASE WHEN b. > ISNULL(c., 0) THEN b. - ISNULL(c., 0) ELSE 0 END AS
FROM
(
SELECT , SUM() AS
FROM
(
SELECT p., ISNULL(p., 0) AS
FROM dbo.PDM_零件明细表_所有视图 p
LEFT JOIN dbo.PDM_订单信息_视图 o ON p. = o.
WHERE p. = 1
AND p. <> 3
AND ISNULL(o., N'') <> N'已完成' -- 修改人:Ld 修改时间:2026-07-14 16:16:14; 库存查询需求数不计入已完成订单
UNION ALL
SELECT t., ISNULL(t., 0) AS
FROM dbo._装配执行_临时领料明细 t
LEFT JOIN dbo.PDM_组件名称_视图 cv ON cv. = t.
LEFT JOIN dbo.PDM_订单信息_视图 o ON cv. = o.
WHERE t. IS NOT NULL
AND ISNULL(o., N'') <> N'已完成' -- 修改人:Ld 修改时间:2026-07-14 16:16:14; 临时领料需求不计入已完成订单
) AS a
GROUP BY
) AS b
LEFT JOIN
(
SELECT l., SUM(ISNULL(l., 0)) AS
FROM dbo._领料单明细_视图 l
LEFT JOIN dbo.PDM_组件名称_视图 cv ON cv. = l.
LEFT JOIN dbo.PDM_订单信息_视图 o ON cv. = o.
WHERE ISNULL(o., N'') <> N'已完成' -- 修改人:Ld 修改时间:2026-07-14 16:16:14; 扣减已领数时同步排除已完成订单
GROUP BY l.
) AS c ON b. = c.;
GO
ALTER PROCEDURE [dbo].[_需求量_更新]
AS
BEGIN
SET NOCOUNT ON;
DELETE FROM [dbo].[_需求量];
INSERT INTO [dbo].[_需求量]
SELECT
b.,
CASE WHEN b. > ISNULL(c., 0) THEN b. - ISNULL(c., 0) ELSE 0 END AS
FROM
(
SELECT , SUM() AS
FROM
(
SELECT p., ISNULL(p., 0) AS
FROM dbo.PDM_零件明细表_所有视图 p
LEFT JOIN dbo.PDM_订单信息_视图 o ON p. = o.
WHERE p. = 1
AND p. <> 3
AND ISNULL(o., N'') <> N'已完成' -- 修改人:Ld 修改时间:2026-07-14 16:16:14; 汇总需求量不计入已完成订单
UNION ALL
SELECT t., ISNULL(t., 0) AS
FROM dbo._装配执行_临时领料明细 t
LEFT JOIN dbo.PDM_组件名称_视图 cv ON cv. = t.
LEFT JOIN dbo.PDM_订单信息_视图 o ON cv. = o.
WHERE t. IS NOT NULL
AND ISNULL(o., N'') <> N'已完成' -- 修改人:Ld 修改时间:2026-07-14 16:16:14; 汇总临时领料需求不计入已完成订单
) AS a
GROUP BY
) AS b
LEFT JOIN
(
SELECT l., SUM(ISNULL(l., 0)) AS
FROM dbo._领料单明细_视图 l
LEFT JOIN dbo.PDM_组件名称_视图 cv ON cv. = l.
LEFT JOIN dbo.PDM_订单信息_视图 o ON cv. = o.
WHERE ISNULL(o., N'') <> N'已完成' -- 修改人:Ld 修改时间:2026-07-14 16:16:14; 汇总扣减已领数时同步排除已完成订单
GROUP BY l.
) AS c ON b. = c.
WHERE CASE WHEN b. > ISNULL(c., 0) THEN b. - ISNULL(c., 0) ELSE 0 END > 0;
END;
GO
ALTER PROCEDURE [dbo].[_报缺补货_需求量明细_查询]
@ INT = 15448
AS
BEGIN
SET NOCOUNT ON;
;WITH AS
(
SELECT
p.,
p.,
p.,
SUM(ISNULL(p., 0)) AS ,
N'生产订单需求' AS
FROM dbo.PDM_零件明细表_所有视图 p
LEFT JOIN dbo.PDM_订单信息_视图 o ON p. = o.
WHERE p. = 1
AND p. <> 3
AND ISNULL(o., N'') <> N'已完成' -- 修改人:Ld 修改时间:2026-07-14 16:16:14; 需求量明细不显示已完成订单
AND (@ IS NULL OR p. = @)
GROUP BY
p.,
p.,
p.
UNION ALL
SELECT
cv.,
t.,
t.,
SUM(ISNULL(t., 0)) AS ,
N'临时领料需求' AS
FROM dbo._装配执行_临时领料明细 t
LEFT JOIN dbo.PDM_组件名称_视图 cv ON cv. = t.
LEFT JOIN dbo.PDM_订单信息_视图 o ON cv. = o.
WHERE t. IS NOT NULL
AND ISNULL(o., N'') <> N'已完成' -- 修改人:Ld 修改时间:2026-07-14 16:16:14; 临时领料明细不显示已完成订单
AND (@ IS NULL OR t. = @)
GROUP BY
cv.,
t.,
t.
),
AS
(
SELECT
cv.,
l.,
l.,
SUM(ISNULL(l., 0)) AS
FROM dbo._领料单明细_视图 l
LEFT JOIN dbo.PDM_组件名称_视图 cv ON cv. = l.
LEFT JOIN dbo.PDM_订单信息_视图 o ON cv. = o.
WHERE ISNULL(o., N'') <> N'已完成' -- 修改人:Ld 修改时间:2026-07-14 16:16:14; 明细扣减已领数时同步排除已完成订单
AND (@ IS NULL OR l. = @)
GROUP BY
cv.,
l.,
l.
)
SELECT
d.,
d.,
d.,
d.,
ISNULL(l., 0) AS ,
CASE
WHEN d. > ISNULL(l., 0)
THEN d. - ISNULL(l., 0)
ELSE 0
END AS ,
ISNULL(o., '') AS ,
d.
FROM d
LEFT JOIN l
ON d. = l.
AND d. = l.
AND ISNULL(d., '') = ISNULL(l., '')
LEFT JOIN dbo.PDM_订单信息_视图 o
ON d. = o.
ORDER BY
d.,
d.,
d.;
;WITH AS
(
SELECT
x.,
SUM(x.) AS
FROM
(
SELECT
p.,
ISNULL(p., 0) AS
FROM dbo.PDM_零件明细表_所有视图 p
LEFT JOIN dbo.PDM_订单信息_视图 o ON p. = o.
WHERE p. = 1
AND p. <> 3
AND ISNULL(o., N'') <> N'已完成' -- 修改人:Ld 修改时间:2026-07-14 16:16:14; 汇总明细不计入已完成订单
AND (@ IS NULL OR p. = @)
UNION ALL
SELECT
t.,
ISNULL(t., 0) AS
FROM dbo._装配执行_临时领料明细 t
LEFT JOIN dbo.PDM_组件名称_视图 cv ON cv. = t.
LEFT JOIN dbo.PDM_订单信息_视图 o ON cv. = o.
WHERE t. IS NOT NULL
AND ISNULL(o., N'') <> N'已完成' -- 修改人:Ld 修改时间:2026-07-14 16:16:14; 汇总临时领料不计入已完成订单
AND (@ IS NULL OR t. = @)
) x
GROUP BY x.
),
AS
(
SELECT
l.,
SUM(ISNULL(l., 0)) AS
FROM dbo._领料单明细_视图 l
LEFT JOIN dbo.PDM_组件名称_视图 cv ON cv. = l.
LEFT JOIN dbo.PDM_订单信息_视图 o ON cv. = o.
WHERE ISNULL(o., N'') <> N'已完成' -- 修改人:Ld 修改时间:2026-07-14 16:16:14; 汇总扣减已领数时同步排除已完成订单
AND (@ IS NULL OR l. = @)
GROUP BY l.
)
SELECT
d.,
d.,
ISNULL(l., 0) AS ,
CASE
WHEN d. > ISNULL(l., 0)
THEN d. - ISNULL(l., 0)
ELSE 0
END AS
FROM d
LEFT JOIN l
ON d. = l.
ORDER BY d.;
END;
GO

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

View File

@@ -0,0 +1,149 @@
-- 库存查询需求量性能优化补充:补齐备货/临时备货领料扣减口径
-- 修改人:Ld 修改时间:2026-07-14 16:42:00;
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:42: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:42: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:42: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:42: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:42: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 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:42:00; 临时件扣减已领数时同步排除已完成订单
GROUP BY l.
UNION ALL
SELECT b., SUM(ISNULL(l., 0)) AS
FROM dbo._领料单明细 l
INNER JOIN dbo._动力头备货_领料明细 b ON l. = b.
GROUP BY b. -- 修改人:Ld 修改时间:2026-07-14 16:42:00; 保留原口径中的备货领料扣减
UNION ALL
SELECT b., SUM(ISNULL(l., 0)) AS
FROM dbo._领料单明细 l
INNER JOIN dbo._动力头备货_临时领料明细 b ON l. = b.
GROUP BY b. -- 修改人:Ld 修改时间:2026-07-14 16:42:00; 保留原口径中的临时备货领料扣减
),
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; -- 修改人:Ld 修改时间:2026-07-14 16:42:00; 复用优化后的视图口径刷新汇总表
END;
GO

View File

@@ -0,0 +1,111 @@
-- 库存查询需求量性能优化补充:已领扣减侧保留无订单链路数据,保持旧口径一致
-- 修改人:Ld 修改时间:2026-07-14 16:50:00;
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.
LEFT 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:50: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:50: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:50: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.
LEFT JOIN co ON b. = co.
WHERE NOT (ISNULL(co., 0) = 6 AND ISNULL(co., 0) = 1) -- 修改人:Ld 修改时间:2026-07-14 16:50:00; 已领扣减侧保留无订单链路数据
GROUP BY b.
UNION ALL
SELECT s., SUM(ISNULL(l., 0)) AS
FROM dbo._领料单明细 l
INNER JOIN dbo.PDM_零件明细表_标准件和外购件 s ON l. = s.
LEFT JOIN co ON s. = co.
WHERE NOT (ISNULL(co., 0) = 6 AND ISNULL(co., 0) = 1) -- 修改人:Ld 修改时间:2026-07-14 16:50: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 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:50:00; 临时件扣减侧保留无订单链路数据
GROUP BY l.
UNION ALL
SELECT b., SUM(ISNULL(l., 0)) AS
FROM dbo._领料单明细 l
INNER JOIN dbo._动力头备货_领料明细 b ON l. = b.
GROUP BY b. -- 修改人:Ld 修改时间:2026-07-14 16:50:00; 保留原口径中的备货领料扣减
UNION ALL
SELECT b., SUM(ISNULL(l., 0)) AS
FROM dbo._领料单明细 l
INNER JOIN dbo._动力头备货_临时领料明细 b ON l. = b.
GROUP BY b. -- 修改人:Ld 修改时间:2026-07-14 16:50:00; 保留原口径中的临时备货领料扣减
),
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

View File

@@ -0,0 +1,101 @@
-- 修复员工工时统计导出 null统一导出元数据列名并修正导出文件名前缀修改人:Ld 修改时间:2026-07-17 07:53:49;
ALTER PROCEDURE [dbo].[_精工车间_员工工时统计_查询数据]
@ DATETIME = NULL,
@ DATETIME = NULL,
@ INT = NULL,
@ INT = NULL
AS
BEGIN
SET NOCOUNT ON;
-- 后端导出处理器未支持 tabletype=18使用通用导出类型 15 防止返回 NULL修改人:Ld 修改时间:2026-07-17 07:58:30;
SELECT N'员工工时统计_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype;
SELECT
256 * 15 AS ,
256 * 10 AS ,
256 * 30 AS ,
256 * 30 AS ,
256 * 20 AS ,
256 * 10 AS ,
256 * 12 AS ,
256 * 10 AS ,
256 * 12 AS ,
256 * 15 AS M,
256 * 10 AS ,
256 * 30 AS ,
256 * 30 AS ,
256 * 10 AS ,
256 * 25 AS ,
246 * 25 AS ,
246 * 25 AS ;
SELECT
0 AS ,
1 AS ,
0 AS ,
0 AS ,
0 AS ,
1 AS ,
0 AS ,
1 AS ,
1 AS ,
1 AS M,
1 AS ,
0 AS ,
0 AS ,
0 AS ,
0 AS ,
0 AS ,
0 AS ;
;WITH PriceData AS (
SELECT
data.*,
CASE WHEN data. = N'计时' THEN ISNULL(data., 0) ELSE CASE WHEN ISNULL(data., 0) <> 0 THEN data. ELSE ISNULL(priceData., 0) END END AS ,
CASE
WHEN data. = N'计时' THEN ROUND(ISNULL(data., 0) / 60.0 * ISNULL(data., 0), 4)
ELSE ROUND(ISNULL(data., 0) * CASE WHEN ISNULL(data., 0) <> 0 THEN data. ELSE ISNULL(priceData., 0) END, 4)
END AS
FROM dbo._零件工序加工时长_视图 data
OUTER APPLY (
SELECT TOP 1
CASE
WHEN ISNULL(price.[], 0) <> 0 THEN price.[]
ELSE ISNULL(price.[(/)], 0)
END AS
FROM dbo._工序工价 price
WHERE price. = data.
AND price. = data.
AND price. = data.
AND ISNULL(price., 1) = 1
ORDER BY ISNULL(price., CONVERT(DATE, '1900-01-01')) DESC, price. DESC, price. DESC
) priceData
WHERE data. >= @
AND data. <= @
)
SELECT
,
,
,
AS ,
,
AS ,
,
,
,
AS M,
AS ,
AS ,
AS ,
,
AS ,
,
FROM PriceData
ORDER BY
CASE WHEN @ = 1 AND @ = 1 THEN END DESC,
CASE WHEN @ = 1 AND @ <> 1 THEN END ASC,
CASE WHEN ISNULL(@, 0) <> 1 THEN END DESC;
END
GO

View File

@@ -7,7 +7,88 @@ GO
SET QUOTED_IDENTIFIER ON
GO
-- 员工工时汇总增加工价总价,工价取工序工价当前启用最终单价,总价=完成数量*工价;修改人:Ld 修改时间:2026-07-06 09:12:38;
-- 完成过程表补充计价字段,工时统计按当次完成记录判断计件或计时;修改人:Ld 修改时间:2026-07-06 15:18:06;
IF OBJECT_ID(N'[dbo].[设备管理_零件工序_工序完成过程情况]', N'U') IS NOT NULL
AND COL_LENGTH(N'[dbo].[设备管理_零件工序_工序完成过程情况]', N'计价方式') IS NULL
ALTER TABLE [dbo].[_零件工序_工序完成过程情况] ADD [] NVARCHAR(20) NULL CONSTRAINT [DF_设备管理_零件工序_工序完成过程情况_计价方式] DEFAULT (N'计件');
GO
IF OBJECT_ID(N'[dbo].[设备管理_零件工序_工序完成过程情况]', N'U') IS NOT NULL
AND COL_LENGTH(N'[dbo].[设备管理_零件工序_工序完成过程情况]', N'单件工价') IS NULL
ALTER TABLE [dbo].[_零件工序_工序完成过程情况] ADD [] DECIMAL(18, 4) NULL CONSTRAINT [DF_设备管理_零件工序_工序完成过程情况_单件工价] DEFAULT ((0));
GO
IF OBJECT_ID(N'[dbo].[设备管理_零件工序_工序完成过程情况]', N'U') IS NOT NULL
AND COL_LENGTH(N'[dbo].[设备管理_零件工序_工序完成过程情况]', N'单时工价') IS NULL
ALTER TABLE [dbo].[_零件工序_工序完成过程情况] ADD [] DECIMAL(18, 4) NULL CONSTRAINT [DF_设备管理_零件工序_工序完成过程情况_单时工价] DEFAULT ((0));
GO
-- 旧完成记录默认计件,单件工价按工序工价当前启用价格回填;修改人:Ld 修改时间:2026-07-06 15:18:06;
UPDATE finishData
SET = ISNULL(NULLIF(finishData., N''), N'计件'),
= CASE
WHEN ISNULL(finishData., 0) <> 0 THEN finishData.
ELSE ISNULL(priceData., 0)
END,
= ISNULL(finishData., 0)
FROM [dbo].[_零件工序_工序完成过程情况] finishData
OUTER APPLY (
SELECT TOP 1
CASE
WHEN ISNULL(price.[], 0) <> 0 THEN price.[]
ELSE ISNULL(price.[(/)], 0)
END AS
FROM [dbo].[_工序工价] price
WHERE price. = finishData.
AND ISNULL(price., 1) = 1
ORDER BY ISNULL(price., CONVERT(DATE, '1900-01-01')) DESC, price. DESC, price. DESC
) priceData
WHERE finishData. IS NULL
OR finishData. = N''
OR finishData. IS NULL
OR finishData. IS NULL;
GO
-- 工时统计明细视图补充完成过程流水号和计价字段,便于计时单价编辑回写;修改人:Ld 修改时间:2026-07-06 15:18:06;
ALTER VIEW [dbo].[_零件工序加工时长_视图]
AS
SELECT
dbo._零件工序_视图.,
dbo._零件工序_视图.,
dbo._零件工序_视图.,
dbo._零件工序_视图. AS ,
dbo._零件工序_视图.,
dbo._零件工序_工序完成过程情况. AS ,
dbo._零件工序_工序完成过程情况. AS ,
dbo._零件工序_工序完成过程情况. AS ,
ISNULL(dbo._零件工序_工序完成过程情况., 0) AS ,
dbo._零件工序_视图. AS ,
dbo._零件工序_视图.,
dbo._零件工序_工序完成过程情况.,
CONVERT(VARCHAR(10), dbo._零件工序_视图., 23) AS ,
dbo._设备工位点检表. + N'-' + dbo._零件工序_工序完成过程情况. AS ,
dbo._人员名单. AS ,
dbo._零件工序_视图.,
dbo._零件工序_视图.,
dbo._零件工序_视图.,
dbo._零件工序_视图.,
dbo._零件工序_视图.,
dbo._零件工序_视图.,
dbo._零件工序_工序完成过程情况.,
dbo._零件工序_工序完成过程情况.,
ISNULL(NULLIF(dbo._零件工序_工序完成过程情况., N''), N'计件') AS ,
ISNULL(dbo._零件工序_工序完成过程情况., 0) AS ,
ISNULL(dbo._零件工序_工序完成过程情况., 0) AS
FROM dbo._零件工序_视图
INNER JOIN dbo._零件工序_工序完成过程情况
ON dbo._零件工序_视图. = dbo._零件工序_工序完成过程情况.
INNER JOIN dbo._设备工位点检表
ON dbo._零件工序_工序完成过程情况. = dbo._设备工位点检表.
INNER JOIN dbo._人员名单
ON dbo._零件工序_工序完成过程情况. = dbo._人员名单.
GO
-- 员工工时汇总增加单价总价,计件按单件工价*数量,计时按单时工价*加工分钟/60修改人:Ld 修改时间:2026-07-06 15:18:06;
ALTER PROCEDURE [dbo].[_工人工时统计_查询数据]
@ DATETIME = NULL,
@ DATETIME = NULL
@@ -28,16 +109,24 @@ BEGIN
f.,
f.,
f.,
ISNULL(f., 0) * ISNULL(price., 0) AS
CASE
WHEN ISNULL(NULLIF(f., N''), N'计件') = N'计时'
THEN ROUND(ISNULL(f., 0) / 60.0 * ISNULL(f., 0), 4)
ELSE ROUND(ISNULL(f., 0) * CASE WHEN ISNULL(f., 0) <> 0 THEN f. ELSE ISNULL(priceData., 0) END, 4)
END AS
FROM dbo._零件工序_工序完成过程情况 f
INNER JOIN dbo._人员名单 p ON f. = p.
OUTER APPLY (
SELECT TOP 1 ISNULL(pp.[(/)], 0) AS
FROM dbo._工序工价 pp
WHERE pp. = f.
AND ISNULL(pp., 1) = 1
ORDER BY ISNULL(pp., CONVERT(DATE, '1900-01-01')) DESC, pp. DESC, pp. DESC
) price
SELECT TOP 1
CASE
WHEN ISNULL(price.[], 0) <> 0 THEN price.[]
ELSE ISNULL(price.[(/)], 0)
END AS
FROM dbo._工序工价 price
WHERE price. = f.
AND ISNULL(price., 1) = 1
ORDER BY ISNULL(price., CONVERT(DATE, '1900-01-01')) DESC, price. DESC, price. DESC
) priceData
WHERE f. >= @
AND f. <= @
) a
@@ -45,7 +134,7 @@ BEGIN
END
GO
-- 员工工时明细增加工价总价,明细按零件名称+图号+工序匹配工序工价;修改人:Ld 修改时间:2026-07-06 09:12:38;
-- 员工工时明细返回单价,计时记录允许前端编辑单时工价;修改人:Ld 修改时间:2026-07-06 15:18:06;
ALTER PROCEDURE [dbo].[_员工工时统计_详情_查询数据]
@ INT = 62,
@ DATETIME = NULL,
@@ -56,32 +145,43 @@ AS
BEGIN
SET NOCOUNT ON;
SELECT
data.*,
data. / NULLIF(data., 0) AS ,
ISNULL(price., 0) AS ,
ISNULL(data., 0) * ISNULL(price., 0) AS
FROM dbo._零件工序加工时长_视图 data
OUTER APPLY (
SELECT TOP 1 ISNULL(pp.[(/)], 0) AS
FROM dbo._工序工价 pp
WHERE pp. = data.
AND pp. = data.
AND pp. = data.
AND ISNULL(pp., 1) = 1
ORDER BY ISNULL(pp., CONVERT(DATE, '1900-01-01')) DESC, pp. DESC, pp. DESC
) price
WHERE data. = @
AND data. >= @
AND data. < DATEADD(DAY, 1, @)
;WITH PriceData AS (
SELECT
data.*,
data. / NULLIF(data., 0) AS ,
CASE WHEN data. = N'计时' THEN ISNULL(data., 0) ELSE CASE WHEN ISNULL(data., 0) <> 0 THEN data. ELSE ISNULL(priceData., 0) END END AS ,
CASE
WHEN data. = N'计时' THEN ROUND(ISNULL(data., 0) / 60.0 * ISNULL(data., 0), 4)
ELSE ROUND(ISNULL(data., 0) * CASE WHEN ISNULL(data., 0) <> 0 THEN data. ELSE ISNULL(priceData., 0) END, 4)
END AS
FROM dbo._零件工序加工时长_视图 data
OUTER APPLY (
SELECT TOP 1
CASE
WHEN ISNULL(price.[], 0) <> 0 THEN price.[]
ELSE ISNULL(price.[(/)], 0)
END AS
FROM dbo._工序工价 price
WHERE price. = data.
AND price. = data.
AND price. = data.
AND ISNULL(price., 1) = 1
ORDER BY ISNULL(price., CONVERT(DATE, '1900-01-01')) DESC, price. DESC, price. DESC
) priceData
WHERE data. = @
AND data. >= @
AND data. < DATEADD(DAY, 1, @)
)
SELECT *
FROM PriceData
ORDER BY
CASE WHEN @ = 1 AND @ = 1 THEN data. END DESC,
CASE WHEN @ = 1 AND @ <> 1 THEN data. END ASC,
CASE WHEN ISNULL(@, 0) <> 1 THEN data. END DESC;
CASE WHEN @ = 1 AND @ = 1 THEN END DESC,
CASE WHEN @ = 1 AND @ <> 1 THEN END ASC,
CASE WHEN ISNULL(@, 0) <> 1 THEN END DESC;
END
GO
-- 设备工时汇总增加价总价,工价取工序工价当前启用最终单价,总价=完成数量*工价;修改人:Ld 修改时间:2026-07-06 09:12:38;
-- 设备工时汇总增加价总价,计件按单件工价*数量,计时按单时工价*加工分钟/60;修改人:Ld 修改时间:2026-07-06 15:18:06;
ALTER PROCEDURE [dbo].[_设备工时统计_查询数据]
@ DATETIME = NULL,
@ DATETIME = NULL
@@ -99,16 +199,24 @@ BEGIN
ISNULL(f., 0) AS ,
e. + N'-' + f. AS ,
f.,
ISNULL(f., 0) * ISNULL(price., 0) AS
CASE
WHEN ISNULL(NULLIF(f., N''), N'计件') = N'计时'
THEN ROUND(ISNULL(f., 0) / 60.0 * ISNULL(f., 0), 4)
ELSE ROUND(ISNULL(f., 0) * CASE WHEN ISNULL(f., 0) <> 0 THEN f. ELSE ISNULL(priceData., 0) END, 4)
END AS
FROM dbo._零件工序_工序完成过程情况 f
INNER JOIN dbo._设备工位点检表 e ON f. = e.
OUTER APPLY (
SELECT TOP 1 ISNULL(pp.[(/)], 0) AS
FROM dbo._工序工价 pp
WHERE pp. = f.
AND ISNULL(pp., 1) = 1
ORDER BY ISNULL(pp., CONVERT(DATE, '1900-01-01')) DESC, pp. DESC, pp. DESC
) price
SELECT TOP 1
CASE
WHEN ISNULL(price.[], 0) <> 0 THEN price.[]
ELSE ISNULL(price.[(/)], 0)
END AS
FROM dbo._工序工价 price
WHERE price. = f.
AND ISNULL(price., 1) = 1
ORDER BY ISNULL(price., CONVERT(DATE, '1900-01-01')) DESC, price. DESC, price. DESC
) priceData
WHERE f. >= @
AND f. <= @
) a
@@ -116,7 +224,7 @@ BEGIN
END
GO
-- 设备工时明细增加工价总价,明细按零件名称+图号+工序匹配工序工价;修改人:Ld 修改时间:2026-07-06 09:12:38;
-- 设备工时明细返回单价,计时记录允许前端编辑单时工价;修改人:Ld 修改时间:2026-07-06 15:18:06;
ALTER PROCEDURE [dbo].[_设备工时统计_详情_查询数据]
@ NVARCHAR(50) = NULL,
@ DATETIME = NULL,
@@ -127,31 +235,76 @@ AS
BEGIN
SET NOCOUNT ON;
SELECT
data.*,
ISNULL(price., 0) AS ,
ISNULL(data., 0) * ISNULL(price., 0) AS
FROM dbo._零件工序加工时长_视图 data
OUTER APPLY (
SELECT TOP 1 ISNULL(pp.[(/)], 0) AS
FROM dbo._工序工价 pp
WHERE pp. = data.
AND pp. = data.
AND pp. = data.
AND ISNULL(pp., 1) = 1
ORDER BY ISNULL(pp., CONVERT(DATE, '1900-01-01')) DESC, pp. DESC, pp. DESC
) price
WHERE data. = @
AND data. >= @
AND data. <= @
;WITH PriceData AS (
SELECT
data.*,
CASE WHEN data. = N'计时' THEN ISNULL(data., 0) ELSE CASE WHEN ISNULL(data., 0) <> 0 THEN data. ELSE ISNULL(priceData., 0) END END AS ,
CASE
WHEN data. = N'计时' THEN ROUND(ISNULL(data., 0) / 60.0 * ISNULL(data., 0), 4)
ELSE ROUND(ISNULL(data., 0) * CASE WHEN ISNULL(data., 0) <> 0 THEN data. ELSE ISNULL(priceData., 0) END, 4)
END AS
FROM dbo._零件工序加工时长_视图 data
OUTER APPLY (
SELECT TOP 1
CASE
WHEN ISNULL(price.[], 0) <> 0 THEN price.[]
ELSE ISNULL(price.[(/)], 0)
END AS
FROM dbo._工序工价 price
WHERE price. = data.
AND price. = data.
AND price. = data.
AND ISNULL(price., 1) = 1
ORDER BY ISNULL(price., CONVERT(DATE, '1900-01-01')) DESC, price. DESC, price. DESC
) priceData
WHERE data. = @
AND data. >= @
AND data. <= @
)
SELECT *
FROM PriceData
ORDER BY
CASE WHEN @ = 1 AND @ = 1 THEN data. END DESC,
CASE WHEN @ = 1 AND @ <> 1 THEN data. END ASC,
CASE WHEN ISNULL(@, 0) <> 1 THEN data. END DESC;
CASE WHEN @ = 1 AND @ = 1 THEN END DESC,
CASE WHEN @ = 1 AND @ <> 1 THEN END ASC,
CASE WHEN ISNULL(@, 0) <> 1 THEN END DESC;
END
GO
-- 员工工时导出增加工价总价列,保持与页面明细一致;修改人:Ld 修改时间:2026-07-06 09:12:38;
-- 计时记录单时工价编辑保存;修改人:Ld 修改时间:2026-07-06 15:18:06;
IF OBJECT_ID(N'[dbo].[车间生产管理_工时统计_单时工价_修改数据]', N'P') IS NOT NULL
DROP PROCEDURE [dbo].[_工时统计_单时工价_修改数据];
GO
CREATE PROCEDURE [dbo].[_工时统计_单时工价_修改数据]
@ NVARCHAR(50) = N'',
@ NVARCHAR(50) = N''
AS
BEGIN
SET NOCOUNT ON;
DECLARE @Id INT;
DECLARE @Safe单时工价 DECIMAL(18, 4);
SET @Id = CASE WHEN ISNUMERIC(NULLIF(@, N'')) = 1 THEN CONVERT(INT, @) ELSE NULL END;
SET @Safe单时工价 = CASE WHEN ISNUMERIC(NULLIF(@, N'')) = 1 THEN CONVERT(DECIMAL(18, 4), @) ELSE 0 END;
IF @Id IS NULL
BEGIN
SELECT N'0' AS result, N'完成过程流水号不能为空' AS message;
RETURN;
END;
UPDATE [dbo].[_零件工序_工序完成过程情况]
SET = N'计时',
= @Safe单时工价,
= GETDATE()
WHERE = @Id;
SELECT N'1' AS result;
END
GO
-- 员工工时导出增加计价方式、单价和总价列;修改人:Ld 修改时间:2026-07-06 15:18:06;
ALTER PROCEDURE [dbo].[_精工车间_员工工时统计_查询数据]
@ DATETIME = NULL,
@ DATETIME = NULL,
@@ -161,7 +314,9 @@ AS
BEGIN
SET NOCOUNT ON;
SELECT N'库存_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '17' AS tabletype;
-- 修正导出文件名前缀,避免工时统计导出显示库存文件名;修改人:Ld 修改时间:2026-07-17 07:53:49;
-- 后端导出处理器未支持 tabletype=18使用通用导出类型 15 防止返回 NULL修改人:Ld 修改时间:2026-07-17 07:58:30;
SELECT N'员工工时统计_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype;
SELECT
256 * 15 AS ,
@@ -170,10 +325,11 @@ BEGIN
256 * 30 AS ,
256 * 20 AS ,
256 * 10 AS ,
256 * 12 AS ,
256 * 10 AS ,
256 * 12 AS ,
256 * 15 AS M,
256 * 10 AS ,
256 * 10 AS ,
256 * 12 AS ,
256 * 30 AS ,
256 * 30 AS ,
256 * 10 AS ,
@@ -186,12 +342,14 @@ BEGIN
1 AS ,
0 AS ,
0 AS ,
0 AS ,
-- 修正导出元数据列名需与字段宽度和数据列一致;修改人:Ld 修改时间:2026-07-17 07:53:49;
0 AS ,
1 AS ,
0 AS ,
1 AS ,
1 AS ,
1 AS M,
1 AS ,
1 AS ,
1 AS ,
0 AS ,
0 AS ,
0 AS ,
@@ -199,38 +357,53 @@ BEGIN
0 AS ,
0 AS ;
;WITH PriceData AS (
SELECT
data.*,
CASE WHEN data. = N'计时' THEN ISNULL(data., 0) ELSE CASE WHEN ISNULL(data., 0) <> 0 THEN data. ELSE ISNULL(priceData., 0) END END AS ,
CASE
WHEN data. = N'计时' THEN ROUND(ISNULL(data., 0) / 60.0 * ISNULL(data., 0), 4)
ELSE ROUND(ISNULL(data., 0) * CASE WHEN ISNULL(data., 0) <> 0 THEN data. ELSE ISNULL(priceData., 0) END, 4)
END AS
FROM dbo._零件工序加工时长_视图 data
OUTER APPLY (
SELECT TOP 1
CASE
WHEN ISNULL(price.[], 0) <> 0 THEN price.[]
ELSE ISNULL(price.[(/)], 0)
END AS
FROM dbo._工序工价 price
WHERE price. = data.
AND price. = data.
AND price. = data.
AND ISNULL(price., 1) = 1
ORDER BY ISNULL(price., CONVERT(DATE, '1900-01-01')) DESC, price. DESC, price. DESC
) priceData
WHERE data. >= @
AND data. <= @
)
SELECT
data.,
data.,
data.,
data. AS ,
data.,
data. AS ,
data. AS M,
data. AS ,
ISNULL(price., 0) AS ,
ISNULL(data., 0) * ISNULL(price., 0) AS ,
data. AS ,
data. AS ,
data.,
data. AS ,
data.,
data.
FROM dbo._零件工序加工时长_视图 data
OUTER APPLY (
SELECT TOP 1 ISNULL(pp.[(/)], 0) AS
FROM dbo._工序工价 pp
WHERE pp. = data.
AND pp. = data.
AND pp. = data.
AND ISNULL(pp., 1) = 1
ORDER BY ISNULL(pp., CONVERT(DATE, '1900-01-01')) DESC, pp. DESC, pp. DESC
) price
WHERE data. >= @
AND data. <= @
,
,
,
AS ,
,
AS ,
,
,
,
AS M,
AS ,
AS ,
AS ,
,
AS ,
,
FROM PriceData
ORDER BY
CASE WHEN @ = 1 AND @ = 1 THEN data. END DESC,
CASE WHEN @ = 1 AND @ <> 1 THEN data. END ASC,
CASE WHEN ISNULL(@, 0) <> 1 THEN data. END DESC;
CASE WHEN @ = 1 AND @ = 1 THEN END DESC,
CASE WHEN @ = 1 AND @ <> 1 THEN END ASC,
CASE WHEN ISNULL(@, 0) <> 1 THEN END DESC;
END
GO

View File

@@ -1,4 +1,36 @@
-- 生产完成审核查询与审核处理 修改人:Ld 修改时间:2026-07-02 13:57:18;
-- 生产完成审核查询与审核处理 修改人:Ld 修改时间:2026-07-02 13:57:18;
-- 生产审核补充计价方式和工价字段,用于传递到工时统计;修改人:Ld 修改时间:2026-07-06 15:18:06;
IF OBJECT_ID(N'[dbo].[MES_机加工MES_加工完成整修审核表]', N'U') IS NOT NULL
AND COL_LENGTH(N'[dbo].[MES_机加工MES_加工完成整修审核表]', N'计价方式') IS NULL
ALTER TABLE [dbo].[MES_机加工MES_加工完成整修审核表] ADD [] NVARCHAR(20) NULL CONSTRAINT [DF_MES_机加工MES_加工完成整修审核表_计价方式] DEFAULT (N'计件');
GO
IF OBJECT_ID(N'[dbo].[MES_机加工MES_加工完成整修审核表]', N'U') IS NOT NULL
AND COL_LENGTH(N'[dbo].[MES_机加工MES_加工完成整修审核表]', N'单件工价') IS NULL
ALTER TABLE [dbo].[MES_机加工MES_加工完成整修审核表] ADD [] DECIMAL(18, 4) NULL CONSTRAINT [DF_MES_机加工MES_加工完成整修审核表_单件工价] DEFAULT ((0));
GO
IF OBJECT_ID(N'[dbo].[MES_机加工MES_加工完成整修审核表]', N'U') IS NOT NULL
AND COL_LENGTH(N'[dbo].[MES_机加工MES_加工完成整修审核表]', N'单时工价') IS NULL
ALTER TABLE [dbo].[MES_机加工MES_加工完成整修审核表] ADD [] DECIMAL(18, 4) NULL CONSTRAINT [DF_MES_机加工MES_加工完成整修审核表_单时工价] DEFAULT ((0));
GO
-- 审核通过后写入完成过程表的计价字段,保障本脚本可单独部署;修改人:Ld 修改时间:2026-07-06 15:18:06;
IF OBJECT_ID(N'[dbo].[设备管理_零件工序_工序完成过程情况]', N'U') IS NOT NULL
AND COL_LENGTH(N'[dbo].[设备管理_零件工序_工序完成过程情况]', N'计价方式') IS NULL
ALTER TABLE [dbo].[_零件工序_工序完成过程情况] ADD [] NVARCHAR(20) NULL CONSTRAINT [DF_设备管理_零件工序_工序完成过程情况_计价方式] DEFAULT (N'计件');
GO
IF OBJECT_ID(N'[dbo].[设备管理_零件工序_工序完成过程情况]', N'U') IS NOT NULL
AND COL_LENGTH(N'[dbo].[设备管理_零件工序_工序完成过程情况]', N'单件工价') IS NULL
ALTER TABLE [dbo].[_零件工序_工序完成过程情况] ADD [] DECIMAL(18, 4) NULL CONSTRAINT [DF_设备管理_零件工序_工序完成过程情况_单件工价] DEFAULT ((0));
GO
IF OBJECT_ID(N'[dbo].[设备管理_零件工序_工序完成过程情况]', N'U') IS NOT NULL
AND COL_LENGTH(N'[dbo].[设备管理_零件工序_工序完成过程情况]', N'单时工价') IS NULL
ALTER TABLE [dbo].[_零件工序_工序完成过程情况] ADD [] DECIMAL(18, 4) NULL CONSTRAINT [DF_设备管理_零件工序_工序完成过程情况_单时工价] DEFAULT ((0));
GO
IF OBJECT_ID(N'[dbo].[机加工MES_加工完成整修审核_查询数据]', N'P') IS NOT NULL
DROP PROCEDURE [dbo].[MES_加工完成整修审核_查询数据];
GO
@@ -49,6 +81,9 @@ BEGIN
. AS ,
A.,
A.,
ISNULL(NULLIF(A., N''), N'计件') AS ,
CASE WHEN ISNULL(A., 0) <> 0 THEN A. ELSE ISNULL(priceData., 0) END AS ,
ISNULL(A., 0) AS ,
A.,
. AS ,
A.,
@@ -90,6 +125,17 @@ BEGIN
OR A. = .
LEFT JOIN [dbo].[_设备工位点检表] AS SB
ON A. = SB.
OUTER APPLY (
SELECT TOP 1
CASE
WHEN ISNULL(price.[], 0) <> 0 THEN price.[]
ELSE ISNULL(price.[(/)], 0)
END AS
FROM [dbo].[_工序工价] price
WHERE price. = A.
AND ISNULL(price., 1) = 1
ORDER BY ISNULL(price., CONVERT(DATE, '1900-01-01')) DESC, price. DESC, price. DESC
) priceData
WHERE (@_check = 0 OR A. = @)
AND (@_check = 0 OR A. = @)
AND (@_check = 0 OR ISNULL(., ISNULL(A., N'')) LIKE N'%' + @ + N'%')
@@ -115,6 +161,9 @@ BEGIN
,
,
,
,
,
,
,
,
,
@@ -155,12 +204,8 @@ BEGIN
END;
GO
-- 生产完成审核状态更新,审核通过时接入原 MES 完工链路 修改人:Ld 修改时间:2026-07-02 14:55:23;
IF OBJECT_ID(N'[dbo].[机加工MES_加工完成整修审核_审核数据]', N'P') IS NOT NULL
DROP PROCEDURE [dbo].[MES_加工完成整修审核_审核数据];
GO
CREATE PROCEDURE [dbo].[MES_加工完成整修审核_审核数据]
-- 生产审核普通通过只改审核状态为已审核;修改数量/时间才修正生产完成数据。修改人:Ld 修改时间:2026-07-17 09:10:08;
ALTER PROCEDURE [dbo].[MES_加工完成整修审核_审核数据]
@ INT,
@ NVARCHAR(20),
@ NVARCHAR(100) = NULL,
@@ -170,28 +215,39 @@ CREATE PROCEDURE [dbo].[机加工MES_加工完成整修审核_审核数据]
@ DATETIME = NULL,
@ DATETIME = NULL,
@ DATETIME = NULL,
@ NVARCHAR(1000) = NULL
@ NVARCHAR(1000) = NULL,
@ NVARCHAR(20) = NULL
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ NVARCHAR(20);
DECLARE @ NVARCHAR(50);
DECLARE @ INT;
DECLARE @ NVARCHAR(50);
DECLARE @ FLOAT;
DECLARE @ INT;
DECLARE @ FLOAT;
DECLARE @ FLOAT;
DECLARE @ FLOAT;
DECLARE @ INT;
DECLARE @ NVARCHAR(100);
DECLARE @ NVARCHAR(500);
DECLARE @ INT;
DECLARE @ INT;
DECLARE @ NVARCHAR(100);
DECLARE @id INT;
DECLARE @ NVARCHAR(1000);
DECLARE @ FLOAT;
DECLARE @ INT;
DECLARE @ NVARCHAR(100);
DECLARE @ INT;
DECLARE @Safe计价方式 NVARCHAR(20);
DECLARE @ DECIMAL(18, 4);
DECLARE @ DECIMAL(18, 4);
DECLARE @ BIT = 0;
DECLARE @ BIT = 0;
DECLARE @ BIT;
DECLARE @ TABLE (result NVARCHAR(100));
SET @ = CASE WHEN @ IN (N'审核通过', N'已审核') THEN N'已审核' ELSE @ END;
IF @ NOT IN (N'已审核', N'审核不通过')
BEGIN
SELECT N'0' AS result, N'审核状态不正确' AS message;
RETURN;
END;
IF NOT EXISTS (
SELECT 1
@@ -204,172 +260,172 @@ BEGIN
RETURN;
END;
IF @ NOT IN (N'审核通过', N'审核不通过')
BEGIN
SELECT N'0' AS result, N'审核状态不正确' AS message;
RETURN;
END;
SELECT
@ = ,
@ = ,
@ = ,
@ = ISNULL(@, ),
@ = ,
@ = ISNULL(, 0),
@ = ,
@ = ,
@ = ,
@ = ,
@id = id,
@ = ISNULL(@, )
@ = ISNULL(@, ),
@Safe计价方式 = ISNULL(NULLIF(@, N''), ISNULL(NULLIF(, N''), N'计件')),
@ = ISNULL(, 0)
FROM [dbo].[MES_机加工MES_加工完成整修审核表]
WHERE id = @
AND = N'待审核';
IF @Safe计价方式 NOT IN (N'计件', N'计时')
SET @Safe计价方式 = N'计件';
SET @ = ISNULL(@, @);
SET @ = ISNULL(@, 0) - ISNULL(@, 0);
SET @ = CASE
WHEN @ = N'已审核'
AND @ = N'加工完成'
AND (@ IS NOT NULL OR @ IS NOT NULL OR @ IS NOT NULL OR @ IS NOT NULL)
THEN 1 ELSE 0 END;
SET @ = CASE
WHEN @ = N'已审核'
AND @ = N'结束整修'
AND (@ IS NOT NULL OR @ IS NOT NULL OR @ IS NOT NULL)
THEN 1 ELSE 0 END;
IF @ = 1 AND (@ < 0 OR @ <> FLOOR(@))
BEGIN
SELECT N'0' AS result, N'完成数量必须为大于等于 0 的整数' AS message;
RETURN;
END;
SELECT TOP 1 @ = CASE
WHEN ISNULL(price.[], 0) <> 0 THEN price.[]
ELSE ISNULL(price.[(/)], 0)
END
FROM [dbo].[_工序工价] price
WHERE price. = @
AND ISNULL(price., 1) = 1
ORDER BY ISNULL(price., CONVERT(DATE, '1900-01-01')) DESC, price. DESC, price. DESC;
SET @ = ISNULL(@, 0);
SET @ = ISNULL(@, 0);
BEGIN TRY
SET @ = CASE WHEN @@TRANCOUNT = 0 THEN 1 ELSE 0 END;
IF @ = 1
BEGIN
BEGIN TRAN;
END
ELSE
BEGIN
SAVE TRAN ;
END;
IF @ = N'审核通过' AND @ = N'加工完成'
IF @ = 1
BEGIN
IF @ IS NULL OR @ IS NULL OR @ IS NULL OR @ IS NULL OR @ IS NULL
SELECT @ = []
FROM [dbo].[_设备工位点检表]
WHERE [] = @;
SELECT TOP 1 @ = []
FROM [dbo].[_零件工序_工序完成过程情况]
WHERE [] = @
AND [] = @
AND [] = @
AND [] = @
ORDER BY [] DESC;
IF @ IS NULL
BEGIN
SELECT TOP 1 @ = []
FROM [dbo].[_零件工序_工序完成过程情况]
WHERE [] = @
AND [] = @
AND [] = @
ORDER BY [] DESC;
END;
IF @ IS NULL
BEGIN
IF @ = 1 ROLLBACK TRAN ELSE ROLLBACK TRAN ;
SELECT N'0' AS result, N'审核记录缺少原 MES 完工必需参数' AS message;
SELECT N'0' AS result, N'未找到对应生产完成记录' AS message;
RETURN;
END;
IF @ <= 0 OR @ <> FLOOR(@)
UPDATE [dbo].[_零件工序_工序完成过程情况]
SET [] = @,
[] = ISNULL(@, []),
[] = ISNULL(@, []),
[] = CASE WHEN @ IS NULL THEN [] ELSE CONVERT(DATE, @) END,
[] = ISNULL(@, []),
[] = @Safe计价方式,
[] = @,
[] = CASE WHEN @Safe计价方式 = N'计时' THEN ISNULL([], @) ELSE 0 END,
[] = CASE WHEN ISNUMERIC(@) = 1 THEN CAST(@ AS INT) ELSE [] END,
[] = GETDATE()
WHERE [] = @;
IF ISNULL(@, 0) <> 0
BEGIN
IF @ = 1 ROLLBACK TRAN ELSE ROLLBACK TRAN ;
SELECT N'0' AS result, N'完成数量必须为大于 0 的整数' AS message;
RETURN;
END;
UPDATE [dbo].[_零件工序]
SET [] = ISNULL([], 0) + @
WHERE [] = @;
INSERT INTO @(result)
EXEC [dbo].[_零件工序_工序完成过程情况_增加数据]
@ = @,
@ = @,
@ = @,
@ = @,
@ = @,
@ = @,
@ = @,
@ = @ OUTPUT,
@ = @ OUTPUT;
SELECT TOP 1 @ = result FROM @;
IF ISNULL(@, N'') <> N'成功'
BEGIN
IF @ = 1 ROLLBACK TRAN ELSE ROLLBACK TRAN ;
SELECT N'0' AS result, ISNULL(@, N'原 MES 完工流程执行失败') AS message;
RETURN;
UPDATE [dbo].[_零件工序_任务分配]
SET [] = ISNULL([], 0) + @
WHERE [] = @
AND [] = @
AND [] = @;
END;
IF @ IS NOT NULL
BEGIN
SELECT @ = MAX()
FROM [dbo].[_零件工序_工序完成过程情况]
WHERE = @
AND = @
AND = @;
UPDATE [dbo].[_零件工序_工序完成过程情况]
SET = ISNULL(@, ),
= @,
= CONVERT(DATE, @),
= @,
= CASE WHEN ISNUMERIC(@) = 1 THEN CAST(@ AS INT) ELSE END,
= GETDATE()
WHERE = @;
UPDATE [dbo].[_零件工序]
SET = CASE WHEN IS NULL OR >= ISNULL(, 0) THEN @ ELSE END
WHERE = @;
END;
IF @ IS NOT NULL AND @ IS NULL
BEGIN
SELECT @ = MAX()
FROM [dbo].[_零件工序_工序完成过程情况]
WHERE = @
AND = @
AND = @;
UPDATE [dbo].[_零件工序_工序完成过程情况]
SET = @,
= CASE WHEN ISNUMERIC(@) = 1 THEN CAST(@ AS INT) ELSE END,
= GETDATE()
WHERE = @;
SET [] = @
WHERE [] = @;
END;
END;
IF @ = N'审核通过' AND @ = N'结束整修'
IF @ = 1
BEGIN
IF @id IS NULL OR @ IS NULL
BEGIN
IF @ = 1 ROLLBACK TRAN ELSE ROLLBACK TRAN ;
SELECT N'0' AS result, N'审核记录缺少整修结束必需参数' AS message;
RETURN;
END;
UPDATE [dbo].[_整修]
SET = CASE WHEN @ IS NULL THEN ELSE CONVERT(VARCHAR(20), @, 120) END,
= CONVERT(VARCHAR(20), ISNULL(@, GETDATE()), 120),
= N'1',
= @
WHERE id = @id
AND = @;
SET [] = CASE WHEN @ IS NULL THEN [] ELSE CONVERT(VARCHAR(20), @, 120) END,
[] = CASE WHEN @ IS NULL THEN [] ELSE CONVERT(VARCHAR(20), @, 120) END,
[] = @
WHERE [id] = @id
AND [] = @;
END;
UPDATE [dbo].[MES_机加工MES_加工完成整修审核表]
SET = @,
= @,
= GETDATE(),
= ISNULL(@, N''),
= CASE WHEN @ = N'审核通过' AND @ = N'加工完成' THEN @ ELSE END,
= CASE
WHEN @ = N'审核通过' AND @ = N'加工完成' AND @ IS NOT NULL THEN @
WHEN @ = N'审核通过' AND @ = N'结束整修' AND @ IS NOT NULL THEN @
ELSE
END,
= CASE
WHEN @ = N'审核通过' AND @ = N'加工完成' AND @ IS NOT NULL THEN @
WHEN @ = N'审核通过' AND @ = N'结束整修' THEN ISNULL(@, GETDATE())
ELSE
END,
= CASE WHEN @ = N'审核通过' AND @ = N'结束整修' THEN @ ELSE END,
= CASE WHEN @ = N'审核通过' AND @ = N'加工完成' THEN @ ELSE END,
= CASE WHEN @ = N'审核通过' AND @ = N'加工完成' THEN @ ELSE END,
= N'Ld',
= GETDATE()
WHERE id = @
AND = N'待审核';
SET [] = @,
[] = @,
[] = GETDATE(),
[] = ISNULL(@, N''),
[] = CASE WHEN @ = 1 THEN @ ELSE [] END,
[] = CASE
WHEN @ = 1 AND @ IS NOT NULL THEN @
WHEN @ = 1 AND @ IS NOT NULL THEN @
ELSE []
END,
[] = CASE
WHEN @ = 1 AND @ IS NOT NULL THEN @
WHEN @ = 1 AND @ IS NOT NULL THEN @
ELSE []
END,
[] = CASE WHEN @ = 1 THEN @ ELSE [] END,
[] = CASE WHEN @ = 1 THEN @Safe计价方式 ELSE [] END,
[] = CASE WHEN @ = 1 THEN @ ELSE [] END,
[] = CASE WHEN @ = 1 THEN @ ELSE [] END,
[] = N'Ld',
[] = GETDATE()
WHERE [id] = @
AND [] = N'待审核';
IF @ = 1
BEGIN
COMMIT TRAN;
END;
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
BEGIN
IF ISNULL(@, 1) = 1
BEGIN
ROLLBACK TRAN;
END
ELSE
BEGIN
ROLLBACK TRAN ;
END;
END;
SELECT N'0' AS result, ERROR_MESSAGE() AS message;
@@ -379,3 +435,5 @@ BEGIN
SELECT N'1' AS result;
END;
GO
GO

View File

@@ -0,0 +1,231 @@
-- 生产审核普通通过只改审核状态为已审核;修改数量/时间才修正生产完成数据。修改人:Ld 修改时间:2026-07-17 09:10:08;
ALTER PROCEDURE [dbo].[MES_加工完成整修审核_审核数据]
@ INT,
@ NVARCHAR(20),
@ NVARCHAR(100) = NULL,
@ NVARCHAR(1000) = NULL,
@ FLOAT = NULL,
@ DATETIME = NULL,
@ DATETIME = NULL,
@ DATETIME = NULL,
@ DATETIME = NULL,
@ NVARCHAR(1000) = NULL,
@ NVARCHAR(20) = NULL
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ NVARCHAR(20);
DECLARE @ NVARCHAR(50);
DECLARE @ INT;
DECLARE @ FLOAT;
DECLARE @ FLOAT;
DECLARE @ FLOAT;
DECLARE @ INT;
DECLARE @ NVARCHAR(100);
DECLARE @ INT;
DECLARE @ INT;
DECLARE @ NVARCHAR(100);
DECLARE @id INT;
DECLARE @ NVARCHAR(1000);
DECLARE @Safe计价方式 NVARCHAR(20);
DECLARE @ DECIMAL(18, 4);
DECLARE @ DECIMAL(18, 4);
DECLARE @ BIT = 0;
DECLARE @ BIT = 0;
DECLARE @ BIT;
SET @ = CASE WHEN @ IN (N'审核通过', N'已审核') THEN N'已审核' ELSE @ END;
IF @ NOT IN (N'已审核', N'审核不通过')
BEGIN
SELECT N'0' AS result, N'审核状态不正确' AS message;
RETURN;
END;
IF NOT EXISTS (
SELECT 1
FROM [dbo].[MES_机加工MES_加工完成整修审核表]
WHERE id = @
AND = N'待审核'
)
BEGIN
SELECT N'0' AS result, N'该审核记录不存在或已审核' AS message;
RETURN;
END;
SELECT
@ = ,
@ = ,
@ = ISNULL(, 0),
@ = ,
@ = ,
@ = ,
@id = id,
@ = ISNULL(@, ),
@Safe计价方式 = ISNULL(NULLIF(@, N''), ISNULL(NULLIF(, N''), N'计件')),
@ = ISNULL(, 0)
FROM [dbo].[MES_机加工MES_加工完成整修审核表]
WHERE id = @
AND = N'待审核';
IF @Safe计价方式 NOT IN (N'计件', N'计时')
SET @Safe计价方式 = N'计件';
SET @ = ISNULL(@, @);
SET @ = ISNULL(@, 0) - ISNULL(@, 0);
SET @ = CASE
WHEN @ = N'已审核'
AND @ = N'加工完成'
AND (@ IS NOT NULL OR @ IS NOT NULL OR @ IS NOT NULL OR @ IS NOT NULL)
THEN 1 ELSE 0 END;
SET @ = CASE
WHEN @ = N'已审核'
AND @ = N'结束整修'
AND (@ IS NOT NULL OR @ IS NOT NULL OR @ IS NOT NULL)
THEN 1 ELSE 0 END;
IF @ = 1 AND (@ < 0 OR @ <> FLOOR(@))
BEGIN
SELECT N'0' AS result, N'完成数量必须为大于等于 0 的整数' AS message;
RETURN;
END;
SELECT TOP 1 @ = CASE
WHEN ISNULL(price.[], 0) <> 0 THEN price.[]
ELSE ISNULL(price.[(/)], 0)
END
FROM [dbo].[_工序工价] price
WHERE price. = @
AND ISNULL(price., 1) = 1
ORDER BY ISNULL(price., CONVERT(DATE, '1900-01-01')) DESC, price. DESC, price. DESC;
SET @ = ISNULL(@, 0);
SET @ = ISNULL(@, 0);
BEGIN TRY
SET @ = CASE WHEN @@TRANCOUNT = 0 THEN 1 ELSE 0 END;
IF @ = 1
BEGIN TRAN;
ELSE
SAVE TRAN ;
IF @ = 1
BEGIN
SELECT @ = []
FROM [dbo].[_设备工位点检表]
WHERE [] = @;
SELECT TOP 1 @ = []
FROM [dbo].[_零件工序_工序完成过程情况]
WHERE [] = @
AND [] = @
AND [] = @
AND [] = @
ORDER BY [] DESC;
IF @ IS NULL
BEGIN
SELECT TOP 1 @ = []
FROM [dbo].[_零件工序_工序完成过程情况]
WHERE [] = @
AND [] = @
AND [] = @
ORDER BY [] DESC;
END;
IF @ IS NULL
BEGIN
IF @ = 1 ROLLBACK TRAN ELSE ROLLBACK TRAN ;
SELECT N'0' AS result, N'未找到对应生产完成记录' AS message;
RETURN;
END;
UPDATE [dbo].[_零件工序_工序完成过程情况]
SET [] = @,
[] = ISNULL(@, []),
[] = ISNULL(@, []),
[] = CASE WHEN @ IS NULL THEN [] ELSE CONVERT(DATE, @) END,
[] = ISNULL(@, []),
[] = @Safe计价方式,
[] = @,
[] = CASE WHEN @Safe计价方式 = N'计时' THEN ISNULL([], @) ELSE 0 END,
[] = CASE WHEN ISNUMERIC(@) = 1 THEN CAST(@ AS INT) ELSE [] END,
[] = GETDATE()
WHERE [] = @;
IF ISNULL(@, 0) <> 0
BEGIN
UPDATE [dbo].[_零件工序]
SET [] = ISNULL([], 0) + @
WHERE [] = @;
UPDATE [dbo].[_零件工序_任务分配]
SET [] = ISNULL([], 0) + @
WHERE [] = @
AND [] = @
AND [] = @;
END;
IF @ IS NOT NULL
BEGIN
UPDATE [dbo].[_零件工序]
SET [] = @
WHERE [] = @;
END;
END;
IF @ = 1
BEGIN
UPDATE [dbo].[_整修]
SET [] = CASE WHEN @ IS NULL THEN [] ELSE CONVERT(VARCHAR(20), @, 120) END,
[] = CASE WHEN @ IS NULL THEN [] ELSE CONVERT(VARCHAR(20), @, 120) END,
[] = @
WHERE [id] = @id
AND [] = @;
END;
UPDATE [dbo].[MES_机加工MES_加工完成整修审核表]
SET [] = @,
[] = @,
[] = GETDATE(),
[] = ISNULL(@, N''),
[] = CASE WHEN @ = 1 THEN @ ELSE [] END,
[] = CASE
WHEN @ = 1 AND @ IS NOT NULL THEN @
WHEN @ = 1 AND @ IS NOT NULL THEN @
ELSE []
END,
[] = CASE
WHEN @ = 1 AND @ IS NOT NULL THEN @
WHEN @ = 1 AND @ IS NOT NULL THEN @
ELSE []
END,
[] = CASE WHEN @ = 1 THEN @ ELSE [] END,
[] = CASE WHEN @ = 1 THEN @Safe计价方式 ELSE [] END,
[] = CASE WHEN @ = 1 THEN @ ELSE [] END,
[] = CASE WHEN @ = 1 THEN @ ELSE [] END,
[] = N'Ld',
[] = GETDATE()
WHERE [id] = @
AND [] = N'待审核';
IF @ = 1
COMMIT TRAN;
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
BEGIN
IF ISNULL(@, 1) = 1
ROLLBACK TRAN;
ELSE
ROLLBACK TRAN ;
END;
SELECT N'0' AS result, ERROR_MESSAGE() AS message;
RETURN;
END CATCH;
SELECT N'1' AS result;
END;
GO

View File

@@ -0,0 +1,81 @@
-- 物料入库组件自制件入库模块添加入库单按钮配套测试库脚本
-- 修改人:Ld 修改时间:2026-07-14 09:05:57;
ALTER PROCEDURE [dbo].[_入库单_查询]
@_check bit = 0,
@ nvarchar(50) = null
AS
BEGIN
SET NOCOUNT ON;
-- 修改人:Ld 修改时间:2026-07-14 09:05:57; 返回订单和类型字段,并支持采购/自制件入库单筛选
SELECT
.,
.,
.,
.,
.,
.,
.,
.,
.,
.,
.,
.
FROM dbo._入库单 AS
LEFT JOIN dbo._供应商 AS
ON . = .
WHERE
ISNULL(@_check, 0) = 0
OR (
@ = N'自制'
AND ISNULL(., N'') = N'自制'
)
OR (
@ = N'采购'
AND ISNULL(., N'') <> N'自制'
);
END
GO
IF OBJECT_ID(N'dbo.trg_库存管理_自制件_入库记录_回写入库单', N'TR') IS NOT NULL
DROP TRIGGER dbo.trg_库存管理_自制件_入库记录_回写入库单;
GO
CREATE TRIGGER dbo.trg_库存管理_自制件_入库记录_回写入库单
ON dbo._自制件_入库记录
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON;
-- 修改人:Ld 修改时间:2026-07-14 09:05:57; 自制件完成入库后按订单回写最近一张待入库单状态
;WITH AS (
SELECT
.,
ROW_NUMBER() OVER (
PARTITION BY .
ORDER BY
CASE WHEN CONVERT(float, ISNULL(., 0)) = CONVERT(float, ISNULL(., 0)) THEN 0 ELSE 1 END,
.
) AS
FROM inserted AS
INNER JOIN dbo._零件工艺计划_视图 AS
ON . = .
INNER JOIN dbo._入库单 AS
ON . = CONVERT(nvarchar(100), .)
AND ISNULL(., N'') = N'自制'
AND ISNULL(., 0) = 0
)
UPDATE
SET
. = 1,
. = GETDATE()
FROM dbo._入库单 AS
INNER JOIN AS
ON . = .
WHERE . = 1;
END
GO
-- 修改人:Ld 修改时间:2026-07-14 09:05:57;