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]) @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_master_record,
equipment_data, equipment_data,
@ -163,7 +163,8 @@ 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,
) = 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]) # raise Exception(equipment[0])
if not chart_data: if not chart_data:
raise HTTPException( raise HTTPException(
@ -179,6 +180,7 @@ async def get_equipment(db_session: DbSession, assetnum: str):
min_eac_value=min_eac_value, min_eac_value=min_eac_value,
min_seq=min_seq, min_seq=min_seq,
last_actual_year=last_actual_year, last_actual_year=last_actual_year,
maximo_data=maximo_data
), ),
message="Data retrieved successfully", message="Data retrieved successfully",
) )

@ -88,6 +88,7 @@ class EquipmentRead(DefaultBase):
min_eac_value: Optional[float] = Field(None, nullable=True, le=MAX_PRICE) min_eac_value: Optional[float] = Field(None, nullable=True, le=MAX_PRICE)
min_seq: Optional[float] = Field(None, nullable=True) min_seq: Optional[float] = Field(None, nullable=True)
last_actual_year: Optional[int] = 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): class EquipmentTop10EconomicLife(EquipmentBase):

@ -9,7 +9,7 @@ from ..equipment_master.model import EquipmentMaster
from .schema import EquipmentCreate, EquipmentUpdate, MasterBase from .schema import EquipmentCreate, EquipmentUpdate, MasterBase
from typing import Optional 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.auth.service import CurrentUser
from src.config import RELIABILITY_APP_URL from src.config import RELIABILITY_APP_URL
import httpx import httpx
@ -21,7 +21,7 @@ from sqlalchemy import text
async def get_master_by_assetnum( 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]: ) -> tuple[list[EquipmentTransactionRecords], float | None]:
"""Returns master records with equipment data based on asset number.""" """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 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 ( return (
equipment_master_record, equipment_master_record,
equipment_record, equipment_record,
@ -124,6 +138,7 @@ async def get_master_by_assetnum(
min_eac_value, min_eac_value,
min_seq, min_seq,
last_actual_year, last_actual_year,
maximo_record
) )
# return result.scalars().all() # return result.scalars().all()

Loading…
Cancel
Save