实现和前端交互的接口

This commit is contained in:
haotian 2025-05-30 11:39:46 +08:00
parent df4d65a3a5
commit 4e72ed491a
3 changed files with 49 additions and 5 deletions

View File

@ -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
@ -162,6 +165,19 @@ async def handle_ocr_alert(
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)

View File

@ -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" # 测试数据库

View File

@ -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,10 +297,34 @@ 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}")