fix(bom): BOM 详情查询改为 LEFT JOIN,子件物料被删后仍返回父件结构
- get_bom_detail 使用 outerjoin 替代 join - 子件物料被删除后 child_name 显示 [已删除物料] 而非误报 BOM 不存在 - 修复按 BOM 出库时因子件删除导致 404 BOM 不存在
This commit is contained in:
@ -293,7 +293,8 @@ class BomService:
|
|||||||
BomTable,
|
BomTable,
|
||||||
MaterialBase.name.label('child_name'),
|
MaterialBase.name.label('child_name'),
|
||||||
MaterialBase.spec_model.label('child_spec')
|
MaterialBase.spec_model.label('child_spec')
|
||||||
).join(
|
).outerjoin(
|
||||||
|
# ★ LEFT JOIN:子件物料被删除后仍返回父件 BOM 结构,避免误报 "BOM 不存在"
|
||||||
MaterialBase, BomTable.child_id == MaterialBase.id
|
MaterialBase, BomTable.child_id == MaterialBase.id
|
||||||
).filter(
|
).filter(
|
||||||
BomTable.bom_no == bom_no
|
BomTable.bom_no == bom_no
|
||||||
@ -322,7 +323,7 @@ class BomService:
|
|||||||
for bom, child_name, child_spec in rows:
|
for bom, child_name, child_spec in rows:
|
||||||
children.append({
|
children.append({
|
||||||
'child_id': bom.child_id,
|
'child_id': bom.child_id,
|
||||||
'child_name': child_name,
|
'child_name': child_name or '[已删除物料]',
|
||||||
'child_spec': child_spec or '',
|
'child_spec': child_spec or '',
|
||||||
'dosage': float(bom.dosage) if bom.dosage else 0.0,
|
'dosage': float(bom.dosage) if bom.dosage else 0.0,
|
||||||
'remark': bom.remark or ''
|
'remark': bom.remark or ''
|
||||||
|
|||||||
Reference in New Issue
Block a user