fix: Day2就绪 — 删除硬化+索引补全+全局异常处理
## base_service.py — MaterialBase删除硬化 - 新增 BomTable 引用检查(bom_usage_count) - 物料被BOM引用时禁止删除,提示「请先解除BOM绑定」 ## models/base.py + bom.py — 缺失索引补全 - material_base: company_name + is_enabled 添加 index=True - bom_table: is_enabled 添加 index=True ## __init__.py — 全局异常处理 - @app.errorhandler(ValueError) → 400 + 自定义消息 - @app.errorhandler(404/405) → 标准错误 - @app.errorhandler(Exception) → 500 + 通用消息 堆栈仅记录服务器日志,不泄露到前端
This commit is contained in:
@ -7,6 +7,7 @@ from app.models.inbound.buy import StockBuy
|
||||
from app.models.inbound.semi import StockSemi
|
||||
from app.models.inbound.product import StockProduct
|
||||
# from app.models.inbound.service import StockService
|
||||
from app.models.bom import BomTable
|
||||
from sqlalchemy import or_, and_, func, case, desc, asc, cast, Numeric, text
|
||||
import traceback
|
||||
import json
|
||||
@ -746,8 +747,11 @@ class MaterialBaseService:
|
||||
buy_usage_count = StockBuy.query.filter_by(base_id=m_id).count()
|
||||
semi_usage_count = StockSemi.query.filter_by(base_id=m_id).count()
|
||||
prod_usage_count = StockProduct.query.filter_by(base_id=m_id).count()
|
||||
bom_usage_count = BomTable.query.filter(
|
||||
or_(BomTable.parent_id == m_id, BomTable.child_id == m_id)
|
||||
).count()
|
||||
|
||||
total_usage = buy_usage_count + semi_usage_count + prod_usage_count
|
||||
total_usage = buy_usage_count + semi_usage_count + prod_usage_count + bom_usage_count
|
||||
|
||||
if total_usage > 0:
|
||||
raise ValueError(
|
||||
@ -755,7 +759,8 @@ class MaterialBaseService:
|
||||
f"- 采购库存记录: {buy_usage_count} 条\n"
|
||||
f"- 半成品库存记录: {semi_usage_count} 条\n"
|
||||
f"- 成品库存记录: {prod_usage_count} 条\n"
|
||||
f"请先清理相关库存或仅‘禁用’此条目。"
|
||||
f"- BOM配方引用: {bom_usage_count} 条\n"
|
||||
f"请先清理相关库存/BOM绑定或仅「禁用」此条目。"
|
||||
)
|
||||
|
||||
# 删除时同步清理向量记录
|
||||
|
||||
Reference in New Issue
Block a user