feat: get maximo data by assetnum

main
MrWaradana 2 months ago
parent 6177453cf7
commit eced769a17

@ -155,7 +155,7 @@ async def get_generated_equipment_transaction(db_session: DbSession, token: Toke
@router.get("/{assetnum}", response_model=StandardResponse[EquipmentRead])
async def get_equipment(db_session: DbSession, assetnum: str):
async def get_equipment(db_session: DbSession, collector_db_session: CollectorDbSession, assetnum: str):
(
equipment_master_record,
equipment_data,
@ -163,7 +163,8 @@ async def get_equipment(db_session: DbSession, assetnum: str):
min_eac_value,
min_seq,
last_actual_year,
) = await get_master_by_assetnum(db_session=db_session, assetnum=assetnum)
maximo_data
) = await get_master_by_assetnum(db_session=db_session, collector_db_session=collector_db_session, assetnum=assetnum)
# raise Exception(equipment[0])
if not chart_data:
raise HTTPException(
@ -179,6 +180,7 @@ async def get_equipment(db_session: DbSession, assetnum: str):
min_eac_value=min_eac_value,
min_seq=min_seq,
last_actual_year=last_actual_year,
maximo_data=maximo_data
),
message="Data retrieved successfully",
)

@ -88,6 +88,7 @@ class EquipmentRead(DefaultBase):
min_eac_value: Optional[float] = Field(None, nullable=True, le=MAX_PRICE)
min_seq: Optional[float] = Field(None, nullable=True)
last_actual_year: Optional[int] = Field(None, nullable=True)
maximo_data: Optional[List[dict]] = Field(None, nullable=True)
class EquipmentTop10EconomicLife(EquipmentBase):

@ -9,7 +9,7 @@ from ..equipment_master.model import EquipmentMaster
from .schema import EquipmentCreate, EquipmentUpdate, MasterBase
from typing import Optional
from src.database.core import DbSession
from src.database.core import DbSession, CollectorDbSession
from src.auth.service import CurrentUser
from src.config import RELIABILITY_APP_URL
import httpx
@ -21,7 +21,7 @@ from sqlalchemy import text
async def get_master_by_assetnum(
*, db_session: DbSession, assetnum: str
*, db_session: DbSession, collector_db_session: CollectorDbSession, assetnum: str
) -> tuple[list[EquipmentTransactionRecords], float | None]:
"""Returns master records with equipment data based on asset number."""
@ -117,6 +117,20 @@ async def get_master_by_assetnum(
)
min_seq = min_record[1] if min_record else None
maximo_query = f"""
SELECT
*
FROM public.wo_maximo AS a
WHERE a.asset_unit = '3'
AND a.asset_assetnum = '{assetnum}'
AND a.wonum NOT LIKE 'T%'
"""
query = text(maximo_query)
# Pass parameters to execute to avoid bindparam/name mismatches
result_maximo = await collector_db_session.execute(query)
maximo_record = result_maximo.mappings().all()
return (
equipment_master_record,
equipment_record,
@ -124,6 +138,7 @@ async def get_master_by_assetnum(
min_eac_value,
min_seq,
last_actual_year,
maximo_record
)
# return result.scalars().all()

Loading…
Cancel
Save