添加--添加查看全部告警信息接口

This commit is contained in:
haotian 2025-06-09 10:51:28 +08:00
parent 61827a5597
commit 83e099051f
4 changed files with 112 additions and 9 deletions

View File

@ -6,7 +6,7 @@ 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, Message, RobotInfo,Group, GroupRobot, Event
from app.schemas.event import EventList, EventDetail, EventUpdate, EventQuery, BackStageEvent, BackStageEventDto, BackStageEventDetail, EditTemperatureDto, OcrAlertMessage, OcrAlertMessageDto, GetRobotDto, CommonAlertMessage
from app.schemas.event import EventList, EventDetail, EventUpdate, EventQuery, BackStageEvent, BackStageEventDto, BackStageEventDetail, EditTemperatureDto, OcrAlertMessage, OcrAlertMessageDto, GetRobotDto, CommonAlertMessage, GetAllMessageDto
from app.util.httpResponse import BaseResponse
from app.util.status import EventType
from sqlalchemy import select
@ -334,17 +334,37 @@ async def get_alert_front_detail(
return BaseResponse(code=200, msg="success", data=alert_message[0])
# 查看全部告警事件详情--属于该机器人的
@router.get("/events/getAllAlertMessage/{number}")
async def get_all_alert_message(
number: str,
db: AsyncSession = Depends(get_db),
skip: int = Query(0, ge=0),
limit: int = Query(100, ge=1, le=1000)
):
data = await event.get_all_alert_message(db, number, skip, limit)
return BaseResponse(
code = 200,
msg = "success",
data = data
)
# 获取未处理告警消息数量
@router.get("/events/alertCount", response_model=BaseResponse)
async def get_alert_count(
number: Optional[str] = None,
db: AsyncSession = Depends(get_db)
):
# 未处理告警数量
alert_count = await event.get_alert_count(db, handle="0", number=number)
# 已处理告警数量
processed_count = await event.get_alert_count(db, handle="1", number=number)
# 所有告警数量
all_count = alert_count + processed_count
return BaseResponse(code=200, msg="success", data={
"alert_count": alert_count,
"processed_count": processed_count
"processed_count": processed_count,
"all_count": all_count
})
# 获取厂区及机器人实时监控
@router.get("/events/getMonitor")
@ -369,12 +389,14 @@ async def get_monitor():
"视角2": "https://play.livejinan.cn/21ZoxrLa/45ee42a7b9d64400963d6bacc9a75867.m3u8?auth_key=1893340800-0-0-3522915cd5471437682295596e73cac2"
},
"室外机器人监控":{
"视角1": "https://test-streams.mux.dev/x36xhzz/x36xhzz.m3u8",
"视角2": "https://play.livejinan.cn/21ZoxrLa/45ee42a7b9d64400963d6bacc9a75867.m3u8?auth_key=1893340800-0-0-3522915cd5471437682295596e73cac2"
"热成像": "webrtc://qvs-live.thirdmonitor.concoai.com:447/2xenzwqy2ppcl/31011500991180041301_34020000001320000001",
"主监控": "webrtc://qvs-live.thirdmonitor.concoai.com:447/2xenzwqy2ppcl/31011500991180041302_34020000001320000002",
"前置摄像头":"webrtc://qvs-live.thirdmonitor.concoai.com:447/2xenzwqy2ppcl/31011500991180041302_34020000001320000001"
}
}
)
# 获取机器人统计信息
@router.get("/events/robotST", response_model=BaseResponse[dict])
async def get_robot_st(
@ -397,6 +419,16 @@ async def get_robot_st(
"disable_count": disable_count
})
# 获取机器人任务列表
@router.get("/events/robotTask")
async def get_robot_task(
db: AsyncSession=Depends(get_db),
robotId: Optional[str]=None
):
# print("robotId: ", robotId)
task_list = await event.get_robot_task(db, robotId)
return BaseResponse(code="200", msg="success", data = task_list)
async def get_message_by_event_type(
db:AsyncSession ,
handle: str ,

View File

@ -1,10 +1,11 @@
from typing import List, Optional, Dict, Any
from sqlalchemy import select, and_, or_, update, bindparam, func
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy.orm import selectinload
from app.crud.base import CRUDBase
from app.models.models import Event, Image, RobotInfo, Temperature, Message, Robot
from app.schemas.event import EventUpdate, EventQuery, BackStageEvent, BackStageEventDto, BackStageEventDetail, EditTemperatureDto, OcrAlertMessage, OcrAlertMessageDto, GetRobotDto, CommonAlertMessage
from app.models.models import Event, Image, RobotInfo, Temperature, Message, Robot, Task
from app.schemas.event import AllMessageDto, EventUpdate, EventQuery, BackStageEvent, BackStageEventDto, BackStageEventDetail, EditTemperatureDto, OcrAlertMessage, OcrAlertMessageDto, GetRobotDto, CommonAlertMessage, GetAllMessageDto
from pydantic import VERSION as PYDANTIC_VERSION
from datetime import datetime, timedelta, timezone
@ -282,7 +283,43 @@ class CRUDEvent(CRUDBase[Event, EventUpdate, EventUpdate]):
back.append(commonAlertMessage)
return back
async def get_all_alert_message(
self,
db: AsyncSession,
number: str,
offset: int,
limit: int
):
"""
获取机器人所有的告警
"""
query_stmt = (
select(Message.messageId, Message.handle, Message.remark, Message.eventId,Event.number, Event.name, Event.etypeName)
.select_from(Message)
.outerjoin(Event, Message.eventId==Event.eventId)
.where(Event.number == number)
.offset(offset)
.limit(limit)
)
results = await db.execute(query_stmt)
results = results.mappings().all()
data = list()
for result in results:
t = AllMessageDto(**result)
query_image_stmt = (
select(Image.imageUrl)
.where(Image.eventId == result.eventId)
)
image_list = await db.execute(query_image_stmt)
t.imageList = image_list.scalars().all()
data.append(t)
return data
async def handle_ocr_alerts(
self,
db:AsyncSession,
@ -481,6 +518,21 @@ class CRUDEvent(CRUDBase[Event, EventUpdate, EventUpdate]):
except Exception as e:
print(f"{e}")
async def get_robot_task(
self,
db: AsyncSession,
robotId: Optional[str] = None
):
try:
query_stmt = (
select(Task).where(Task.robotId == robotId)
)
result = await db.execute(query_stmt)
result = result.mappings().all()
# print(result)
return [Task(**t) for t in result]
except Exception as e:
print(f"{e}")
async def get_messages_st(
self,
db: AsyncSession,

View File

@ -1,4 +1,5 @@
from datetime import datetime
from token import OP
from typing import List, Optional
from pydantic import BaseModel, ConfigDict
@ -201,7 +202,17 @@ class OcrAlertMessageDto(BaseModel):
number: Optional[str] = None
class GetAllMessageDto(BaseModel):
number: str
etypeName: Optional[str] = None
class AllMessageDto(BaseModel):
messageId : int
eventId: str
imageList : Optional[list] = None
number: Optional[str]
name: Optional[str]
etypeName: Optional[str]
handle: Optional[str]
remark: Optional[str]

View File

@ -1,6 +1,8 @@
# target
- 实现机器人页告警列表接口
- 实现获取机器人任务页接口
- 实现获取机器人下拉框接口
# 20250606
@ -13,3 +15,9 @@
- 修改/events/handleOcrAlert接口, 添加json参数number指定机器人.
- 修改查看告警消息详情, 添加返回参数Temperature.
- 添加同步机器人任务方法
-
# 20250609
- 修改/events/alertCount 接口, 添加总告警消息数量字段
- 添加 /events/getAllAlertMessage/{number} 接口, 查看全部--获取所有输入该机器人的所有告警消息.