Browse Source

开发预案创建、演练创建、培训创建接口

baoyubo 10 tháng trước cách đây
mục cha
commit
461cf2f1f5
1 tập tin đã thay đổi với 156 bổ sung2 xóa
  1. 156 2
      routers/api/emergencyPlans/__init__.py

+ 156 - 2
routers/api/emergencyPlans/__init__.py

@@ -221,7 +221,7 @@ async def create_emergency_plan(
 
 
 @router.get('/drill/list')
-async def get_emergency_plan_list(
+async def get_emergency_drill_list(
     planNum: str = Query(None, description='预案编号'),
     page: int = Query(1, gt=0, description='页码'),
     page_size: int = Query(10, gt=0, description='每页条目数量'),
@@ -276,9 +276,115 @@ async def get_emergency_plan_list(
         # 处理异常
         raise HTTPException(status_code=500, detail=str(e))
 
+class DrillCreateForm(BaseModel):
+    plan_number : str
+    drill_name : str
+    organizing_unit : str
+    planned_annual : int
+    planned_time: str
+    drill_location : str
+    drill_lon : float
+    drill_lat : float
+    scheme_file_list : List[File] = []
+    video_file_list : List[File] = []
+    pic_file_list : List[File] = []
+
+@router.post('/drill/create')
+async def create_emergency_drill(
+    form_data:DrillCreateForm,
+    db: Session = Depends(get_db)
+):
+    try:
+        # 提取请求数据
+        plan_number = form_data.plan_number
+        drill_name = form_data.drill_name
+        organizing_unit = form_data.organizing_unit
+        planned_annual = form_data.planned_annual
+        planned_time = form_data.planned_time
+        drill_location = form_data.drill_location
+        drill_lon = form_data.drill_lon
+        drill_lat = form_data.drill_lat
+
+
+        # 创建新的预案记录
+        new_drill = EmergencyDrill(
+            drill_id=new_guid(),  # 假设使用 UUID 作为预案 UID
+            plan_number = plan_number
+            drill_name=drill_name
+            organizing_unit = organizing_unit
+            planned_annual = planned_annual
+            planned_time = planned_time
+            drill_location = drill_location
+            drill_lon = drill_lon
+            drill_lat = drill_lat
+        )
+
+        # 添加到数据库会话并提交
+        db.add(new_drill)
+        db.commit()
+        db.refresh(new_drill)  # 可选,如果需要刷新实例状态
+
+        for file in form_data.scheme_file_list:
+            file_name = file.file_name
+            file_name_desc = file.file_name_desc
+            file_path = file.file_path
+            new_file = EmergencyFile(
+                file_id = new_guid(),
+                foreign_key = new_drill.drill_id,
+                from_scenario = 'emergencyPlans_drill_scheme',
+                file_name=file_name,
+                file_name_desc = file_name_desc,
+                file_path = file_path
+            )
+            db.add(new_file)
+            db.commit()
+            db.refresh(new_file)
+        for file in form_data.video_file_list:
+            file_name = file.file_name
+            file_name_desc = file.file_name_desc
+            file_path = file.file_path
+            new_file = EmergencyFile(
+                file_id = new_guid(),
+                foreign_key = new_drill.drill_id,
+                from_scenario = 'emergencyPlans_drill_video',
+                file_name=file_name,
+                file_name_desc = file_name_desc,
+                file_path = file_path
+            )
+            db.add(new_file)
+            db.commit()
+            db.refresh(new_file)
+        for file in form_data.pic_file_list:
+            file_name = file.file_name
+            file_name_desc = file.file_name_desc
+            file_path = file.file_path
+            new_file = EmergencyFile(
+                file_id = new_guid(),
+                foreign_key = new_drill.drill_id,
+                from_scenario = 'emergencyPlans_drill_pic',
+                file_name=file_name,
+                file_name_desc = file_name_desc,
+                file_path = file_path
+            )
+            db.add(new_file)
+            db.commit()
+            db.refresh(new_file)
+        # 返回创建成功的响应
+        return {
+            "code": 200,
+            "msg": "演练创建成功",
+            "data": None
+        }
+    except Exception as e:
+        # 处理异常
+        raise HTTPException(status_code=500, detail=str(e))
+
+
+
+
 
 @router.get('/training/list')
-async def get_emergency_plan_list(
+async def get_emergency_training_list(
     planNum: str = Query(None, description='预案编号'),
     page: int = Query(1, gt=0, description='页码'),
     page_size: int = Query(10, gt=0, description='每页条目数量'),
@@ -327,6 +433,54 @@ async def get_emergency_plan_list(
             "page_size": page_size,
             "total_pages": (total_items + page_size - 1) // page_size
         }
+    except Exception as e:
+        # 处理异常
+        raise HTTPException(status_code=500, detail=str(e))
+
+class TrainingCreateForm(BaseModel):
+    training_theme : str
+    training_unit : str
+    training_method : str
+    participant_count: int
+    start_time : str
+    end_time : str
+    training_content :str
+    drill_location : str
+    drill_lon : float
+    drill_lat : float
+
+@router.post('/training/create')
+async def create_emergency_training(
+    form_data:TrainingCreateForm,
+    db: Session = Depends(get_db)
+):
+    try:
+        # 创建新的预案记录
+        new_training = EmergencyTrainingSession(
+            training_id=new_guid(),  # 假设使用 UUID 作为预案 UID
+            training_theme=form_data.training_theme,
+            training_unit=form_data.training_unit,
+            training_method=form_data.training_method,
+            participant_count=form_data.participant_count,
+            start_time=form_data.start_time,
+            end_time=form_data.end_time,
+            training_content=form_data.training_content,
+            drill_location=form_data.drill_location,
+            drill_lon=form_data.drill_lon,
+            drill_lat=form_data.drill_lat
+        )
+
+        # 添加到数据库会话并提交
+        db.add(new_training)
+        db.commit()
+        db.refresh(new_plan)  # 可选,如果需要刷新实例状态
+
+        # 返回创建成功的响应
+        return {
+            "code": 200,
+            "msg": "培训创建成功",
+            "data": None
+        }
     except Exception as e:
         # 处理异常
         raise HTTPException(status_code=500, detail=str(e))