Files
KCGL/inventory-backend/app/models/inbound/stocktake.py
yueli 6586d3cb75 feat(stocktake): 盘点草稿表增加公司隔离字段
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
2026-09-11 11:33:04 +08:00

50 lines
2.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
}