feat: BOM 子件展示自制件 BOM 版本号——子件列表与出库/借库 BOM 清单打印均显示

This commit is contained in:
yueli
2026-09-07 18:01:16 +08:00
parent d182af7d2a
commit 3dd8458de0
4 changed files with 37 additions and 11 deletions

View File

@ -320,13 +320,28 @@ class BomService:
parent_material = MaterialBase.query.get(parent_id)
children = []
# ★ 子件若本身是"自制件"(也是某 BOM 的父件),带出它的 BOM 编号与最新版本号(仅展示识别用)
child_self_bom = {}
self_ids = [bom.child_id for bom, _, _ in rows if bom.child_id]
if self_ids:
_self_q = (db.session.query(BomTable.parent_id, BomTable.bom_no, BomTable.version)
.filter(BomTable.parent_id.in_(self_ids))
.order_by(BomTable.parent_id, BomTable.id.desc()).all())
for _pid, _no, _ver in _self_q:
if _pid not in child_self_bom:
child_self_bom[_pid] = {'bom_no': _no, 'version': _ver}
for bom, child_name, child_spec in rows:
_ref = child_self_bom.get(bom.child_id) or {}
children.append({
'child_id': bom.child_id,
'child_name': child_name or '[已删除物料]',
'child_spec': child_spec or '',
'dosage': float(bom.dosage) if bom.dosage else 0.0,
'remark': bom.remark or ''
'remark': bom.remark or '',
'child_bom_no': _ref.get('bom_no', ''),
'child_bom_version': _ref.get('version', '')
})
result = {