成品图像上传初实现,支持多图,检测报告的图片以及链接上传
This commit is contained in:
@ -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 ""
|
||||
}
|
||||
Reference in New Issue
Block a user