添加--添加查看全部告警信息接口
This commit is contained in:
parent
61827a5597
commit
83e099051f
@ -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 ,
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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]
|
||||
|
||||
@ -1,6 +1,8 @@
|
||||
# target
|
||||
|
||||
- 实现机器人页告警列表接口
|
||||
- 实现获取机器人任务页接口
|
||||
- 实现获取机器人下拉框接口
|
||||
|
||||
# 20250606
|
||||
|
||||
@ -13,3 +15,9 @@
|
||||
- 修改/events/handleOcrAlert接口, 添加json参数number指定机器人.
|
||||
- 修改查看告警消息详情, 添加返回参数Temperature.
|
||||
- 添加同步机器人任务方法
|
||||
-
|
||||
|
||||
# 20250609
|
||||
|
||||
- 修改/events/alertCount 接口, 添加总告警消息数量字段
|
||||
- 添加 /events/getAllAlertMessage/{number} 接口, 查看全部--获取所有输入该机器人的所有告警消息.
|
||||
|
||||
Loading…
Reference in New Issue
Block a user