diff --git a/src/calculation_time_constrains/flows.py b/src/calculation_time_constrains/flows.py index 0686095..93472c9 100644 --- a/src/calculation_time_constrains/flows.py +++ b/src/calculation_time_constrains/flows.py @@ -10,9 +10,7 @@ from src.database.core import DbSession from src.scope.service import get_all from .schema import CalculationTimeConstrainsParametersRead, CalculationTimeConstrainsParametersRetrive, CalculationTimeConstrainsParametersCreate from .service import get_calculation_by_reference_and_parameter, get_calculation_result, get_overhaul_cost_by_time_chart, get_corrective_cost_time_chart, create_param_and_data, get_calculation_data_by_id, create_calculation_result_service, get_avg_cost_by_asset -from .model import CalculationResult - -from .model import CalculationParam +from src.scope_equipment.service import get_by_assetnum async def get_create_calculation_parameters(*, db_session: DbSession, calculation_id: str): diff --git a/src/calculation_time_constrains/schema.py b/src/calculation_time_constrains/schema.py index b583feb..0834736 100644 --- a/src/calculation_time_constrains/schema.py +++ b/src/calculation_time_constrains/schema.py @@ -58,6 +58,7 @@ class CalculationResultsRead(CalculationTimeConstrainsBase): class CalculationTimeConstrainsRead(CalculationTimeConstrainsBase): id: Union[UUID, str] + name: str reference: str results: List[CalculationResultsRead] optimumOh: Dict[str, Any] diff --git a/src/calculation_time_constrains/service.py b/src/calculation_time_constrains/service.py index c1e0123..273b306 100644 --- a/src/calculation_time_constrains/service.py +++ b/src/calculation_time_constrains/service.py @@ -10,6 +10,7 @@ from .schema import CalculationTimeConstrainsParametersCreate, CalculationTimeCo from .model import CalculationParam, OverhaulReferenceType, CalculationData, CalculationResult from fastapi import HTTPException, status from src.scope.service import get_by_scope_name, get +from src.scope_equipment.service import get_by_assetnum def get_overhaul_cost_by_time_chart(overhaul_cost: float, days: int) -> list: @@ -79,7 +80,7 @@ async def create_param_and_data(*, db_session: DbSession, calculation_param_in: async def get_calculation_result(db_session: DbSession, calculation_id: str): calculation = await get_calculation_data_by_id(db_session=db_session, calculation_id=calculation_id) - reference = calculation.reference_id if calculation.overhaul_reference_type == OverhaulReferenceType.ASSET else await get(db_session=db_session, scope_id=calculation.reference_id) + reference = await get_by_ass if calculation.overhaul_reference_type == OverhaulReferenceType.ASSET else await get(db_session=db_session, scope_id=calculation.reference_id) stmt = select(CalculationResult).filter( CalculationResult.calculation_data_id == calculation_id).order_by(CalculationResult.day) @@ -115,7 +116,7 @@ async def get_calculation_data_by_id(db_session: DbSession, calculation_id) -> C async def create_calculation_result_service(db_session: DbSession, calculation_id: UUID, costPerFailure: Optional[float] = None): days = 60 calculation = await get_calculation_data_by_id(db_session=db_session, calculation_id=calculation_id) - reference = calculation.reference_id if calculation.overhaul_reference_type == OverhaulReferenceType.ASSET else await get(db_session=db_session, scope_id=calculation.reference_id) + reference = await get_by_assetnum(db_session=db_session, assetnum=calculation.reference_id) if calculation.overhaul_reference_type == OverhaulReferenceType.ASSET else await get(db_session=db_session, scope_id=calculation.reference_id) # Parameter overhaulCost = calculation.parameter.overhaul_cost @@ -158,8 +159,10 @@ async def create_calculation_result_service(db_session: DbSession, calculation_i return CalculationTimeConstrainsRead( id=calculation.id, - reference=reference if isinstance( - reference, str) else reference.scope_name, + name=reference.scope_name if hasattr( + reference, "scope_name") else reference.master_equipment.name, + reference=reference.assetnum if hasattr( + reference, "assetnum") else reference.scope_name, results=calculation_results, optimumOh=optimum ) diff --git a/src/scope_equipment/service.py b/src/scope_equipment/service.py index fffd13f..c66489b 100644 --- a/src/scope_equipment/service.py +++ b/src/scope_equipment/service.py @@ -23,6 +23,14 @@ async def get(*, db_session: DbSession, scope_equipment_id: str) -> Optional[Sco return result.scalars().one_or_none() +async def get_by_assetnum(*, db_session: DbSession, assetnum: str): + query = Select(ScopeEquipment).filter(ScopeEquipment.assetnum == assetnum).options( + selectinload(ScopeEquipment.master_equipment)) + + result = await db_session.execute(query) + return result.unique().scalars().one_or_none() + + async def get_all(*, db_session: DbSession, common, scope_name: str = None, exclude: bool = False): """Returns all documents.""" query = Select(ScopeEquipment).options(selectinload( @@ -142,7 +150,6 @@ async def get_exculed_scope_name(*, db_session: DbSession, scope_name: Union[str async def get_all_master_equipment(*, db_session: DbSession, exclude: Optional[str] = None, common: CommonParameters): scope = await get_scope_by_name_service(db_session=db_session, scope_name=exclude) - query = Select(MasterEquipment).filter(MasterEquipment.assetnum != None)