feat: add material spec to BOM responses and UI

Co-authored-by: aider (openai/DeepSeek-V3.2-Thinking) <aider@aider.chat>
This commit is contained in:
dxc
2026-02-12 10:10:37 +08:00
parent 6e5df70ee6
commit b93a565c82
2 changed files with 20 additions and 7 deletions

View File

@ -34,7 +34,8 @@ class BomService:
subq.c.parent_id,
subq.c.version,
subq.c.child_count,
MaterialBase.name.label('parent_name')
MaterialBase.name.label('parent_name'),
MaterialBase.spec_model.label('parent_spec')
).join(MaterialBase, subq.c.parent_id == MaterialBase.id)
results = query.all()
@ -42,6 +43,7 @@ class BomService:
'bom_no': row.bom_no,
'parent_id': row.parent_id,
'parent_name': row.parent_name,
'parent_spec': row.parent_spec or '',
'version': row.version,
'child_count': row.child_count
} for row in results]
@ -54,7 +56,8 @@ class BomService:
"""
rows = db.session.query(
BomTable,
MaterialBase.name.label('child_name')
MaterialBase.name.label('child_name'),
MaterialBase.spec_model.label('child_spec')
).join(
MaterialBase, BomTable.child_id == MaterialBase.id
).filter(
@ -66,14 +69,21 @@ class BomService:
first = rows[0]
parent_id = first.BomTable.parent_id
parent_name = db.session.query(MaterialBase.name)\
.filter(MaterialBase.id == parent_id).scalar() or ''
# 获取父件的名称和规格
parent_material = MaterialBase.query.filter(MaterialBase.id == parent_id).first()
if parent_material:
parent_name = parent_material.name
parent_spec = parent_material.spec_model or ''
else:
parent_name = ''
parent_spec = ''
children = []
for bom, child_name in rows:
for bom, child_name, child_spec in rows:
children.append({
'child_id': bom.child_id,
'child_name': child_name,
'child_spec': child_spec or '',
'dosage': float(bom.dosage) if bom.dosage else 0.0,
'remark': bom.remark or ''
})
@ -82,6 +92,7 @@ class BomService:
'bom_no': bom_no,
'parent_id': parent_id,
'parent_name': parent_name,
'parent_spec': parent_spec,
'version': first.BomTable.version,
'children': children
}