from fastapi import APIRouter, Request, Depends, HTTPException, Query from sqlalchemy.exc import IntegrityError from fastapi.responses import HTMLResponse, FileResponse from fastapi.responses import JSONResponse from database import get_db from sqlalchemy import text, exists, and_, or_, not_ from sqlalchemy.orm import Session from models import * import json import random from sqlalchemy import create_engine, select from typing import Optional from utils.StripTagsHTMLParser import * from common.db import db_event_management, db_user, db_area, db_emergency_plan from common.security import valid_access_token import traceback from utils import * from datetime import datetime, timedelta router = APIRouter() # 列出预案单位任务 @router.post('/unit_task') async def unit_task( request: Request, db: Session = Depends(get_db), body = Depends(remove_xss_json), user_id = Depends(valid_access_token) ): plan_id = body['plan_id'] row = db.query(EmergencyPlan).filter(EmergencyPlan.plan_number == plan_id).first() if row is None: return { "code": 500, "msg": "没有匹配的预案" } plan_info = get_model_dict(row) rows = db.query(EmergencyUnit).filter(EmergencyUnit.plan_id == plan_id).order_by(EmergencyUnit.dept_order.asc()).all() data = [ { "id": row.id, "dept_id": row.dept_id, "dept_name": row.dept_name, "content": "{},您好!《{}》现已全面启动,特此通知您单位迅速响应,全力做好预案工作要点:{}".format(row.dept_name, plan_info['plan_name'], row.content) } for row in rows ] if len(rows) == 0: return { "code": 500, "msg": "暂无该预案的应急预单位职责信息,请联系管理员配置。" } # 返回结果 return { "code": 200, "msg": "查询成功", "data": data } # 列出可用预案 @router.post('/avail_plan_list') async def unit_task( request: Request, db: Session = Depends(get_db), body = Depends(remove_xss_json), user_id = Depends(valid_access_token) ): rows = db.query(EmergencyPlan).filter(EmergencyPlan.del_flag == "0").order_by(EmergencyPlan.plan_number.asc()).all() data = [ { "plan_id": row.plan_number, "plan_name": row.plan_name, "response_level": row.response_level } for row in rows ] # 返回结果 return { "code": 200, "msg": "查询成功", "data": data }