Files
JY1.0/sql/repair_WX_20260730001_002.sql

117 lines
6.5 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- 修复 WX-20260730001 / WX-20260730002 调拨明细归属异常
-- 修改人:Ld 修改时间:2026-07-31 15:56:00;
SET NOCOUNT ON;
SET XACT_ABORT ON;
-- 修复前快照,便于回溯。修改人:Ld 修改时间:2026-07-31 15:56:00;
IF OBJECT_ID(N'dbo.GPT_调拨修复备份_20260731_1556_单', N'U') IS NULL
SELECT * INTO dbo.GPT_调拨修复备份_20260731_1556_单 FROM dbo.车间生产管理_外协调拨单 WHERE 外协调拨单流水号 IN (2369,2370);
IF OBJECT_ID(N'dbo.GPT_调拨修复备份_20260731_1556_明细', N'U') IS NULL
SELECT * INTO dbo.GPT_调拨修复备份_20260731_1556_明细 FROM dbo.车间生产管理_外协调拨单明细 WHERE 外协调拨单流水号 IN (2369,2370) OR 外协调拨单明细流水号 IN (6325,6326,6327,6328,6329);
IF OBJECT_ID(N'dbo.GPT_调拨修复备份_20260731_1556_工序', N'U') IS NULL
SELECT * INTO dbo.GPT_调拨修复备份_20260731_1556_工序 FROM dbo.车间生产管理_外协调拨单明细_工序 WHERE 外协调拨单流水号 IN (2369,2370) OR 外协调拨单明细流水号 IN (6325,6326,6327,6328,6329) OR 工序流水号 IN (108349,81720,30967);
IF OBJECT_ID(N'dbo.GPT_调拨修复备份_20260731_1556_零件工序', N'U') IS NULL
SELECT * INTO dbo.GPT_调拨修复备份_20260731_1556_零件工序 FROM dbo.车间生产管理工艺_零件工序 WHERE 工序流水号 IN (108349,81720,30967);
IF OBJECT_ID(N'dbo.GPT_调拨修复备份_20260731_1556_任务分配', N'U') IS NULL
SELECT * INTO dbo.GPT_调拨修复备份_20260731_1556_任务分配 FROM dbo.车间生产管理工艺_零件工序_任务分配 WHERE 工艺任务流水号 IN (39177,36624,38805) OR 工序流水号 IN (108349,81720,30967);
BEGIN TRAN;
IF NOT EXISTS (SELECT 1 FROM dbo.车间生产管理_外协调拨单 WHERE 外协调拨单流水号 = 2369 AND 调拨单号 = N'WX-20260730001')
BEGIN
RAISERROR(N'未找到 WX-20260730001 对应流水号 2369,停止修复', 16, 1);
ROLLBACK TRAN;
RETURN;
END
IF NOT EXISTS (SELECT 1 FROM dbo.车间生产管理_外协调拨单 WHERE 外协调拨单流水号 = 2370 AND 调拨单号 = N'WX-20260730002')
BEGIN
RAISERROR(N'未找到 WX-20260730002 对应流水号 2370,停止修复', 16, 1);
ROLLBACK TRAN;
RETURN;
END
IF NOT EXISTS (SELECT 1 FROM dbo.车间生产管理_外协调拨单明细 WHERE 外协调拨单明细流水号 = 6328 AND 外协调拨单流水号 = 2369 AND 工艺计划流水号 = 1724 AND 外协数量 = 1)
BEGIN
RAISERROR(N'未找到待移动明细 6328,停止修复', 16, 1);
ROLLBACK TRAN;
RETURN;
END
IF EXISTS (SELECT 1 FROM dbo.车间生产管理_外协调拨单明细 WHERE 外协调拨单明细流水号 IN (6325,6326))
BEGIN
RAISERROR(N'原明细流水号 6325/6326 已存在,停止修复', 16, 1);
ROLLBACK TRAN;
RETURN;
END
IF NOT EXISTS (SELECT 1 FROM dbo.车间生产管理_外协调拨单明细 WHERE 外协调拨单明细流水号 = 6329 AND 外协调拨单流水号 = 2369 AND 工艺计划流水号 = 4313 AND 外协数量 = 100)
BEGIN
RAISERROR(N'未找到待替换明细 6329,停止修复', 16, 1);
ROLLBACK TRAN;
RETURN;
END
-- 将本应属于 WX-20260730002 的明细移到新单。修改人:Ld 修改时间:2026-07-31 15:56:00;
UPDATE dbo.车间生产管理_外协调拨单明细
SET 外协调拨单流水号 = 2370
WHERE 外协调拨单明细流水号 = 6328;
UPDATE dbo.车间生产管理_外协调拨单明细_工序
SET 外协调拨单流水号 = 2370
WHERE 外协调拨单明细流水号 = 6328;
-- 恢复 WX-20260730001 原明细流水号,避免保留误补流水号。修改人:Ld 修改时间:2026-07-31 15:56:00;
DELETE FROM dbo.车间生产管理_外协调拨单明细_工序
WHERE 外协调拨单明细流水号 = 6329;
DELETE FROM dbo.车间生产管理_外协调拨单明细
WHERE 外协调拨单明细流水号 = 6329;
SET IDENTITY_INSERT dbo.车间生产管理_外协调拨单明细 ON;
INSERT INTO dbo.车间生产管理_外协调拨单明细
(外协调拨单明细流水号, 外协调拨单流水号, 工艺计划流水号, 外协价格, 外协数量, 到货状态, 到货数量, 操作日期, 到货时间, 备注)
VALUES
(6325, 2369, 5710, NULL, 171, 0, NULL, '2026-07-30T10:48:58.617', NULL, NULL),
(6326, 2369, 4313, NULL, 100, 0, NULL, '2026-07-30T10:49:29.737', NULL, NULL);
SET IDENTITY_INSERT dbo.车间生产管理_外协调拨单明细 OFF;
SET IDENTITY_INSERT dbo.车间生产管理_外协调拨单明细_工序 ON;
INSERT INTO dbo.车间生产管理_外协调拨单明细_工序
(id, 外协调拨单流水号, 外协调拨单明细流水号, 工序流水号, 工序工时, 操作日期)
VALUES
(6325, 2369, 6325, 108349, NULL, '2026-07-30T10:48:58.617'),
(6326, 2369, 6326, 81720, NULL, '2026-07-30T10:49:29.737');
SET IDENTITY_INSERT dbo.车间生产管理_外协调拨单明细_工序 OFF;
-- 修正工序和任务选中/加工状态,不重复累加已外协数。修改人:Ld 修改时间:2026-07-31 15:56:00;
UPDATE dbo.车间生产管理工艺_零件工序
SET 是否选进外协单中 = CASE WHEN 工序流水号 = 30967 THEN 1 ELSE 0 END
WHERE 工序流水号 IN (108349,81720,30967);
UPDATE dbo.车间生产管理工艺_零件工序_任务分配
SET 是否加工中 = 1
WHERE 工艺任务流水号 IN (39177,36624,38805);
COMMIT TRAN;
SELECT N'修复完成' AS 结果;
SELECT o.外协调拨单流水号,o.调拨单号,o.单据状态,o.操作日期,o.备注
FROM dbo.车间生产管理_外协调拨单 o
WHERE o.外协调拨单流水号 IN (2369,2370)
ORDER BY o.外协调拨单流水号;
SELECT d.外协调拨单明细流水号,d.外协调拨单流水号,o.调拨单号,d.工艺计划流水号,g.工序流水号,d.外协数量,d.到货状态,d.到货数量,d.操作日期,d.到货时间,d.备注
FROM dbo.车间生产管理_外协调拨单明细 d
LEFT JOIN dbo.车间生产管理_外协调拨单 o ON d.外协调拨单流水号 = o.外协调拨单流水号
LEFT JOIN dbo.车间生产管理_外协调拨单明细_工序 g ON d.外协调拨单明细流水号 = g.外协调拨单明细流水号
WHERE d.外协调拨单流水号 IN (2369,2370)
ORDER BY d.外协调拨单流水号,d.外协调拨单明细流水号;
SELECT 工序流水号,工艺计划流水号,是否选进外协单中,已外协数,外协数量,到货数量,工序状态
FROM dbo.车间生产管理工艺_零件工序
WHERE 工序流水号 IN (108349,81720,30967)
ORDER BY 工序流水号;
SELECT 工艺任务流水号,工序流水号,人员编号,数量,已领数量,是否加工中
FROM dbo.车间生产管理工艺_零件工序_任务分配
WHERE 工艺任务流水号 IN (39177,36624,38805)
ORDER BY 工艺任务流水号;