|
@@ -44,6 +44,22 @@ class DrillCreateForm(BaseModel):
|
|
|
drillPicture : List[File] = []
|
|
|
|
|
|
|
|
|
+def get_file_query_fun(from_scenario,foreign_key):
|
|
|
+ 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()
|
|
|
+ result = [{
|
|
|
+ "uid": file.file_id,
|
|
|
+ "status": file.status,
|
|
|
+ "name": file.file_name_desc,
|
|
|
+ "url": "/api/file/download/%s" % file.file_name
|
|
|
+ } for file in files]
|
|
|
+ return result
|
|
|
+
|
|
|
+
|
|
|
@router.get('/plan/list')
|
|
|
async def get_emergency_plan_list(
|
|
|
planType: str = Query(None, description='预案类型'),
|
|
@@ -117,9 +133,9 @@ async def get_emergency_plan_list(
|
|
|
# 处理异常
|
|
|
raise HTTPException(status_code=500, detail=str(e))
|
|
|
|
|
|
-@router.get('/plan/{planNum}')
|
|
|
+@router.get('/plan/{planId}')
|
|
|
async def get_emergency_plan(
|
|
|
- planNum: str ,
|
|
|
+ planId: str ,
|
|
|
db: Session = Depends(get_db)
|
|
|
):
|
|
|
try:
|
|
@@ -127,40 +143,29 @@ async def get_emergency_plan(
|
|
|
query = db.query(EmergencyPlan)
|
|
|
query = query.filter(EmergencyPlan.del_flag != '2')
|
|
|
# 应用查询条件
|
|
|
- if planNum:
|
|
|
- query = query.filter(EmergencyPlan.plan_number == planNum)
|
|
|
+ if planId:
|
|
|
+ query = query.filter(EmergencyPlan.plan_number == planId)
|
|
|
|
|
|
# 执行查询
|
|
|
emergency_plan = query.first()
|
|
|
|
|
|
- file_query = db.query(EmergencyFile)
|
|
|
- file_query = file_query.filter(EmergencyFile.del_flag != '2')
|
|
|
-
|
|
|
- file_query = file_query.filter(EmergencyFile.from_scenario == 'emergencyPlans_plan')
|
|
|
- file_query = file_query.filter(EmergencyFile.foreign_key == emergency_plan.plan_id)
|
|
|
- files = file_query.all()
|
|
|
# 将查询结果转换为列表形式的字典
|
|
|
- emergency_plans ={
|
|
|
- "planUid": emergency_plan.plan_id,
|
|
|
- "planId": emergency_plan.plan_number,
|
|
|
- "planName": emergency_plan.plan_name,
|
|
|
- "planType": emergency_plan.plan_type,
|
|
|
- "organizingUnit": emergency_plan.organizing_unit,
|
|
|
- "document": emergency_plan.document_number,
|
|
|
- "publish_date": emergency_plan.publish_date.strftime('%Y-%m-%d'),
|
|
|
- "fileList": [{
|
|
|
- "uid":file.file_id,
|
|
|
- "status":file.status,
|
|
|
- "name":file.file_name_desc,
|
|
|
- "url":"/api/file/download/%s"%file.file_name
|
|
|
- } for file in files ]
|
|
|
- }
|
|
|
+ emergency_plan_result = {
|
|
|
+ "planUid": emergency_plan.plan_id,
|
|
|
+ "planId": emergency_plan.plan_number,
|
|
|
+ "planName": emergency_plan.plan_name,
|
|
|
+ "planType": emergency_plan.plan_type,
|
|
|
+ "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)
|
|
|
+ }
|
|
|
|
|
|
# 返回结果
|
|
|
return {
|
|
|
"code": 200,
|
|
|
"msg": "成功获取预案详情",
|
|
|
- "data": emergency_plans
|
|
|
+ "data": emergency_plan_result
|
|
|
}
|
|
|
except Exception as e:
|
|
|
# 处理异常
|
|
@@ -301,6 +306,7 @@ async def delete_emergency_plan(
|
|
|
raise HTTPException(status_code=500, detail=str(e))
|
|
|
|
|
|
|
|
|
+
|
|
|
@router.get('/drill/list')
|
|
|
async def get_emergency_drill_list(
|
|
|
planNum: str = Query(None, description='预案编号'),
|
|
@@ -316,7 +322,9 @@ async def get_emergency_drill_list(
|
|
|
if planNum:
|
|
|
query = query.filter(EmergencyDrill.plan_number == planNum)
|
|
|
else:
|
|
|
- return 'planNum不存在'
|
|
|
+ detail = "planNum不存在"
|
|
|
+ raise HTTPException(status_code=404, detail="planNum不存在")
|
|
|
+
|
|
|
|
|
|
# 计算总条目数
|
|
|
total_items = query.count()
|
|
@@ -327,50 +335,19 @@ async def get_emergency_drill_list(
|
|
|
# 将查询结果转换为列表形式的字典
|
|
|
emergency_drill_list = []
|
|
|
for drill in emergency_drill:
|
|
|
- project_query = db.query(EmergencyFile)
|
|
|
- project_query = project_query.filter(EmergencyFile.del_flag != '2')
|
|
|
- project_query = project_query.filter(EmergencyFile.from_scenario == 'emergencyPlans_drill_project')
|
|
|
- project_query = project_query.filter(EmergencyFile.foreign_key == drill.drill_id)
|
|
|
- projects = project_query.all()
|
|
|
-
|
|
|
- video_query = db.query(EmergencyFile)
|
|
|
- video_query = video_query.filter(EmergencyFile.del_flag != '2')
|
|
|
- video_query = video_query.filter(EmergencyFile.from_scenario == 'emergencyPlans_drill_video')
|
|
|
- video_query = video_query.filter(EmergencyFile.foreign_key == drill.drill_id)
|
|
|
- videos = video_query.all()
|
|
|
-
|
|
|
- picture_query = db.query(EmergencyFile)
|
|
|
- picture_query = picture_query.filter(EmergencyFile.del_flag != '2')
|
|
|
- picture_query = picture_query.filter(EmergencyFile.from_scenario == 'emergencyPlans_drill_pic')
|
|
|
- picture_query = picture_query.filter(EmergencyFile.foreign_key == drill.drill_id)
|
|
|
- pictures = picture_query.all()
|
|
|
-
|
|
|
emergency_drill = {
|
|
|
"drillId": drill.drill_id,
|
|
|
"drillName": drill.drill_name,
|
|
|
"drillUnit": drill.organizing_unit,
|
|
|
- "year": "%s年"%drill.planned_annual,
|
|
|
+ "year": "%s年" % drill.planned_annual,
|
|
|
"drillTime": drill.planned_time.strftime('%Y-%m-%d %H:%M:%S'),
|
|
|
"drillAddress": drill.drill_location,
|
|
|
- "drillProject":[{
|
|
|
- "uid": file.file_id,
|
|
|
- "status": file.status,
|
|
|
- "name": file.file_name_desc,
|
|
|
- "url": "/api/file/download/%s" % file.file_name
|
|
|
- } for file in projects ],
|
|
|
- "drillVideo":[{
|
|
|
- "uid": file.file_id,
|
|
|
- "status": file.status,
|
|
|
- "name": file.file_name_desc,
|
|
|
- "url": "/api/file/download/%s" % file.file_name
|
|
|
- } for file in videos ],
|
|
|
- "drillPicture":[{
|
|
|
- "uid": file.file_id,
|
|
|
- "status": file.status,
|
|
|
- "name": file.file_name_desc,
|
|
|
- "url": "/api/file/download/%s" % file.file_name
|
|
|
- } for file in pictures ]
|
|
|
- }
|
|
|
+ "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)
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
emergency_drill_list.append(emergency_drill)
|
|
|
|
|
|
|
|
@@ -387,6 +364,52 @@ async def get_emergency_drill_list(
|
|
|
}
|
|
|
except Exception as e:
|
|
|
# 处理异常
|
|
|
+ if str(e) == '':
|
|
|
+ e = detail
|
|
|
+ raise HTTPException(status_code=500, detail=str(e))
|
|
|
+
|
|
|
+@router.get('/drill/{drillId}}')
|
|
|
+async def get_emergency_drill(
|
|
|
+ drillId: str = Query(None, description='演练编号'),
|
|
|
+ db: Session = Depends(get_db)
|
|
|
+):
|
|
|
+ try:
|
|
|
+ # 构建查询
|
|
|
+ query = db.query(EmergencyDrill)
|
|
|
+ query = query.filter(EmergencyDrill.del_flag != '2')
|
|
|
+ # 应用查询条件
|
|
|
+ if drillId:
|
|
|
+ query = query.filter(EmergencyDrill.plan_number == drillId)
|
|
|
+ else:
|
|
|
+ detail = "drillId不存在"
|
|
|
+ raise HTTPException(status_code=404, detail="drillId不存在")
|
|
|
+
|
|
|
+ # 执行查询
|
|
|
+ drill = query.first()
|
|
|
+
|
|
|
+ # 将查询结果转换为字典形式
|
|
|
+ emergency_drill = {
|
|
|
+ "drillId": drill.drill_id,
|
|
|
+ "drillName": drill.drill_name,
|
|
|
+ "drillUnit": drill.organizing_unit,
|
|
|
+ "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)
|
|
|
+ }
|
|
|
+
|
|
|
+ # 返回结果
|
|
|
+ return {
|
|
|
+ "code": 200,
|
|
|
+ "msg": "成功",
|
|
|
+ "data": emergency_drill
|
|
|
+ }
|
|
|
+ except Exception as e:
|
|
|
+ # 处理异常
|
|
|
+ if str(e) == '':
|
|
|
+ e = detail
|
|
|
raise HTTPException(status_code=500, detail=str(e))
|
|
|
|
|
|
|
|
@@ -632,7 +655,7 @@ async def delete_emergency_training(
|
|
|
query = query.filter(EmergencyTrainingSession.del_flag != '2')
|
|
|
query = query.filter(EmergencyTrainingSession.training_id == trainingUid)
|
|
|
training = query.first()
|
|
|
- if not drill:
|
|
|
+ if not training:
|
|
|
detail = "培训不存在"
|
|
|
raise HTTPException(status_code=404, detail="培训不存在")
|
|
|
|