| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- -- ============================================================
- -- 清空「生产物料库」界面相关业务表数据
- --
- -- 覆盖界面模块:
- -- 1. 物料列表 → biz_production_material / biz_production_material_stock_batch
- -- 2. 变动记录 → biz_production_material_usage
- -- 3. 库存盘点 → biz_production_material_stock_check*
- -- 4. 配制单 → biz_production_material_prep / biz_production_material_prep_line
- -- 5. 我的物料领用记录 → biz_production_material_usage(按用户过滤,无独立表)
- -- 6. 消耗明细 → biz_production_material_usage(prep 关联子记录,无独立表)
- --
- -- 附加:配置试剂配方 BOM → biz_production_material_formula
- --
- -- 用法(执行前请先备份):
- -- SET @tenant_no = 'zkxw' COLLATE utf8mb4_unicode_ci; -- 仅清空指定租户
- -- SET @tenant_no = NULL; -- 清空全部租户(生产环境慎用)
- --
- -- 说明:
- -- - 本脚本为物理 DELETE,包含 del_flag=1 的软删数据
- -- - 表间无数据库外键,按业务依赖顺序删除
- -- - 生产任务步骤表可能仍保留 requisition_usage_id 快照引用(见文末可选清理)
- -- ============================================================
- -- 与 biz_production_material* 表 tenant_no 列排序规则一致,避免与 @tenant_no 比较时报 1267
- SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci;
- SET @tenant_no = 'zkxw' COLLATE utf8mb4_unicode_ci;
- START TRANSACTION;
- -- ------------------------------------------------------------------
- -- 1. 库存盘点(子表 → 主表)
- -- ------------------------------------------------------------------
- DELETE FROM `biz_production_material_stock_check_unused_line`
- WHERE @tenant_no IS NULL OR `tenant_no` = (@tenant_no COLLATE utf8mb4_unicode_ci);
- DELETE FROM `biz_production_material_stock_check_batch_line`
- WHERE @tenant_no IS NULL OR `tenant_no` = (@tenant_no COLLATE utf8mb4_unicode_ci);
- DELETE FROM `biz_production_material_stock_check`
- WHERE @tenant_no IS NULL OR `tenant_no` = (@tenant_no COLLATE utf8mb4_unicode_ci);
- -- ------------------------------------------------------------------
- -- 2. 配制单(明细 → 主表)
- -- ------------------------------------------------------------------
- DELETE FROM `biz_production_material_prep_line`
- WHERE @tenant_no IS NULL OR `tenant_no` = (@tenant_no COLLATE utf8mb4_unicode_ci);
- DELETE FROM `biz_production_material_prep`
- WHERE @tenant_no IS NULL OR `tenant_no` = (@tenant_no COLLATE utf8mb4_unicode_ci);
- -- ------------------------------------------------------------------
- -- 3. 变动记录 / 领用记录 / 消耗明细(同一张表)
- -- 含 parent_usage_id 自引用,整表删除即可
- -- ------------------------------------------------------------------
- DELETE FROM `biz_production_material_usage`
- WHERE @tenant_no IS NULL OR `tenant_no` = (@tenant_no COLLATE utf8mb4_unicode_ci);
- -- ------------------------------------------------------------------
- -- 4. 物料入库批次
- -- ------------------------------------------------------------------
- DELETE FROM `biz_production_material_stock_batch`
- WHERE @tenant_no IS NULL OR `tenant_no` = (@tenant_no COLLATE utf8mb4_unicode_ci);
- -- ------------------------------------------------------------------
- -- 5. 配置试剂配方 BOM
- -- ------------------------------------------------------------------
- DELETE FROM `biz_production_material_formula`
- WHERE @tenant_no IS NULL OR `tenant_no` = (@tenant_no COLLATE utf8mb4_unicode_ci);
- -- ------------------------------------------------------------------
- -- 6. 物料目录(主数据)
- -- ------------------------------------------------------------------
- DELETE FROM `biz_production_material`
- WHERE @tenant_no IS NULL OR `tenant_no` = (@tenant_no COLLATE utf8mb4_unicode_ci);
- COMMIT;
- -- ------------------------------------------------------------------
- -- 可选:解除生产任务步骤中对已删领用记录的引用(默认注释,按需启用)
- -- ------------------------------------------------------------------
- -- START TRANSACTION;
- -- UPDATE `biz_production_task_step_reagent`
- -- SET `requisition_usage_id` = NULL, `update_time` = NOW()
- -- WHERE `requisition_usage_id` IS NOT NULL
- -- AND (@tenant_no IS NULL OR `tenant_no` = (@tenant_no COLLATE utf8mb4_unicode_ci));
- --
- -- UPDATE `biz_production_task_step_consumable`
- -- SET `requisition_usage_id` = NULL, `update_time` = NOW()
- -- WHERE `requisition_usage_id` IS NOT NULL
- -- AND (@tenant_no IS NULL OR `tenant_no` = (@tenant_no COLLATE utf8mb4_unicode_ci));
- --
- -- UPDATE `biz_production_task_step_configured_reagent`
- -- SET `requisition_usage_id` = NULL, `update_time` = NOW()
- -- WHERE `requisition_usage_id` IS NOT NULL
- -- AND (@tenant_no IS NULL OR `tenant_no` = (@tenant_no COLLATE utf8mb4_unicode_ci));
- -- COMMIT;
- -- ------------------------------------------------------------------
- -- 校验:各表剩余行数(按 @tenant_no 过滤统计)
- -- ------------------------------------------------------------------
- SELECT 'biz_production_material_stock_check_unused_line' AS tbl,
- COUNT(*) AS remain_cnt
- FROM `biz_production_material_stock_check_unused_line`
- WHERE @tenant_no IS NULL OR `tenant_no` = (@tenant_no COLLATE utf8mb4_unicode_ci)
- UNION ALL
- SELECT 'biz_production_material_stock_check_batch_line', COUNT(*)
- FROM `biz_production_material_stock_check_batch_line`
- WHERE @tenant_no IS NULL OR `tenant_no` = (@tenant_no COLLATE utf8mb4_unicode_ci)
- UNION ALL
- SELECT 'biz_production_material_stock_check', COUNT(*)
- FROM `biz_production_material_stock_check`
- WHERE @tenant_no IS NULL OR `tenant_no` = (@tenant_no COLLATE utf8mb4_unicode_ci)
- UNION ALL
- SELECT 'biz_production_material_prep_line', COUNT(*)
- FROM `biz_production_material_prep_line`
- WHERE @tenant_no IS NULL OR `tenant_no` = (@tenant_no COLLATE utf8mb4_unicode_ci)
- UNION ALL
- SELECT 'biz_production_material_prep', COUNT(*)
- FROM `biz_production_material_prep`
- WHERE @tenant_no IS NULL OR `tenant_no` = (@tenant_no COLLATE utf8mb4_unicode_ci)
- UNION ALL
- SELECT 'biz_production_material_usage', COUNT(*)
- FROM `biz_production_material_usage`
- WHERE @tenant_no IS NULL OR `tenant_no` = (@tenant_no COLLATE utf8mb4_unicode_ci)
- UNION ALL
- SELECT 'biz_production_material_stock_batch', COUNT(*)
- FROM `biz_production_material_stock_batch`
- WHERE @tenant_no IS NULL OR `tenant_no` = (@tenant_no COLLATE utf8mb4_unicode_ci)
- UNION ALL
- SELECT 'biz_production_material_formula', COUNT(*)
- FROM `biz_production_material_formula`
- WHERE @tenant_no IS NULL OR `tenant_no` = (@tenant_no COLLATE utf8mb4_unicode_ci)
- UNION ALL
- SELECT 'biz_production_material', COUNT(*)
- FROM `biz_production_material`
- WHERE @tenant_no IS NULL OR `tenant_no` = (@tenant_no COLLATE utf8mb4_unicode_ci);
|