|
@@ -0,0 +1,65 @@
|
|
|
+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('/detail')
|
|
|
+async def doc(
|
|
|
+ request: Request,
|
|
|
+ db: Session = Depends(get_db),
|
|
|
+ body = Depends(remove_xss_json),
|
|
|
+ user_id = Depends(valid_access_token)
|
|
|
+):
|
|
|
+ plan_id = body['plan_id']
|
|
|
+ items = []
|
|
|
+ rows = db.query(EmergencyDoc).filter(and_(EmergencyDoc.pid == 0, EmergencyDoc.plan_id == plan_id)).all()
|
|
|
+ for row in rows:
|
|
|
+ items.append(get_item_data(db, row.id, 1))
|
|
|
+
|
|
|
+ return {
|
|
|
+ 'code': 200,
|
|
|
+ 'msg': '查询成功',
|
|
|
+ 'data': items
|
|
|
+ }
|
|
|
+
|
|
|
+def get_item_data(db: Session, id: int, level: int):
|
|
|
+ data = []
|
|
|
+ row = db.query(EmergencyDoc).filter(EmergencyDoc.id == id).first()
|
|
|
+ if row is not None:
|
|
|
+ pid = row.id
|
|
|
+ data = get_model_dict(row)
|
|
|
+ data['level'] = level
|
|
|
+ if data['value'] is None:
|
|
|
+ data['value'] = ''
|
|
|
+
|
|
|
+ data['items'] = []
|
|
|
+ rows = db.query(EmergencyDoc).filter(EmergencyDoc.pid == pid).all()
|
|
|
+ for row in rows:
|
|
|
+ item = get_item_data(db, row.id, level + 1)
|
|
|
+ data['items'].append(item)
|
|
|
+
|
|
|
+ if len(data['items']) == 0 and level == 2:
|
|
|
+ del data['items']
|
|
|
+
|
|
|
+ data['id'] = data['plan_id']+str(data['id'])
|
|
|
+ data['href'] = "#" + data['id']
|
|
|
+ data['containerRef'] = "containerRef" + data['id']
|
|
|
+ data['value'] = data['value'].replace("\r\n", "<br/>")
|
|
|
+ return data
|