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

157 lines
5.6 KiB
Python
Raw Normal View History

2026-03-30 10:38:36 +08:00
from fastapi import APIRouter, Depends, Query, Body
from sqlalchemy.ext.asyncio import AsyncSession
from config.get_db import get_db
from module_admin.service.login_service import LoginService
from module_admin.entity.vo.user_vo import CurrentUserModel
from module_admin.system.service.etest_service import TestPermissionService, WorkOrderClaimService
from module_admin.system.entity.vo.test_permission_vo import (
TestPermissionPageQueryModel,
AddTestPermissionModel,
EditTestPermissionModel,
DeleteTestPermissionModel
)
from module_admin.system.entity.vo.workorder_claim_vo import (
WorkOrderClaimPageQueryModel,
BatchClaimWorkOrderModel,
UpdateWorkOrderPriorityModel,
UpdateWorkOrderExpectedDateModel
)
from module_admin.entity.vo.common_vo import CrudResponseModel
from utils.response_util import ResponseUtil
from datetime import date
# 测试权限配置路由
permission_router = APIRouter(prefix='/test-permission', tags=['测试权限配置'])
@permission_router.get('/list')
async def get_permission_list(
query_obj: TestPermissionPageQueryModel = Depends(),
db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user)
):
"""获取测试权限配置列表"""
result = await TestPermissionService.get_permission_list(db, query_obj, is_page=True)
return ResponseUtil.success(model_content=result)
@permission_router.get('/{id}')
async def get_permission_detail(
id: int,
db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user)
):
"""获取测试权限配置详情"""
result = await TestPermissionService.get_permission_detail(db, id)
return ResponseUtil.success(model_content=result)
@permission_router.post('/add')
async def add_permission(
model: AddTestPermissionModel,
db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user)
):
"""新增测试权限配置"""
result = await TestPermissionService.add_permission(db, model, current_user.user.user_id)
return ResponseUtil.success(model_content=result)
@permission_router.put('/edit')
async def edit_permission(
model: EditTestPermissionModel,
db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user)
):
"""编辑测试权限配置"""
result = await TestPermissionService.edit_permission(db, model, current_user.user.user_id)
return ResponseUtil.success(model_content=result)
@permission_router.delete('/delete/{ids}')
async def delete_permission(
ids: str,
db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user)
):
"""删除测试权限配置"""
result = await TestPermissionService.delete_permission(db, ids, current_user.user.user_id)
return ResponseUtil.success(model_content=result)
# 工单领取路由
workorder_claim_router = APIRouter(prefix='/workorder-claim', tags=['工单领取'])
@workorder_claim_router.post('/claim')
async def claim_work_order(
db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user)
):
"""
测试人员领取工单
按优先级高 > 截止日期近排序
使用乐观锁防止并发冲突
"""
result = await WorkOrderClaimService.claim_work_order(db, current_user.user.user_id)
return ResponseUtil.success(model_content=result)
@workorder_claim_router.post('/batch-claim')
async def batch_claim_work_order(
model: BatchClaimWorkOrderModel,
db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user)
):
"""
批量领取工单
逐个领取返回成功和失败的数量
"""
result = await WorkOrderClaimService.batch_claim_work_order(db, model.ids, current_user.user.user_id)
return ResponseUtil.success(model_content=result)
@workorder_claim_router.get('/pending')
async def get_pending_list(
page_num: int = Query(1, ge=1),
page_size: int = Query(10, ge=1, le=100),
name: str = Query(None),
priority: int = Query(None),
db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user)
):
"""获取可领取工单列表"""
query_obj = WorkOrderClaimPageQueryModel(
page_num=page_num,
page_size=page_size,
name=name,
priority=priority
)
result = await WorkOrderClaimService.get_pending_list(db, current_user.user.user_id, query_obj)
return ResponseUtil.success(dict_content=result)
@workorder_claim_router.put('/{work_order_id}/priority')
async def update_priority(
work_order_id: int,
model: UpdateWorkOrderPriorityModel,
db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user)
):
"""管理人员调整工单优先级1-5级"""
result = await WorkOrderClaimService.update_priority(db, work_order_id, model.priority, current_user.user.user_id)
return ResponseUtil.success(model_content=result)
@workorder_claim_router.put('/{work_order_id}/expected-date')
async def update_expected_date(
work_order_id: int,
model: UpdateWorkOrderExpectedDateModel,
db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user)
):
"""管理人员修改预计完成日期"""
result = await WorkOrderClaimService.update_expected_date(db, work_order_id, model.expected_date, current_user.user.user_id)
return ResponseUtil.success(model_content=result)