Files
xgy-oa/cleanup_zinc_data.sql

153 lines
5.7 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.

SET FOREIGN_KEY_CHECKS = 0;
-- ==============================================
-- 镀锌板块数据清理脚本
-- 涉及仓库ID
-- 1988150263284953089 - 镀锌原料库
-- 1988150323162836993 - 镀锌成品库
-- 1988150487185289217 - 镀锌纵剪分条原料库
-- 1988150380649967617 - 镀锌分条成品库
-- ==============================================
-- 定义镀锌仓库ID集合
SET @zinc_warehouse_ids = '1988150263284953089,1988150323162836993,1988150487185289217,1988150380649967617';
-- ==============================================
-- 0. 先获取所有镀锌相关的实际库区ID包括子级
-- ==============================================
CREATE TEMPORARY TABLE temp_zinc_actual_warehouse_ids AS
WITH RECURSIVE zinc_warehouses AS (
SELECT actual_warehouse_id
FROM `wms_actual_warehouse`
WHERE warehouse_id IN (1988150263284953089, 1988150323162836993, 1988150487185289217, 1988150380649967617)
UNION ALL
SELECT w.actual_warehouse_id
FROM `wms_actual_warehouse` w
INNER JOIN zinc_warehouses zw ON w.parent_id = zw.actual_warehouse_id
)
SELECT actual_warehouse_id FROM zinc_warehouses;
-- ==============================================
-- 1. 删除钢卷相关数据
-- ==============================================
-- 钢卷仓库操作记录
DELETE FROM `wms_coil_warehouse_operation_`
WHERE warehouse_id IN (SELECT actual_warehouse_id FROM temp_zinc_actual_warehouse_ids);
-- 钢卷异常记录
DELETE FROM `wms_coil_abnormal`
WHERE warehouse_id IN (SELECT actual_warehouse_id FROM temp_zinc_actual_warehouse_ids);
-- 钢卷缓存记录
DELETE FROM `wms_coil_cache`
WHERE warehouse_id IN (SELECT actual_warehouse_id FROM temp_zinc_actual_warehouse_ids);
-- 钢卷待处理动作
DELETE FROM `wms_coil_pending_action`
WHERE warehouse_id IN (SELECT actual_warehouse_id FROM temp_zinc_actual_warehouse_ids);
-- 钢卷包装明细
DELETE FROM `wms_coil_packing_detail`
WHERE warehouse_id IN (SELECT actual_warehouse_id FROM temp_zinc_actual_warehouse_ids);
-- 钢卷包装记录
DELETE FROM `wms_coil_packing_record`
WHERE warehouse_id IN (SELECT actual_warehouse_id FROM temp_zinc_actual_warehouse_ids);
-- 钢卷质量复判
DELETE FROM `wms_coil_quality_rejudge`
WHERE warehouse_id IN (SELECT actual_warehouse_id FROM temp_zinc_actual_warehouse_ids);
-- 钢卷统计汇总
DELETE FROM `wms_coil_statistics_summary`
WHERE warehouse_id IN (SELECT actual_warehouse_id FROM temp_zinc_actual_warehouse_ids);
-- ==============================================
-- 2. 删除出入库相关数据
-- ==============================================
-- 先获取涉及镀锌仓库的出入库单ID
CREATE TEMPORARY TABLE temp_zinc_io_ids AS
SELECT DISTINCT stock_io_id
FROM `wms_stock_io_detail`
WHERE warehouse_id IN (SELECT actual_warehouse_id FROM temp_zinc_actual_warehouse_ids)
OR from_warehouse_id IN (SELECT actual_warehouse_id FROM temp_zinc_actual_warehouse_ids);
-- 删除出入库明细
DELETE FROM `wms_stock_io_detail`
WHERE warehouse_id IN (SELECT actual_warehouse_id FROM temp_zinc_actual_warehouse_ids)
OR from_warehouse_id IN (SELECT actual_warehouse_id FROM temp_zinc_actual_warehouse_ids);
-- 删除出入库单
DELETE FROM `wms_stock_io`
WHERE stock_io_id IN (SELECT stock_io_id FROM temp_zinc_io_ids);
-- ==============================================
-- 3. 删除库存相关数据
-- ==============================================
-- 删除库存记录
DELETE FROM `wms_stock`
WHERE warehouse_id IN (1988150263284953089, 1988150323162836993, 1988150487185289217, 1988150380649967617);
-- 删除钢卷物料记录
DELETE FROM `wms_material_coil`
WHERE actual_warehouse_id IN (SELECT actual_warehouse_id FROM temp_zinc_actual_warehouse_ids);
-- 删除库存流水记录
DELETE FROM `wms_stock_log`
WHERE warehouse_id IN (1988150263284953089, 1988150323162836993, 1988150487185289217, 1988150380649967617);
-- ==============================================
-- 4. 删除仓库/库区/库位记录
-- ==============================================
DELETE FROM `wms_warehouse`
WHERE warehouse_id IN (1988150263284953089, 1988150323162836993, 1988150487185289217, 1988150380649967617);
-- 删除实际库区/库位记录(包括所有子级)
DELETE FROM `wms_actual_warehouse`
WHERE actual_warehouse_id IN (SELECT actual_warehouse_id FROM temp_zinc_actual_warehouse_ids);
-- ==============================================
-- 5. 删除发货计划相关数据
-- ==============================================
DELETE FROM `wms_delivery_plan_coil_operate`
WHERE warehouse_id IN (SELECT actual_warehouse_id FROM temp_zinc_actual_warehouse_ids);
-- ==============================================
-- 6. 删除质量检查任务相关数据
-- ==============================================
DELETE FROM `wms_check_task_item`
WHERE check_task_id IN (
SELECT check_task_id FROM `wms_check_task`
WHERE warehouse_id IN (SELECT actual_warehouse_id FROM temp_zinc_actual_warehouse_ids)
);
DELETE FROM `wms_check_task`
WHERE warehouse_id IN (SELECT actual_warehouse_id FROM temp_zinc_actual_warehouse_ids);
-- ==============================================
-- 7. 删除检查任务与钢卷关联数据
-- ==============================================
DELETE FROM `wms_check_task_coil_relation`
WHERE check_task_id IN (
SELECT check_task_id FROM `wms_check_task`
WHERE warehouse_id IN (SELECT actual_warehouse_id FROM temp_zinc_actual_warehouse_ids)
);
-- ==============================================
-- 清理临时表
-- ==============================================
DROP TEMPORARY TABLE IF EXISTS temp_zinc_io_ids;
DROP TEMPORARY TABLE IF EXISTS temp_zinc_actual_warehouse_ids;
SET FOREIGN_KEY_CHECKS = 1;
SELECT '镀锌板块数据清理完成!' AS result;