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

157 lines
5.6 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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)