From 6e1e1aa998b83cd22586929de724ff9c5eee1527 Mon Sep 17 00:00:00 2001 From: DXC Date: Tue, 19 May 2026 10:21:50 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=B8=BA=E5=BA=93=E5=AD=98=E4=B8=89?= =?UTF-8?q?=E8=A1=A8/BOM/=E7=89=A9=E6=96=99=E5=9F=BA=E7=A1=80=E8=A1=A8?= =?UTF-8?q?=E8=A1=A5=E5=85=A8=E9=AB=98=E9=A2=91=E6=9F=A5=E8=AF=A2=E5=88=97?= =?UTF-8?q?=E7=B4=A2=E5=BC=95=EF=BC=8C=E9=98=B2=E6=AD=A2=E5=85=A8=E8=A1=A8?= =?UTF-8?q?=E6=89=AB=E6=8F=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- inventory-backend/app/models/base.py | 8 ++++---- inventory-backend/app/models/bom.py | 8 ++++---- inventory-backend/app/models/inbound/buy.py | 10 +++++----- inventory-backend/app/models/inbound/product.py | 10 +++++----- inventory-backend/app/models/inbound/semi.py | 10 +++++----- 5 files changed, 23 insertions(+), 23 deletions(-) diff --git a/inventory-backend/app/models/base.py b/inventory-backend/app/models/base.py index 8607848..e96de80 100644 --- a/inventory-backend/app/models/base.py +++ b/inventory-backend/app/models/base.py @@ -14,11 +14,11 @@ class MaterialBase(db.Model): id = db.Column(db.Integer, primary_key=True) company_name = db.Column(db.String(255), comment='所属公司') - name = db.Column(db.String(255), nullable=False, comment='名称') + name = db.Column(db.String(255), nullable=False, index=True, comment='名称') # ★ 模糊搜索/精确定位高频列 common_name = db.Column(db.String(255), comment='俗名') - category = db.Column(db.String(100), comment='类别') - material_type = db.Column(db.String(100), comment='类型') - spec_model = db.Column(db.String(255), comment='规格型号') + category = db.Column(db.String(100), index=True, comment='类别') # ★ 分类统计/过滤高频列 + material_type = db.Column(db.String(100), index=True, comment='类型') # ★ 类型分组/过滤高频列 + spec_model = db.Column(db.String(255), index=True, comment='规格型号') # ★ 模糊搜索/精确匹配高频列 unit = db.Column(db.String(50), comment='计量单位') # 可见等级 diff --git a/inventory-backend/app/models/bom.py b/inventory-backend/app/models/bom.py index d61c5e8..74a1f02 100644 --- a/inventory-backend/app/models/bom.py +++ b/inventory-backend/app/models/bom.py @@ -5,11 +5,11 @@ class BomTable(db.Model): __tablename__ = 'bom_table' id = db.Column(db.Integer, primary_key=True) - parent_id = db.Column(db.Integer, db.ForeignKey('material_base.id'), nullable=False) - child_id = db.Column(db.Integer, db.ForeignKey('material_base.id'), nullable=False) + parent_id = db.Column(db.Integer, db.ForeignKey('material_base.id'), nullable=False, index=True) # ★ 父子件关联高频列 + child_id = db.Column(db.Integer, db.ForeignKey('material_base.id'), nullable=False, index=True) # ★ 子件过滤高频列 - bom_no = db.Column(db.String(100), nullable=False, comment='BOM编号') - version = db.Column(db.String(50), nullable=False, default='V1.0', comment='版本') + bom_no = db.Column(db.String(100), nullable=False, index=True, comment='BOM编号') # ★ Redis 缓存 Key + 列表查询核心列 + version = db.Column(db.String(50), nullable=False, default='V1.0', index=True, comment='版本') # ★ 配合 bom_no 做唯一性约束 dosage = db.Column(db.Numeric(19, 4), comment='个数') loss_rate = db.Column(db.Numeric(5, 2), comment='损耗率%', default=0, nullable=True) diff --git a/inventory-backend/app/models/inbound/buy.py b/inventory-backend/app/models/inbound/buy.py index 866a447..e323937 100644 --- a/inventory-backend/app/models/inbound/buy.py +++ b/inventory-backend/app/models/inbound/buy.py @@ -13,19 +13,19 @@ class StockBuy(db.Model): __tablename__ = 'stock_buy' id = db.Column(db.Integer, primary_key=True) - base_id = db.Column(db.Integer, db.ForeignKey('material_base.id'), nullable=False) + base_id = db.Column(db.Integer, db.ForeignKey('material_base.id'), nullable=False, index=True) # ★ 批量 IN 查询高频列 # 身份标识 - sku = db.Column(db.String(100)) + sku = db.Column(db.String(100), index=True) # ★ 条码/SKU 快速定位 in_date = db.Column(db.DateTime) - barcode = db.Column(db.String(100)) + barcode = db.Column(db.String(100), index=True) # ★ 条码扫码查询高频列 serial_number = db.Column(db.String(100)) batch_number = db.Column(db.String(100)) # 状态 - status = db.Column(db.String(50), default='在库') + status = db.Column(db.String(50), index=True) # ★ 在库/锁定 过滤条件 inspection_status = db.Column(db.String(50)) - warehouse_location = db.Column(db.String(100)) + warehouse_location = db.Column(db.String(100), index=True) # ★ 按库位分组/过滤 # 数量 in_quantity = db.Column(db.Numeric(19, 4), default=0) diff --git a/inventory-backend/app/models/inbound/product.py b/inventory-backend/app/models/inbound/product.py index d15cd24..bc77ee9 100644 --- a/inventory-backend/app/models/inbound/product.py +++ b/inventory-backend/app/models/inbound/product.py @@ -12,12 +12,12 @@ class StockProduct(db.Model): __tablename__ = 'stock_product' id = db.Column(db.Integer, primary_key=True) - base_id = db.Column(db.Integer, db.ForeignKey('material_base.id'), nullable=False) + base_id = db.Column(db.Integer, db.ForeignKey('material_base.id'), nullable=False, index=True) # ★ 批量 IN 查询高频列 # 身份标识 - sku = db.Column(db.String(100)) + sku = db.Column(db.String(100), index=True) # ★ SKU 快速定位 production_date = db.Column(db.DateTime) - barcode = db.Column(db.String(100)) + barcode = db.Column(db.String(100), index=True) # ★ 条码扫码查询高频列 serial_number = db.Column(db.String(100)) # 数量 @@ -26,8 +26,8 @@ class StockProduct(db.Model): available_quantity = db.Column(db.Numeric(19, 4), default=0) # 状态与位置 - status = db.Column(db.String(50)) - warehouse_location = db.Column(db.String(100)) + status = db.Column(db.String(50), index=True) # ★ 在库/锁定 过滤条件 + warehouse_location = db.Column(db.String(100), index=True) # ★ 按库位分组/过滤 # 生产与成本 bom_code = db.Column('bom_id', db.String(100)) diff --git a/inventory-backend/app/models/inbound/semi.py b/inventory-backend/app/models/inbound/semi.py index 92794a9..c1942dd 100644 --- a/inventory-backend/app/models/inbound/semi.py +++ b/inventory-backend/app/models/inbound/semi.py @@ -11,11 +11,11 @@ class StockSemi(db.Model): __tablename__ = 'stock_semi' id = db.Column(db.Integer, primary_key=True) - base_id = db.Column(db.Integer, db.ForeignKey('material_base.id'), nullable=False) + base_id = db.Column(db.Integer, db.ForeignKey('material_base.id'), nullable=False, index=True) # ★ 批量 IN 查询高频列 - sku = db.Column(db.String(100)) + sku = db.Column(db.String(100), index=True) # ★ SKU 快速定位 production_date = db.Column(db.DateTime) - barcode = db.Column(db.String(100)) + barcode = db.Column(db.String(100), index=True) # ★ 条码扫码查询高频列 serial_number = db.Column(db.String(100)) batch_number = db.Column(db.String(100)) @@ -25,8 +25,8 @@ class StockSemi(db.Model): available_quantity = db.Column(db.Numeric(19, 4), default=0) # 状态与位置 - status = db.Column(db.String(50)) - warehouse_location = db.Column(db.String(100)) + status = db.Column(db.String(50), index=True) # ★ 在库/锁定 过滤条件 + warehouse_location = db.Column(db.String(100), index=True) # ★ 按库位分组/过滤 # 半成品特有字段 bom_code = db.Column('bom_id', db.String(100))