event.py 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. from fastapi import APIRouter, Request, Depends, HTTPException, Query
  2. from sqlalchemy.exc import IntegrityError
  3. from fastapi.responses import HTMLResponse, FileResponse
  4. from fastapi.responses import JSONResponse
  5. from database import get_db
  6. from sqlalchemy import text, exists, and_, or_, not_
  7. from sqlalchemy.orm import Session
  8. from models import *
  9. import json
  10. import random
  11. from sqlalchemy import create_engine, select
  12. from typing import Optional
  13. from utils.StripTagsHTMLParser import *
  14. from common.db import db_event_management, db_user, db_area, db_emergency_plan
  15. from common.security import valid_access_token
  16. import traceback
  17. from utils import *
  18. from datetime import datetime, timedelta
  19. router = APIRouter()
  20. # 列出预案单位任务
  21. @router.post('/unit_task')
  22. async def unit_task(
  23. request: Request,
  24. db: Session = Depends(get_db),
  25. body = Depends(remove_xss_json),
  26. user_id = Depends(valid_access_token)
  27. ):
  28. plan_id = body['plan_id']
  29. row = db.query(EmergencyPlan).filter(EmergencyPlan.plan_number == plan_id).first()
  30. if row is None:
  31. return {
  32. "code": 500,
  33. "msg": "没有匹配的预案"
  34. }
  35. plan_info = get_model_dict(row)
  36. rows = db.query(EmergencyUnit).filter(EmergencyUnit.plan_id == plan_id).order_by(EmergencyUnit.dept_order.asc()).all()
  37. data = [
  38. {
  39. "id": row.id,
  40. "dept_id": row.dept_id,
  41. "dept_name": row.dept_name,
  42. "content": "{},您好!《{}》现已全面启动,特此通知您单位迅速响应,全力做好预案工作要点:{}".format(row.dept_name, plan_info['plan_name'], row.content)
  43. }
  44. for row in rows
  45. ]
  46. if len(rows) == 0:
  47. return {
  48. "code": 500,
  49. "msg": "暂无该预案的应急预单位职责信息,请联系管理员配置。"
  50. }
  51. # 返回结果
  52. return {
  53. "code": 200,
  54. "msg": "查询成功",
  55. "data": data
  56. }
  57. # 列出可用预案
  58. @router.post('/avail_plan_list')
  59. async def unit_task(
  60. request: Request,
  61. db: Session = Depends(get_db),
  62. body = Depends(remove_xss_json),
  63. user_id = Depends(valid_access_token)
  64. ):
  65. rows = db.query(EmergencyPlan).filter(EmergencyPlan.del_flag == "0").order_by(EmergencyPlan.plan_number.asc()).all()
  66. data = [
  67. {
  68. "plan_id": row.plan_number,
  69. "plan_name": row.plan_name,
  70. "response_level": row.response_level
  71. }
  72. for row in rows
  73. ]
  74. # 返回结果
  75. return {
  76. "code": 200,
  77. "msg": "查询成功",
  78. "data": data
  79. }