1
0
mirror of https://gitlab.com/MoonTestUse1/AdministrationItDepartmens.git synced 2025-08-14 00:25:46 +02:00

подствеление отдела авто

This commit is contained in:
MoonTestUse1
2025-01-04 05:03:23 +06:00
parent 1586fdfe26
commit 90cf31d752
2 changed files with 15 additions and 22 deletions

View File

@@ -4,11 +4,17 @@ from sqlalchemy import func
from typing import Optional, Dict from typing import Optional, Dict
from ..models.request import Request, RequestStatus from ..models.request import Request, RequestStatus
from ..schemas.request import RequestCreate from ..schemas.request import RequestCreate
from . import employees
def create_request(db: Session, request: RequestCreate, employee_id: int) -> Request: def create_request(db: Session, request: RequestCreate, employee_id: int) -> Request:
"""Create new request""" """Create new request"""
# Получаем данные сотрудника
employee = employees.get_employee(db, employee_id)
if not employee:
raise ValueError("Employee not found")
db_request = Request( db_request = Request(
department=request.department, department=employee.department, # Берем отдел из данных сотрудника
request_type=request.request_type, request_type=request.request_type,
description=request.description, description=request.description,
priority=request.priority, priority=request.priority,
@@ -47,26 +53,13 @@ def update_request_status(db: Session, request_id: int, status: RequestStatus) -
def get_statistics(db: Session) -> Dict: def get_statistics(db: Session) -> Dict:
"""Get request statistics""" """Get request statistics"""
total = db.query(func.count(Request.id)).scalar() total = db.query(func.count(Request.id)).scalar()
by_status = dict(
# Получаем количество заявок по статусам db.query(
status_counts = db.query( Request.status,
Request.status, func.count(Request.id)
func.count(Request.id) ).group_by(Request.status).all()
).group_by(Request.status).all() )
# Инициализируем словарь всеми возможными статусами
by_status = {
RequestStatus.NEW: 0,
RequestStatus.IN_PROGRESS: 0,
RequestStatus.COMPLETED: 0,
RequestStatus.REJECTED: 0
}
# Обновляем значения из базы
for status, count in status_counts:
by_status[status] = count
return { return {
"total": total or 0, "total": total,
"by_status": by_status "by_status": by_status
} }

View File

@@ -5,7 +5,6 @@ from datetime import datetime
from ..models.request import RequestStatus, RequestPriority from ..models.request import RequestStatus, RequestPriority
class RequestBase(BaseModel): class RequestBase(BaseModel):
department: str
request_type: str request_type: str
description: str description: str
priority: RequestPriority priority: RequestPriority
@@ -24,6 +23,7 @@ class Request(RequestBase):
id: int id: int
status: RequestStatus status: RequestStatus
employee_id: int employee_id: int
department: str
created_at: datetime created_at: datetime
model_config = ConfigDict(from_attributes=True) model_config = ConfigDict(from_attributes=True)