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)
|