第四版_完整
This commit is contained in:
@@ -2,6 +2,8 @@
|
||||
# 本文件封装对 所有相关表的 所有数据库操作(统计查询)
|
||||
from collections import defaultdict
|
||||
|
||||
from fastapi.openapi.utils import status_code_ranges
|
||||
from fastapi import APIRouter, Depends, HTTPException, Query
|
||||
from sqlalchemy.orm import Session, joinedload
|
||||
from sqlalchemy import func, case, and_, join, asc, desc
|
||||
|
||||
@@ -9,7 +11,7 @@ from model import StudentEmployManage
|
||||
from model.stu_model import StuInfo
|
||||
from model.stu_score_model import StuScore
|
||||
from typing import Optional, List, Dict
|
||||
from scheme.statistics_scheme import StatsResponse, ExamScoreItem, StuInfoAllExamAboveScore, FailingStudentItem, \
|
||||
from scheme.statistics_scheme import ClassGenderDistributionItem, ExamScoreItem, StuInfoAllExamAboveScore, FailingStudentItem, \
|
||||
ClassExamAvgScoreItem, TopSalaryStudentItem, StudentEmpDurationItem, ClassAvgEmpDurationItem, StudentAgeDetailItem
|
||||
|
||||
|
||||
@@ -17,7 +19,7 @@ class StatisticsDao:
|
||||
"""用户数据访问对象,所有方法均为静态方法,方便调用"""
|
||||
|
||||
@staticmethod
|
||||
def get_cls_stats(db: Session) -> List[StatsResponse]:
|
||||
def get_class_gender_distribution(db: Session) -> List[ClassGenderDistributionItem]:
|
||||
|
||||
all_cls_gender_stats = (
|
||||
db.query(
|
||||
@@ -31,7 +33,7 @@ class StatisticsDao:
|
||||
)
|
||||
|
||||
return [
|
||||
StatsResponse(
|
||||
ClassGenderDistributionItem(
|
||||
cls_id=i.cls_id,
|
||||
total_cnt=i.total_cnt,
|
||||
man_cnt=i.man_cnt,
|
||||
@@ -96,6 +98,10 @@ class StatisticsDao:
|
||||
|
||||
@staticmethod
|
||||
def find_students_fail_count(db: Session, fail_cnt: int) -> List[FailingStudentItem]:
|
||||
test_max_cnt = len(db.query(StuScore.exam_attempt).group_by(StuScore.exam_attempt).all())
|
||||
if fail_cnt > test_max_cnt:
|
||||
raise HTTPException(status_code = 400, detail = f'最大次数为{test_max_cnt}')
|
||||
|
||||
stu_fail_dict = StatisticsDao.get_stu_dict_who_fail(db)
|
||||
ans = []
|
||||
|
||||
|
||||
Reference in New Issue
Block a user