157 lines
5.6 KiB
Python
157 lines
5.6 KiB
Python
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)
|