更新设备维修、发货、精工车间工序工价/生产审核/工时统计、仓储盘点/库存查询/库位/入库,新增车间派工移动端及SQL脚本
This commit is contained in:
233
sql/inventory_demand_exclude_completed_orders_20260714.sql
Normal file
233
sql/inventory_demand_exclude_completed_orders_20260714.sql
Normal 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
|
||||
322
sql/inventory_demand_performance_optimize_20260714.sql
Normal file
322
sql/inventory_demand_performance_optimize_20260714.sql
Normal 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
|
||||
@@ -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
|
||||
@@ -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
|
||||
101
sql/工时统计_导出null修复_20260717.sql
Normal file
101
sql/工时统计_导出null修复_20260717.sql
Normal 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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
231
sql/生产审核_通过仅更新审核状态.sql
Normal file
231
sql/生产审核_通过仅更新审核状态.sql
Normal 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
|
||||
81
sql/自制件入库_入库单按钮_测试库.sql
Normal file
81
sql/自制件入库_入库单按钮_测试库.sql
Normal 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;
|
||||
Reference in New Issue
Block a user