Explorar el Código

新增预案详情页面

baoyubo hace 1 año
padre
commit
9d693dd54d
Se han modificado 1 ficheros con 50 adiciones y 0 borrados
  1. 50 0
      routers/api/emergencyPlans/__init__.py

+ 50 - 0
routers/api/emergencyPlans/__init__.py

@@ -74,6 +74,56 @@ async def get_emergency_plan_list(
         # 处理异常
         raise HTTPException(status_code=500, detail=str(e))
 
+@router.get('/plan/{planNum}')
+async def get_emergency_plan(
+    planNum: str ,
+    db: Session = Depends(get_db)
+):
+    try:
+        # 构建查询
+        query = db.query(EmergencyPlan)
+        query = query.filter(EmergencyPlan.del_flag != '2')
+        # 应用查询条件
+        if planNum:
+            query = query.filter(EmergencyPlan.plan_number == planNum)
+
+        # 执行查询
+        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_desc,
+                "organUnit": emergency_plan.organizing_unit,
+                "document": emergency_plan.document_number,
+                "publish_date": emergency_plan.publish_date.strftime('%Y-%m-%d'),
+                file_list:[{
+                    "file_name":file.file_name,
+                    "file_name_desc":file.file_name_desc,
+                    "file_url":"/api/file/download/%s"%file.file_name
+                } for file in files ]
+            }
+
+        # 返回结果
+        return {
+            "code": 200,
+            "msg": "成功获取预案详情",
+            "data": emergency_plans
+        }
+    except Exception as e:
+        # 处理异常
+        raise HTTPException(status_code=500, detail=str(e))
+
+
 class File(BaseModel):
     file_name:str
     file_name_desc:str