添加消息类, socket接收到异常时会新建消息

This commit is contained in:
haotian 2025-05-27 15:18:40 +08:00
parent 2b2046f9b9
commit f634449be8
4 changed files with 51 additions and 17 deletions

View File

@ -63,6 +63,7 @@ class Event(Base):
images = relationship("Image", back_populates="event", cascade="all, delete", passive_deletes=True)
temperatures = relationship("Temperature", back_populates="event", cascade="all, delete", passive_deletes=True)
process_logs = relationship("ProcessLog", back_populates="event", cascade="all, delete", passive_deletes=True)
messages = relationship("Message", back_populates="event", cascade="all, delete", passive_deletes=True)
class Image(Base):
@ -119,4 +120,29 @@ class ProcessLog(Base):
__table_args__ = (
Index('idx_log_event_id', 'eventId'),
Index('idx_log_create_time', 'createTime'),
)
)
class Message(Base):
__tablename__ = "message"
messageId = Column(BigInteger, primary_key=True, autoincrement=True, comment='消息ID')
eventId = Column(String(50), ForeignKey('event.eventId', ondelete="CASCADE"), nullable=False, comment='关联事件ID')
messageType = Column(String(5), comment='消息类型')
eventType = Column(String(5), comment='事件类型')
handle = Column(String(5), default='0', comment='是否处理' )
remark = Column(String(500), comment='备注')
createTime = Column(DateTime, default=datetime.now, nullable=False, comment='创建时间')
updateTime = Column(DateTime, default=datetime.now, nullable=False, comment='更新时间')
event = relationship("Event", back_populates="messages")
__table_args__ = (
Index('idx_message_event_id', 'eventId'),
Index('idx_message_create_time', 'createTime'),
Index('idx_message_update_time', 'updateTime'),
)

View File

@ -4,7 +4,7 @@ from typing import List, Dict, Any
from sqlalchemy import select
from sqlalchemy.ext.asyncio import AsyncSession
from app.core.database import async_session
from app.models.models import Event, Image, Temperature
from app.models.models import Event, Image, Temperature, Message
from app.util.kangda import Kangda
from app.util.baiduOcr import BadiduOcr
@ -190,6 +190,14 @@ class EventSyncService:
status = status.value
)
session.add(temperature)
# 异常消息
if status.value != 0:
message = Message(
eventId = image.eventId,
messageType = status.value
)
session.add(message)
try:
await session.commit()
except Exception as e:

View File

@ -8,4 +8,4 @@ from app.services.event_sync_service import run_sync, run_sync_event
if __name__ == "__main__":
print("启动事件同步服务...")
# asyncio.run(run_sync())
asyncio.run(run_sync_event("07a9da561cd643328d5d43a33cce89bb"))
asyncio.run(run_sync_event("3d685e6927724b9db47e52b544bf6103"))

View File

@ -13,7 +13,7 @@ async def init_db():
async with engine.begin() as conn:
# 删除已注册的表
await conn.run_sync(Base.metadata.drop_all)
# await conn.run_sync(Base.metadata.drop_all)
# 创建表
await conn.run_sync(Base.metadata.create_all)
@ -187,25 +187,25 @@ async def main():
await init_db()
print("数据库初始化完成")
# 测试创建
event_id = await test_create()
# # 测试创建
# event_id = await test_create()
# 测试读取
await test_read(event_id)
# # 测试读取
# await test_read(event_id)
# 测试更新
await test_update(event_id)
# # 测试更新
# await test_update(event_id)
# 测试读取更新后的数据
await test_read(event_id)
# # 测试读取更新后的数据
# await test_read(event_id)
# 测试事务
await test_transaction()
# # 测试事务
# await test_transaction()
# 测试删除
await test_delete(event_id)
# # 测试删除
# await test_delete(event_id)
print("\n数据库测试完成")
# print("\n数据库测试完成")
if __name__ == "__main__":
asyncio.run(main())