|
|
|
@ -233,6 +233,15 @@ async def save_simulation_result(
|
|
|
|
db_session=db_session, node_data=result, type="calc"
|
|
|
|
db_session=db_session, node_data=result, type="calc"
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
eaf, derating_hours = calculate_eaf(
|
|
|
|
|
|
|
|
available_hours=result["totalUpTime"],
|
|
|
|
|
|
|
|
period_hours=result["totalUpTime"] + result["totalDowntime"],
|
|
|
|
|
|
|
|
actual_production=result["production"],
|
|
|
|
|
|
|
|
ideal_production=result["idealProduction"]
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
efor = (result["totalDowntime"] / (result["totalDowntime"] + result["totalUpTime"])*100) if (result["totalDowntime"] + result["totalUpTime"]) > 0 else 0
|
|
|
|
|
|
|
|
|
|
|
|
calc_result = AerosSimulationCalcResult(
|
|
|
|
calc_result = AerosSimulationCalcResult(
|
|
|
|
aeros_simulation_id=simulation_id,
|
|
|
|
aeros_simulation_id=simulation_id,
|
|
|
|
aeros_node_id=node.id,
|
|
|
|
aeros_node_id=node.id,
|
|
|
|
@ -266,7 +275,9 @@ async def save_simulation_result(
|
|
|
|
stg_output=result["stgOutput"],
|
|
|
|
stg_output=result["stgOutput"],
|
|
|
|
average_level=result["averageLevel"],
|
|
|
|
average_level=result["averageLevel"],
|
|
|
|
potential_production=result["potentialProduction"],
|
|
|
|
potential_production=result["potentialProduction"],
|
|
|
|
eaf=result["production"] / result["idealProduction"] if result["idealProduction"] > 0 else 0,
|
|
|
|
eaf=eaf,
|
|
|
|
|
|
|
|
efor=efor,
|
|
|
|
|
|
|
|
derating_hours=derating_hours,
|
|
|
|
beta=eq_reliability["beta"] if node_type == "RegularNode" else None,
|
|
|
|
beta=eq_reliability["beta"] if node_type == "RegularNode" else None,
|
|
|
|
eta=eq_reliability["eta"] if node_type == "RegularNode" else None,
|
|
|
|
eta=eq_reliability["eta"] if node_type == "RegularNode" else None,
|
|
|
|
mttr=eq_reliability["mttr"] if node_type == "RegularNode" else None,
|
|
|
|
mttr=eq_reliability["mttr"] if node_type == "RegularNode" else None,
|
|
|
|
@ -514,6 +525,23 @@ async def get_simulation_with_calc_result(
|
|
|
|
return simulation.scalars().all()
|
|
|
|
return simulation.scalars().all()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
async def get_plant_calc_result(
|
|
|
|
|
|
|
|
*, db_session, simulation_id: UUID
|
|
|
|
|
|
|
|
):
|
|
|
|
|
|
|
|
query = (select(AerosSimulationCalcResult).filter(
|
|
|
|
|
|
|
|
AerosSimulationCalcResult.aeros_simulation_id == simulation_id,
|
|
|
|
|
|
|
|
).join(AerosNode, AerosNode.id == AerosSimulationCalcResult.aeros_node_id)
|
|
|
|
|
|
|
|
.filter(AerosNode.node_name == "- TJB - Unit 3 -"))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
query = query.options(
|
|
|
|
|
|
|
|
selectinload(AerosSimulationCalcResult.aeros_node).options(
|
|
|
|
|
|
|
|
selectinload(AerosNode.equipment)
|
|
|
|
|
|
|
|
))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
calc = await db_session.execute(query)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return calc.scalar_one_or_none()
|
|
|
|
|
|
|
|
|
|
|
|
async def get_result_ranking(*, db_session: DbSession, simulation_id: UUID):
|
|
|
|
async def get_result_ranking(*, db_session: DbSession, simulation_id: UUID):
|
|
|
|
|
|
|
|
|
|
|
|
query = select(AerosEquipment, AerosSimulationCalcResult.eaf).join(AerosNode, AerosNode.node_name == AerosEquipment.node_name).join(AerosSimulationCalcResult, AerosSimulationCalcResult.aeros_node_id == AerosNode.id)
|
|
|
|
query = select(AerosEquipment, AerosSimulationCalcResult.eaf).join(AerosNode, AerosNode.node_name == AerosEquipment.node_name).join(AerosSimulationCalcResult, AerosSimulationCalcResult.aeros_node_id == AerosNode.id)
|
|
|
|
|