From 4e72ed491afe1ca8ddc726d68d3e6da415226048 Mon Sep 17 00:00:00 2001 From: haotian <2421912570@qq.com> Date: Fri, 30 May 2025 11:39:46 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E5=92=8C=E5=89=8D=E7=AB=AF?= =?UTF-8?q?=E4=BA=A4=E4=BA=92=E7=9A=84=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/v1/endpoints/events.py | 20 ++++++++++++++++++-- app/core/config.py | 4 ++-- app/crud/event.py | 30 +++++++++++++++++++++++++++++- 3 files changed, 49 insertions(+), 5 deletions(-) diff --git a/app/api/v1/endpoints/events.py b/app/api/v1/endpoints/events.py index cde34e8..c52372d 100644 --- a/app/api/v1/endpoints/events.py +++ b/app/api/v1/endpoints/events.py @@ -104,14 +104,17 @@ async def delete_event( return BaseResponse(code=404,msg="事件不存在") return BaseResponse(code=200, msg="success", data=EventDetail.model_validate(event_obj)) +# 获取告警消息列表 @router.get("/events/messages", response_model=BaseResponse[List[OcrAlertMessage]]) async def get_messages( - db: AsyncSession = Depends(get_db) + db: AsyncSession = Depends(get_db), + skip: int = Query(0, ge=0), + limit: int = Query(100, ge=1, le=1000) ): """_summary_ 获取告警消息列表 """ - message = await event.get_messages(db) + message = await event.get_messages(db, skip=skip, limit=limit) return BaseResponse(code=200, msg="success", data=message) # 批量处理告警数据--传递messageId List @@ -160,6 +163,19 @@ async def handle_ocr_alert( if flag: return BaseResponse(code=200, msg="success") return BaseResponse(code=500, msg="fail to update data") + + +# 查看告警详情 +@router.get("/events/alert/{messageId}", response_model=BaseResponse[OcrAlertMessage]) +async def get_alert_detail( + messageId:int, + db: AsyncSession = Depends(get_db), +): + + alert_message = await event.get_alert_detail(db, messageId=messageId) + + return BaseResponse(code=200, msg="success", data=alert_message) + diff --git a/app/core/config.py b/app/core/config.py index 183d6fd..a66c714 100644 --- a/app/core/config.py +++ b/app/core/config.py @@ -2,10 +2,10 @@ from pydantic_settings import BaseSettings class Settings(BaseSettings): # 数据库配置 - DB_HOST: str = "10.0.0.17" + DB_HOST: str = "14.103.162.172" DB_PORT: int = 3306 DB_USER: str = "root" - DB_PASSWORD: str = "root" + DB_PASSWORD: str = "dnxxkj" DB_NAME: str = "kangda" # DB_NAME: str = "kangda_test" # 测试数据库 diff --git a/app/crud/event.py b/app/crud/event.py index a7d86eb..0e5b2e7 100644 --- a/app/crud/event.py +++ b/app/crud/event.py @@ -190,6 +190,8 @@ class CRUDEvent(CRUDBase[Event, EventUpdate, EventUpdate]): async def get_messages( self, db: AsyncSession, + skip:int, + limit:int ) -> Optional[List[OcrAlertMessage]]: query_stmt = ( select(Message.messageId,Message.eventId ,Message.messageType, Message.eventType, Message.handle, Message.remark, Message.createTime, @@ -200,6 +202,8 @@ class CRUDEvent(CRUDBase[Event, EventUpdate, EventUpdate]): .outerjoin(Event, Message.eventId == Event.eventId) .outerjoin(Image, Message.eventId == Image.eventId) .outerjoin(Temperature, Message.eventId == Temperature.eventId) + .offset(skip) + .limit(limit) ) messages = await db.execute(query_stmt) @@ -293,9 +297,33 @@ class CRUDEvent(CRUDBase[Event, EventUpdate, EventUpdate]): return True except Exception as e: - print(f"处理单个消息失败: {str(e)}") + print(f"处理单个消息失败: {e}") await db.rollback() return False + + async def get_alert_detail( + self, + db: AsyncSession, + messageId: int + ) ->Optional[OcrAlertMessage]: + try: + select_stmt = ( + select(Message.messageId,Message.eventId ,Message.messageType, Message.eventType, Message.handle, Message.remark, Message.createTime, + Event.number,Event.name, + Image.imageUrl, Image.localPath, + Temperature.temperature) + .select_from(Message) + .outerjoin(Event, Message.eventId == Event.eventId) + .outerjoin(Image, Message.eventId == Image.eventId) + .outerjoin(Temperature, Message.eventId == Temperature.eventId) + .where(Message.messageId == messageId) + ) + + result = await db.execute(select_stmt) + return result.mappings().first() + except Exception as e: + print(f"获取告警详情失败: {e}") +