clear_biz_production_material_data.sql 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. -- ============================================================
  2. -- 清空「生产物料库」界面相关业务表数据
  3. --
  4. -- 覆盖界面模块:
  5. -- 1. 物料列表 → biz_production_material / biz_production_material_stock_batch
  6. -- 2. 变动记录 → biz_production_material_usage
  7. -- 3. 库存盘点 → biz_production_material_stock_check*
  8. -- 4. 配制单 → biz_production_material_prep / biz_production_material_prep_line
  9. -- 5. 我的物料领用记录 → biz_production_material_usage(按用户过滤,无独立表)
  10. -- 6. 消耗明细 → biz_production_material_usage(prep 关联子记录,无独立表)
  11. --
  12. -- 附加:配置试剂配方 BOM → biz_production_material_formula
  13. --
  14. -- 用法(执行前请先备份):
  15. -- SET @tenant_no = 'zkxw' COLLATE utf8mb4_unicode_ci; -- 仅清空指定租户
  16. -- SET @tenant_no = NULL; -- 清空全部租户(生产环境慎用)
  17. --
  18. -- 说明:
  19. -- - 本脚本为物理 DELETE,包含 del_flag=1 的软删数据
  20. -- - 表间无数据库外键,按业务依赖顺序删除
  21. -- - 生产任务步骤表可能仍保留 requisition_usage_id 快照引用(见文末可选清理)
  22. -- ============================================================
  23. -- 与 biz_production_material* 表 tenant_no 列排序规则一致,避免与 @tenant_no 比较时报 1267
  24. SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci;
  25. SET @tenant_no = 'zkxw' COLLATE utf8mb4_unicode_ci;
  26. START TRANSACTION;
  27. -- ------------------------------------------------------------------
  28. -- 1. 库存盘点(子表 → 主表)
  29. -- ------------------------------------------------------------------
  30. DELETE FROM `biz_production_material_stock_check_unused_line`
  31. WHERE @tenant_no IS NULL OR `tenant_no` = (@tenant_no COLLATE utf8mb4_unicode_ci);
  32. DELETE FROM `biz_production_material_stock_check_batch_line`
  33. WHERE @tenant_no IS NULL OR `tenant_no` = (@tenant_no COLLATE utf8mb4_unicode_ci);
  34. DELETE FROM `biz_production_material_stock_check`
  35. WHERE @tenant_no IS NULL OR `tenant_no` = (@tenant_no COLLATE utf8mb4_unicode_ci);
  36. -- ------------------------------------------------------------------
  37. -- 2. 配制单(明细 → 主表)
  38. -- ------------------------------------------------------------------
  39. DELETE FROM `biz_production_material_prep_line`
  40. WHERE @tenant_no IS NULL OR `tenant_no` = (@tenant_no COLLATE utf8mb4_unicode_ci);
  41. DELETE FROM `biz_production_material_prep`
  42. WHERE @tenant_no IS NULL OR `tenant_no` = (@tenant_no COLLATE utf8mb4_unicode_ci);
  43. -- ------------------------------------------------------------------
  44. -- 3. 变动记录 / 领用记录 / 消耗明细(同一张表)
  45. -- 含 parent_usage_id 自引用,整表删除即可
  46. -- ------------------------------------------------------------------
  47. DELETE FROM `biz_production_material_usage`
  48. WHERE @tenant_no IS NULL OR `tenant_no` = (@tenant_no COLLATE utf8mb4_unicode_ci);
  49. -- ------------------------------------------------------------------
  50. -- 4. 物料入库批次
  51. -- ------------------------------------------------------------------
  52. DELETE FROM `biz_production_material_stock_batch`
  53. WHERE @tenant_no IS NULL OR `tenant_no` = (@tenant_no COLLATE utf8mb4_unicode_ci);
  54. -- ------------------------------------------------------------------
  55. -- 5. 配置试剂配方 BOM
  56. -- ------------------------------------------------------------------
  57. DELETE FROM `biz_production_material_formula`
  58. WHERE @tenant_no IS NULL OR `tenant_no` = (@tenant_no COLLATE utf8mb4_unicode_ci);
  59. -- ------------------------------------------------------------------
  60. -- 6. 物料目录(主数据)
  61. -- ------------------------------------------------------------------
  62. DELETE FROM `biz_production_material`
  63. WHERE @tenant_no IS NULL OR `tenant_no` = (@tenant_no COLLATE utf8mb4_unicode_ci);
  64. COMMIT;
  65. -- ------------------------------------------------------------------
  66. -- 可选:解除生产任务步骤中对已删领用记录的引用(默认注释,按需启用)
  67. -- ------------------------------------------------------------------
  68. -- START TRANSACTION;
  69. -- UPDATE `biz_production_task_step_reagent`
  70. -- SET `requisition_usage_id` = NULL, `update_time` = NOW()
  71. -- WHERE `requisition_usage_id` IS NOT NULL
  72. -- AND (@tenant_no IS NULL OR `tenant_no` = (@tenant_no COLLATE utf8mb4_unicode_ci));
  73. --
  74. -- UPDATE `biz_production_task_step_consumable`
  75. -- SET `requisition_usage_id` = NULL, `update_time` = NOW()
  76. -- WHERE `requisition_usage_id` IS NOT NULL
  77. -- AND (@tenant_no IS NULL OR `tenant_no` = (@tenant_no COLLATE utf8mb4_unicode_ci));
  78. --
  79. -- UPDATE `biz_production_task_step_configured_reagent`
  80. -- SET `requisition_usage_id` = NULL, `update_time` = NOW()
  81. -- WHERE `requisition_usage_id` IS NOT NULL
  82. -- AND (@tenant_no IS NULL OR `tenant_no` = (@tenant_no COLLATE utf8mb4_unicode_ci));
  83. -- COMMIT;
  84. -- ------------------------------------------------------------------
  85. -- 校验:各表剩余行数(按 @tenant_no 过滤统计)
  86. -- ------------------------------------------------------------------
  87. SELECT 'biz_production_material_stock_check_unused_line' AS tbl,
  88. COUNT(*) AS remain_cnt
  89. FROM `biz_production_material_stock_check_unused_line`
  90. WHERE @tenant_no IS NULL OR `tenant_no` = (@tenant_no COLLATE utf8mb4_unicode_ci)
  91. UNION ALL
  92. SELECT 'biz_production_material_stock_check_batch_line', COUNT(*)
  93. FROM `biz_production_material_stock_check_batch_line`
  94. WHERE @tenant_no IS NULL OR `tenant_no` = (@tenant_no COLLATE utf8mb4_unicode_ci)
  95. UNION ALL
  96. SELECT 'biz_production_material_stock_check', COUNT(*)
  97. FROM `biz_production_material_stock_check`
  98. WHERE @tenant_no IS NULL OR `tenant_no` = (@tenant_no COLLATE utf8mb4_unicode_ci)
  99. UNION ALL
  100. SELECT 'biz_production_material_prep_line', COUNT(*)
  101. FROM `biz_production_material_prep_line`
  102. WHERE @tenant_no IS NULL OR `tenant_no` = (@tenant_no COLLATE utf8mb4_unicode_ci)
  103. UNION ALL
  104. SELECT 'biz_production_material_prep', COUNT(*)
  105. FROM `biz_production_material_prep`
  106. WHERE @tenant_no IS NULL OR `tenant_no` = (@tenant_no COLLATE utf8mb4_unicode_ci)
  107. UNION ALL
  108. SELECT 'biz_production_material_usage', COUNT(*)
  109. FROM `biz_production_material_usage`
  110. WHERE @tenant_no IS NULL OR `tenant_no` = (@tenant_no COLLATE utf8mb4_unicode_ci)
  111. UNION ALL
  112. SELECT 'biz_production_material_stock_batch', COUNT(*)
  113. FROM `biz_production_material_stock_batch`
  114. WHERE @tenant_no IS NULL OR `tenant_no` = (@tenant_no COLLATE utf8mb4_unicode_ci)
  115. UNION ALL
  116. SELECT 'biz_production_material_formula', COUNT(*)
  117. FROM `biz_production_material_formula`
  118. WHERE @tenant_no IS NULL OR `tenant_no` = (@tenant_no COLLATE utf8mb4_unicode_ci)
  119. UNION ALL
  120. SELECT 'biz_production_material', COUNT(*)
  121. FROM `biz_production_material`
  122. WHERE @tenant_no IS NULL OR `tenant_no` = (@tenant_no COLLATE utf8mb4_unicode_ci);