2025-12-19 10:12:59 +08:00
|
|
|
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,
|
2026-01-07 01:10:51 +08:00
|
|
|
EditWarehouseSampleModel, DeleteWarehouseSampleModel,
|
|
|
|
|
GenerateWorkOrderFromSampleModel
|
2025-12-19 10:12:59 +08:00
|
|
|
)
|
|
|
|
|
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)
|
|
|
|
|
):
|
|
|
|
|
"""
|
|
|
|
|
获取样品列表
|
|
|
|
|
"""
|
2026-01-04 16:16:03 +08:00
|
|
|
# 添加日志
|
|
|
|
|
print(f"DEBUG: 样品列表查询参数 - receipt_id={query_object.receipt_id}, receipt_no={query_object.receipt_no}")
|
|
|
|
|
|
2025-12-19 10:12:59 +08:00
|
|
|
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)
|
|
|
|
|
|
|
|
|
|
|
2026-01-07 01:10:51 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
@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)}')
|