From 8cb5a9db5b77a665c91c7218fc75592b95646668 Mon Sep 17 00:00:00 2001 From: haotian <2421912570@qq.com> Date: Mon, 9 Jun 2025 16:42:31 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9--=E8=8E=B7=E5=8F=96=E6=9C=BA?= =?UTF-8?q?=E5=99=A8=E4=BA=BA=E4=BB=BB=E5=8A=A1=E5=88=97=E8=A1=A8,?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0status=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/crud/event.py | 38 +++++++++++++++++++++++++++++++------- app/schemas/event.py | 4 +++- change_log.md | 1 + 3 files changed, 35 insertions(+), 8 deletions(-) diff --git a/app/crud/event.py b/app/crud/event.py index 5208820..9d75793 100644 --- a/app/crud/event.py +++ b/app/crud/event.py @@ -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, diff --git a/app/schemas/event.py b/app/schemas/event.py index b6d7ced..b7276c6 100644 --- a/app/schemas/event.py +++ b/app/schemas/event.py @@ -221,4 +221,6 @@ class AllMessageDto(BaseModel): class TaskListDto(BaseModel): robotId : str - \ No newline at end of file + taskName: Optional[str] = None + times: Optional[str] = None + status: Optional[str] = None \ No newline at end of file diff --git a/change_log.md b/change_log.md index 035ff49..cc7ba5a 100644 --- a/change_log.md +++ b/change_log.md @@ -24,3 +24,4 @@ - 修改 /events/messagesHandled, /api/v1/events/messagesUnhandled, 添加可选的查询参数 etypeName - 添加 /events/getEtypeNameList 接口, 获取事件类型下拉框 - task实体类添加 taskName字段 +- 添加 /events/robotTask接口, 获取机器人任务列表.