From 4ba952d70557556709ef802ff510c7dd772c737a Mon Sep 17 00:00:00 2001 From: TianyangZhang Date: Mon, 17 Nov 2025 16:43:02 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20ofm-views=20=E4=BF=AE=E6=94=B9=20?= =?UTF-8?q?=E8=BD=A6=E8=BE=86=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/ofm/views.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/apps/ofm/views.py b/apps/ofm/views.py index 00bb1ca0..7d5082a0 100644 --- a/apps/ofm/views.py +++ b/apps/ofm/views.py @@ -144,14 +144,14 @@ class VehicleViewSet(CustomModelViewSet): filterset_class = VehicleFilterset def add_info_for_list(self, data): - booking_ids = [d["id"] for d in data] - slots = VehicleSlot.objects.filter(booking__in=booking_ids).order_by("vehreg", "vehicle", "vdate", "slot") - booking_info = {} + vehicle_ids = [d["id"] for d in data] + slots = VehicleSlot.objects.filter(vehicle__in=vehicle_ids).order_by("vehreg", "vehicle", "vdate", "slot") + vehicle_info = {} for slot in slots: - booking_id = slot.vehicle.id + vehicle_id = slot.vehicle.id - if booking_id not in booking_info: - booking_info[booking_id] = { + if vehicle_id not in vehicle_info: + vehicle_info[vehicle_id] = { "vdate": slot.vdate.strftime("%Y-%m-%d"), # 格式化日期 "vehreg": slot.vehreg.id, "vehreg_name": slot.vehreg.name, # 会议室名称 @@ -160,7 +160,7 @@ class VehicleViewSet(CustomModelViewSet): } # 检查是否连续(当前slot是否紧接上一个slot) - current_slots = booking_info[booking_id]["current_slots"] + current_slots = vehicle_info[vehicle_id]["current_slots"] if not current_slots or slot.slot == current_slots[-1] + 1: current_slots.append(slot.slot) else: @@ -168,12 +168,12 @@ class VehicleViewSet(CustomModelViewSet): if current_slots: start_time = self._slot_to_time(current_slots[0]) end_time = self._slot_to_time(current_slots[-1] + 1) - booking_info[booking_id]["time_ranges"].append(f"{start_time}-{end_time}") + vehicle_info[vehicle_id]["time_ranges"].append(f"{start_time}-{end_time}") current_slots.clear() current_slots.append(slot.slot) # 处理最后剩余的连续slot - for info in booking_info.values(): + for info in vehicle_info.values(): if info["current_slots"]: start_time = self._slot_to_time(info["current_slots"][0]) end_time = self._slot_to_time(info["current_slots"][-1] + 1) @@ -181,7 +181,7 @@ class VehicleViewSet(CustomModelViewSet): info["slots"] = info.pop("current_slots") # 清理临时数据 for item in data: - item.update(booking_info.get(item["id"], {})) + item.update(vehicle_info.get(item["id"], {})) return data @staticmethod