Ver Fonte

救灾资源

xuguoyang há 6 meses atrás
pai
commit
2e4dba6af9

+ 9 - 7
models/resource_provision_base.py

@@ -65,7 +65,7 @@ class WaterResourceProject(Base):
             "jdgljg": self.jdgljg,
             "jingdu": self.jingdu,
             "weidu": self.weidu,
-            "is_delete": self.is_delete
+            # "is_delete": self.is_delete
         }
 
 
@@ -96,7 +96,7 @@ class Unit(Base):
             "contact_number": self.contact_number,
             "longitude": self.longitude,
             "latitude": self.latitude,
-            "is_delete": self.is_delete
+            # "is_delete": self.is_delete
         }
     class Config:
         allow_population_by_field_name = True
@@ -113,7 +113,8 @@ class RescuePersonnel(Base):
     gender = Column(String(10), nullable=False, comment='性别')
     current_address = Column(String(255), nullable=False, comment='现在地址')
     position = Column(String(100), comment='职务')
-    unit_id = Column(Integer, comment='所属救援人员单位')
+    unit_id = Column(Integer, comment='所属救援人员单位ID')
+    unit_name = Column(Integer, comment='所属救援人员单位')
     is_delete = Column(Integer, default=0, comment='删除标识')
     modified_time = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow, comment='修改时间')
     created_time = Column(DateTime, default=datetime.utcnow, comment='创建时间')
@@ -127,7 +128,8 @@ class RescuePersonnel(Base):
             "current_address": self.current_address,
             "position": self.position,
             "unit_id": self.unit_id,
-            "is_delete": self.is_delete,
+            # "is_delete": self.is_delete,
+            "unit_name": self.unit_name,
             "modified_time": self.modified_time.isoformat() if self.modified_time else None,
             "created_time": self.created_time.isoformat() if self.created_time else None
         }
@@ -180,7 +182,7 @@ class RescueStation(Base):
             "fid": self.fid,
             "fwdzt": self.fwdzt,
             "fwdaddr": self.fwdaddr,
-            "is_delete": self.is_delete
+            # "is_delete": self.is_delete
         }
 
 
@@ -247,7 +249,7 @@ class DefenseProject(Base):
             "data_area": self.data_area,
             "extend1": self.extend1,
             "jgsj": self.jgsj.isoformat() if self.jgsj else None,
-            "is_delete": self.is_delete,
+            # "is_delete": self.is_delete,
         }
 
 
@@ -284,7 +286,7 @@ class Shelter(Base):
             "capacity": self.capacity,
             "supplies": self.supplies,
             "facilities": self.facilities,
-            "is_delete": self.is_delete,
+            # "is_delete": self.is_delete,
             "modified_time": self.modified_time.isoformat() if self.modified_time else None,
             "created_time": self.created_time.isoformat() if self.created_time else None,
         }

+ 100 - 49
routers/api/resourceProvison/emergency_resources.py

@@ -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