From b40aa3ab90a4c4c643d4fd4ee553c1a396348053 Mon Sep 17 00:00:00 2001 From: yueli Date: Fri, 4 Sep 2026 15:55:24 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=87=BA=E5=BA=93=E9=80=89=E5=8D=95?= =?UTF-8?q?=E6=89=8B=E5=8A=A8=E6=B7=BB=E5=8A=A0=E5=BA=93=E5=AD=98(/v1/inbo?= =?UTF-8?q?und/stock/list)=E5=8A=A0=E8=A1=8C=E7=BA=A7=E5=85=AC=E5=8F=B8?= =?UTF-8?q?=E9=9A=94=E7=A6=BB=EF=BC=88=E4=B8=89=E8=A1=A8=E6=8C=89=20base?= =?UTF-8?q?=20=E5=85=AC=E5=8F=B8=E8=BF=87=E6=BB=A4=EF=BC=8C=E8=B6=85?= =?UTF-8?q?=E7=AE=A1/=E8=B7=A8=E5=9F=9F=E4=B8=8D=E5=8F=97=E9=99=90?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- inventory-backend/app/api/v1/inbound/stock.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/inventory-backend/app/api/v1/inbound/stock.py b/inventory-backend/app/api/v1/inbound/stock.py index 52c69f2..89a81ab 100644 --- a/inventory-backend/app/api/v1/inbound/stock.py +++ b/inventory-backend/app/api/v1/inbound/stock.py @@ -293,11 +293,17 @@ def _do_get_stock_list(permission_prefix=None): # ★ Fail-Closed: 选单/借用场景默认剥离所有价格成本字段 _strip_price_fields = _make_price_stripper(permission_prefix) + # ★ 行级公司隔离:普通用户只能看到本公司的库存(超管/跨域不受限) + from app.utils.decorators import get_current_company_filter + company_limit = get_current_company_filter() + all_items = [] # 1. 采购件 if StockBuy: q = StockBuy.query.filter(StockBuy.stock_quantity > 0) + if company_limit is not None: + q = q.filter(StockBuy.base.has(MaterialBase.company_name == company_limit)) if keyword: q = q.filter( db.or_( @@ -322,6 +328,8 @@ def _do_get_stock_list(permission_prefix=None): if StockSemi: try: q = StockSemi.query.filter(StockSemi.stock_quantity > 0) + if company_limit is not None: + q = q.filter(StockSemi.base.has(MaterialBase.company_name == company_limit)) if keyword: q = q.filter( db.or_( @@ -347,6 +355,8 @@ def _do_get_stock_list(permission_prefix=None): # 3. 成品 if StockProduct: q = StockProduct.query.filter(StockProduct.stock_quantity > 0) + if company_limit is not None: + q = q.filter(StockProduct.base.has(MaterialBase.company_name == company_limit)) if keyword: q = q.filter( db.or_(