修改--修改返回告警消息格式

This commit is contained in:
haotian 2025-06-03 17:07:17 +08:00
parent c33a04e74a
commit ed8c24d40b
3 changed files with 69 additions and 12 deletions

View File

@ -183,9 +183,10 @@ async def get_alert_detail(
db: AsyncSession = Depends(get_db),
):
alert_message = await event.get_alert_detail(db, messageId=messageId)
# alert_message = await event.get_alert_detail(db, messageId=messageId)
alert_message = await event.get_messages(db, skip=0, limit=1, condition=[Message.messageId==messageId])
return BaseResponse(code=200, msg="success", data=alert_message)
return BaseResponse(code=200, msg="success", data=alert_message[0])
# 获取未处理告警消息数量
@router.get("/events/alertCount", response_model=BaseResponse)

View File

@ -197,11 +197,11 @@ class CRUDEvent(CRUDBase[Event, EventUpdate, EventUpdate]):
query_stmt = (
select(Message.messageId,Message.eventId ,Message.messageType, Message.eventType, Message.handle, Message.remark, Message.createTime,
Event.number,Event.name,
Image.imageUrl, Image.localPath,
# Image.imageUrl, Image.localPath,
Temperature.temperature)
.select_from(Message)
.outerjoin(Event, Message.eventId == Event.eventId)
.outerjoin(Image, Message.eventId == Image.eventId)
# .outerjoin(Image, Message.eventId == Image.eventId)
.outerjoin(Temperature, Message.eventId == Temperature.eventId)
.where(*condition)
.order_by(Message.createTime.desc())
@ -211,7 +211,27 @@ class CRUDEvent(CRUDBase[Event, EventUpdate, EventUpdate]):
messages = await db.execute(query_stmt)
messages = messages.mappings().all()
return [OcrAlertMessage(**t) for t in messages]
back = list()
for message in messages:
# 获取图片URL列表
query_image_stmt = (
select(Image.imageUrl)
.where(Image.eventId == message.get("eventId"))
)
images = await db.execute(query_image_stmt)
images = images.mappings().all()
# 将RowMapping转换为字典
message_dict = dict(message)
# 将图片URL列表转换为普通列表
image_urls = [dict(img)["imageUrl"] for img in images]
message_dict["imageUrl"] = image_urls
ocrAlertMessage = OcrAlertMessage(**message_dict)
back.append(ocrAlertMessage)
return back
async def handle_ocr_alerts(
self,
@ -323,10 +343,28 @@ class CRUDEvent(CRUDBase[Event, EventUpdate, EventUpdate]):
)
result = await db.execute(select_stmt)
return result.mappings().first()
message = result.mappings().first()
if message:
# 获取图片URL列表
query_image_stmt = (
select(Image.imageUrl)
.where(Image.eventId == message.get("eventId"))
)
images = await db.execute(query_image_stmt)
images = images.mappings().all()
# 将RowMapping转换为字典
message_dict = dict(message)
# 添加图片URL列表
message_dict["imageUrl"] = images
return OcrAlertMessage(**message_dict)
return None
except Exception as e:
print(f"获取告警详情失败: {e}")
return None
async def get_alert_count(
self,

View File

@ -146,8 +146,9 @@ class BackStageEventDetail(BaseModel):
reason: Optional[str] = None
remark: Optional[str] = None
# 获取报警信息列表
class OcrAlertMessage(BaseModel):
# 通常告警消息列表
class CommonAlertMessage(BaseModel):
messageId: int
eventId: str
messageType: Optional[str] = None
@ -157,12 +158,29 @@ class OcrAlertMessage(BaseModel):
remark: Optional[str] = None
number: Optional[str] = None
name: Optional[str] = None
imageUrl : Optional[str] = None
localPath: Optional[str] = None
temperature : Optional[str] = None
imageUrl : Optional[List[str]] = None
# localPath: Optional[List[str]] = None
# temperature : Optional[str] = None
model_config = ConfigDict(from_attributes=True)
# 报警消息列表
class OcrAlertMessage(CommonAlertMessage):
# messageId: int
# eventId: str
# messageType: Optional[str] = None
# eventType: Optional[str] = None
# createTime: Optional[datetime] = None
# handle: Optional[str] = None
# remark: Optional[str] = None
# number: Optional[str] = None
# name: Optional[str] = None
# imageUrl : Optional[str] = None
# localPath: Optional[str] = None
temperature : Optional[str] = None
# model_config = ConfigDict(from_attributes=True)
# 处理消息DTO
class OcrAlertMessageDto(BaseModel):
messageId: int