"""业务报表接口。""" 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.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()], ) -> Response: result = await ReportService.get_pallet_inventory_list_services(query_db, query_object, current_user) 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()], ) -> Response: result = await ReportService.get_filling_report_list_services(query_db, query_object, current_user) 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()], ) -> Response: result = await ReportService.get_shipment_report_list_services(query_db, query_object, current_user) 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()], ) -> Response: result = await ReportService.get_consumption_report_list_services(query_db, query_object, current_user) 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()], ) -> Response: result = await ReportService.get_return_report_list_services(query_db, query_object, current_user) 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()], ) -> Response: result = await ReportService.get_pallet_trace_list_services(query_db, query_object, current_user) return ResponseUtil.success(model_content=result)