Files
ShiErFeng/shierfeng-fastapi-backend/module_business/controller/report_controller.py
T

140 lines
5.7 KiB
Python

"""业务报表接口。"""
from typing import Annotated
from fastapi import Query, Request, Response
from sqlalchemy.ext.asyncio import AsyncSession
from common.aspect.db_seesion import DBSessionDependency
from common.aspect.interface_auth import UserInterfaceAuthDependency
from common.aspect.pre_auth import CurrentUserDependency, PreAuthDependency
from common.router import APIRouterPro
from common.vo import PageResponseModel
from module_admin.entity.vo.user_vo import CurrentUserModel
from module_business.dependency.test_batch_dependency import TestBatchScopeDependency
from module_business.domain.test_batch_scope import TestBatchScope
from module_business.entity.vo.report_vo import (
ConsumptionReportModel,
ConsumptionReportQueryModel,
FillingReportModel,
FillingReportQueryModel,
PalletInventoryReportModel,
PalletInventoryReportQueryModel,
PalletTraceReportModel,
PalletTraceReportQueryModel,
ReturnReportModel,
ReturnReportQueryModel,
ShipmentReportModel,
ShipmentReportQueryModel,
)
from module_business.service.report_service import ReportService
from utils.response_util import ResponseUtil
report_controller = APIRouterPro(
prefix='/report',
tags=['业务管理-只读报表'],
dependencies=[PreAuthDependency()],
)
@report_controller.get(
'/pallet-inventory/list',
summary='获取托盘库存报表分页列表接口',
response_model=PageResponseModel[PalletInventoryReportModel],
dependencies=[UserInterfaceAuthDependency('report:palletinventory:list')],
)
async def get_pallet_inventory_report_list(
request: Request,
query_object: Annotated[PalletInventoryReportQueryModel, Query()],
query_db: Annotated[AsyncSession, DBSessionDependency()],
current_user: Annotated[CurrentUserModel, CurrentUserDependency()],
test_scope: Annotated[TestBatchScope, TestBatchScopeDependency()],
) -> Response:
result = await ReportService.get_pallet_inventory_list_services(query_db, query_object, current_user, test_scope)
return ResponseUtil.success(model_content=result)
@report_controller.get(
'/filling/list',
summary='获取装填记录报表分页列表接口',
response_model=PageResponseModel[FillingReportModel],
dependencies=[UserInterfaceAuthDependency('report:filling:list')],
)
async def get_filling_report_list(
request: Request,
query_object: Annotated[FillingReportQueryModel, Query()],
query_db: Annotated[AsyncSession, DBSessionDependency()],
current_user: Annotated[CurrentUserModel, CurrentUserDependency()],
test_scope: Annotated[TestBatchScope, TestBatchScopeDependency()],
) -> Response:
result = await ReportService.get_filling_report_list_services(query_db, query_object, current_user, test_scope)
return ResponseUtil.success(model_content=result)
@report_controller.get(
'/shipment/list',
summary='获取发货出库报表分页列表接口',
response_model=PageResponseModel[ShipmentReportModel],
dependencies=[UserInterfaceAuthDependency('report:shipment:list')],
)
async def get_shipment_report_list(
request: Request,
query_object: Annotated[ShipmentReportQueryModel, Query()],
query_db: Annotated[AsyncSession, DBSessionDependency()],
current_user: Annotated[CurrentUserModel, CurrentUserDependency()],
test_scope: Annotated[TestBatchScope, TestBatchScopeDependency()],
) -> Response:
result = await ReportService.get_shipment_report_list_services(query_db, query_object, current_user, test_scope)
return ResponseUtil.success(model_content=result)
@report_controller.get(
'/consumption/list',
summary='获取隧道消耗报表分页列表接口(兼容产线)',
response_model=PageResponseModel[ConsumptionReportModel],
dependencies=[UserInterfaceAuthDependency('report:consumption:list')],
)
async def get_consumption_report_list(
request: Request,
query_object: Annotated[ConsumptionReportQueryModel, Query()],
query_db: Annotated[AsyncSession, DBSessionDependency()],
current_user: Annotated[CurrentUserModel, CurrentUserDependency()],
test_scope: Annotated[TestBatchScope, TestBatchScopeDependency()],
) -> Response:
result = await ReportService.get_consumption_report_list_services(query_db, query_object, current_user, test_scope)
return ResponseUtil.success(model_content=result)
@report_controller.get(
'/return/list',
summary='获取退回仓库报表分页列表接口',
response_model=PageResponseModel[ReturnReportModel],
dependencies=[UserInterfaceAuthDependency('report:return:list')],
)
async def get_return_report_list(
request: Request,
query_object: Annotated[ReturnReportQueryModel, Query()],
query_db: Annotated[AsyncSession, DBSessionDependency()],
current_user: Annotated[CurrentUserModel, CurrentUserDependency()],
test_scope: Annotated[TestBatchScope, TestBatchScopeDependency()],
) -> Response:
result = await ReportService.get_return_report_list_services(query_db, query_object, current_user, test_scope)
return ResponseUtil.success(model_content=result)
@report_controller.get(
'/pallet-trace/list',
summary='获取托盘追溯报表分页列表接口',
response_model=PageResponseModel[PalletTraceReportModel],
dependencies=[UserInterfaceAuthDependency('report:pallettrace:list')],
)
async def get_pallet_trace_report_list(
request: Request,
query_object: Annotated[PalletTraceReportQueryModel, Query()],
query_db: Annotated[AsyncSession, DBSessionDependency()],
current_user: Annotated[CurrentUserModel, CurrentUserDependency()],
test_scope: Annotated[TestBatchScope, TestBatchScopeDependency()],
) -> Response:
result = await ReportService.get_pallet_trace_list_services(query_db, query_object, current_user, test_scope)
return ResponseUtil.success(model_content=result)