添加前后端筛选导出excel按钮权限
This commit is contained in:
@@ -43,6 +43,19 @@ from utils.page_util import PageUtil
|
||||
class MasterDao:
|
||||
"""菌种、客户、现场、产线、隧道和仓库主数据数据库操作层。"""
|
||||
|
||||
@staticmethod
|
||||
def _parse_id_list(ids_str: str | None) -> list[int]:
|
||||
if not ids_str:
|
||||
return []
|
||||
result: list[int] = []
|
||||
for item in ids_str.split(','):
|
||||
item = item.strip()
|
||||
if item.isdigit():
|
||||
val = int(item)
|
||||
if val > 0:
|
||||
result.append(val)
|
||||
return result
|
||||
|
||||
@staticmethod
|
||||
async def _paginate(
|
||||
db: AsyncSession,
|
||||
@@ -139,6 +152,9 @@ class MasterDao:
|
||||
conditions.append(BizStrain.strain_name.like(f'%{query_object.strain_name}%'))
|
||||
if query_object.status:
|
||||
conditions.append(BizStrain.status == query_object.status)
|
||||
ids = cls._parse_id_list(getattr(query_object, 'ids', None))
|
||||
if ids:
|
||||
conditions.append(BizStrain.strain_id.in_(ids))
|
||||
statement = select(BizStrain).where(*conditions).order_by(BizStrain.strain_id)
|
||||
return await cls._paginate(db, statement, query_object, is_page)
|
||||
|
||||
@@ -187,6 +203,9 @@ class MasterDao:
|
||||
conditions.append(BizCustomer.customer_name.like(f'%{query_object.customer_name}%'))
|
||||
if query_object.status:
|
||||
conditions.append(BizCustomer.status == query_object.status)
|
||||
ids = cls._parse_id_list(getattr(query_object, 'ids', None))
|
||||
if ids:
|
||||
conditions.append(BizCustomer.customer_id.in_(ids))
|
||||
statement = select(BizCustomer).where(*conditions).order_by(BizCustomer.customer_id)
|
||||
return await cls._paginate(db, statement, query_object, is_page)
|
||||
|
||||
@@ -237,6 +256,9 @@ class MasterDao:
|
||||
conditions.append(BizCustomerSite.site_name.like(f'%{query_object.site_name}%'))
|
||||
if query_object.status:
|
||||
conditions.append(BizCustomerSite.status == query_object.status)
|
||||
ids = cls._parse_id_list(getattr(query_object, 'ids', None))
|
||||
if ids:
|
||||
conditions.append(BizCustomerSite.site_id.in_(ids))
|
||||
statement = select(BizCustomerSite).where(*conditions).order_by(BizCustomerSite.site_id)
|
||||
return await cls._paginate(db, statement, query_object, is_page)
|
||||
|
||||
@@ -298,6 +320,9 @@ class MasterDao:
|
||||
conditions.append(BizProductionLine.line_name.like(f'%{query_object.line_name}%'))
|
||||
if query_object.status:
|
||||
conditions.append(BizProductionLine.status == query_object.status)
|
||||
ids = cls._parse_id_list(getattr(query_object, 'ids', None))
|
||||
if ids:
|
||||
conditions.append(BizProductionLine.line_id.in_(ids))
|
||||
statement = select(BizProductionLine).where(*conditions).order_by(BizProductionLine.line_id)
|
||||
return await cls._paginate(db, statement, query_object, is_page)
|
||||
|
||||
@@ -359,6 +384,9 @@ class MasterDao:
|
||||
conditions.append(BizTunnel.tunnel_name.like(f'%{query_object.tunnel_name}%'))
|
||||
if query_object.status:
|
||||
conditions.append(BizTunnel.status == query_object.status)
|
||||
ids = cls._parse_id_list(getattr(query_object, 'ids', None))
|
||||
if ids:
|
||||
conditions.append(BizTunnel.tunnel_id.in_(ids))
|
||||
statement = select(BizTunnel).where(*conditions).order_by(BizTunnel.tunnel_id)
|
||||
return await cls._paginate(db, statement, query_object, is_page)
|
||||
|
||||
@@ -418,6 +446,9 @@ class MasterDao:
|
||||
conditions.append(BizWarehouse.warehouse_name.like(f'%{query_object.warehouse_name}%'))
|
||||
if query_object.status:
|
||||
conditions.append(BizWarehouse.status == query_object.status)
|
||||
ids = cls._parse_id_list(getattr(query_object, 'ids', None))
|
||||
if ids:
|
||||
conditions.append(BizWarehouse.warehouse_id.in_(ids))
|
||||
statement = select(BizWarehouse).where(*conditions).order_by(BizWarehouse.warehouse_id)
|
||||
return await cls._paginate(db, statement, query_object, is_page)
|
||||
|
||||
@@ -466,6 +497,9 @@ class MasterDao:
|
||||
conditions.append(BizPallet.pallet_code.like(f'%{query_object.pallet_code}%'))
|
||||
if query_object.asset_status:
|
||||
conditions.append(BizPallet.asset_status == query_object.asset_status)
|
||||
ids = cls._parse_id_list(getattr(query_object, 'ids', None))
|
||||
if ids:
|
||||
conditions.append(BizPallet.pallet_id.in_(ids))
|
||||
statement = select(BizPallet).where(*conditions).order_by(BizPallet.pallet_id)
|
||||
return await cls._paginate(db, statement, query_object, is_page)
|
||||
|
||||
|
||||
@@ -50,6 +50,7 @@ class StrainPageQueryModel(BaseModel):
|
||||
description='菌种名称',
|
||||
)
|
||||
status: Literal['0', '1'] | None = Field(default=None, description='状态')
|
||||
ids: str | None = Field(default=None, description='主键ID列表(英文逗号分隔)')
|
||||
|
||||
|
||||
class DeleteStrainModel(BaseModel):
|
||||
@@ -110,6 +111,7 @@ class CustomerPageQueryModel(BaseModel):
|
||||
description='客户名称',
|
||||
)
|
||||
status: Literal['0', '1'] | None = Field(default=None, description='状态')
|
||||
ids: str | None = Field(default=None, description='主键ID列表(英文逗号分隔)')
|
||||
|
||||
|
||||
class DeleteCustomerModel(BaseModel):
|
||||
@@ -167,6 +169,7 @@ class SitePageQueryModel(BaseModel):
|
||||
description='现场名称',
|
||||
)
|
||||
status: Literal['0', '1'] | None = Field(default=None, description='状态')
|
||||
ids: str | None = Field(default=None, description='主键ID列表(英文逗号分隔)')
|
||||
|
||||
|
||||
class DeleteSiteModel(BaseModel):
|
||||
@@ -223,6 +226,7 @@ class LinePageQueryModel(BaseModel):
|
||||
description='产线名称',
|
||||
)
|
||||
status: Literal['0', '1'] | None = Field(default=None, description='状态')
|
||||
ids: str | None = Field(default=None, description='主键ID列表(英文逗号分隔)')
|
||||
|
||||
|
||||
class DeleteLineModel(BaseModel):
|
||||
@@ -281,6 +285,7 @@ class TunnelPageQueryModel(BaseModel):
|
||||
description='隧道名称',
|
||||
)
|
||||
status: Literal['0', '1'] | None = Field(default=None, description='状态')
|
||||
ids: str | None = Field(default=None, description='主键ID列表(英文逗号分隔)')
|
||||
|
||||
|
||||
class DeleteTunnelModel(BaseModel):
|
||||
@@ -342,6 +347,7 @@ class WarehousePageQueryModel(BaseModel):
|
||||
description='仓库名称',
|
||||
)
|
||||
status: Literal['0', '1'] | None = Field(default=None, description='状态')
|
||||
ids: str | None = Field(default=None, description='主键ID列表(英文逗号分隔)')
|
||||
|
||||
|
||||
class DeleteWarehouseModel(BaseModel):
|
||||
@@ -416,6 +422,7 @@ class PalletPageQueryModel(BaseModel):
|
||||
page_size: int = Field(default=10, gt=0, le=100, description='每页记录数')
|
||||
pallet_code: str | None = Field(default=None, min_length=1, max_length=64, pattern=r'\S', description='托盘编号')
|
||||
asset_status: Literal['0', '1'] | None = Field(default=None, description='资产状态')
|
||||
ids: str | None = Field(default=None, description='主键ID列表(英文逗号分隔)')
|
||||
|
||||
|
||||
class DeletePalletModel(BaseModel):
|
||||
|
||||
Reference in New Issue
Block a user