修改是基础信息内容展示库存数和可用数

This commit is contained in:
dxc
2026-02-11 10:12:10 +08:00
parent 64efbb97d6
commit 706476d421
4 changed files with 135 additions and 16 deletions

View File

@ -1,4 +1,5 @@
from app import db
# inventory-backend/app/models/inbound/service.py
from app.extensions import db
from datetime import datetime
@ -10,24 +11,43 @@ class StockService(db.Model):
__tablename__ = 'stock_service'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
# 关联基础物料信息
# 注意:这里使用了 db.ForeignKey 指向 material_base 表的 id
base_id = db.Column(db.Integer, db.ForeignKey('material_base.id'), nullable=False)
# 系统生成的SKU格式 SRV-YYYYMMDD-XXXX
sku = db.Column(db.String(64), unique=True, nullable=False)
# 售价
sale_price = db.Column(db.Numeric(10, 2), nullable=False)
# 服务商名称
provider_name = db.Column(db.String(255), nullable=False, default='')
# 服务详情/简介
description = db.Column(db.Text, default='')
# ==========================================================================
# 【新增】库存数量字段
# 上一轮的 Service 代码中尝试累加这两个字段,如果模型里没有,程序会报错
# ==========================================================================
actual_quantity = db.Column(db.Integer, default=0, nullable=False, comment='库存数量')
available_quantity = db.Column(db.Integer, default=0, nullable=False, comment='可用数量')
# 创建时间与更新时间
created_at = db.Column(db.DateTime, default=datetime.now, nullable=False)
updated_at = db.Column(db.DateTime, default=datetime.now, onupdate=datetime.now, nullable=False)
# 软删除标志
is_deleted = db.Column(db.Boolean, default=False, nullable=False)
# 关系(可选)
material_base = db.relationship('MaterialBase', backref='service_stocks', lazy='joined')
# ==========================================================================
# 【修复】关系映射
# 1. 属性名必须叫 'base',因为 MaterialBase 里定义了 back_populates='base'
# 2. back_populates 指向 MaterialBase 里的属性名 'stock_services'
# ==========================================================================
base = db.relationship('MaterialBase', back_populates='stock_services', lazy='joined')
def to_dict(self):
"""转为字典,用于 API 响应"""
@ -38,9 +58,13 @@ class StockService(db.Model):
'sale_price': float(self.sale_price) if self.sale_price is not None else 0,
'provider_name': self.provider_name,
'description': self.description,
'actual_quantity': self.actual_quantity, # 返回库存数
'available_quantity': self.available_quantity, # 返回可用数
'created_at': self.created_at.strftime('%Y-%m-%d %H:%M:%S') if self.created_at else None,
'updated_at': self.updated_at.strftime('%Y-%m-%d %H:%M:%S') if self.updated_at else None,
'material_name': self.material_base.name if self.material_base else None,
'spec_model': self.material_base.spec_model if self.material_base else None,
'unit': self.material_base.unit if self.material_base else None,
}
# 注意:这里通过 self.base 访问关联对象,而不是 self.material_base
'material_name': self.base.name if self.base else None,
'spec_model': self.base.spec_model if self.base else None,
'unit': self.base.unit if self.base else None,
}