diff --git a/app/api/v1/endpoints/events.py b/app/api/v1/endpoints/events.py index 50d5262..3f9d543 100644 --- a/app/api/v1/endpoints/events.py +++ b/app/api/v1/endpoints/events.py @@ -3,7 +3,7 @@ from fastapi import APIRouter, Depends, HTTPException, Query, Body from sqlalchemy.ext.asyncio import AsyncSession from app.core.database import get_db from app.crud.event import event -from app.models.models import Robot +from app.models.models import Robot, Message from app.schemas.event import EventList, EventDetail, EventUpdate, EventQuery, BackStageEvent, BackStageEventDto, BackStageEventDetail, EditTemperatureDto, OcrAlertMessage, OcrAlertMessageDto from app.util.httpResponse import BaseResponse @@ -105,9 +105,9 @@ 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( +# 获取未处理告警消息列表 +@router.get("/events/messagesUnhandled", response_model=BaseResponse[List[OcrAlertMessage]]) +async def get_messages_unhandle( db: AsyncSession = Depends(get_db), skip: int = Query(0, ge=0), limit: int = Query(100, ge=1, le=1000) @@ -115,9 +115,19 @@ async def get_messages( """_summary_ 获取告警消息列表 """ - message = await event.get_messages(db, skip=skip, limit=limit) + message = await event.get_messages(db, skip=skip, limit=limit, condition=[Message.handle=="0"]) return BaseResponse(code=200, msg="success", data=message) +# 获取已处理告警消息列表 +@router.get("/events/messagesHandled", response_model=BaseResponse[List[OcrAlertMessage]]) +async def get_messages_handle( + db: AsyncSession = Depends(get_db), + skip: int = Query(0, ge=0), + limit: int = Query(100, ge=1, le=1000) +): + message = await event.get_messages(db, skip=skip, limit=limit, condition=[Message.handle=="1"]) + return BaseResponse(code=200, msg="success", data=message) + # 批量处理告警数据--传递messageId List @router.post("/events/handleOcrAlerts", response_model=BaseResponse) async def handle_ocr_alerts( diff --git a/app/crud/event.py b/app/crud/event.py index 0c773d0..58994ea 100644 --- a/app/crud/event.py +++ b/app/crud/event.py @@ -191,7 +191,8 @@ class CRUDEvent(CRUDBase[Event, EventUpdate, EventUpdate]): self, db: AsyncSession, skip:int, - limit:int + limit:int, + condition: list = [] ) -> Optional[List[OcrAlertMessage]]: query_stmt = ( select(Message.messageId,Message.eventId ,Message.messageType, Message.eventType, Message.handle, Message.remark, Message.createTime, @@ -202,6 +203,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) + .where(*condition) + .order_by(Message.createTime.desc()) .offset(skip) .limit(limit) )