from fastapi import APIRouter, Depends, Request from sqlalchemy.ext.asyncio import AsyncSession from config.get_db import get_db from config.enums import BusinessType from module_admin.annotation.log_annotation import Log from module_admin.aspect.interface_auth import CheckUserInterfaceAuth from module_admin.service.login_service import LoginService from module_admin.service.warehouse_receipt_service import WarehouseReceiptService from module_admin.entity.vo.warehouse_receipt_vo import ( WarehouseReceiptPageQueryModel, AddWarehouseReceiptModel, EditWarehouseReceiptModel, DeleteWarehouseReceiptModel ) from module_admin.entity.vo.user_vo import CurrentUserModel from utils.log_util import logger from utils.page_util import PageResponseModel from utils.response_util import ResponseUtil warehouseReceiptController = APIRouter(prefix='/warehouse/receipt', dependencies=[Depends(LoginService.get_current_user)]) @warehouseReceiptController.get('/list', response_model=PageResponseModel, dependencies=[Depends(CheckUserInterfaceAuth('warehouse:receipt:list'))]) async def get_warehouse_receipt_list( request: Request, query_object: WarehouseReceiptPageQueryModel = Depends(WarehouseReceiptPageQueryModel.as_query), query_db: AsyncSession = Depends(get_db) ): """ 获取入库单列表 """ receipt_list = await WarehouseReceiptService.get_receipt_list(query_db, query_object, is_page=True) logger.info('获取成功') return ResponseUtil.success(dict_content=receipt_list) @warehouseReceiptController.get('/{receipt_id}', dependencies=[Depends(CheckUserInterfaceAuth('warehouse:receipt:query'))]) async def get_warehouse_receipt_detail( request: Request, receipt_id: int, query_db: AsyncSession = Depends(get_db) ): """ 获取入库单详情 """ receipt_detail = await WarehouseReceiptService.get_receipt_detail(query_db, receipt_id) logger.info('获取成功') return ResponseUtil.success(data=receipt_detail) @warehouseReceiptController.post('', dependencies=[Depends(CheckUserInterfaceAuth('warehouse:receipt:add'))]) @Log(title='入库单管理', business_type=BusinessType.INSERT) async def add_warehouse_receipt( request: Request, add_receipt: AddWarehouseReceiptModel, query_db: AsyncSession = Depends(get_db), current_user: CurrentUserModel = Depends(LoginService.get_current_user) ): """ 新增入库单 """ add_receipt.create_by = current_user.user.user_name add_receipt.recorder = current_user.user.user_name result = await WarehouseReceiptService.add_receipt(query_db, add_receipt) logger.info(result.message) return ResponseUtil.success(msg=result.message) @warehouseReceiptController.put('', dependencies=[Depends(CheckUserInterfaceAuth('warehouse:receipt:edit'))]) @Log(title='入库单管理', business_type=BusinessType.UPDATE) async def edit_warehouse_receipt( request: Request, edit_receipt: EditWarehouseReceiptModel, query_db: AsyncSession = Depends(get_db), current_user: CurrentUserModel = Depends(LoginService.get_current_user) ): """ 修改入库单 """ edit_receipt.update_by = current_user.user.user_name result = await WarehouseReceiptService.edit_receipt(query_db, edit_receipt) logger.info(result.message) return ResponseUtil.success(msg=result.message) @warehouseReceiptController.delete('/{receipt_ids}', dependencies=[Depends(CheckUserInterfaceAuth('warehouse:receipt:remove'))]) @Log(title='入库单管理', business_type=BusinessType.DELETE) async def delete_warehouse_receipt( request: Request, receipt_ids: str, query_db: AsyncSession = Depends(get_db) ): """ 删除入库单 """ delete_receipt = DeleteWarehouseReceiptModel(receiptIds=receipt_ids) result = await WarehouseReceiptService.delete_receipt(query_db, delete_receipt) logger.info(result.message) return ResponseUtil.success(msg=result.message) @warehouseReceiptController.get('/generate/receiptNo', dependencies=[Depends(CheckUserInterfaceAuth('warehouse:receipt:add'))]) async def generate_receipt_no( request: Request, query_db: AsyncSession = Depends(get_db) ): """ 生成入库单号 """ result = await WarehouseReceiptService.generate_receipt_no(query_db) logger.info('生成成功') return ResponseUtil.success(data=result)