feat: top 10 replacement priorities

main
MrWaradana 2 months ago
parent b337c66063
commit f57f661af2

@ -116,12 +116,8 @@ async def get_top_10_economic_life(*, db_session: DbSession) -> list[Equipment]:
.options(selectinload(Equipment.equipment_master)) .options(selectinload(Equipment.equipment_master))
) )
# Get current year
current_year = datetime.datetime.now().year current_year = datetime.datetime.now().year
# Order by difference between current year and minimum_year
# Add absolute difference between current year and minimum_eac_year as a new column
# Filter out rows where minimum_eac_year is null and limit to 10 results
query = ( query = (
query.add_columns( query.add_columns(
func.abs(current_year - Equipment.minimum_eac_year).label("economic_life") func.abs(current_year - Equipment.minimum_eac_year).label("economic_life")
@ -133,7 +129,6 @@ async def get_top_10_economic_life(*, db_session: DbSession) -> list[Equipment]:
result = await db_session.execute(query) result = await db_session.execute(query)
# Set economic_life value inside equipment objects
equipment_list = [] equipment_list = []
for row in result.all(): for row in result.all():
equipment = row[0] equipment = row[0]
@ -142,6 +137,35 @@ async def get_top_10_economic_life(*, db_session: DbSession) -> list[Equipment]:
return equipment_list return equipment_list
async def get_top_10_replacement_priorities(*, db_session: DbSession) -> list[Equipment]:
"""Returns top 10 replacement priorities."""
query = (
Select(Equipment)
.join(EquipmentMaster, Equipment.assetnum == EquipmentMaster.assetnum)
.options(selectinload(Equipment.equipment_master))
)
current_year = datetime.datetime.now().year
query = (
query.add_columns(
func.abs(current_year - Equipment.minimum_eac_year).label("economic_life")
)
.filter(Equipment.minimum_eac_year != None)
.order_by(func.abs(current_year - Equipment.minimum_eac_year).asc())
.order_by(func.abs(Equipment.minimum_eac).desc())
.limit(10)
)
result = await db_session.execute(query)
equipment_list = []
for row in result.all():
equipment = row[0]
equipment.economic_life = row[1]
equipment_list.append(equipment)
return equipment_list
async def generate_all_transaction(*, db_session: DbSession, token): async def generate_all_transaction(*, db_session: DbSession, token):
"""Generate transaction for all equipments in the database based on equipments assetnum.""" """Generate transaction for all equipments in the database based on equipments assetnum."""

Loading…
Cancel
Save