修改--获取机器人任务列表,添加status字段

This commit is contained in:
haotian 2025-06-09 16:42:31 +08:00
parent 1666d6f66a
commit 8cb5a9db5b
3 changed files with 35 additions and 8 deletions

View File

@ -5,7 +5,7 @@ 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, Task
from app.schemas.event import AllMessageDto, EventUpdate, EventQuery, BackStageEvent, BackStageEventDto, BackStageEventDetail, EditTemperatureDto, OcrAlertMessage, OcrAlertMessageDto, GetRobotDto, CommonAlertMessage, GetAllMessageDto
from app.schemas.event import AllMessageDto, EventUpdate, EventQuery, BackStageEvent, BackStageEventDto, BackStageEventDetail, EditTemperatureDto, OcrAlertMessage, OcrAlertMessageDto, GetRobotDto, CommonAlertMessage, GetAllMessageDto, TaskListDto
from pydantic import VERSION as PYDANTIC_VERSION
from datetime import datetime, timedelta, timezone
@ -538,14 +538,27 @@ class CRUDEvent(CRUDBase[Event, EventUpdate, EventUpdate]):
robotId: Optional[str] = None
):
try:
# print("robotId", robotId)
query_stmt = (
select(Task).where(Task.robotId == robotId)
select(Task.robotId, Task.taskName, Task.times).where(Task.robotId == robotId)
)
result = await db.execute(query_stmt)
result = result.scalars().all()
return result
# print(result)
# return [Task(**t) for t in result]
results = await db.execute(query_stmt)
results = results.mappings().all()
data = list()
for result in results:
t = TaskListDto(**result)
t.status = "0"
times = t.times.split(",")
for time in times:
if self.is_current_time_in_interval(time):
t.status = "1"
break
data.append(t)
return data
except Exception as e:
print(f"{e}")
async def get_messages_st(
@ -572,6 +585,17 @@ class CRUDEvent(CRUDBase[Event, EventUpdate, EventUpdate]):
except Exception as e:
print(f"{e}")
def is_current_time_in_interval(self, interval):
"""检查当前时间是否在指定的时间区间内"""
# 获取当前时间字符串(格式 HH:MM
current = datetime.now().strftime('%H:%M')
# 拆分时间区间字符串
start, end = interval.split(' - ')
# 直接比较时间字符串24小时制时间字符串可直接比较
return start <= current <= end
# async def get_robot_list(
# self,
# db: AsyncSession,

View File

@ -221,4 +221,6 @@ class AllMessageDto(BaseModel):
class TaskListDto(BaseModel):
robotId : str
taskName: Optional[str] = None
times: Optional[str] = None
status: Optional[str] = None

View File

@ -24,3 +24,4 @@
- 修改 /events/messagesHandled, /api/v1/events/messagesUnhandled, 添加可选的查询参数 etypeName
- 添加 /events/getEtypeNameList 接口, 获取事件类型下拉框
- task实体类添加 taskName字段
- 添加 /events/robotTask接口, 获取机器人任务列表.