feat(bom): 自制件子件选版本落库/强校验 + 独立启停 + 状态筛选

- save_bom 落库 child_bom_no/child_bom_version;自制件必选且须属于启用未归档配方集,外购件置空;跨版本查重纳入引用版本
- get_bom_detail 改为读存储列,空则回退最新启用配方;候选/校验/回退读取均排除 is_archived
- 新增 GET /bom/self-bom-versions(子件候选版本);新增 POST /bom/status 独立启停(update_enabled 清缓存)
- 草稿链路 save_draft/get_draft_detail/publish 持久化引用版本
- get_bom_list/get_bom_summary 支持 status(enabled/disabled) 过滤
This commit is contained in:
yueli
2026-09-08 10:14:44 +08:00
parent 6250fa94cb
commit 91fb6c1a03
5 changed files with 206 additions and 26 deletions

View File

@ -33,7 +33,9 @@ class BomDraftService:
child_id=child.get('child_id'),
dosage=child.get('dosage', 0),
loss_rate=child.get('loss_rate', 0),
remark=child.get('remark', '')
remark=child.get('remark', ''),
child_bom_no=child.get('child_bom_no') or None,
child_bom_version=child.get('child_bom_version') or None
)
db.session.add(draft)
@ -75,6 +77,8 @@ class BomDraftService:
'dosage': float(draft.dosage) if draft.dosage else 0.0,
'loss_rate': float(draft.loss_rate) if draft.loss_rate else 0.0,
'remark': draft.remark or '',
'child_bom_no': draft.child_bom_no or '',
'child_bom_version': draft.child_bom_version or '',
})
return {
@ -126,6 +130,8 @@ class BomDraftService:
'child_id': child['child_id'],
'dosage': child['dosage'],
'remark': child.get('remark', ''),
'child_bom_no': child.get('child_bom_no') or '',
'child_bom_version': child.get('child_bom_version') or '',
}
for child in children
],