__init__.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. from fastapi import APIRouter, Request, Depends
  4. from fastapi.responses import JSONResponse
  5. from database import get_db
  6. from sqlalchemy.orm import Session
  7. from models import *
  8. import json
  9. router = APIRouter()
  10. @router.get('/list')
  11. async def get_emergency_plan_list(
  12. plan_type: str = Query(None, description='预案类型'),
  13. publish_date: datetime = Query(None, description='发布日期'),
  14. plan_name: str = Query(None, description='预案名称'),
  15. db: Session = Depends(database.get_db)
  16. ):
  17. try:
  18. # 构建查询
  19. query = db.query(models.EmergencyPlan)
  20. # 应用查询条件
  21. if plan_type:
  22. query = query.filter(models.EmergencyPlan.plan_type == plan_type)
  23. if publish_date:
  24. query = query.filter(models.EmergencyPlan.publish_date == publish_date)
  25. if plan_name:
  26. query = query.filter(models.EmergencyPlan.plan_name.like(f'%{plan_name}%'))
  27. # 执行查询
  28. emergency_plans = query.all()
  29. # 将查询结果转换为列表形式的字典
  30. emergency_plans_list = [
  31. {
  32. "id": plan.id,
  33. "plan_id": plan.plan_id,
  34. "plan_number": plan.plan_number,
  35. "plan_name": plan.plan_name,
  36. "plan_type": plan.plan_type,
  37. "plan_type_desc": plan.plan_type_desc,
  38. "publish_date": plan.publish_date.strftime('%Y-%m-%d %H:%M:%S'),
  39. "organizing_unit": plan.organizing_unit,
  40. "document_number": plan.document_number,
  41. # 其他需要的字段...
  42. }
  43. for plan in emergency_plans
  44. ]
  45. # 返回结果
  46. return {
  47. "code": 200,
  48. "msg": "成功获取预案列表",
  49. "data": emergency_plans_list
  50. }
  51. except Exception as e:
  52. # 处理异常
  53. raise HTTPException(status_code=500, detail=str(e))