__init__.py 2.0 KB

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