成品图像上传初实现,支持多图,检测报告的图片以及链接上传

This commit is contained in:
dxc
2026-02-03 13:20:17 +08:00
parent d084bd29dd
commit 3257973820
3 changed files with 516 additions and 420 deletions

View File

@ -1,5 +1,6 @@
# app/models/inbound/product.py
from app.extensions import db
import json
class StockProduct(db.Model):
@ -17,7 +18,6 @@ class StockProduct(db.Model):
production_date = db.Column(db.Date)
barcode = db.Column(db.String(100))
serial_number = db.Column(db.String(100))
# Note: 成品通常按SN管理SQL定义无 batch_number
# 数量
in_quantity = db.Column(db.Numeric(19, 4), default=0)
@ -29,27 +29,32 @@ class StockProduct(db.Model):
warehouse_location = db.Column(db.String(100))
# 生产与成本
bom_code = db.Column('bom_id', db.String(100)) # 映射 SQL: bom_id
bom_code = db.Column('bom_id', db.String(100))
bom_version = db.Column(db.String(50))
work_order_code = db.Column('work_order_id', db.String(100)) # 映射 SQL: work_order_id
work_order_code = db.Column('work_order_id', db.String(100))
raw_material_cost = db.Column(db.Numeric(19, 4), default=0)
manual_cost = db.Column(db.Numeric(19, 4), default=0)
production_manager = db.Column('producer_name', db.String(100)) # 映射 SQL: producer_name
production_manager = db.Column('producer_name', db.String(100))
production_time_range = db.Column(db.String(255))
# 质量与链接
# 质量与检测 (均为 JSON 存储)
quality_status = db.Column(db.String(50))
quality_report_link = db.Column(db.Text)
detail_link = db.Column(db.Text)
quality_report_link = db.Column(db.Text) # 质量报告
inspection_report_link = db.Column(db.Text) # 检测报告(旧字段升级为JSON)
# 成品特有字段
# [新增] 成品实拍图 (JSON 存储)
product_photo = db.Column(db.Text)
detail_link = db.Column(db.Text)
remark = db.Column(db.Text)
# 销售相关
sale_price = db.Column(db.Numeric(19, 4), default=0)
inspection_report_link = db.Column(db.Text)
order_id = db.Column(db.String(100))
# [新增] 全局打印流水号 (用于跨表连续编号,对应 Sequence: global_print_seq)
# 全局打印流水号
global_print_id = db.Column(db.Integer)
# 关系定义
@ -60,6 +65,17 @@ class StockProduct(db.Model):
man_val = float(self.manual_cost or 0)
unit_total = raw_val + man_val
# 辅助解析函数
def parse_img_list(json_str):
if not json_str:
return []
try:
if not json_str.startswith('['):
return [json_str] # 兼容旧数据单链接
return json.loads(json_str)
except:
return []
return {
'id': self.id,
'base_id': self.base_id,
@ -97,14 +113,18 @@ class StockProduct(db.Model):
1] if self.production_time_range and ' ~ ' in self.production_time_range else '',
'quality_status': self.quality_status,
'quality_report_link': self.quality_report_link,
# [核心修改] 三个图片/链接字段全部解析为数组
'product_photo': parse_img_list(self.product_photo),
'quality_report_link': parse_img_list(self.quality_report_link),
'inspection_report_link': parse_img_list(self.inspection_report_link),
'detail_link': self.detail_link,
'remark': self.remark,
'sale_price': float(self.sale_price or 0),
'inspection_report_link': self.inspection_report_link,
'order_id': self.order_id,
# [新增] 返回全局打印ID及其格式化字符串
'global_print_id': self.global_print_id,
'global_print_id_str': f"{self.global_print_id:010d}" if self.global_print_id else ""
}