|
|
|
@ -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."""
|
|
|
|
|