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