|
@@ -1,5 +1,7 @@
|
|
|
-from fastapi import APIRouter, HTTPException, Depends, Body
|
|
|
-from sqlalchemy.orm import Session
|
|
|
+from fastapi import APIRouter, HTTPException, Depends, Body,Query
|
|
|
+# from sqlalchemy.orm import Session
|
|
|
+from sqlalchemy.orm import Session, joinedload
|
|
|
+
|
|
|
from database import get_db
|
|
|
from models import *
|
|
|
from typing import List, Optional
|
|
@@ -82,20 +84,22 @@ def delete_project(project_id: int, db: Session = Depends(get_db), user_id=Depen
|
|
|
|
|
|
|
|
|
|
|
|
-class ProjectListQueryParams(BaseModel):
|
|
|
- page: int = Field(default=1, gt=0)
|
|
|
- page_size: int = Field(default=10, gt=0)
|
|
|
+# class ProjectListQueryParams(BaseModel):
|
|
|
+# page: int = Field(default=1, gt=0)
|
|
|
+# page_size: int = Field(default=10, gt=0)
|
|
|
#查询列表
|
|
|
@router.get("/projects/")
|
|
|
-def get_projects(query_params: ProjectListQueryParams, db: Session = Depends(get_db), user_id=Depends(valid_access_token)):
|
|
|
+def get_projects(page: int = Query(default=1, gt=0),
|
|
|
+ pageSize: int = Query(default=10, gt=0),
|
|
|
+ db: Session = Depends(get_db), user_id=Depends(valid_access_token)):
|
|
|
data_query = db.query(WaterResourceProject).filter(WaterResourceProject.is_delete == 0)
|
|
|
|
|
|
# 计算总数
|
|
|
total_count = data_query.count()
|
|
|
|
|
|
# 分页查询
|
|
|
- offset = (query_params.page - 1) * query_params.page_size
|
|
|
- projects = data_query.offset(offset).limit(query_params.page_size).all()
|
|
|
+ offset = (page - 1) * pageSize
|
|
|
+ projects = data_query.offset(offset).limit(pageSize).all()
|
|
|
|
|
|
# 构造结果
|
|
|
result_items = [project.to_dict() for project in projects]
|
|
@@ -104,9 +108,9 @@ def get_projects(query_params: ProjectListQueryParams, db: Session = Depends(get
|
|
|
"code": 200,
|
|
|
'msg': '查询成功',
|
|
|
'total': total_count,
|
|
|
- 'pages': (total_count + query_params.page_size - 1) // query_params.page_size,
|
|
|
- 'currentPage': query_params.page,
|
|
|
- 'pageSize': query_params.page_size,
|
|
|
+ 'pages': (total_count + pageSize - 1) // pageSize,
|
|
|
+ 'currentPage': page,
|
|
|
+ 'pageSize': pageSize,
|
|
|
'data': result_items
|
|
|
}
|
|
|
|
|
@@ -199,12 +203,16 @@ def delete_unit(unit_id: int, db: Session = Depends(get_db), user_id=Depends(val
|
|
|
|
|
|
|
|
|
|
|
|
-class UnitListQueryParams(BaseModel):
|
|
|
- page: int = Field(default=1, gt=0)
|
|
|
- page_size: int = Field(default=10, gt=0)
|
|
|
+# class UnitListQueryParams(BaseModel):
|
|
|
+# page: int = Field(default=1, gt=0)
|
|
|
+# page_size: int = Field(default=10, gt=0)
|
|
|
+
|
|
|
#查询列表
|
|
|
@router.get("/rescue_units/")
|
|
|
-def get_units(query_params: UnitListQueryParams, db: Session = Depends(get_db), user_id=Depends(valid_access_token)):
|
|
|
+def get_units(page: int = Query(default=1, gt=0),
|
|
|
+ pageSize: int = Query(default=10, gt=0),
|
|
|
+ db: Session = Depends(get_db),
|
|
|
+ user_id=Depends(valid_access_token)):
|
|
|
# 应用过滤条件,仅查询未被删除的单位
|
|
|
data_query = db.query(Unit).filter(Unit.is_delete == 0)
|
|
|
|
|
@@ -212,8 +220,8 @@ def get_units(query_params: UnitListQueryParams, db: Session = Depends(get_db),
|
|
|
total_count = data_query.count()
|
|
|
|
|
|
# 分页查询
|
|
|
- offset = (query_params.page - 1) * query_params.page_size
|
|
|
- units = data_query.offset(offset).limit(query_params.page_size).all()
|
|
|
+ offset = (page - 1) * pageSize
|
|
|
+ units = data_query.offset(offset).limit(pageSize).all()
|
|
|
|
|
|
# 构造结果
|
|
|
result_items = [unit.to_dict() for unit in units]
|
|
@@ -222,13 +230,15 @@ def get_units(query_params: UnitListQueryParams, db: Session = Depends(get_db),
|
|
|
"code": 200,
|
|
|
'msg': '查询成功',
|
|
|
'total': total_count,
|
|
|
- 'pages': (total_count + query_params.page_size - 1) // query_params.page_size,
|
|
|
- 'currentPage': query_params.page,
|
|
|
- 'pageSize': query_params.page_size,
|
|
|
+ 'pages': (total_count + pageSize - 1) // pageSize,
|
|
|
+ 'currentPage': page,
|
|
|
+ 'pageSize': pageSize,
|
|
|
'data': result_items
|
|
|
}
|
|
|
|
|
|
return result
|
|
|
+
|
|
|
+
|
|
|
#查询详情
|
|
|
@router.get("/rescue_units/{unit_id}/")
|
|
|
def get_unit_by_id(unit_id: int, db: Session = Depends(get_db), user_id=Depends(valid_access_token)):
|
|
@@ -272,8 +282,8 @@ class RescuePersonnelSchema(BaseModel):
|
|
|
current_address: str = None
|
|
|
position: str = None
|
|
|
unit_id: int = None
|
|
|
+ unit_name: str = None
|
|
|
is_delete: int = 0
|
|
|
-
|
|
|
class Config:
|
|
|
orm_mode = True
|
|
|
|
|
@@ -311,11 +321,49 @@ def delete_rescue_personnel(personnel_id: int, db: Session = Depends(get_db)):
|
|
|
db.commit()
|
|
|
return {"code": 200, "msg": "删除成功"}
|
|
|
|
|
|
-#查询列表
|
|
|
+
|
|
|
+# 查询列表
|
|
|
@router.get("/rescue_personnel/")
|
|
|
-def get_rescue_personnel(db: Session = Depends(get_db)):
|
|
|
- personnels = db.query(RescuePersonnel).filter(RescuePersonnel.is_delete == 0).all()
|
|
|
- return {"code": 200, "msg": "查询成功", "data": [personnel.to_dict() for personnel in personnels]}
|
|
|
+def get_rescue_personnel(page: int = Query(default=1, gt=0),
|
|
|
+ pageSize: int = Query(default=10, gt=0), db: Session = Depends(get_db)):
|
|
|
+ # 应用过滤条件,仅查询未被删除的人员
|
|
|
+ data_query = db.query(RescuePersonnel).filter(RescuePersonnel.is_delete == 0)
|
|
|
+
|
|
|
+ # 计算总数
|
|
|
+ total_count = data_query.count()
|
|
|
+
|
|
|
+ # 分页查询
|
|
|
+ offset = (page - 1) * pageSize
|
|
|
+ personnels = data_query.offset(offset).limit(pageSize).all()
|
|
|
+
|
|
|
+ # 构造结果
|
|
|
+ # result_items = []
|
|
|
+ # for personnel in personnels:
|
|
|
+ # personnel_dict = personnel.to_dict()
|
|
|
+ # # 通过 unit_id 获取单位名称
|
|
|
+ # if personnel.unit_id: # 确保 unit_id 不为 None
|
|
|
+ # unit = db.query(Unit).filter(Unit.id == personnel.unit_id).first()
|
|
|
+ # if unit:
|
|
|
+ # personnel_dict['unit_name'] = unit.name
|
|
|
+ # else:
|
|
|
+ # personnel_dict['unit_name'] = None # 或者其他默认值
|
|
|
+ # else:
|
|
|
+ # personnel_dict['unit_name'] = None # 或者其他默认值
|
|
|
+ # result_items.append(personnel_dict)
|
|
|
+ result_items = [personnel.to_dict() for personnel in personnels]
|
|
|
+
|
|
|
+ result = {
|
|
|
+ "code": 200,
|
|
|
+ 'msg': '查询成功',
|
|
|
+ 'total': total_count,
|
|
|
+ 'pages': (total_count + pageSize - 1) // pageSize,
|
|
|
+ 'currentPage': page,
|
|
|
+ 'pageSize': pageSize,
|
|
|
+ 'data': result_items
|
|
|
+ }
|
|
|
+ return result
|
|
|
+
|
|
|
+
|
|
|
#查询详情
|
|
|
@router.get("/rescue_personnel/{personnel_id}/")
|
|
|
def get_rescue_personnel_by_id(personnel_id: int, db: Session = Depends(get_db)):
|
|
@@ -443,12 +491,13 @@ def delete_rescue_station(station_id: int, db: Session = Depends(get_db)):
|
|
|
db.rollback()
|
|
|
raise HTTPException(status_code=400, detail=str(e))
|
|
|
|
|
|
-class RescueStationListQueryParams(BaseModel):
|
|
|
- page: int = Field(default=1, gt=0)
|
|
|
- page_size: int = Field(default=10, gt=0)
|
|
|
+# class RescueStationListQueryParams(BaseModel):
|
|
|
+# page: int = Field(default=1, gt=0)
|
|
|
+# page_size: int = Field(default=10, gt=0)
|
|
|
|
|
|
@router.get("/rescue_stations/")
|
|
|
-def get_rescue_stations(query_params: RescueStationListQueryParams, db: Session = Depends(get_db)):
|
|
|
+def get_rescue_stations(page: int = Query(default=1, gt=0),
|
|
|
+ pageSize: int = Query(default=10, gt=0), db: Session = Depends(get_db)):
|
|
|
# 应用过滤条件,仅查询未被删除的救助站
|
|
|
data_query = db.query(RescueStation).filter(RescueStation.is_delete == 0)
|
|
|
|
|
@@ -456,8 +505,8 @@ def get_rescue_stations(query_params: RescueStationListQueryParams, db: Session
|
|
|
total_count = data_query.count()
|
|
|
|
|
|
# 分页查询
|
|
|
- offset = (query_params.page - 1) * query_params.page_size
|
|
|
- stations = data_query.offset(offset).limit(query_params.page_size).all()
|
|
|
+ offset = (page - 1) * pageSize
|
|
|
+ stations = data_query.offset(offset).limit(pageSize).all()
|
|
|
|
|
|
# 构造结果
|
|
|
result_items = [station.to_dict() for station in stations]
|
|
@@ -466,9 +515,9 @@ def get_rescue_stations(query_params: RescueStationListQueryParams, db: Session
|
|
|
"code": 200,
|
|
|
'msg': '查询成功',
|
|
|
'total': total_count,
|
|
|
- 'pages': (total_count + query_params.page_size - 1) // query_params.page_size,
|
|
|
- 'currentPage': query_params.page,
|
|
|
- 'pageSize': query_params.page_size,
|
|
|
+ 'pages': (total_count + pageSize - 1) // pageSize,
|
|
|
+ 'currentPage': page,
|
|
|
+ 'pageSize': pageSize,
|
|
|
'data': result_items
|
|
|
}
|
|
|
|
|
@@ -585,8 +634,11 @@ class DefenseProjectListQueryParams(BaseModel):
|
|
|
page: int = Field(default=1, gt=0)
|
|
|
page_size: int = Field(default=10, gt=0)
|
|
|
|
|
|
+ # page: int = Query(1, gt=0, description='页码'),
|
|
|
+ # page_size: int = Query(10, gt=0, description='pageSize'),
|
|
|
@router.get("/defense_projects/")
|
|
|
-def get_defense_projects(query_params: DefenseProjectListQueryParams, db: Session = Depends(get_db)):
|
|
|
+def get_defense_projects(page: int = Query(default=1, gt=0),
|
|
|
+ pageSize: int = Query(default=10, gt=0), db: Session = Depends(get_db)):
|
|
|
# 应用过滤条件,仅查询未被删除的项目
|
|
|
data_query = db.query(DefenseProject).filter(DefenseProject.is_delete == False)
|
|
|
|
|
@@ -594,8 +646,8 @@ def get_defense_projects(query_params: DefenseProjectListQueryParams, db: Sessio
|
|
|
total_count = data_query.count()
|
|
|
|
|
|
# 分页查询
|
|
|
- offset = (query_params.page - 1) * query_params.page_size
|
|
|
- projects = data_query.offset(offset).limit(query_params.page_size).all()
|
|
|
+ offset = (page - 1) * pageSize
|
|
|
+ projects = data_query.offset(offset).limit(pageSize).all()
|
|
|
|
|
|
# 构造结果
|
|
|
result_items = [project.to_dict() for project in projects]
|
|
@@ -604,9 +656,9 @@ def get_defense_projects(query_params: DefenseProjectListQueryParams, db: Sessio
|
|
|
"code": 200,
|
|
|
'msg': '查询成功',
|
|
|
'total': total_count,
|
|
|
- 'pages': (total_count + query_params.page_size - 1) // query_params.page_size,
|
|
|
- 'currentPage': query_params.page,
|
|
|
- 'pageSize': query_params.page_size,
|
|
|
+ 'pages': (total_count + pageSize - 1) // pageSize,
|
|
|
+ 'currentPage':page,
|
|
|
+ 'pageSize': pageSize,
|
|
|
'data': result_items
|
|
|
}
|
|
|
|
|
@@ -704,24 +756,23 @@ def delete_shelter(shelter_id: int, db: Session = Depends(get_db)):
|
|
|
raise HTTPException(status_code=400, detail=str(e))
|
|
|
|
|
|
# 查询列表
|
|
|
-class ShelterListQueryParams(BaseModel):
|
|
|
- page: int = Field(default=1, gt=0)
|
|
|
- page_size: int = Field(default=10, gt=0)
|
|
|
+#
|
|
|
|
|
|
@router.get("/shelters/")
|
|
|
-def get_shelters(query_params: ShelterListQueryParams, db: Session = Depends(get_db)):
|
|
|
+def get_shelters(page: int = Query(default=1, gt=0),
|
|
|
+ pageSize: int = Query(default=10, gt=0), db: Session = Depends(get_db)):
|
|
|
data_query = db.query(Shelter).filter(Shelter.is_delete == False)
|
|
|
total_count = data_query.count()
|
|
|
- offset = (query_params.page - 1) * query_params.page_size
|
|
|
- shelters = data_query.offset(offset).limit(query_params.page_size).all()
|
|
|
+ offset = (page - 1) * pageSize
|
|
|
+ shelters = data_query.offset(offset).limit(pageSize).all()
|
|
|
result_items = [shelter.to_dict() for shelter in shelters]
|
|
|
result = {
|
|
|
"code": 200,
|
|
|
'msg': '查询成功',
|
|
|
'total': total_count,
|
|
|
- 'pages': (total_count + query_params.page_size - 1) // query_params.page_size,
|
|
|
- 'currentPage': query_params.page,
|
|
|
- 'pageSize': query_params.page_size,
|
|
|
+ 'pages': (total_count + pageSize - 1) // pageSize,
|
|
|
+ 'currentPage': page,
|
|
|
+ 'pageSize': pageSize,
|
|
|
'data': result_items
|
|
|
}
|
|
|
return result
|