stocktake_draft 原本没有任何公司维度,导致开启新盘点清空整表时会误删 其他公司的进度,扫码时也无法区分不同公司的同码物料。 - StocktakeDraft 增加 company_name(带索引),to_dict 同步输出 - 新增迁移 add_stocktake_draft_company_name.sql:加列 + (company_name, session_id) 复合索引;存量行保持 NULL(超管仍可见),不做删除 执行: docker exec -i inventory_db psql -U test -d inventory_system < db_migrations/add_stocktake_draft_company_name.sql
50 lines
2.0 KiB
Python
50 lines
2.0 KiB
Python
from app.extensions import db, beijing_time # .material -> .base refactor checked
|
||
from datetime import datetime
|
||
|
||
|
||
class StocktakeDraft(db.Model):
|
||
"""
|
||
盘点草稿表
|
||
临时工作台,盘点时使用,会话结束后清空
|
||
"""
|
||
__tablename__ = 'stocktake_draft'
|
||
|
||
id = db.Column(db.Integer, primary_key=True)
|
||
user_id = db.Column(db.String(100), default='admin')
|
||
# 关联的库存UUID (sku/barcode)
|
||
uuid = db.Column(db.String(100))
|
||
# 实际盘点数量
|
||
quantity = db.Column(db.Numeric(19, 4), default=1)
|
||
scan_time = db.Column(db.DateTime, default=beijing_time)
|
||
# 盘点会话标识 (用于区分不同批次的盘点)
|
||
session_id = db.Column(db.String(100))
|
||
# 关联的库存类型 (stock_buy/stock_semi/stock_product)
|
||
source_table = db.Column(db.String(50))
|
||
# 关联的库存ID
|
||
stock_id = db.Column(db.Integer)
|
||
# 账面库存数量 (记录盘点时的账面数量)
|
||
stock_qty = db.Column(db.Numeric(19, 4), default=0)
|
||
# 差异数量 (实盘 - 账面, 正=盘盈, 负=盘亏)
|
||
diff_qty = db.Column(db.Numeric(19, 4), default=0)
|
||
# 盘点备注(可选)
|
||
remark = db.Column(db.String(255), comment='盘点备注(可选)')
|
||
# 所属公司(多租户隔离键)。取自 material_base.company_name;
|
||
# 超管/跨域用户在未指定公司时为 NULL,表示不做公司过滤。
|
||
company_name = db.Column(db.String(255), index=True, comment='所属公司')
|
||
|
||
def to_dict(self):
|
||
return {
|
||
'id': self.id,
|
||
'user_id': self.user_id,
|
||
'uuid': self.uuid,
|
||
'quantity': float(self.quantity or 1),
|
||
'scan_time': self.scan_time.strftime('%Y-%m-%d %H:%M:%S') if self.scan_time else None,
|
||
'session_id': self.session_id,
|
||
'source_table': self.source_table,
|
||
'stock_id': self.stock_id,
|
||
'stock_qty': float(self.stock_qty or 0),
|
||
'diff_qty': float(self.diff_qty or 0),
|
||
'remark': self.remark,
|
||
'company_name': self.company_name
|
||
}
|