._.
This commit is contained in:
parent
3e6e6c60f7
commit
66eefde31b
@ -5,7 +5,7 @@ from math import ceil
|
||||
import requests
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from app.infrastructure.database.dependencies import get_db
|
||||
from app.infrastructure.database.database import connect
|
||||
from app.infrastructure.database.models.delivery_accessories import DeliveryAccessory
|
||||
from app.infrastructure.database.models.delivery_orders import DeliveryOrder
|
||||
from app.infrastructure.database.models.total_orders import TotalOrder
|
||||
@ -36,11 +36,12 @@ class NewTotalOrderService:
|
||||
grouped_by_period = self.group_accessories_by_period(accessories)
|
||||
routes_by_period = self.find_routes_by_period(grouped_by_period, distances, cities)
|
||||
|
||||
with get_db() as session:
|
||||
with connect() as session:
|
||||
new_total_order = TotalOrder(
|
||||
order_datetime=datetime.now(),
|
||||
count_robots=2000,
|
||||
deadline=datetime.now(),
|
||||
price=0,
|
||||
)
|
||||
session.add(new_total_order)
|
||||
session.flush()
|
||||
@ -55,22 +56,36 @@ class NewTotalOrderService:
|
||||
|
||||
delivery_order_deadline = new_total_order.deadline - timedelta(days=period)
|
||||
|
||||
new_total_order.price += cost
|
||||
|
||||
new_delivery_order = DeliveryOrder(
|
||||
order_datetime=datetime.now(),
|
||||
count_trucks=vehicle_count,
|
||||
deadline=delivery_order_deadline,
|
||||
price=cost,
|
||||
truck_id=selected_truck,
|
||||
total_order_id=new_delivery_order.id,
|
||||
total_order_id=new_total_order.id,
|
||||
)
|
||||
|
||||
session.add(new_total_order)
|
||||
session.add(new_delivery_order)
|
||||
|
||||
for point_index in range(len(route)):
|
||||
if route[point_index].name == 'Челябинск':
|
||||
continue
|
||||
|
||||
accessory = list(
|
||||
filter(
|
||||
lambda x: x.city_id == route[point_index].id and x.period == period,
|
||||
accessories
|
||||
)
|
||||
)[0]
|
||||
|
||||
new_delivery_accessory = DeliveryAccessory(
|
||||
queue=point_index + 1,
|
||||
|
||||
count=accessory.count,
|
||||
accessory_id=accessory.id
|
||||
)
|
||||
session.add(new_delivery_accessory)
|
||||
|
||||
response += f"Период: {period}\n"
|
||||
response += f"Маршрут: {' -> '.join([city.name for city in route])}\n"
|
||||
@ -80,7 +95,9 @@ class NewTotalOrderService:
|
||||
response += f"Количество автомобилей: {vehicle_count}"
|
||||
response += f"Стоимость перевозки: {cost}\n"
|
||||
|
||||
return response
|
||||
session.commit()
|
||||
|
||||
return response
|
||||
|
||||
def find_routes_by_period(self, grouped_by_period, distances, cities):
|
||||
purpose_city_id = self.city_repository.get_by_name('Челябинск').id
|
||||
|
||||
@ -2,7 +2,7 @@ import os
|
||||
|
||||
from dotenv import load_dotenv
|
||||
from sqlalchemy import create_engine
|
||||
from sqlalchemy.orm import sessionmaker
|
||||
from sqlalchemy.orm import sessionmaker, Session
|
||||
|
||||
from app.infrastructure.database.models import Base
|
||||
|
||||
@ -13,6 +13,11 @@ engine = create_engine(SQLALCHEMY_DATABASE_URL)
|
||||
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
|
||||
|
||||
|
||||
def connect() -> Session:
|
||||
global SessionLocal
|
||||
return SessionLocal()
|
||||
|
||||
|
||||
def init_db():
|
||||
import app.infrastructure.database.models.roles
|
||||
import app.infrastructure.database.models.users
|
||||
|
||||
@ -57,7 +57,7 @@ def delete_total_order(total_order_id: int, db: Session = Depends(get_db),
|
||||
return success
|
||||
|
||||
|
||||
@router.post("/total-orders/calculate", response_model=TotalOrderEntity)
|
||||
@router.post("/total-orders/calculate")
|
||||
def calculate_total_order(db: Session = Depends(get_db)):
|
||||
service = NewTotalOrderService(db)
|
||||
result = service.total_calculate()
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user