#!/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))