fix(bom): 草稿链路透传 BOM 级备注,发布后不丢失
save_draft / get_draft_detail / publish_draft 三处此前都不带 BOM 级备注, 暂存后再恢复、或草稿直接发布,备注都会丢。 同时给 /save 的权限清洗表补上顶级 remark(与子件级 remark 共用 bom_manage:remark 权限码)。 注意:运行时真正生效的草稿入口是 bom.py:521 的 /draft/save。 app/api/v1/bom_draft.py 里的 bom_draft_bp 从未在 app/__init__.py 注册, 是死代码(两份都调同一个 BomDraftService,本次两处都改以保持同步)。 实测(临时 BOM,验证后已清理): 草稿暂存带备注 → 读回 '草稿BOM级备注-测试' 草稿 → 发布 → 正式表 读回 '草稿备注-发布后应保留'
This commit is contained in:
@ -198,6 +198,8 @@ def save_bom():
|
||||
'version': 'bom_manage:version',
|
||||
'is_enabled': 'bom_manage:status',
|
||||
'bom_no': 'bom_manage:bom_no',
|
||||
# ★ 顶级 remark = BOM 级备注,与子件级 remark 共用同一权限码
|
||||
'remark': 'bom_manage:remark',
|
||||
}
|
||||
# 清洗顶级字段
|
||||
for field in list(req_data.keys()):
|
||||
@ -531,7 +533,12 @@ def save_draft():
|
||||
if not parent_id:
|
||||
return jsonify({'code': 400, 'msg': 'parent_id 不能为空'}), 400
|
||||
|
||||
bom_draft_no = BomDraftService.save_draft(bom_no, version, parent_id, children)
|
||||
# ★ 这是运行时真正生效的草稿入口(bom_draft.py 的 bom_draft_bp 未在
|
||||
# app/__init__.py 注册,是死代码),BOM 级备注必须在这里透传
|
||||
bom_draft_no = BomDraftService.save_draft(
|
||||
bom_no, version, parent_id, children,
|
||||
bom_remark=data.get('remark', '') or ''
|
||||
)
|
||||
return jsonify({'code': 200, 'msg': '草稿暂存成功', 'data': {'bom_no': bom_draft_no}})
|
||||
|
||||
|
||||
|
||||
@ -10,7 +10,7 @@ logger = logging.getLogger(__name__)
|
||||
class BomDraftService:
|
||||
|
||||
@staticmethod
|
||||
def save_draft(bom_no, version, parent_id, children):
|
||||
def save_draft(bom_no, version, parent_id, children, bom_remark=''):
|
||||
try:
|
||||
# 1. 删除旧草稿
|
||||
old = BomDraftTable.query.filter_by(bom_no=bom_no, version=version).all()
|
||||
@ -22,7 +22,8 @@ class BomDraftService:
|
||||
if not children:
|
||||
dummy_draft = BomDraftTable(
|
||||
bom_no=bom_no, version=version, parent_id=parent_id,
|
||||
child_id=None, dosage=0, loss_rate=0, remark=''
|
||||
child_id=None, dosage=0, loss_rate=0, remark='',
|
||||
bom_remark=bom_remark
|
||||
)
|
||||
db.session.add(dummy_draft)
|
||||
else:
|
||||
@ -34,6 +35,7 @@ class BomDraftService:
|
||||
dosage=child.get('dosage', 0),
|
||||
loss_rate=child.get('loss_rate', 0),
|
||||
remark=child.get('remark', ''),
|
||||
bom_remark=bom_remark,
|
||||
child_bom_no=child.get('child_bom_no') or None,
|
||||
child_bom_version=child.get('child_bom_version') or None
|
||||
)
|
||||
@ -87,6 +89,7 @@ class BomDraftService:
|
||||
'parent_id': parent_id,
|
||||
'parent_name': parent_material.name if parent_material else '',
|
||||
'parent_spec': parent_material.spec_model if parent_material else '',
|
||||
'remark': first.bom_remark or '', # ★ BOM 级备注
|
||||
'children': children,
|
||||
}
|
||||
|
||||
@ -125,6 +128,8 @@ class BomDraftService:
|
||||
'bom_no': bom_no,
|
||||
'version': version,
|
||||
'parent_id': draft['parent_id'],
|
||||
# ★ 草稿的 BOM 级备注要带到正式表,否则发布即丢失
|
||||
'remark': draft.get('remark', '') or '',
|
||||
'children': [
|
||||
{
|
||||
'child_id': child['child_id'],
|
||||
|
||||
Reference in New Issue
Block a user