Merge remote-tracking branch 'origin/conding' into conding
This commit is contained in:
@@ -6,7 +6,7 @@ from util.database import get_db
|
||||
|
||||
StatisticsAPI = APIRouter(tags=['统计分析模块'])
|
||||
|
||||
@StatisticsAPI.get("/age",response_model=list[StudentResponse],summary='根据年龄查询学生信息')
|
||||
@StatisticsAPI.get("/age",response_model=list[StugetResponse],summary='根据年龄查询学生信息')
|
||||
def get_students(min_age:int|None=Query(None,ge=0,le=150),max_age:int|None=Query(None,ge=0,le=150),db=Depends(get_db)):
|
||||
l = select_age(min_age,max_age,db)
|
||||
return l
|
||||
@@ -45,3 +45,8 @@ def get_emp(db=Depends(get_db)):
|
||||
def get_salaries(db=Depends(get_db)):
|
||||
s=classify_salary(db)
|
||||
return s
|
||||
|
||||
@StatisticsAPI.get('/avg_salaries',summary='统计每个班级平均薪资')
|
||||
def get_avg_salaries(db=Depends(get_db)):
|
||||
s=avg_salary(db)
|
||||
return s
|
||||
|
||||
@@ -19,7 +19,7 @@ def get_students(stu_id:int|None=None
|
||||
,page=page
|
||||
,page_size=page_size
|
||||
,db=db)
|
||||
return StudentPageResponse(page=page,
|
||||
return StuPageResponse(page=page,
|
||||
page_size=page_size,
|
||||
totals=total,
|
||||
data=r)
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
from model.all_model import ClassManagement
|
||||
from fastapi import HTTPException
|
||||
from schema.cla_schema import claRequest
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
def add_class_dao(c: claRequest, session):
|
||||
@@ -34,7 +35,7 @@ def update_class_dao(id:int,req:claRequest,session):
|
||||
def delete_class_dao(id:int,session):
|
||||
try:
|
||||
session.query(ClassManagement).filter(ClassManagement.class_id==id,ClassManagement.delete_status==0)\
|
||||
.update({'delete_status': 1})
|
||||
.update({'delete_status': 1,'delete_time': datetime.now()})
|
||||
session.commit()
|
||||
except:
|
||||
raise HTTPException(status_code=404, detail="删除异常,请重新核对之后删除!")
|
||||
|
||||
@@ -38,8 +38,11 @@ def select_all(db):
|
||||
"gender": i.gender,
|
||||
"cnt": i.cnt
|
||||
})
|
||||
|
||||
if not l2:
|
||||
raise HTTPException(status_code=404, detail="没有数据")
|
||||
return l2
|
||||
except HTTPException:
|
||||
raise
|
||||
except Exception:
|
||||
raise HTTPException(status_code=500,detail="查询异常")
|
||||
|
||||
@@ -66,7 +69,10 @@ def select_score(min_score,max_score,db):
|
||||
db = db.filter(WlScore.score >= min_score)
|
||||
if max_score is not None:
|
||||
db = db.filter(WlScore.score <= max_score)
|
||||
return db.all()
|
||||
l1 = db.all()
|
||||
if not l1:
|
||||
raise HTTPException(status_code=404, detail="没有数据")
|
||||
return l1
|
||||
except HTTPException:
|
||||
raise
|
||||
except Exception:
|
||||
@@ -80,7 +86,11 @@ def select_avg_score(db):
|
||||
.filter(WlScore.delete_status==0,Student_Model.delete_status == 0)\
|
||||
.group_by(Student_Model.class_id)\
|
||||
.order_by(func.round(func.avg(WlScore.score),1)).all()
|
||||
if not l1:
|
||||
raise HTTPException(status_code=404, detail="没有数据")
|
||||
return l1
|
||||
except HTTPException:
|
||||
raise
|
||||
except Exception:
|
||||
raise HTTPException(status_code=500,detail="查询异常")
|
||||
|
||||
@@ -102,7 +112,11 @@ def select_salary(db):
|
||||
.filter(Employment_info.delete_status==0,Student_Model.delete_status == 0)\
|
||||
.order_by(Employment_info.salary.desc())\
|
||||
.limit(5).all()
|
||||
if not l1:
|
||||
raise HTTPException(status_code=404, detail="没有数据")
|
||||
return l1
|
||||
except HTTPException:
|
||||
raise
|
||||
except Exception:
|
||||
raise HTTPException(status_code=500,detail="查询异常")
|
||||
|
||||
@@ -123,19 +137,27 @@ def select_avg_days(db):
|
||||
Employment_info.offer_issuance_date.isnot(None),)\
|
||||
.group_by(Student_Model.class_id)\
|
||||
.order_by(func.avg(func.datediff(Employment_info.offer_issuance_date,Student_Model.admission_date)).desc()).all()
|
||||
if not l1:
|
||||
raise HTTPException(status_code=404, detail="没有数据")
|
||||
return l1
|
||||
except HTTPException:
|
||||
raise
|
||||
except Exception:
|
||||
raise HTTPException(status_code=500, detail="查询异常")
|
||||
|
||||
#统计每个学⽣的就业时⻓
|
||||
def select_days(db):
|
||||
try:
|
||||
l2 =db.query(Employment_info.stu_id
|
||||
l1 =db.query(Employment_info.stu_id
|
||||
,func.coalesce(func.datediff(Employment_info.offer_issuance_date
|
||||
,Employment_info.employment_opening_date),0)\
|
||||
.label("diff_days")
|
||||
).filter(Employment_info.delete_status == 0).all()
|
||||
return l2
|
||||
if not l1:
|
||||
raise HTTPException(status_code=404, detail="没有数据")
|
||||
return l1
|
||||
except HTTPException:
|
||||
raise
|
||||
except Exception:
|
||||
raise HTTPException(status_code=500, detail="查询异常")
|
||||
|
||||
@@ -160,3 +182,15 @@ def classify_salary(db):
|
||||
except:
|
||||
raise HTTPException(status_code=500,detail='查询异常!')
|
||||
|
||||
#统计每个班的平均就业薪资
|
||||
def avg_salary(db):
|
||||
try:
|
||||
l=db.query(Student_Model.class_id,func.avg(Employment_info.salary).label('avg_salaries'))\
|
||||
.join(Employment_info,Employment_info.stu_id == Student_Model.stu_id)\
|
||||
.filter(Employment_info.salary>0,Employment_info.delete_status==0,Student_Model.delete_status==0)\
|
||||
.group_by(Student_Model.class_id)\
|
||||
.order_by(func.avg(Employment_info.salary).desc()).all()
|
||||
return l
|
||||
except:
|
||||
raise HTTPException(status_code=500,detail='统计异常!')
|
||||
|
||||
|
||||
Reference in New Issue
Block a user