feature/reliability_stat
Cizz22 1 year ago
parent 8c8ced6542
commit 6341f4599b

@ -10,9 +10,7 @@ from src.database.core import DbSession
from src.scope.service import get_all from src.scope.service import get_all
from .schema import CalculationTimeConstrainsParametersRead, CalculationTimeConstrainsParametersRetrive, CalculationTimeConstrainsParametersCreate 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 .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 src.scope_equipment.service import get_by_assetnum
from .model import CalculationParam
async def get_create_calculation_parameters(*, db_session: DbSession, calculation_id: str): async def get_create_calculation_parameters(*, db_session: DbSession, calculation_id: str):

@ -58,6 +58,7 @@ class CalculationResultsRead(CalculationTimeConstrainsBase):
class CalculationTimeConstrainsRead(CalculationTimeConstrainsBase): class CalculationTimeConstrainsRead(CalculationTimeConstrainsBase):
id: Union[UUID, str] id: Union[UUID, str]
name: str
reference: str reference: str
results: List[CalculationResultsRead] results: List[CalculationResultsRead]
optimumOh: Dict[str, Any] optimumOh: Dict[str, Any]

@ -10,6 +10,7 @@ from .schema import CalculationTimeConstrainsParametersCreate, CalculationTimeCo
from .model import CalculationParam, OverhaulReferenceType, CalculationData, CalculationResult from .model import CalculationParam, OverhaulReferenceType, CalculationData, CalculationResult
from fastapi import HTTPException, status from fastapi import HTTPException, status
from src.scope.service import get_by_scope_name, get 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: 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): 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) 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( stmt = select(CalculationResult).filter(
CalculationResult.calculation_data_id == calculation_id).order_by(CalculationResult.day) 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): async def create_calculation_result_service(db_session: DbSession, calculation_id: UUID, costPerFailure: Optional[float] = None):
days = 60 days = 60
calculation = await get_calculation_data_by_id(db_session=db_session, calculation_id=calculation_id) 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 # Parameter
overhaulCost = calculation.parameter.overhaul_cost overhaulCost = calculation.parameter.overhaul_cost
@ -158,8 +159,10 @@ async def create_calculation_result_service(db_session: DbSession, calculation_i
return CalculationTimeConstrainsRead( return CalculationTimeConstrainsRead(
id=calculation.id, id=calculation.id,
reference=reference if isinstance( name=reference.scope_name if hasattr(
reference, str) else reference.scope_name, reference, "scope_name") else reference.master_equipment.name,
reference=reference.assetnum if hasattr(
reference, "assetnum") else reference.scope_name,
results=calculation_results, results=calculation_results,
optimumOh=optimum optimumOh=optimum
) )

@ -23,6 +23,14 @@ async def get(*, db_session: DbSession, scope_equipment_id: str) -> Optional[Sco
return result.scalars().one_or_none() 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): async def get_all(*, db_session: DbSession, common, scope_name: str = None, exclude: bool = False):
"""Returns all documents.""" """Returns all documents."""
query = Select(ScopeEquipment).options(selectinload( 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): 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) scope = await get_scope_by_name_service(db_session=db_session, scope_name=exclude)
query = Select(MasterEquipment).filter(MasterEquipment.assetnum != None) query = Select(MasterEquipment).filter(MasterEquipment.assetnum != None)

Loading…
Cancel
Save