|
|
|
|
@ -8,7 +8,7 @@ from src.overhaul_activity.service import get_all_by_session_id
|
|
|
|
|
from src.scope_equipment.model import ScopeEquipment
|
|
|
|
|
from src.workorder.model import MasterWorkOrder
|
|
|
|
|
from .schema import CalculationTimeConstrainsParametersCreate, CalculationTimeConstrainsRead, EquipmentResult, OptimumResult
|
|
|
|
|
from .model import CalculationParam, OverhaulReferenceType, CalculationData, CalculationResult
|
|
|
|
|
from .model import CalculationParam, OverhaulReferenceType, CalculationData, CalculationResult, CalculationEquipmentResult
|
|
|
|
|
from fastapi import HTTPException, status
|
|
|
|
|
from src.overhaul_scope.service import get_by_scope_name, get
|
|
|
|
|
from src.scope_equipment.service import get_by_assetnum
|
|
|
|
|
@ -94,7 +94,7 @@ async def get_calculation_result(db_session: DbSession, calculation_id: str):
|
|
|
|
|
|
|
|
|
|
async def get_calculation_data_by_id(db_session: DbSession, calculation_id) -> CalculationData:
|
|
|
|
|
stmt = select(CalculationData).filter(CalculationData.id ==
|
|
|
|
|
calculation_id).options(joinedload(CalculationData.parameter))
|
|
|
|
|
calculation_id).options(joinedload(CalculationData.results), joinedload(CalculationData.equipment_results))
|
|
|
|
|
result = await db_session.execute(stmt)
|
|
|
|
|
|
|
|
|
|
return result.unique().scalar()
|
|
|
|
|
@ -176,7 +176,7 @@ async def create_calculation_result_service(
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# Store results for each equipment
|
|
|
|
|
equipment_results: List[EquipmentResult] = []
|
|
|
|
|
equipment_results: List[CalculationEquipmentResult] = []
|
|
|
|
|
total_corrective_costs = np.zeros(days)
|
|
|
|
|
total_daily_failures = np.zeros(days)
|
|
|
|
|
|
|
|
|
|
@ -200,19 +200,22 @@ async def create_calculation_result_service(
|
|
|
|
|
days=int(equipment_optimum_index + 1)
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
equipment_results.append(EquipmentResult(
|
|
|
|
|
equipment_results.append(CalculationEquipmentResult(
|
|
|
|
|
corrective_costs=corrective_costs.tolist(),
|
|
|
|
|
overhaul_costs=overhaul_cost_points.tolist(),
|
|
|
|
|
daily_failures=daily_failures.tolist(),
|
|
|
|
|
assetnum=eq.assetnum,
|
|
|
|
|
material_cost=eq.material_cost,
|
|
|
|
|
service_cost=eq.service_cost,
|
|
|
|
|
optimum=equipment_optimum
|
|
|
|
|
optimum_day=int(equipment_optimum_index + 1),
|
|
|
|
|
calculation_data_id=calculation.id
|
|
|
|
|
))
|
|
|
|
|
|
|
|
|
|
# Add to totals
|
|
|
|
|
total_corrective_costs += corrective_costs
|
|
|
|
|
total_daily_failures += daily_failures
|
|
|
|
|
|
|
|
|
|
db_session.add_all(equipment_results)
|
|
|
|
|
|
|
|
|
|
# Calculate optimum points using total costs
|
|
|
|
|
total_cost = total_corrective_costs + overhaul_cost_points
|
|
|
|
|
|