Browse Source

no message

libushang 9 months ago
parent
commit
730d2ceb1e

+ 16 - 0
common/db/db_dept.py

@@ -0,0 +1,16 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+from sqlalchemy.orm import Session
+from sqlalchemy import text, exists, and_, or_, not_
+from sqlalchemy.sql import func
+from database import get_db
+from models import *
+from extensions import logger
+from utils import *
+
+def get_dept_name_by_id(db: Session, dept_id: int) -> str:
+    row = db.query(SysDept).filter(SysDept.dept_id == dept_id).first()
+    if row is not None:
+        return row.dept_name
+    
+    return ""

+ 4 - 58
routers/api/emergencyPlans/__init__.py

@@ -15,11 +15,14 @@ from utils import *
 import json
 import traceback
 
-from . import event
+from . import event, response, unit
 
 router = APIRouter()
 
 router.include_router(event.router, prefix="/event", tags=["事件相关"])
+router.include_router(response.router, prefix="/response", tags=["响应相关"])
+router.include_router(unit.router, prefix="/unit", tags=["单位职责相关"])
+
 
 class File(BaseModel):
     status :str
@@ -1019,60 +1022,3 @@ async def delete_emergency_training(
         if str(e) == '':
             e = detail
         raise HTTPException(status_code=500, detail=str(e))
-
-
-@router.get('/response/list')
-async def get_emergency_response_list(
-    planNum:str,
-    page: int = Query(1, gt=0, description='页码'),
-    pageSize: int = Query(5, gt=0, description='每页条目数量'),
-    db: Session = Depends(get_db),
-    user_id = Depends(valid_access_token)
-):
-    try:
-        # 查询所有响应事件
-
-        query = db.query(EmergencyResponse)
-        query = query.filter(EmergencyResponse.del_flag!='2')
-        query = query.filter(EmergencyResponse.plan_id==planNum)
-
-        # 计算总条目数
-        total_items = query.count()
-
-        # 排序
-
-        query = query.order_by(EmergencyResponse.response_start_time.desc())
-        # 执行分页查询
-        responses = query.offset((page - 1) * pageSize).limit(pageSize).all()
-
-
-
-        # 将查询结果转换为列表形式的字典
-        response_list = [
-            {
-                "responseId": response.response_id,
-                "eventName": response.event_name,
-                "eventType": response.event_type,
-                "responseUnit": response.response_unit,
-                "eventAddress": response.event_address,
-                "responseLevel": response.response_level,
-                "responseStartTime": response.response_start_time.strftime('%Y-%m-%d %H:%M:%S') if response.response_start_time else '',
-                "responseEndTime": response.response_end_time.strftime('%Y-%m-%d %H:%M:%S') if response.response_end_time else '',
-            }
-            for response in responses
-        ]
-
-        # 返回结果
-        return {
-            "code": 200,
-            "msg": "成功获取响应列表",
-            "data": response_list,
-            "total": total_items,
-            "page": page,
-            "pageSize": pageSize,
-            "totalPages": (total_items + pageSize - 1) // pageSize
-        }
-    except Exception as e:
-        # 处理异常
-        traceback.print_exc()
-        raise HTTPException(status_code=500, detail=str(e))

+ 77 - 0
routers/api/emergencyPlans/response.py

@@ -0,0 +1,77 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+from fastapi import APIRouter, Request, Depends,Query, HTTPException, status
+from common.security import valid_access_token
+from fastapi.responses import JSONResponse
+from sqlalchemy.orm import Session
+from sqlalchemy import and_, or_
+from pydantic import BaseModel
+from datetime import datetime
+from database import get_db
+from typing import List
+from models import *
+from utils import *
+import json
+import traceback
+
+from . import response
+
+router = APIRouter()
+
+
+@router.get('/list')
+async def get_emergency_response_list(
+    planNum:str,
+    page: int = Query(1, gt=0, description='页码'),
+    pageSize: int = Query(5, gt=0, description='每页条目数量'),
+    db: Session = Depends(get_db),
+    user_id = Depends(valid_access_token)
+):
+    try:
+        # 查询所有响应事件
+
+        query = db.query(EmergencyResponse)
+        query = query.filter(EmergencyResponse.del_flag!='2')
+        query = query.filter(EmergencyResponse.plan_id==planNum)
+
+        # 计算总条目数
+        total_items = query.count()
+
+        # 排序
+
+        query = query.order_by(EmergencyResponse.response_start_time.desc())
+        # 执行分页查询
+        responses = query.offset((page - 1) * pageSize).limit(pageSize).all()
+
+
+
+        # 将查询结果转换为列表形式的字典
+        response_list = [
+            {
+                "responseId": response.response_id,
+                "eventName": response.event_name,
+                "eventType": response.event_type,
+                "responseUnit": response.response_unit,
+                "eventAddress": response.event_address,
+                "responseLevel": response.response_level,
+                "responseStartTime": response.response_start_time.strftime('%Y-%m-%d %H:%M:%S') if response.response_start_time else '',
+                "responseEndTime": response.response_end_time.strftime('%Y-%m-%d %H:%M:%S') if response.response_end_time else '',
+            }
+            for response in responses
+        ]
+
+        # 返回结果
+        return {
+            "code": 200,
+            "msg": "成功获取响应列表",
+            "data": response_list,
+            "total": total_items,
+            "page": page,
+            "pageSize": pageSize,
+            "totalPages": (total_items + pageSize - 1) // pageSize
+        }
+    except Exception as e:
+        # 处理异常
+        traceback.print_exc()
+        raise HTTPException(status_code=500, detail=str(e))

+ 194 - 0
routers/api/emergencyPlans/unit.py

@@ -0,0 +1,194 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+from fastapi import APIRouter, Request, Depends,Query, HTTPException, status
+from common.security import valid_access_token
+from fastapi.responses import JSONResponse
+from sqlalchemy.orm import Session
+from sqlalchemy import and_, or_
+from pydantic import BaseModel
+from datetime import datetime
+from database import get_db
+from typing import List
+from models import *
+from utils import *
+import json
+from common.db import db_dept
+import traceback
+from pprint import pprint
+
+from . import unit
+
+router = APIRouter()
+
+
+@router.get('/list')
+async def get_emergency_unit_list(
+    plan_id: str = Query(None, description='预案编号'),
+    page: int = Query(1, gt=0, description='页码'),
+    pageSize: int = Query(5, gt=0, description='每页条目数量'),
+    db: Session = Depends(get_db),
+    user_id = Depends(valid_access_token)
+):
+    try:
+        # 构建查询
+        query = db.query(EmergencyUnit)
+        # 应用查询条件
+        query = query.filter(EmergencyUnit.plan_id == plan_id)
+
+        # 计算总条目数
+        total_items = query.count()
+        query = query.order_by(EmergencyUnit.dept_order.asc())
+
+        # 执行分页查询
+        rows = query.offset((page - 1) * pageSize).limit(pageSize).all()
+
+        # 将查询结果转换为列表形式的字典
+        emergency_unit_list = [
+            {
+                "id": row.id,
+                "dept_id": row.dept_id,
+                "dept_name": row.dept_name,
+                "content": row.content,
+                "dept_order":row.dept_order
+            }
+            for row in rows
+        ]
+
+        # 返回结果
+        return {
+            "code": 200,
+            "msg": "查询成功",
+            "data": emergency_unit_list,
+            "total": total_items
+        }
+    except Exception as e:
+        # 处理异常
+        raise HTTPException(status_code=500, detail=str(e))
+
+
+
+@router.post('/create')
+async def create_emergency_unit(
+    db: Session = Depends(get_db),
+    body = Depends(remove_xss_json),
+    user_id = Depends(valid_access_token)
+):
+    try:
+        # 提取请求数据
+        plan_id = body['plan_id']
+        dept_id = body['dept_id']
+        dept_name = db_dept.get_dept_name_by_id(db, dept_id)
+        content = body['content']
+        dept_order = body['dept_order']
+
+        # 创建新的预案记录
+        new_unit = EmergencyUnit(
+            plan_id = plan_id,
+            dept_id = dept_id,
+            dept_name = dept_name,
+            content = content,
+            dept_order = dept_order
+        )
+
+        db.add(new_unit)
+        db.commit()
+        db.refresh(new_unit)
+
+        return {
+            "code": 200,
+            "msg": "单位职责创建成功",
+            "data": None
+        }
+    except Exception as e:
+        # 处理异常
+        raise HTTPException(status_code=500, detail=str(e))
+
+
+
+@router.put('/update')
+async def update_emergency_unit(
+    db: Session = Depends(get_db),
+    body = Depends(remove_xss_json),
+    user_id = Depends(valid_access_token)
+):
+    try:
+        # 提取请求数据
+        id = body['id']
+        plan_id = body['plan_id']
+        dept_id = body['dept_id']
+        dept_name = db_dept.get_dept_name_by_id(db, dept_id)
+        content = body['content']
+        dept_order = body['dept_order']
+
+        query = db.query(EmergencyUnit)
+        query = query.filter(EmergencyUnit.id == id)
+        unit = query.first()
+
+        unit.plan_id = plan_id
+        unit.dept_id = dept_id
+        unit.dept_name = dept_name
+        unit.content = content
+        unit.dept_order = dept_order
+        
+        # 提交所有更新
+        db.commit()
+
+        # 返回更新成功的响应
+        return {
+            "code": 200,
+            "msg": "单位职责更新成功",
+            "data": None
+        }
+    
+    except Exception as e:
+        traceback.print_exc()
+        # 处理异常
+        raise HTTPException(status_code=500, detail=str(e))
+
+
+
+@router.delete('/delete')
+async def delete_emergency_unit(
+    db: Session = Depends(get_db),
+    body = Depends(remove_xss_json),
+    user_id = Depends(valid_access_token)
+):
+    try:
+        ids = body['ids']
+        for id in ids:
+            db.query(EmergencyUnit).filter(EmergencyUnit.id == id).delete()
+        db.commit()
+
+        return {
+            "code": 200,
+            "msg": "单位职责删除成功",
+            "data": None
+        }
+    except Exception as e:
+        traceback.print_exc()
+        # 处理异常
+        raise HTTPException(status_code=500, detail=str(e))
+    
+
+
+@router.get('/{id}')
+async def get_emergency_unit(
+    id: int,
+    db: Session = Depends(get_db),
+    body = Depends(remove_xss_json),
+    user_id = Depends(valid_access_token)
+):
+    try:
+        # 执行查询
+        unit = db.query(EmergencyUnit).filter(EmergencyUnit.id == id).first()
+        # 返回结果
+        return {
+            "code": 200,
+            "msg": "成功",
+            "data": get_model_dict(unit)
+        }
+    except Exception as e:
+        traceback.print_exc()
+        # 处理异常
+        raise HTTPException(status_code=500, detail=str(e))