This commit is contained in:
Андрей Дувакин 2024-10-05 22:12:32 +05:00
parent c3268d9a2f
commit 284ac8f356
5 changed files with 21 additions and 15 deletions

View File

@ -9,6 +9,7 @@ class DeliveryOrderEntity(BaseModel):
count_trucks: int
deadline: datetime
price: float
truck_name: Optional[str] = None
truck_id: Optional[int] = None
total_order_id: Optional[int] = None

View File

@ -12,15 +12,16 @@ class DeliveryOrdersService:
self.repository = DeliveryOrdersRepository(db)
def get_all_delivery_orders(self) -> List[DeliveryOrderEntity]:
delivery_orders = self.repository.get_all()
delivery_orders = self.repository.get_all_with_trucks()
return [
DeliveryOrderEntity(
id=o.id,
order_datetime=o.order_datetime,
count_trucks=o.count_trucks,
deadline=o.deadline,
price=o.price,
price=round(o.price, 2),
truck_id=o.truck_id,
truck_name=o.truck.name,
total_order_id=o.total_order_id
)
for o in delivery_orders
@ -36,6 +37,7 @@ class DeliveryOrdersService:
deadline=o.deadline,
price=o.price,
truck_id=o.truck_id,
truck_name=o.truck.name,
total_order_id=o.total_order_id
)
for o in delivery_orders
@ -51,6 +53,7 @@ class DeliveryOrdersService:
deadline=delivery_order.deadline,
price=delivery_order.price,
truck_id=delivery_order.truck_id,
truck_name=delivery_order.truck.name,
total_order_id=delivery_order.total_order_id
)
return None

View File

@ -89,14 +89,6 @@ class NewTotalOrderService:
)
session.add(new_delivery_accessory)
response += f"Период: {period}\n"
response += f"Маршрут: {' -> '.join([city.name for city in route])}\n"
selected_vehicle_name = next((truck.name for truck in trucks if truck.id == selected_truck),
"Нет доступного автомобиля")
response += f"Тип автомобиля: {selected_vehicle_name}"
response += f"Количество автомобилей: {vehicle_count}"
response += f"Стоимость перевозки: {cost}\n"
session.commit()
return response

View File

@ -19,7 +19,7 @@ class TotalOrdersService:
order_datetime=order.order_datetime,
count_robots=order.count_robots,
deadline=order.deadline,
price=order.price,
price=round(order.price),
user_id=order.user_id,
status_id=order.status_id,
delivery_orders=[do.id for do in order.delivery_orders] if order.delivery_orders else [],
@ -83,7 +83,8 @@ class TotalOrdersService:
price=total_order_model.price,
user_id=total_order_model.user_id,
status_id=total_order_model.status_id,
delivery_orders=[do.id for do in total_order_model.delivery_orders] if total_order_model.delivery_orders else []
delivery_orders=[do.id for do in
total_order_model.delivery_orders] if total_order_model.delivery_orders else []
)
return None

View File

@ -1,4 +1,4 @@
from sqlalchemy.orm import Session
from sqlalchemy.orm import Session, joinedload
from app.infrastructure.database.models.delivery_orders import DeliveryOrder
@ -9,11 +9,20 @@ class DeliveryOrdersRepository:
def get_all(self):
return self.db.query(DeliveryOrder).all()
def get_all_with_trucks(self):
return self.db.query(DeliveryOrder) \
.options(joinedload(DeliveryOrder.truck)) \
.all()
def get_all_by_total_order_id(self, total_order_id):
return self.db.query(DeliveryOrder).filter(DeliveryOrder.total_order_id == total_order_id).all()
return self.db.query(DeliveryOrder).filter(DeliveryOrder.total_order_id == total_order_id) \
.options(joinedload(DeliveryOrder.truck)) \
.all()
def get_by_id(self, delivery_order_id: int):
return self.db.query(DeliveryOrder).filter(DeliveryOrder.id == delivery_order_id).first()
return self.db.query(DeliveryOrder).filter(DeliveryOrder.id == delivery_order_id) \
.options(joinedload(DeliveryOrder.truck)) \
.first()
def create(self, delivery_order: DeliveryOrder):
self.db.add(delivery_order)