ETest-Vue-FastAPI/ruoyi-fastapi-backend/module_admin/controller/warehouse_sample_controller.py

138 lines
5.3 KiB
Python

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_sample_service import WarehouseSampleService
from module_admin.entity.vo.warehouse_sample_vo import (
WarehouseSamplePageQueryModel, AddWarehouseSampleModel,
EditWarehouseSampleModel, DeleteWarehouseSampleModel,
GenerateWorkOrderFromSampleModel
)
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
warehouseSampleController = APIRouter(prefix='/warehouse/sample', dependencies=[Depends(LoginService.get_current_user)])
@warehouseSampleController.get('/list', response_model=PageResponseModel, dependencies=[Depends(CheckUserInterfaceAuth('warehouse:sample:list'))])
async def get_warehouse_sample_list(
request: Request,
query_object: WarehouseSamplePageQueryModel = Depends(WarehouseSamplePageQueryModel.as_query),
query_db: AsyncSession = Depends(get_db)
):
"""
获取样品列表
"""
# 添加日志
print(f"DEBUG: 样品列表查询参数 - receipt_id={query_object.receipt_id}, receipt_no={query_object.receipt_no}")
sample_list = await WarehouseSampleService.get_sample_list(query_db, query_object, is_page=True)
logger.info('获取成功')
return ResponseUtil.success(dict_content=sample_list)
@warehouseSampleController.get('/{sample_id}', dependencies=[Depends(CheckUserInterfaceAuth('warehouse:sample:query'))])
async def get_warehouse_sample_detail(
request: Request,
sample_id: int,
query_db: AsyncSession = Depends(get_db)
):
"""
获取样品详情
"""
sample_detail = await WarehouseSampleService.get_sample_detail(query_db, sample_id)
logger.info('获取成功')
return ResponseUtil.success(data=sample_detail)
@warehouseSampleController.post('', dependencies=[Depends(CheckUserInterfaceAuth('warehouse:sample:add'))])
@Log(title='样品管理', business_type=BusinessType.INSERT)
async def add_warehouse_sample(
request: Request,
add_sample: AddWarehouseSampleModel,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user)
):
"""
新增样品
"""
add_sample.create_by = current_user.user.user_name
result = await WarehouseSampleService.add_sample(query_db, add_sample)
logger.info(result.message)
return ResponseUtil.success(msg=result.message)
@warehouseSampleController.put('', dependencies=[Depends(CheckUserInterfaceAuth('warehouse:sample:edit'))])
@Log(title='样品管理', business_type=BusinessType.UPDATE)
async def edit_warehouse_sample(
request: Request,
edit_sample: EditWarehouseSampleModel,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user)
):
"""
修改样品
"""
edit_sample.update_by = current_user.user.user_name
result = await WarehouseSampleService.edit_sample(query_db, edit_sample)
logger.info(result.message)
return ResponseUtil.success(msg=result.message)
@warehouseSampleController.delete('/{sample_ids}', dependencies=[Depends(CheckUserInterfaceAuth('warehouse:sample:remove'))])
@Log(title='样品管理', business_type=BusinessType.DELETE)
async def delete_warehouse_sample(
request: Request,
sample_ids: str,
query_db: AsyncSession = Depends(get_db)
):
"""
删除样品
"""
delete_sample = DeleteWarehouseSampleModel(sampleIds=sample_ids)
result = await WarehouseSampleService.delete_sample(query_db, delete_sample)
logger.info(result.message)
return ResponseUtil.success(msg=result.message)
@warehouseSampleController.post('/generate_work_orders', dependencies=[Depends(CheckUserInterfaceAuth('warehouse:sample:add'))])
@Log(title='样品生成工单', business_type=BusinessType.INSERT)
async def generate_work_orders_from_samples(
request: Request,
generate_request: GenerateWorkOrderFromSampleModel,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user)
):
"""
从样品生成工单
"""
try:
result = await WarehouseSampleService.generate_work_orders_from_samples(
query_db,
generate_request,
current_user.user.user_id
)
# 根据结果返回不同的消息
if result.failed_count == 0:
message = f'成功为 {result.success_count} 个样品生成工单'
elif result.success_count == 0:
message = f'工单生成失败,{result.failed_count} 个样品处理失败'
else:
message = f'部分成功:{result.success_count} 个样品成功,{result.failed_count} 个样品失败'
logger.info(message)
return ResponseUtil.success(data=result.model_dump(by_alias=True), msg=message)
except Exception as e:
logger.error(f'生成工单失败: {str(e)}')
return ResponseUtil.error(msg=f'生成工单失败: {str(e)}')