fix: 入库成品/半成品/采购编辑其它字段时不再误清空图片——仅显式携带图片字段才更新

This commit is contained in:
yueli
2026-09-03 14:14:24 +08:00
parent 7fe861b4a7
commit c68ffdca0f
3 changed files with 18 additions and 15 deletions

View File

@ -279,6 +279,7 @@ class BuyInboundService:
for k, v in field_mapping.items():
if k in data: setattr(stock, v, data[k])
# ★ 仅当 payload 明确携带 arrival_photo 时才更新(含 [] 表示清空);改其它字段不动图片
if 'arrival_photo' in data:
new_photo_list = data['arrival_photo']
stock.arrival_photo = json.dumps(new_photo_list)
@ -293,11 +294,11 @@ class BuyInboundService:
stock.id,
new_photo_list
)
else:
stock.arrival_photo = None
ImageEmbeddingService.delete_embeddings(
ImageEmbeddingService.MODULE_STOCK_BUY, stock.id
)
else:
# 图片被清空([])时,同步清理该记录的图片向量
ImageEmbeddingService.delete_embeddings(
ImageEmbeddingService.MODULE_STOCK_BUY, stock.id
)
if 'inspection_report' in data: stock.inspection_report = json.dumps(data['inspection_report'])

View File

@ -250,6 +250,7 @@ class ProductInboundService:
for f in fields:
if f in data: setattr(stock, f, data[f])
# ★ 仅当 payload 明确携带 product_photo 时才更新(含 [] 表示清空);改其它字段不动图片
if 'product_photo' in data:
new_photo_list = data['product_photo']
stock.product_photo = json.dumps(new_photo_list)
@ -264,11 +265,11 @@ class ProductInboundService:
stock.id,
new_photo_list
)
else:
stock.product_photo = None
ImageEmbeddingService.delete_embeddings(
ImageEmbeddingService.MODULE_STOCK_PRODUCT, stock.id
)
else:
# 图片被清空([])时,同步清理该记录的图片向量
ImageEmbeddingService.delete_embeddings(
ImageEmbeddingService.MODULE_STOCK_PRODUCT, stock.id
)
if 'quality_report_link' in data:
imgs = data['quality_report_link']
if isinstance(imgs, list): stock.quality_report_link = json.dumps(imgs)

View File

@ -307,6 +307,7 @@ class SemiInboundService:
if frontend_key in data:
setattr(stock, db_attr, data[frontend_key])
# ★ 仅当 payload 明确携带 arrival_photo 时才更新(含 [] 表示清空);改其它字段不动图片
if 'arrival_photo' in data:
new_photo_list = data['arrival_photo']
stock.arrival_photo = json.dumps(new_photo_list)
@ -321,11 +322,11 @@ class SemiInboundService:
stock.id,
new_photo_list
)
else:
stock.arrival_photo = None
ImageEmbeddingService.delete_embeddings(
ImageEmbeddingService.MODULE_STOCK_SEMI, stock.id
)
else:
# 图片被清空([])时,同步清理该记录的图片向量
ImageEmbeddingService.delete_embeddings(
ImageEmbeddingService.MODULE_STOCK_SEMI, stock.id
)
if 'quality_report_link' in data:
imgs = data['quality_report_link']
if isinstance(imgs, list):