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