main
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 .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):

@ -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]

@ -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
)

@ -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)

Loading…
Cancel
Save