|
@@ -28,6 +28,16 @@ class PlanCreateForm(BaseModel):
|
|
|
publishDate: str
|
|
|
organizingUnit : str
|
|
|
document : str
|
|
|
+ fileList : List[File]
|
|
|
+
|
|
|
+class PlanUpdateForm(BaseModel):
|
|
|
+ planId : str
|
|
|
+ planName : str = None
|
|
|
+ planType : int = None
|
|
|
+ # planTypeDesc : str
|
|
|
+ publishDate: str = None
|
|
|
+ organizingUnit : str = None
|
|
|
+ document : str = None
|
|
|
fileList : List[File] = []
|
|
|
|
|
|
class DrillCreateForm(BaseModel):
|
|
@@ -39,12 +49,25 @@ class DrillCreateForm(BaseModel):
|
|
|
drillAddress : str
|
|
|
lon : float
|
|
|
lat : float
|
|
|
+ drillProject : List[File]
|
|
|
+ drillVideo : List[File]
|
|
|
+ drillPicture : List[File]
|
|
|
+
|
|
|
+class DrillUpdateForm(BaseModel):
|
|
|
+ drillId : str
|
|
|
+ planId : str = None
|
|
|
+ drillName : str = None
|
|
|
+ drillUnit : str = None
|
|
|
+ year : int = None
|
|
|
+ drillTime: str = None
|
|
|
+ drillAddress : str = None
|
|
|
+ lon : float = None
|
|
|
+ lat : float = None
|
|
|
drillProject : List[File] = []
|
|
|
drillVideo : List[File] = []
|
|
|
drillPicture : List[File] = []
|
|
|
|
|
|
-
|
|
|
-def get_file_query_fun(from_scenario,foreign_key):
|
|
|
+def get_file_query_fun(from_scenario,foreign_key,db: Session):
|
|
|
file_query = db.query(EmergencyFile)
|
|
|
file_query = file_query.filter(EmergencyFile.del_flag != '2')
|
|
|
|
|
@@ -59,6 +82,33 @@ def get_file_query_fun(from_scenario,foreign_key):
|
|
|
} for file in files]
|
|
|
return result
|
|
|
|
|
|
+def delete_file_fun(from_scenario,foreign_key,db: Session):
|
|
|
+ file_query = db.query(EmergencyFile)
|
|
|
+ file_query = file_query.filter(EmergencyFile.del_flag != '2')
|
|
|
+
|
|
|
+ file_query = file_query.filter(EmergencyFile.from_scenario == from_scenario)
|
|
|
+ file_query = file_query.filter(EmergencyFile.foreign_key == foreign_key)
|
|
|
+ files = file_query.all()
|
|
|
+ for file in files:
|
|
|
+ file.del_flag='2'
|
|
|
+ db.commit()
|
|
|
+
|
|
|
+def create_file_fun(file,from_scenario,foreign_key,db: Session):
|
|
|
+ file_name = file.url
|
|
|
+ file_name_desc = file.name
|
|
|
+ status = file.status
|
|
|
+ new_file = EmergencyFile(
|
|
|
+ file_id=new_guid(),
|
|
|
+ foreign_key=foreign_key,
|
|
|
+ from_scenario=from_scenario,
|
|
|
+ file_name=file_name,
|
|
|
+ file_name_desc=file_name_desc,
|
|
|
+ status=status
|
|
|
+ )
|
|
|
+ db.add(new_file)
|
|
|
+ db.commit()
|
|
|
+ db.refresh(new_file)
|
|
|
+
|
|
|
|
|
|
@router.get('/plan/list')
|
|
|
async def get_emergency_plan_list(
|
|
@@ -148,7 +198,9 @@ async def get_emergency_plan(
|
|
|
|
|
|
# 执行查询
|
|
|
emergency_plan = query.first()
|
|
|
-
|
|
|
+ if not emergency_plan:
|
|
|
+ detail = "预案不存在"
|
|
|
+ raise HTTPException(status_code=404, detail="预案不存在")
|
|
|
# 将查询结果转换为列表形式的字典
|
|
|
emergency_plan_result = {
|
|
|
"planUid": emergency_plan.plan_id,
|
|
@@ -158,7 +210,7 @@ async def get_emergency_plan(
|
|
|
"organizingUnit": emergency_plan.organizing_unit,
|
|
|
"document": emergency_plan.document_number,
|
|
|
"publish_date": emergency_plan.publish_date.strftime('%Y-%m-%d'),
|
|
|
- "fileList": get_file_query_fun(from_scenario='emergencyPlans_plan',foreign_key=emergency_plan.plan_id)
|
|
|
+ "fileList": get_file_query_fun(from_scenario='emergencyPlans_plan',foreign_key=emergency_plan.plan_id,db=db)
|
|
|
}
|
|
|
|
|
|
# 返回结果
|
|
@@ -169,6 +221,8 @@ async def get_emergency_plan(
|
|
|
}
|
|
|
except Exception as e:
|
|
|
# 处理异常
|
|
|
+ if str(e)=='':
|
|
|
+ e = detail
|
|
|
raise HTTPException(status_code=500, detail=str(e))
|
|
|
|
|
|
|
|
@@ -206,20 +260,7 @@ async def create_emergency_plan(
|
|
|
new_plan.plan_number= f'YJYA{str(new_plan.id).zfill(10)}'
|
|
|
db.commit()
|
|
|
for file in form_data.fileList:
|
|
|
- file_name = file.url
|
|
|
- file_name_desc = file.name
|
|
|
- status = file.status
|
|
|
- new_file = EmergencyFile(
|
|
|
- file_id = new_guid(),
|
|
|
- foreign_key = new_plan.plan_id,
|
|
|
- from_scenario = 'emergencyPlans_plan',
|
|
|
- file_name=file_name,
|
|
|
- file_name_desc = file_name_desc,
|
|
|
- status = status
|
|
|
- )
|
|
|
- db.add(new_file)
|
|
|
- db.commit()
|
|
|
- db.refresh(new_file)
|
|
|
+ create_file_fun(file=file, from_scenario='emergencyPlans_plan', foreign_key=plan.plan_id, db=db)
|
|
|
|
|
|
# 返回创建成功的响应
|
|
|
return {
|
|
@@ -232,46 +273,58 @@ async def create_emergency_plan(
|
|
|
raise HTTPException(status_code=500, detail=str(e))
|
|
|
|
|
|
|
|
|
-# @router.put('/plan/update')
|
|
|
-# async def update_emergency_plan(
|
|
|
-# plan_data: dict,
|
|
|
-# db: Session = Depends(get_db)
|
|
|
-# ):
|
|
|
-# try:
|
|
|
-# # 提取请求数据
|
|
|
-# query = db.query(EmergencyPlan)
|
|
|
-# query = query.filter(EmergencyPlan.plan_id == plan_data.get('plan_id'))
|
|
|
-# query = query.filter(EmergencyPlan.del_flag != '2')
|
|
|
-# plan = query.first()
|
|
|
-# if not plan:
|
|
|
-# detail = "预案不存在"
|
|
|
-# raise HTTPException(status_code=404, detail="预案不存在")
|
|
|
-#
|
|
|
-# plan.plan_name = plan_data.get('plan_name')
|
|
|
-# plan.plan_type = plan_data.get('plan_type')
|
|
|
-# plan.plan_type_desc = plan_data.get('plan_type_desc')
|
|
|
-# plan.publish_date = plan_data.get('publish_date') # 如果没有提供发布日期,则使用当前时间
|
|
|
-# plan.organizing_unit = plan_data.get('organizing_unit') # 使用用户位置作为编制单位
|
|
|
-# plan.document_number = plan_data.get('document_number')
|
|
|
-#
|
|
|
-#
|
|
|
-# # 更新到数据库会话并提交
|
|
|
-# db.commit()
|
|
|
-# db.refresh(new_plan) # 可选,如果需要刷新实例状态
|
|
|
-#
|
|
|
-# # 返回创建成功的响应
|
|
|
-# return {
|
|
|
-# "code": 200,
|
|
|
-# "msg": "预案更新成功",
|
|
|
-# "data": None
|
|
|
-# }
|
|
|
-# except Exception as e:
|
|
|
-# # 处理异常
|
|
|
-# if str(e)=='':
|
|
|
-# e = detail
|
|
|
-# raise HTTPException(status_code=500, detail=str(e))
|
|
|
-#
|
|
|
-#
|
|
|
+@router.put('/plan/update')
|
|
|
+async def update_emergency_plan(
|
|
|
+ form_data: PlanUpdateForm,
|
|
|
+ db: Session = Depends(get_db)
|
|
|
+):
|
|
|
+ try:
|
|
|
+ # 提取请求数据
|
|
|
+ query = db.query(EmergencyPlan)
|
|
|
+ query = query.filter(EmergencyPlan.plan_id == form_data.planId)
|
|
|
+ query = query.filter(EmergencyPlan.del_flag != '2')
|
|
|
+ plan = query.first()
|
|
|
+ if not plan:
|
|
|
+ detail = "预案不存在"
|
|
|
+ raise HTTPException(status_code=404, detail="预案不存在")
|
|
|
+
|
|
|
+ if planName:
|
|
|
+ plan.plan_name = form_data.planName
|
|
|
+
|
|
|
+ if planType:
|
|
|
+ plan.plan_type = form_data.planType
|
|
|
+
|
|
|
+ if publishDate:
|
|
|
+ plan.publish_date = form_data.publishDate
|
|
|
+
|
|
|
+ if organizingUnit:
|
|
|
+ plan.organizing_unit = form_data.organizingUnit
|
|
|
+
|
|
|
+ if document:
|
|
|
+ plan.document_number = form_data.document
|
|
|
+
|
|
|
+ if len(fileList)>0:
|
|
|
+ delete_file_fun(from_scenario='emergencyPlans_plan',foreign_key=plan.plan_id,db=db)
|
|
|
+ for file in form_data.fileList:
|
|
|
+ create_file_fun(file=file,from_scenario='emergencyPlans_plan',foreign_key=plan.plan_id,db=db)
|
|
|
+
|
|
|
+ # 更新到数据库会话并提交
|
|
|
+ db.commit()
|
|
|
+ db.refresh(new_plan) # 可选,如果需要刷新实例状态
|
|
|
+
|
|
|
+ # 返回创建成功的响应
|
|
|
+ return {
|
|
|
+ "code": 200,
|
|
|
+ "msg": "预案更新成功",
|
|
|
+ "data": None
|
|
|
+ }
|
|
|
+ except Exception as e:
|
|
|
+ # 处理异常
|
|
|
+ if str(e)=='':
|
|
|
+ e = detail
|
|
|
+ raise HTTPException(status_code=500, detail=str(e))
|
|
|
+
|
|
|
+
|
|
|
@router.delete('/plan/delete/{planUid}')
|
|
|
async def delete_emergency_plan(
|
|
|
planUid: str,
|
|
@@ -342,16 +395,12 @@ async def get_emergency_drill_list(
|
|
|
"year": "%s年" % drill.planned_annual,
|
|
|
"drillTime": drill.planned_time.strftime('%Y-%m-%d %H:%M:%S'),
|
|
|
"drillAddress": drill.drill_location,
|
|
|
- "drillProject": get_file_query_fun(from_scenario='emergencyPlans_drill_project', foreign_key=drill.drill_id),
|
|
|
- "drillVideo": get_file_query_fun(from_scenario='emergencyPlans_drill_video', foreign_key=drill.drill_id),
|
|
|
- "drillPicture": get_file_query_fun(from_scenario='emergencyPlans_drill_pic', foreign_key=drill.drill_id)
|
|
|
+ "drillProject": get_file_query_fun(from_scenario='emergencyPlans_drill_project', foreign_key=drill.drill_id,db=db),
|
|
|
+ "drillVideo": get_file_query_fun(from_scenario='emergencyPlans_drill_video', foreign_key=drill.drill_id,db=db),
|
|
|
+ "drillPicture": get_file_query_fun(from_scenario='emergencyPlans_drill_pic', foreign_key=drill.drill_id,db=db)
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
emergency_drill_list.append(emergency_drill)
|
|
|
|
|
|
-
|
|
|
-
|
|
|
# 返回结果
|
|
|
return {
|
|
|
"code": 200,
|
|
@@ -368,7 +417,7 @@ async def get_emergency_drill_list(
|
|
|
e = detail
|
|
|
raise HTTPException(status_code=500, detail=str(e))
|
|
|
|
|
|
-@router.get('/drill/{drillId}}')
|
|
|
+@router.get('/drill/{drillId}')
|
|
|
async def get_emergency_drill(
|
|
|
drillId: str = Query(None, description='演练编号'),
|
|
|
db: Session = Depends(get_db)
|
|
@@ -379,7 +428,7 @@ async def get_emergency_drill(
|
|
|
query = query.filter(EmergencyDrill.del_flag != '2')
|
|
|
# 应用查询条件
|
|
|
if drillId:
|
|
|
- query = query.filter(EmergencyDrill.plan_number == drillId)
|
|
|
+ query = query.filter(EmergencyDrill.drill_id == drillId)
|
|
|
else:
|
|
|
detail = "drillId不存在"
|
|
|
raise HTTPException(status_code=404, detail="drillId不存在")
|
|
@@ -395,9 +444,9 @@ async def get_emergency_drill(
|
|
|
"year": "%s年" % drill.planned_annual,
|
|
|
"drillTime": drill.planned_time.strftime('%Y-%m-%d %H:%M:%S'),
|
|
|
"drillAddress": drill.drill_location,
|
|
|
- "drillProject": get_file_query_fun(from_scenario='emergencyPlans_drill_project',foreign_key=drill.drill_id),
|
|
|
- "drillVideo": get_file_query_fun(from_scenario='emergencyPlans_drill_video', foreign_key=drill.drill_id),
|
|
|
- "drillPicture": get_file_query_fun(from_scenario='emergencyPlans_drill_pic', foreign_key=drill.drill_id)
|
|
|
+ "drillProject": get_file_query_fun(from_scenario='emergencyPlans_drill_project',foreign_key=drill.drill_id,db=db),
|
|
|
+ "drillVideo": get_file_query_fun(from_scenario='emergencyPlans_drill_video', foreign_key=drill.drill_id,db=db),
|
|
|
+ "drillPicture": get_file_query_fun(from_scenario='emergencyPlans_drill_pic', foreign_key=drill.drill_id,db=db)
|
|
|
}
|
|
|
|
|
|
# 返回结果
|
|
@@ -555,7 +604,9 @@ async def get_emergency_training_list(
|
|
|
if planNum:
|
|
|
query = query.filter(EmergencyTrainingSession.plan_number == planNum)
|
|
|
else:
|
|
|
- return 'planNum不存在'
|
|
|
+ detail = "planNum不存在"
|
|
|
+ raise HTTPException(status_code=404, detail="planNum不存在")
|
|
|
+
|
|
|
|
|
|
# 计算总条目数
|
|
|
total_items = query.count()
|
|
@@ -592,6 +643,55 @@ async def get_emergency_training_list(
|
|
|
}
|
|
|
except Exception as e:
|
|
|
# 处理异常
|
|
|
+ if str(e) == '':
|
|
|
+ e = detail
|
|
|
+ raise HTTPException(status_code=500, detail=str(e))
|
|
|
+
|
|
|
+
|
|
|
+@router.get('/training/{trainingId}')
|
|
|
+async def get_emergency_training(
|
|
|
+ trainingId: str = Query(None, description='培训编号'),
|
|
|
+ db: Session = Depends(get_db)
|
|
|
+):
|
|
|
+ try:
|
|
|
+ # 构建查询
|
|
|
+ query = db.query(EmergencyTrainingSession)
|
|
|
+ query = query.filter(EmergencyTrainingSession.del_flag != '2')
|
|
|
+ # 应用查询条件
|
|
|
+ if trainingId:
|
|
|
+ query = query.filter(EmergencyTrainingSession.training_id == trainingId)
|
|
|
+ else:
|
|
|
+ detail = "trainingId不存在"
|
|
|
+ raise HTTPException(status_code=404, detail="trainingId不存在")
|
|
|
+
|
|
|
+
|
|
|
+ # 执行查询
|
|
|
+ training = query.first() #
|
|
|
+
|
|
|
+ # 将查询结果转换为列表形式的字典
|
|
|
+ emergency_training = {
|
|
|
+ "trainingId": training.training_id,
|
|
|
+ "theme": training.training_theme,
|
|
|
+ "unitName": training.training_unit,
|
|
|
+ "peopleNum": "%s人"%training.participant_count,
|
|
|
+ "trainingWay":training.training_method,
|
|
|
+ "startTime":training.start_time.strftime('%Y-%m-%d %H:%M:%S'),
|
|
|
+ "endTime": training.end_time.strftime('%Y-%m-%d %H:%M:%S'),
|
|
|
+ "address": training.training_location,
|
|
|
+ "Content":training.training_content
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ # 返回结果
|
|
|
+ return {
|
|
|
+ "code": 200,
|
|
|
+ "msg": "成功",
|
|
|
+ "data": emergency_training
|
|
|
+ }
|
|
|
+ except Exception as e:
|
|
|
+ # 处理异常
|
|
|
+ if str(e) == '':
|
|
|
+ e = detail
|
|
|
raise HTTPException(status_code=500, detail=str(e))
|
|
|
|
|
|
class TrainingCreateForm(BaseModel):
|
|
@@ -642,6 +742,7 @@ async def create_emergency_training(
|
|
|
}
|
|
|
except Exception as e:
|
|
|
# 处理异常
|
|
|
+
|
|
|
raise HTTPException(status_code=500, detail=str(e))
|
|
|
|
|
|
@router.delete('/training/delete/{trainingUid}')
|