diff --git a/inventory-backend/app/services/bom_service.py b/inventory-backend/app/services/bom_service.py index 2941fb3..d6e0cf0 100644 --- a/inventory-backend/app/services/bom_service.py +++ b/inventory-backend/app/services/bom_service.py @@ -293,7 +293,8 @@ class BomService: BomTable, MaterialBase.name.label('child_name'), MaterialBase.spec_model.label('child_spec') - ).join( + ).outerjoin( + # ★ LEFT JOIN:子件物料被删除后仍返回父件 BOM 结构,避免误报 "BOM 不存在" MaterialBase, BomTable.child_id == MaterialBase.id ).filter( BomTable.bom_no == bom_no @@ -322,7 +323,7 @@ class BomService: for bom, child_name, child_spec in rows: children.append({ 'child_id': bom.child_id, - 'child_name': child_name, + 'child_name': child_name or '[已删除物料]', 'child_spec': child_spec or '', 'dosage': float(bom.dosage) if bom.dosage else 0.0, 'remark': bom.remark or ''