mirror of
https://gitlab.com/MoonTestUse1/AdministrationItDepartmens.git
synced 2025-08-14 00:25:46 +02:00
подствеление отдела авто
This commit is contained in:
@@ -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
|
||||||
}
|
}
|
||||||
@@ -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)
|
||||||
Reference in New Issue
Block a user